Apple hat dieser Tage neue „Macbooks“ präsentiert. Äußerlich hat sich nicht viel getan, außer einer neuen Taste für Emojis (oh, yeah!11). Aber wie immer zählen ja innere Werte: und da werkelt nun der hauseigene(!) M1, Apples allererster in 5nm gefertigter ARM-SoC. Eat this, Intel!11
Ich wollte nun wissen, wie meine AMD-Laptop-CPU (Ryzen 7 4800HS, Weltpremiere 16. März 2020) im Vergleich zum M1 (Weltpremiere 17. November 2020) abschneidet. Da bot sich geekbench5 an, weil: keine Ahnung!? o.O Doch immerhin hatte ich hier bereits Ergebnisse vom Juli vorliegen. Und das „Tryout“-Programm gibt es für Linux auch kostenlos.
Meine besten Ergebnisse damals:
Single-Core: 1269
Multi-Core: 8030
Die Ergebnisse des M1 aktuell:
Single-Core: 1718
Multi-Core: 7534
Gar nicht mal so schlecht für eine Handy-CPU, ihr Eierköpfe aus Cupertino!
Mit einer ähnlich hohen wissenschaftlichen Relevanz wie 1996 mit dem Schachcomputer „Deep Blue“ gegen Schachweltmeister Garri Kasparow, so hat exakt 20 Jahre später ein Computerprogramm, „AlphaGo“, den südkoreanischen Großmeister des asiatischen Strategiespiels Go, Lee Sedol, geschlagen.
Eine Dokumentation in Spielfilmlänge (ca. 90 Minuten), die mittlerweile frei und kostenlos im Internet erhältlich ist, kann man sich hier anschauen:
Eigentlich galt Go bis zu diesem Zeitpunkt als von einer KI (künstlichen Intelligenz) „unknackbar“, hat es nicht nur mehr Felder pro Brett (19×19, statt 8×8), sondern lässt in Theorie mehr Züge zu, „als es Atome im Universum gibt“. Ferner ist es durch reines Herumprobieren, dem sogenannten Brute Forcing, auch nicht im Voraus berechenbar.
Es stellte sich heraus, für die Künstliche Intelligenz mussten nicht nur neue Algorithmen her (in diesem Fall der Monte-Carlo, da er mit Zufällen arbeiten kann), sondern gleich ein komplett neues neuronales Netz, das tiefe neuronale Netzwerk. Nach 9 Jahren Forschung wollte die Firma DeepMind dann genauer wissen, was die Eigenentwicklung wirklich drauf hatte: Sedol verlor vier von fünf Spielen.
Der Film ist nichts für Philanthropen, bietet allerdings neben interessanten Einsichten in menschliche Psychen auch viel Wissenswertes zum Thema Informatik und künstliche Intelligenz allgemein. Man darf gespannt sein, wo man hier 2036 angekommen sein wird; wer/welche Firma das Programm stellt; und welches Spiel die Menschheit noch für immer verloren geben muss (siehe auch: Der Alpha-Go-Schock und die Folgen, 22.12.16).
*…klaut die Stimme von Marsimoto, der sie von Quasimoto geklaut hat, am Ende ist es auch einfach nur eingeatmetes Helium, weil den Schallwellen gefällt das, und legt dann mal los…*
Keiner kümmert sich um GPUs/
Wie geht es deiner GPU/
Frag‘ dich: was macht Klicki-Bunti-Grafik/
Es ist deine GPU, sonst nix/
STRG+Escape, die GPU taucht da nicht auf/
wieso denkt der doofe Coder, dass ich GPU nicht brauch/
CPU, RAM, mein Benutzername, Tabellenansicht/
wieso sehe ich die Prozentzahl meiner GPU nicht/
meine GPU macht mir Grafik, das ist wichtig/
meinem Pinguin fehlt ohne GPU sein Gesicht/
CPU ist das Gehirn, GPU schiebt die Optik/
Pink und Rosa – GPU, sonst nix/
Keiner kümmert sich um GPUs/
Wie geht es deiner GPU/
Frag‘ dich: was macht Klicki-Bunti-Grafik/
Es ist deine GPU, sonst nix/
Windows, Linux, Unix – alles braucht hier Grafik/
wieso sehe ich nach Reboot GPU-Temperatur nicht/
Was heißt „off“, wieso hier Reload mit rechter Maustaste/
ohne GPU nützt mir Temperatur-Widget nix/
Treiber-Treiber, immer Treiber, offen oder proprietär/
Hauptsache „Diablo“ läuft, denn was nützt hier „Solitär“/
Laptop, PC, Smartphone oder Tablet/
ohne GPU kein einziger Pixel hier, nix fett/
Keiner kümmert sich um GPUs/
Wie geht es deiner GPU/
Frag‘ dich: was macht Klicki-Bunti-Grafik/
Es ist deine GPU, sonst nix/
Helfer-Tool hier, Helfer-Tool da/
der Aufwand für jede GPU – immerda/
das Erste, was ich an neuer Hardware einrichte/
ist GPU, weil der Rest läuft bereits aus der Kiste/
„out of the box“, IT, wie sie immer sein soll/
wieso funktioniert GPU nicht, was hat sie euch getan/
liegt es vielleicht an AMD oder NVIDIA/
oder Apple, oder ARM, vielleicht auch C&A/
Keiner kümmert sich um GPUs/
Wie geht es deiner GPU/
Frag‘ dich: was macht Klicki-Bunti-Grafik/
Es ist deine GPU, sonst nix/
Meinen Stromanbieter, den freut’s/
denn heute mine ich auf GPU die Kryptocoins/
Warnschild rot, die GPU schon über 90 Grad/
warum ist Geld verdienen hier so hart/
die GPU, ja sie macht die Träume wahr/
Traumfabrik in Plastik, wir sind so smart/
und jetzt auch die KI für ein paar Hunderter/
übermorgen fliegt mich GPU zum Mars, sonnenklar/
Keiner kümmert sich um GPUs/
Wie geht es deiner GPU/
Frag‘ dich: was macht Klicki-Bunti-Grafik/
Es ist deine GPU, sonst nix/
ich schalte das Teil ab, GPU muss sich schlafen legen/
sie lief zwei Wochen durch und muss nun Updates regeln/
hoffentlich ist nach Reboot meine GPU noch da/
bei shutdown -r now denke ich über Heirat nach/
doch was ist das, ist es ein Fussel oder doch ein Haar/
wie Schuppen von den Augen wird mir dann plötzlich klar/
Mist, schon wieder zwei Zentimeter Schicht drauf/
ich muss das Ding erstmal jetzt abstauben/
Keiner kümmert sich um GPUs/
Wie geht es deiner GPU/
Frag‘ dich: was macht Klicki-Bunti-Grafik/
Es ist deine GPU, sonst nix/
2047. Eine App namens Infinitalk ermöglicht die Kommunikation mit Verstorbenen. Realisiert wird das durch ein KI-System in einer Cloud, das zuvor über ein Implantat hinter dem Ohr das gesamte restliche Leben der Teilnehmer aufgezeichnet hat. Die verstorbenen Menschen existieren weiter als digitale Entität, mit all ihren Fehlern und Vorzügen, Umgebungen, etwaigem Mobiliar und Gerätschaften.
CEO Linus (gespielt von Friedrich Mücke) sitzt gerade zusammen mit seinen drei weiteren Gründern des Startups, CTO und Hacker Bahl (Aram Tafreshian), Marketingleiter Malik (Jan Krauter) und seiner Ex-Verlobten Luca (Laura de Boer) in einem Hotel in Tokio, um den Verkaufs-Deal der App an den japanischen Investor Linden Li (David Tse) durchzuziehen. Li will die Applikation mit seinem Hologramm-Imperium verknüpfen. So soll die Kommunikation mit den Verstorbenen in Zukunft der Realität so nah wie möglich sein. Selbstredend würde der Deal alle vier zu Multimilliardären machen, was sich v.a. Malik bereits sehr gut vorstellen kann. Luca allerdings hat etwas dagegen. Sie vertraut Li und seinem Imperium nicht, sondern lieber auf ihre Intuition, die nichts Gutes verheißt. Als sich alle aus ihrem virtuellen Meeting wütend und ohne finale Unterzeichnung des Vertrags verabschiedet haben, verschwindet am nächsten Morgen Luca plötzlich spurlos.
Was wie ein Wirtschaftsthriller beginnt entwickelt sich im Laufe von nur 90 Sendeminuten („Exit“, ARD, Erstausstrahlung war am Mittwoch, 28.10.20, 20:15) zu einer dystopisch erzählten Geschichte der Wahren Liebe auf engstem Raum: das Hotel selbst wird in den seltensten Fällen verlassen, alternative Schauplätze sind entweder Rückblenden oder spielen sich in einem weißen, endlos wirkenden virtuellen Raum ab. Anleihen an „The Matrix“ aus 1999 sind durchaus gewollt und wirken überzeugend, sofern man von den Hacking-Tools symbolisiert durch Baumarktwerkzeuge einmal absieht. Auch sonst ist das dystopische Jahr 2047 in Tokio, das uns die ARD mit unseren hart verdienten GEZ-Gebühren auf die Flimmerkisten unserer Wohnzimmer zaubert, durchaus auf Niveau eines Hollywood-Cyberpunk-Blockbusters wie „Blade Runner“ (1982). Entsprechende Hausaufgaben wurden also gemacht, angefangen vom Interieur des Hauptschauplatzes, über die Hightech-Utensilien, die die Protagonistinnen und Protagonisten bei sich tragen, bis zur düsteren minimalistischen Musik und allen verwendeten Grafiken. Das muss und sollte man hier hoch anrechnen.
Nicht so gut bei mir kam hingegen die Überladung der Themen, sowie die zu großen Gemeinsamkeiten und das Mindfuck-Moment des Films zu „Welt am Draht“ an – hier hätte ich mir mehr Diversifikation gewünscht. Man merkt dem Stoff an, dass er hoffnungslos verkopft ist. Das mag zum einen an unserer deutschen Mentalität, zum anderen am derzeitigen Hype um Netflix liegen – denn hier hätte man ohne Probleme eine sechsteilige Miniserie daraus bauen können. Vielleicht war es auch so gedacht, man wollte es den betagten Standardzuschauern der ARD aber am Ende ersparen; der ich sicher keiner bin, schon aus Altersgründen. Es wären auch noch andere Themen als die Lovestory als Handlung und eine Wendung zum Ende in Frage gekommen, die eben nicht an Fassbinders Standardwerk aus 1973 erinnern. Wobei: wer erinnert sich aus meiner Generation wohl an „Welt am Draht“? Oder kennt es überhaupt? Eben. Niedriges Risiko.
Wer sich als Cyberpunk bezeichnet, der sollte diesen Film mögen und wird ihn sich ansehen müssen. Zumal man hier nebenbei ganz starke Schauspielerinnen- und Schauspieler-Leistungen zu sehen bekommt – kein Wunder, die Besetzung hat tiefe Wurzeln in der wertvollen Kulturleistung Theater. Schön, dass die deutschen Rundfunkanstalten (zumal aus meiner Gegend, sogar der SWR) auch mal eines meiner liebsten Genren abdecken! Ich selbst konnte mich jedenfalls nicht erinnern, wann ich mir das letzte Mal einen Kalendereintrag für eine Fernsehübertragung gesetzt hatte, die auch noch nicht live ist. Großes Kino, hat sich gelohnt! Aber auch zeitweise ganz schwere Kost für gute Nerven.
8/10
Aus einem mir unerfindlichen Grund war ich bis heute geplagt mit AMD-CPU-Capping. Unter Vollast und/oder bei CPU-Temperaturen von 70C+ ging die Frequenz unter Linux einfach runter auf 399MHz. Und blieb dort. Bis zu einem Reboot.
Serious!?
Ja, ernsthaft. Und das Problem hat mich nun 80+ Tage beschäftigt. Oder eben zu selten gekümmert.
Oben: AMD Zen2 CPU: Epyc 7702 – 64-Kerne, 128 Threads, 200W
Stellt sich heraus, ich konnte wohl ein wichtiges Modul bzw. einen ASUS-Kernel-Patch nicht nutzen:
modprobe -v asus-nb-wmi
insmod /lib/modules/5.8.11-1-linux/kernel/drivers/input/serio/i8042.ko.xz
modprobe: ERROR: could not insert ‘asus_nb_wmi’: No such device
Bei mir gab es unter /sys/devices/platform/
einfach keinen Ordner asus-nb-wmi
. Und der hätte ab Kernel 5.6.x wohl genau dort sein sollen. Da kann ich modproben, bis ich schwarz werde.
Was tun? Wir sind mit Internet nie alleine, zum Glück auch nicht mit Problemen, so fand ich die selbe Issue vom selben Hardware-Hersteller für ein anderes Modell, https://lab.retarded.farm/zappel/asus-rog-zephyrus-g14/-/issues/9. Man solle einfach i8042.nopnp
als Kernelparameter dem GRUB hinzufügen und rebooten. Was ich tat.
Das erste Erfolgsgefühl hatte ich dann beim erneuten Modproben: keinerlei Fehlermeldung. Okay, sehr cool! Natürlich wollte ich danach wissen, ob der Ordner nun da ist: und auch der asus-nb-wmi
war nun vorhanden (logisch, aber egal), inklusive Inhalte. Nice!
Wirklich etwas von der Kiste gefordert hatte ich da noch nicht, also wieder den BOINC-Client gestartet – meines Wissens „der ultimative Stresstest“ für jede CPU/GPU. Hier hatte ich auch immer wieder die Erfahrung gemacht, dass die CPU einknickt. Und tatsächlich: jetzt ist 18:00 und seit dem Mittag läuft meine CPU, eine AMD Ryzen 7 4800HS, unter Vollast mit erwartbarer dynamischer Frequenz und auch mit Temperaturen Ü70C (aktuell locker 90C, offiziell verträgt er wohl 105C).
W00t!
Nun, egal. Selbst Schuld, bleeding edge hardware gekauft zu haben… ¯\_(ツ)_/¯
Für ein Projekt musste ich mich auf Web-Bildersuche für Dateien größer als 5MB begeben. Dabei fiel mir eine uralte Share-Leiste ins Auge, wie u.a. wir Blogger sie um 2004 herum manuell noch in unsere (X)HTML-Webseiten gepflegt hatten:
Damals war nicht abzusehen, dass es mal _die_ Webseuche überhaupt werden würde. Davon abgesehen war ebenfalls unwahrscheinlich, dass diese Idee mal zu unkontrollierbaren Mega-Corporations führen würde.
Mir fiel auf, dass die Icons hier nach Popularität bzw. Nutzung geordnet sind. Das bedeutet, dass Twitter damals noch populärer als Facebook oder Reddit war. Besonders bemerkenswert fand ich digg auf Platz 4.
Was ist aus diesen ganzen Pionieren der (a)sozialen Netzwerke geworden? Ich begab mich auf Recherche…
digg.com – entgegen meinen Erwartungen existiert die Domain wie auch das Projekt noch. Geschrieben in Python, wird es im Dezember stolze 16 Jahre alt. Da man damit Webinhalte nicht nur teilen, sondern auch bewerten konnte, entstand sogar ein eigener Neologismus dafür, das sogenannte digging. Du diggst nach unten, der Link war Käse. Viele Diggs nach oben zeigten einen populären Inhalt, den du unbedingt lesen musstest. 2010 ging das Redesign in die Hose, zwei Mitgründer verließen das Projekt und 2012 wurde es filetiert, Marke, Website und Technologie wurden für nur 500.000$ verramscht. Heute ist es ein Produkt von „BuySellAds“ und der Name ist ab 2018 Programm: vom Aggregator-Pionier ist nicht viel geblieben, die Website erinnert heute eher an eine virtuelle Bildzeitung.
Google+ – brauchen wir wohl nicht viele Worte verlieren, der Sozial-Media-Konkurrent aus dem Hause des „Big G“ wurde im April 2019 für immer geschlossen. Sogar mehrere Monate früher als geplant. Obwohl es als das innovativste und mit komplexeste der sozialen Netzwerke galt, wurden offiziell Sicherheitslücken und Designfehler als Gründe angegeben. Inoffiziell konnte sich ein halbwegs intelligentes soziales Netzwerk einfach überhaupt nicht durchsetzen. Die Schließung dieses Projekts sollte man auch als Mahnung verstehen – das Web ist im Eimer. Selbst Google hatte keine Chance den Karren mehr aus dem Dreck zu ziehen.
Yahoo! Groups – wird sogar erst Ende des Jahres offiziell gekillt. Allerdings kann man keine neuen Inhalte mehr seit über einem Jahr einstellen. Pionier war man hier in der Verlagerung von elektronischen Mailinglisten ins Web. Ein großer Pluspunkt (aber auch Kritikpunkt) war das Fehlen jeglicher Moderation der Inhalte. Es hatte die Möglichkeit eines der größten Diskussionsforen im Web zu werden und zeitweise war es genau das: 2008 hatte man fast 120 Millionen User in 22 Sprachen vorzuweisen. Verizon zieht am 15. Dezember endgültig den Stecker.
del.icio.us – vielleicht eines der legendärsten „Social Networks“. Ein Hauptproblem bei der Größe des WWW ist es den Überblick zu behalten. Del.icio.us löste das clever indem es die Möglichkeit bot, Lesezeichen zu teilen. Was erstmal wenig revolutionär klingt hat in der Anwendung dazu geführt, dass es sich zum Über-WWW-Kurzzeitgedächtnis entwickelte. Besonders als Onlineautor ein legendäres Feature. Weiteres Killer-Feature: wer del.icio.us-Nutzer war, der brauchte kein Twitter. Auch zeitlich lag man beim Start 2003 fast richtig mit dem Timing zum überflüssigsten Web-Marketing-Phänomen EVER, dem „Web 2.0“. Heute ist nicht einmal mehr die Domain aktiv. Die vielen Besitzerwechsel führten zwischenzeitlich auch zu Komplettlöschungen von Links und Nutzerkonten. Selbst Yahoo! hatte 2005 keinen Bock mehr auf das Projekt. Danach war es faktisch tot, egal wer noch kam.
StumbleUpon – bedeutet übersetzt so viel wie „darüber stolpern“. Worüber Webnutzer immer stolpern, egal was sie machen, sind Links zu anderen Webseiten. StumbleUpon wollte daraus Kasse machen. Ich bin nicht sicher, ob ihnen das je gelungen ist, dennoch kam eBay 2007 und kaufte das Teil für 75 Millionen US-Dollar. StumbleUpon ist das perfekte Beispiel, warum auch die „Web 2.0“-Blase irgendwann platzen musste. Offline seit 2018, existiert eine der Grundideen heute noch als Browserplugin namens „Mix“.
Play-Icon trifft auf Kreis-Icon – auch wenn ich dieses „soziale Netzwerk“ nicht kenne möchte ich es dennoch als gutes Beispiel für die damalige Webzeit nicht unkommentiert lassen. Im Kern wussten wir bis auf wenige Ausnahmen nämlich nicht, woher plötzlich alle diese kleinen, nutzlosen Icons kamen und was der Scheiß eigentlich sollte. Wir haben, tatsächlich, einfach irgendwelche Code-Snippets in unsere Webseiten eingebaut, entgegen unserem Sicherheitsgefühl und unserer Vernunft, weil dieses „Sharing is caring“ war einfach überall. Es war beängstigend und eine eklige Zeit, mit am Ende auch ziemlich ekligen, exploitenden Produkten. Ich will hier auch nicht in die Tiefe gehen, weil zum Glück ist „Web 2.0“ lange tot. Doch es zeigt uns am Ende sehr gut, dass, selbst wenn wir gewollt hätten, niemand ein (a)soziales Netzwerkphänomen wie Facebook oder Twitter hätte verhindern können. Es war auf einmal „plötzlich da“. Wie das Internet generell.
Technorati – das letze Icon hier war wahrscheinlich das komplizierteste der (a)sozialen Netzwerke. Um das Konzept Technorati zu verstehen, brauchte man ein Handbuch. Nur leider druckt sich nicht eben jemand mal schnell ein kleines Internet aus. Es wollte unbedingt eine Suchmaschine sein, war aber keine, die diese Definition verdient hätte. Man konnte seine Website hier anmelden und verstand dann hinterher nicht, was das vielschichtige Admin-Interface einem eigentlich sagen will, geschweige warum man seine Seite hier angemeldet hatte. Natürlich versuchte man auch Displayanzeigen an die Konsumenten zu bringen. Die Komplexität und oberflächliche Sinnlosigkeit machten das Produkt allerdings sehr interessant und vielversprechend; alleine der Name war ein Kofferwort aus Technologie und Literati, was intellektuell wirken sollte und manchmal sogar funktionierte: denn selbst 2016, lange nach dem Hype um Aggregatoren, Link-Sharer und Status-Update-Fanatik-Bots (sprich „Web 2.0“) ging das Projekt für 3 Millionen an einen anderen Besitzer über. Die Domain gibt es heute noch, das Projekt (leider?) nicht mehr. Ich würde mich allerdings nicht wundern, wenn wir ein paar von den damals überfrachteten und sinnlosen Features irgendwann wiedersehen werden als eigenständiges Webprojekt, denn ganz ehrlich, hier war man vordergründig und hintergründig der Zeit voraus.
Fazit: die „Nullerjahre“ waren schwierig für das Web, für Content-KreatorInnen genauso wie für bloße KonsumentInnen. Es war rückblickend eine recht unverständliche Zeit, zu der man sich außerhalb der USA die Hintergründe irgendwie zusammenrecherchieren musste; was einfach war für Nutzer, die der englischen Sprache mächtig waren und schwierig für alle anderen. Man fragte zu wenig „wozu das alles?“ und „machte einfach mit“ (Mitläufer-Phänomen), oft waren die Code-Snippets generell verseucht und stellten große Sicherheitsrisiken dar, wenn wohl auch ungewollt und größtenteils unwissend.
Gleichzeitig war es die Zeit des ersten wirklich großen WWW-Marketing-Hypes, man stellte das „Sharen“ als das nächste „große Ding“ dar, was es ja dann auch wurde, und erfand sogar einen eigenen Begriff, um sich gegen alles Vorherige abzusetzen, „Web 2.0“. Vielleicht war es rückblickend „das erste große künstliche Ding“, den zuvor hatte man als Technikbegeisterter irgendwie das Gefühl, es würde alles einigermaßen sinnvoll aus- und zusammenwachsen hier drin. Gerade in dieser herbeigelogenen „Weiterentwicklung“ lag vielleicht aber auch das größte Problem und der größte Betrug. Beste Beispiele hier sind Technorati, del.icio.us oder Google+ – alles Web-Produkte mit großem Potenzial, jedoch unverständlich und nicht einfach genug für die Massen.
Überhaupt Massen, ein nicht zu unterschätzender Faktor: wie damals so bewegen wir uns heute auf einem völlig unbekannten Terrain, da wir mit noch keiner Technologie dermaßen viele Menschen rund um die Uhr erreichen, begleiten und leider auch manipulieren und verkaufen konnten. Die US-Wahl 2016 mag ein gutes Beispiel hier sein, was (a)soziale Netzwerke anrichten können, wenn man negative Auswirkungen hier anführen möchte, oder auch das Cybermobbing. Viele Fragen hier werden auch eventuell zu einem Generationenproblem und nicht innerhalb weniger Jahre oder nur einer Dekade gelöst werden können. In Europa hält man mit der DSGVO faktisch erst seit wenigen Jahren aktiv gegen; es könnte bereits zu spät sein.
Und hiermit endet mein historischer Ausflug, in die „Nullerjahre“ wie in die Zeit der „Social-Media-Icons“. Es ist unschön noch heute Websites zu finden, die solche Leisten anbieten. Dennoch hat mich dieses kleine, sinnlose Netzwerkartefakt zum Nachdenken wie zur Erstellung dieses Textes gebracht. Ich bin froh, dass wir diese Zeit hinter uns haben. Peinlich ist mir, ein Teil davon gewesen zu sein. Ich kann damals auch schon spät drangewesen sein, doch seitdem sehe ich eigentlich für das WWW nur noch schwarz. Ich denke nicht, dass wir diese dämlichen Erfindungen wieder wegbekommen werden. (A)soziale Netzwerke – für mich sind sie die technologische Immunschwächekrankheit, an der das Web krepiert.
Influenca – geh‘ mir bitte aus der Sonne, du bist ansteckend/
Wie ein Virus, den Dreck, den du verbreitest, ist das anstrengend/
Influenca – wieso werden das immer mehr behinderte Kinder/
Warum haben eure Eltern nicht verhütet, was hat ihre Aufklärung verhindert/
Rede nicht mit ihr, denn sie hat eine schreckliche Krankheit/
sie postet lieber drei Tage Kinderzimmer als einen Tag in Frankreich/
nee, die Sprache kann sie eh nicht, doch schreibt sie einen Track darüber/
der sich nicht mal reimt, wenigstens bucht sie später bei Über/
ein Track für’s Radio, eigentlich ist sie gar nicht so, genießt nur ihr Smartphone/
sie hat Fans, Millionen Follower, alle gekauft im Darkweb, doch sei’s drum/
sie kann gut, sehr gut auf Zehenspitzen gehen und auch wenn/
sie keinerlei Talente hat wollen es in sozialen Medien Millionen sehen/
ist doch fast wie Fernsehen! Sagt ihre Oma auch, sie fotografiert gerne für/
Hardcore-GILF-GIF-Videos mit Opas Feuerwehrschlauch. Er holt ihn raus/
oh nein, sie nimmt gerade auf und Papa kommt rein/
er sagt Mama hat ihn heute verlassen wegen der Tochter ihrer Dummheit/
Oma rennt, Opa pennt, Mama ist weg und Papa schreit/
es klingelt die Tür und das Telefon zur selben Zeit, weil mal wieder Polizei/
der Wachtmeister bekommt von ihr einen BJ zwischen Angel und Tür/
ihr Nick im Internet ist BJAlice02, jetzt weißt du wofür/
Influenca – geh‘ mir bitte aus der Sonne, du bist ansteckend/
Wie ein Virus, den Dreck, den du verbreitest, ist das anstrengend/
Influenca – wieso werden das immer mehr behinderte Kinder/
Warum haben eure Eltern nicht verhütet, was hat ihre Aufklärung verhindert/
Heute wurde er 17, das muss heftig gefeiert werden/
Frühstück, Mittagessen, Abendessen, Hormone, denn er will ein Mädchen werden/
seit kurzem postet er seine Fortschritte in einem Vlog/
mit glatter Haut und dicken Titten klappt es mit Followern wie/
ist auch egal. Im Texten war er nie die Leuchte, hat die Schule schon geschmissen/
Was er werden will, keine Ahnung, das fragt sein Jugendberater auch/
er gehe lieber shoppen mit Hartz IV, weil seine Mutter nicht arbeiten braucht/
er liebe immer noch Deutschland, früher mit Flagge und Glatze frisch rasiert/
heute mit blauen Kontaktlinsen und blondierten Haaren für die kastrierten Massen/
wozu sich Gedanken machen, alles läuft doch wie es soll/
er ist noch nicht sicher, ob er ihn sich abnehmen lassen soll/
denn wenn er hart wird, und er sich damit zwischen die Titten spritzt/
ist er froh, wenn er es noch schafft bevor er kommt auf Record zu klicken/
doch meist gelingt ihm das nicht, dann spritzt er sich ins Gesicht/
Gott, er liebt sein iPhone, hat ihn letztes Jahr nur die Niere gekostet/
sein Nick ist Trafica03.com, ihn hat das Internet verhorstet/
Influenca – geh‘ mir bitte aus der Sonne, du bist ansteckend/
Wie ein Virus, den Dreck, den du verbreitest, ist das anstrengend/
Influenca – wieso werden das immer mehr behinderte Kinder/
Warum haben eure Eltern nicht verhütet, was hat ihre Aufklärung verhindert/
2012/2013 war Secure Boot ein megaheißes Thema. So dermaßen heiß, dass ich sogar in meinem Feedreader zweistellig zählen konnte, siehe hier.
2020 ist dieses Rotzthema immer noch nicht tot.
Wie ist das möglich?
Gestern ein Update für das mitgelieferte Windows 10 auf einem Laptop gemacht, das berüchtigte Update 2004 vom Mai. Ich weiß nicht wieso, wohl aus Laune heraus oder weil ich einfach ein System wollte, wo ich nicht dauernd darauf hingewiesen werden möchte, dass es nicht 100% aktuell ist. Ich hätte es lassen sollen, denn ich verlor meinen GRUB.
Bootet anschließend Linux, bekam ich das hier heraus:
Welcome to Grub!
error: unknown filesystem.
Entering rescue mode…
grub rescue>
Jop, das war’s dann. Kein Linux will mehr booten. Und das mit ausgeschaltetem Secure Boot, ausgeschaltetem Fastboot _und_ dem manuell ausgewählten EFI-Eintrag im mitgelieferten BIOS-Interface.
Mit ls
geht dann das Debugging los. Irgendwas mit (hd1,gptX)
spuckt das System dann aus. Bei mir waren das 10+ Einträge. Jeden durchgehen, mit englischsprachigem Tastaturlayout, kurz vor Mitternacht, wo hängt mein verschollenes root
herum?
Als es dann gefunden war, erst einmal /home
gefunden, geil! Nix bootet. Glücklich war ich dann dennoch, denn irgendwie ist mein Linux ja noch da.
Da es auf einem Haussystem eigentlich nur zwei ext-Systeme geben kann wegen / und /home (oder welches Linux-Dateisystem auch immer man verwendet, z.B. reiser, etc.), hatte ich mit dem zweiten dann Glück. Mit folgenden Codezeilen brachte ich das System wieder in einen grafischen Bootzustand:
grub rescue > root=(hd1,gpt2)
grub rescue > prefix=(hd1,gpt2)/boot/grub
grub rescue > insmod normal
grub rescue > normal
Der soll dann zwar nur temporär sein, aber mir reicht das. Windows nutze ich vielleicht einmal im Schaltjahr. Dann kracht es aber richtig.
Ahhhh! Ahahahaha! Ihr Redmonder Zoophilie-Junkies mal wieder! Hatte euch schon fast komplett vergessen!
[Update I, 16.10.20]
Das mit der temporären Lösung ist einem ja irgendwann doch zu blöde, weshalb ich mir kürzlich wieder die permanente zurückerobert habe. Hier hilft es, wenn man sich zuerst mal ausgeben lässt, welche Partitionen man benutzt und wie diese heißen: lsblk -o PATH,PTTYPE,PARTTYPE,FSTYPE,PARTTYPENAME
. Heutzutage wird das eher in Richtung nvmeXYZ gehen, bei älteren PCs ohne SSDs dann wahrscheinlich sda. Dann noch ein sudo update-grub
, was bekannt sein sollte, sowie ein sudo grub-install /dev/sda
bzw. ein sudo grub-install /dev/nvmeXYZ
danach und dann „Macht’s gut, Redmond!“.
Jedes Gadget braucht Strom, in irgendeiner Art und Weise. Manche permanent, andere temporär. Die meisten viel bis sehr viel, zu wenige wenig. Es ist wichtiger denn je, sorgfältig auszuwählen, aus welcher Quelle dieser Strom stammt.
Stichwort Atomstrom.
Als das erste Kernkraftwerk der Welt, das Atomstrom in ein öffentliches Stromnetz eingespeist haben soll, gilt Obninsk im Jahr 1954, südwestlich von Moskau. Legen wir zugrunde, dass technisch und von Alterswegen her man um die 50 gewesen sein muss, um dieses „Kunststück“ zu realisieren, ist das die Menschen-Generation ab 1904 gewesen, heute bekannt als „Greatest Generation“.
Mir ist nicht bekannt, warum man diese Vollpfosten marketingtechnisch genau so bezeichnet, haben wir ihnen nicht nur Atomkraft zu „verdanken“, sondern auch die zweite Komplettzerstörung der gesamten Welt, sowie die Zündung der Atombombe zu Lande – Letzteres so ziemlich DAS Dümmste, das du als Lebewesen machen kannst auf einem Planeten, den du selbst bewohnst. Und ohne der Möglichkeit diesen vorher verlassen zu können.
Zeitlich nun einfach visualisiert, wie viele Generationen von diesem Atomstrom bis heute, 2020, maximal „profitieren“ konnten:
II
Und nun, wie viele Generationen dafür bezahlen dürfen:
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
In Worten: Zwei. Versus. Vierzigtausend.
Vierzigtausend Generationen, das sind schlappe 1.000.000 Jahre.
Och bitte, nehmen wir Rücksicht: Hauptsache Oma und Opa hatten es warm!
Diese Woche erst irgendwo online gelesen, dass man den PS4-Controller auch mit der PS3 verwenden kann.
Meine PS3 ist 12 Jahre alt.
Die PS-Taste funktioniert leider nicht. By design.
Hat leider deshalb etwas Fötales:
Konsole ein- und ausschalten ist mit dem nicht. Und auch in die PS3-Menüs kommt man nicht rein. Bummer.
Da ich das dennoch eine sehr coole Idee fand und auch ein Workaround für langwierige Retro-Gaming-Sessions, teile ich hier die Einrichtung:
1. PS3-Konsole sollte ausgeschaltet sein
2. PS4-Controller über USB-Kabel mit der Konsole verbinden
3. Konsole einschalten
4. in „Einstellungen“ wechseln, hier Menüpunkt „Zubehör“
5. „Bluetooth-Einstellungen“ öffnen
6. Scan-Vorgang starten
7. PS4-Controller vom Kabel trennen
8. PS-Taste und „Share“-Taste am PS4-Controller gleichzeitig drücken (wichtig)
9. der PS4-Controller sollte nun mehrfach hektisch blinken (wichtig)
10. erneut den PS4-Controller mit Kabel wieder anschließen (wichtig)
11. hier dann „Wireless-Controller“ auswählen (wichtig)
12. PS4-Controller vom USB-Kabel trennen und verwenden
Hinweis: Controller ist nun an der PS3 angemeldet. Wollt ihr diesen erneut an der PS4 verwenden, müsst ihr ihn neu einrichten, mit USB-Kabel
Junger Jedi, egal wie sinnlos dual oder triple use von Gadgets auch auf den ersten Blick erscheinen möge, huldige das Gadget, denn dem Gadget gehört das gesamte Universum!11
Weltweit soll es über 2,5 Milliarden (Stand Mitte 2019) Nutzer des auf Linux basierenden Android-Betriebssystems geben. Die Kontrolle über dieses Betriebssystem hat eine US-amerikanische Technologiefirma, die aktuell fast 324 Milliarden US-Dollar wert sein soll. Man sollte also meinen, die Veröffentlichung einer neuen Hauptversion dieses Betriebssystems, dem Kernstück auf Milliarden Geräten für Hosentaschen, muss ja faktisch mit großem Tamtam der Weltöffentlichkeit präsentiert werden.
Was macht Google stattdessen?
Spielt Indie und veröffentlicht, auch noch auf der eigenen Blogger-Plattform, lediglich einen ranzigen Blogpost: https://germany.googleblog.com/2020/09/unkompliziert-ubersichtlich-und.html.
W00t!
Nee, ist geil! Ehrlich gemeint! Wie selbstbewusst! Und mutig.
In Coronazeiten solche Meldungen an die Konsumenten des Planeten zu bringen ist schwerer als früher. Selbst der Megakonzern Apple, größter Konkurrent auf Smartphone- und Tablet-Gebiet, musste sich dieses Jahr etwas einfallen lassen, verschickte mysteriösere Nachrichten als sonst, hält noch Events ab _und_ versteckt Easter Eggs in Form Augmentierter-Realität-Goodies. DAS ist genau die selbe Richtung, allerdings um 180 Grad versetzt. Der eigene Charakter bestimmt hier, zu welcher Seite man gehören mag und welche einem besser gefällt. Der Kapitalismus neoliberaler Prägung ist doch etwas Wundervolles!
Jüngst kam auch auch heraus, dass entwicklerintern die Süßigkeiten-Codenames weiterhin verwendet werden: Android 11 heißt dort Red Velvet Cake. Die offizielle Meldung geht eigentlich anders, hier werden seit Version 10 keine süßen Aliase mehr benutzt.
Doch was soll eigentlich nun genau neu sein in Version 11?
Wenn ich das wissen will, lese ich keine News oder Blogposts, ich schaue in die Versionshistorie auf Wikipedia. Dort steht, Neuerungen seien diese hier:
* Temporäre App-Berechtigungen
* Unterstützung von 5G-Mobilfunknetzen
* Chats bekommen einen eigenen Bereich im Benachrichtigungsmenü
* Bluetooth bleibt im Flugmodus aktiviert
* Native Bildschirmaufnahme
* Stummschalten von Benachrichtigungen bei Videoaufnahmen
* Benachrichtigungsverlauf
* Rückgängigmachen von kürzlich gestoppten Apps
* Aktueller Sicherheitspatch-Stand: September 2020
Wirklich viel ist es nicht und wirklich revolutionär Neues kann ich hier nicht entnehmen. Das ist seit Jahren auch nicht mehr zu erwarten in dem Bereich. Wenigstens keine Liste mit „Updates für Emojis“ (oje…).
Mein persönlicher Eindruck ist sowieso: mit jeder neuen Hauptversion macht es Google unabhängigen Entwicklern schwerer 1) eigene ROMs zu bauen und 2) eigene Geräte auf dem neuesten Stand zu halten. Auch fliegen mittlerweile alle Apps, die älter als 1 Jahr sind, automatisch aus dem hauseigenen App-Store, aktualisiert man hier nicht mindestens die Version, auf der diese lauffähig sein sollen.
Die Hochzeit der Smartphones ist vorbei. Dann halt wieder LEGO.
Man kann von Tesla halten was man will: US-amerikanische Marke; Verarbeitung nicht so gut wie bei deutschen oder japanischen Modellen; Akku brennt; der Gründer ist ein (Cov-)Idiot; Markennamen von einem bedeutenden europäischen Erfinder geklaut; etc. pp. You name it.
Aber eines kann man ihnen nicht vorwerfen: der Wille zur Innovation.
Bei Tesla träumt man Innovationen nicht nur oder zeichnet diese. Sie werden in Realität gesetzt. Und dabei haben sie anderen Firmen auf dem Planeten manches voraus. So z.B. ein fahrbares und nutzbares E-Automobil. Und ein zukunftsfähiges Konzept insgesamt. Ja, wahrscheinlich DAS Zukunftskonzept der Mobilität überhaupt für die nächsten Jahrhunderte. Und das „schon jetzt“.
Deshalb lohnt es sich genau jetzt in Tesla-Aktien zu investieren: durch den Split ging der Preis pro Aktie nämlich fast über Nacht von über 2.200$ runter auf aktuell 360€. Wer also ein paar Hunderter übrig hat, das sollten einige Menschen sein seit März, auch unter meinen Leserinnen und Lesern, der sollte sich (ein Depot eröffnen und) Aktien dieser Firma kaufen. Es ist sehr wahrscheinlich, dass die 1.000€ wieder schnell geknackt sein werden. Dann hätte man alleine durch eine Beteiligung fast das Dreifache wieder drin. Ende ist hier übrigens nach oben offen.
Man kann das Geld schnell mitnehmen oder halten. Ich würde halten. Einfach aus „Prinzip Zukunft“. Und es gibt da noch etwas, was ich bemerkenswert fand, die Meldung ist aber schon ein paar Monate her.
Wie wir alle wissen sind oder waren die Japaner mal das technologisch am weitesten fortgeschrittene Völkchen der Erde. So stark und so mächtig und sehr weit fortgeschritten, sie galten als „Schwan“ und flogen in Gesamtasien voraus, während andere Länder wie Südkorea, sogar Taiwan und China, hinterher wackeln mussten. Irgendwann in den 80ern war das so. Es mag sich mittlerweile gewandelt haben, ich bin auch der Meinung, insgesamt haben wir „alles schon erfunden“, also da wird kaum noch was Neues kommen für die Menschheit. Und das wechselt sich da unten nun munter ab, wer in der Parabel voraus fliegt. Ich tippe ja aktuell auf Südkorea, China braucht noch ein paar Jahre, vielleicht Jahrzehnte. Wobei man Taiwan mit dem Chipfertiger TSMC hier auch nicht vergessen darf.
Ich schweife ein bisschen ab, denn was ich eigentlich erzählen will kann man auch ohne dieses Wissen und die Vogelzug-Parabel faszinierend finden.
Die Japaner haben nämlich vor wenigen Monaten den Tesla Model 3 komplett zerlegt, die Ergebnisse wurden im Februar der Weltöffentlichkeit präsentiert. Denn was machst du als Hacker erst einmal, wenn du neue Technik verstehen willst oder schauen möchtest, ob die Technik wirklich neu ist? Na klar, du baust sie auseinander!
Das Wichtigste und das Unbekannteste, das sie fanden, waren zwei individuell designte KI-Chips, von Tesla komplett selbst entwickelt(!), mit entsprechend inhouse-entwickelter Software:
Oben: der Computer des „Model 3“ – ein KI-Chip regelt das autonome Fahren, der andere das gesamte Infotainment-System
Im Kern fanden die Japaner heraus, „ja gut, das Hardware-Ensemble ist eben dafür gut, dass dieses Auto sich selbst steuern kann und die massive Infotainment-Anlage“. Und das stimmte dann auch. Doch was noch viel bedrückender war aus der Sicht der japanischen Ingenieure:
Die Hardware, die oben zu sehen ist, ist 6 Jahre ihrer Zeit voraus!
Tesla ist damit nicht nur Konkurrenten zeitlich enteilt, Tesla ist mit dieser Hardware einer kompletten Industrie enteilt.
„But technological hurdles are not the reason for the delay, according to the Japanese engineer who said „we cannot do it.““
Einer Industrie, die in Europa alleine 3,65 Millionen Menschen beschäftigt – bei Tesla arbeiten aktuell nur 48.000 (Stand 2019)…
Das ist „Alien-Sh*t“, was wir hier sehen. Solche Technik dürfte es aktuell gar nicht geben.
2019 nicht.
Dieses Jahr nicht.
Nächstes Jahr nicht.
2022 nicht.
2023 nicht.
2024 leider auch nicht.
Maximal „irgendwann 2025“, sagen Industrie-Insider. Denn auch wenn der Bericht Ende Februar publik wurde, auseinandergenommen wurde der Tesla wohl irgendwann Ende 2019.
Ganz ehrlich: WAS haben die da gebaut!? und WIE!? Ich bin kein reiner Ingenieur, aber ein kleiner CPU-Head. Vor solch einer Leistung habe ich irre Respekt. Und leider auch Angst.
Und sehen wir es realistisch, selbst wenn sie mit Autos als Konzept komplett sich zerlegen würden, sie hätten immer noch diese Chips, also konkrete Hardware, sowie maßgeschneiderte Software dazu im Angebot. Mir würden spontan mindestens ein Dutzend Anwendungsfälle dazu einfallen, „I, Robot“ wäre Kindergeburtstag dagegen.
Heute gesehen bei heise.de, ein „Highend-Notebook“ mit „300Hz“ vom Gemüse-Discounter unseres Vertrauens:
Ich musste heftig suchen, in welchem PC-Jahr wir hier wirklich angekommen sind.
Der Z3 von Zuse hatte 4 bis 5 Hz, irgendwann um 1941. Der ENIAC vier Jahre später, 1945, schon wuchtige 5kHz. Also irgendwo dazwischen.
Nur wurden leider keine weiteren Computer „dazwischen“ gebaut. Vielleicht fehlen hier auch Einträge in der westlichen Literatur. Die Technik war in jedem Fall noch zu neu und füllte Hallen, alleine die Z3 wog über eine Tonne.
Mit der Headline habe ich noch ein weiteres riesiges Problem neben der Unvollständigkeit (falls das überhaupt jemandem auffiel): ich gehe hier von der Taktfrequenz eines Prozessors aus und halte das für „normal“. Im Text aber geht es um das Display.
Sind Displays heute wichtiger als CPUs!? Sind CPU-Infos nicht mehr relevant für Technikmagazine?? Und: wer kauft eigentlich PCs bei ALDI!? Hakt’s?
…mit Hardware von Qualcomm!
Der wichtigste Chip in einem Smartphone oder Tablet nennt sich SoC, System on (a) Chip. In der Bezeichnung steckt eigentlich bereits alles drin, was man darüber wissen muss: die CPU, Grafikeinheit, GPS, sowie allerlei Kladeradatsch, um mobile Kommunikation möglich zu machen, sowie vieles andere mehr (z.B. für Multimedia wie Filme und Musik) werden in einem einzigen Chip vereinigt. Ingenieurstechnisch ist das eine Spitzenleistung und aller Ehren wert. Sicherheitsaspekttechnisch die reinste Katastrophe.
Ein Beispiel für den schematischen Aufbau eines Snapdragon-SoC, technisch Highend und aus dem Hause Qualcomm, liefert die folgende Grafik:
Man beachte die rot markierten Elemente mit dem Zusatz DSP (Digital Signal Processor). Forscher von Check Point wollen für diese untergeordneten Chips nicht ein Sicherheitsleck, nicht zwei, sondern sage und schreibe 400 Stück entdeckt haben:
https://blog.checkpoint.com/2020/08/06/achilles-small-chip-big-peril/. via
Was Meltdown für Intel und Spectre für AMD, könnte Achilles, so haben die Forscher die Sammlung an Schwachstellen hier getauft, nun für Qualcomm werden: der absolute Supergau.
Betroffen sind die besten Geräte der namhaftesten Hersteller des Planeten: Google, Samsung, LG, Xiaomi, OnePlus – alle dabei und viele mehr. Potenziell bis zu 40% der aktuell drei Millarden Smartphonenutzer weltweit.
Auch die CVEs wurden bereits in die Datenbank aufgenommen, aktuell lauten diese CVE-2020-11201, CVE-2020-11202, CVE-2020-11206, CVE-2020-11207, CVE-2020-11208 und CVE-2020-11209.
Checkpoint hat keinerlei Details zu praktischen Anwendungen veröffentlicht und auch den Hersteller Qualcomm mustergültig informiert. Reagiert dieser nicht, will man mit den Ergebnissen zu den 400 Angriffsvektoren in drei Monaten an die Öffentlichkeit gehen. Spätestens dann sollte man sich wieder ein Dumbphone als Alternative zugelegt haben, so munkelt man.
Keine Panik! Sieht alles schlimmer aus, als es ist! Ende 2020 wird für uns alle doch noch alles gut!
Turntable-Rocker mit Grüßen aus 2006: US-Futurist Ray Kurzweil
Aus Langeweile seit Ewigkeiten mal wieder in einem meiner eigenen Ebooks geschmöckert. Dort habe ich mit Datum 23.11.06 einen interessanten Text entdeckt, betitelt sick shit II. Er dreht sich um Blicke in die Gegenwart einer noch 14 Menschenjahre entfernten Welt.
Spätestens Ende 2020 wird alles gut für die Menschen sein, aus medizinischer Sicht. Denn dann „flitzen Nanobots umher in unserer Blutbahn und werden uns gesund und jung halten“. Sind doch nur noch wenige Monate! Wird schon schiefgehen!
Natürlich gibt es die Onlinequelle dieser kurzweiligen, optimistischen Vorhersagen heute nicht mehr. Ich fand jedoch im Internet Archive noch einen Schnappschuss der Website, wo diese und mehr Prognosen online publiziert wurden. Und dann war da noch…
…“2020 werde die Lebensdauer eines Menschen wesentlich größer als heute sein“. Gut, das war jetzt nicht ganz so schwer, trifft seit 2014 allerdings auf die USA nicht mehr zu.
Oder „2020 werden wir uns komplett in virtuellen Umgebungen bewegen. Anstatt jemanden anzurufen werden wir unser Gegenüber irgendwo virtuell treffen, können virtuelle Strandspaziergänge machen und uns dort unterhalten. Meetings werden in beruhigenden Örtlichkeiten nur noch virtuell stattfinden.“ Möp! Meetings finden im Jahr 2020 wie Ende der 90er-Jahre weiterhin in ranzigen Chat-Applikationen statt und kommen öfter mal direkt aus dem Big-Brother-Ministerium Chinas. Gut, statt nur zu schreiben kann man sein Gegenüber mittlerweile auch direkt anrufen (will niemand wirklich) und man kann es auch in Echtzeit sehen, wenngleich in mieser Handykameraqualität (wenn deutsches Internet einen guten Tag hat). „Virtuelle Strandspaziergänge“ hätten uns in Lockdownzeiten sicherlich mental ein bisschen geholfen, doch in der Realität sehen wir nur wechselnde Standbilder als auswählbare Hintergründe in „Microsoft Teams“. Tja, so unterscheiden sich Begrifflichkeiten früher und heute in Bezug auf „virtuelle Welten“. Hätte man extra dazusagen müssen, klar.
„Innerhalb der nächsten zehn Jahre“, also aus Sicht des Textes um 2016 herum, „müsse sich kein Mensch mehr mit Erkältungen rumschlagen.“ Allerweltskrankheiten wie die Influenza, die aktuell weltweit Zehntausende Tote fordert pro Jahr, ließen sich durch „die Nanotechnologie komplett ausrotten“. Nanotechnologie versus COVID-19 FTW! Läuft doch!
Zu seiner Verteidigung will ich am Ende anmerken, bei manchen Prognosen aus dem Text hat man ihn auch gnadenlos geschnitten.
Augmentierte Realität durch Brillen zum Beispiel – Google Glass wurde 2014 für den Massenmarkt aus moralischen und ethischen Bedenken von Google selbst aus dem Verkehr gezogen. Oder der Verbreitung von Viren durch Terroristen – offenbar nichts im Vergleich zu Zoonosen. Anderes Zeug, Themen wie „Züchten von Organen“ und „Metamorphosen von Hautzellen“, erspare ich uns jetzt, es ist kurz vor halb Acht und draußen hat es 30+°C. Seit Freitag.
Ja. Wahrsagerei ist auch kein Zuckerschlecken mehr. 2020 – wir packen das!