<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator>
  <link href="https://br3nt.github.io/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://br3nt.github.io/" rel="alternate" type="text/html" />
  <updated>2026-10-05T11:00:47+10:30</updated>
  <id>https://br3nt.github.io/feed.xml</id>
  <title type="html">br3nt’s Stuff</title>
  <subtitle>This is a collection of random thoughts and projects in various states of completeness.</subtitle>
  <author><name>Brent Jacobs</name></author>
  <entry>
    <title type="html">flOw, the Flash game that lost its levels</title>
    <link href="https://br3nt.github.io/2026/10/05/flow-tribute.html" rel="alternate" type="text/html" title="flOw, the Flash game that lost its levels" />
    <published>2026-10-05T09:00:00+10:30</published>
    <updated>2026-10-05T09:00:00+10:30</updated>
    <id>https://br3nt.github.io/2026/10/05/flow-tribute</id>
    <content type="html" xml:base="https://br3nt.github.io/2026/10/05/flow-tribute.html">&lt;style&gt;
  .flow-shot { display: block; width: 100%; border-radius: 10px; margin: 1.2em 0 0.4em; }
  .flow-play {
    display: inline-block; margin: 0.6em 0 1.4em;
    padding: 0.7em 1.4em; border-radius: 999px;
    background: #007cc9; color: #fff; font-weight: 700;
    text-decoration: none; letter-spacing: 0.3px;
  }
  .flow-play:hover { background: #005c8f; color: #fff; }
  .flow-cap { font-size: 0.82rem; color: #475569; margin: 0.2em 0 1.6em; }
  .flow-video { display: block; width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: 10px; margin: 1.2em 0; }
&lt;/style&gt;

&lt;p&gt;I was watching YouTube and came across &lt;a href=&quot;https://youtu.be/6uYOnnz8o0g&quot;&gt;this /noclip documentary&lt;/a&gt; on thatgamecompany, &lt;em&gt;Flower, Flow &amp;amp; the Origins of thatgamecompany&lt;/em&gt;. It interviews Jenova Chen, who founded thatgamecompany, the studio behind &lt;em&gt;flOw&lt;/em&gt;, &lt;em&gt;Flower&lt;/em&gt;, &lt;em&gt;Journey&lt;/em&gt; and &lt;em&gt;Sky&lt;/em&gt;.&lt;/p&gt;

&lt;iframe class=&quot;flow-video&quot; src=&quot;https://www.youtube-nocookie.com/embed/6uYOnnz8o0g&quot; title=&quot;Flower, Flow &amp;amp; the Origins of thatgamecompany - /noclip Documentary&quot; allow=&quot;accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;He talks about moving from Shanghai to the US to study at USC’s Interactive Media program, because there was no game industry in China doing the kind of games he wanted to make. There he worked with Nicholas Clark, a fellow USC student who co-created &lt;em&gt;flOw&lt;/em&gt; with him, and Austin Wintory, who wrote the music. His lecturers pushed him to get creative, and in that time he made small experimental games like &lt;em&gt;Cloud&lt;/em&gt; and &lt;em&gt;flOw&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;flOw&lt;/em&gt; was part of his master’s thesis, &lt;a href=&quot;https://www.jenovachen.com/flowingames/thesis.htm&quot;&gt;&lt;em&gt;Flow in Games&lt;/em&gt;&lt;/a&gt;. You’re a small creature starting out in the shallows. As you eat, your creature grows longer, with more segments. As you go deeper you meet other creatures that try to attack and eat you. The point of the game was to let the player choose their own difficulty, by choosing when to sink down or swim back up. That was the point of the thesis: let the player steer the difficulty so they stay in the zone. A year later &lt;em&gt;flOw&lt;/em&gt; became thatgamecompany’s first PlayStation 3 game, and the studio went on to make &lt;em&gt;Flower&lt;/em&gt;, &lt;em&gt;Journey&lt;/em&gt; and &lt;em&gt;Sky&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;flow-shot&quot; src=&quot;/assets/img/flow-title.jpg&quot; alt=&quot;The flOw title screen: the word flOw in white serif letters with ribbons trailing off each side, small creatures drifting across a bright blue sea&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I wanted to explore his work, and &lt;em&gt;flOw&lt;/em&gt; seemed an easy enough entry point. It was a Flash game, so it should be on archive.org or somewhere similar.&lt;/p&gt;

&lt;h2 id=&quot;a-black-void&quot;&gt;A black void&lt;/h2&gt;

&lt;p&gt;Like I experienced with &lt;a href=&quot;/2026/09/10/the-space-game-launcher.html&quot;&gt;The Space Game&lt;/a&gt;, when I played the game from &lt;a href=&quot;https://archive.org/details/flash_flow&quot;&gt;archive.org&lt;/a&gt;, it didn’t work. I was greeted by a black void with some glowing dots in the background. At first I didn’t realise anything was wrong. I could steer the creature with my mouse, but I couldn’t work out how to play. There wasn’t anything to do. I tried swimming towards the glowing dots, but nothing reacted.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;flow-shot&quot; src=&quot;/assets/img/flow-black.jpg&quot; alt=&quot;flOw on archive.org: the small white creature alone in a black void, with a few faint glowing dots and nothing to eat&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And so began my journey of getting the game to work!&lt;/p&gt;

&lt;h2 id=&quot;restoring-the-game&quot;&gt;Restoring the game&lt;/h2&gt;

&lt;p&gt;Jenova Chen’s own &lt;a href=&quot;https://www.jenovachen.com/flowingames/flowing.htm&quot;&gt;flOw page&lt;/a&gt; is still up, but its “Play flOw online” link leads to a site that can’t be reached.&lt;/p&gt;

&lt;p&gt;Claude helpfully read the SWF and found the answer in a couple of minutes. On startup, the game loads &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;levels.xml&lt;/code&gt; along with its other assets. If those files aren’t sitting next to the SWF, the game doesn’t know what to draw.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;levels.xml&lt;/code&gt; describes each level in the game, including its background colour, its food, its creatures and its bosses:&lt;/p&gt;

&lt;div class=&quot;language-xml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;Level&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;bgColor=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;0x008DD8&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;levelSize=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;400&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;SpawnFood&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;num=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;15&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;foodType=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;1&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;hpMin=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;15&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;hpVar=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;10&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;SpawnFish&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;num=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;2&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;numSegs=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;3&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;maxSegs=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;16&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;randEvolve=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;0&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;segLength=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;15&quot;&lt;/span&gt;
             &lt;span class=&quot;na&quot;&gt;speedMin=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;60&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;speedVar=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;5&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;turnMin=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;8&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;turnVar=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;3&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;panic=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;true&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/Level&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The game also streams its music, one MP3 per level and one per sound effect.&lt;/p&gt;

&lt;p&gt;The good news is that every file is still on Jenova Chen’s server. The Wayback Machine even has &lt;a href=&quot;https://web.archive.org/web/20170512055653/http://www.jenovachen.com/flowingames/implementations/flowing/flOw_source.zip&quot;&gt;the original ActionScript source&lt;/a&gt; from April 2006. Claude downloaded &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;core.swf&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;levels.xml&lt;/code&gt; and the 41 MP3s into one folder, served it locally, pointed Ruffle at it, et voilà! The game sprang to life!!!&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;flow-shot&quot; src=&quot;/assets/img/flow-eating.jpg&quot; alt=&quot;flOw in play: the creature with its fins out in the middle of the blue, a ring of blurred creatures circling on the level below&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Compared with bringing back The Space Game, where we had to fake a whole server, this was a five-minute fix.&lt;/p&gt;

&lt;h2 id=&quot;a-tribute-page&quot;&gt;A tribute page&lt;/h2&gt;

&lt;p&gt;It deserved more than a fix, so I made it a &lt;a href=&quot;https://br3nt.github.io/flow-tribute/&quot;&gt;tribute page&lt;/a&gt; where you can play it.&lt;/p&gt;

&lt;p&gt;The page is styled like the game. It starts with the iconic colours from when the game first loads, then as you scroll, the background gets dark and eerie in the dangerous depths. Glowing particles pop in and out, and blurred creatures drift on a layer behind the page, the way the next level down shows through in the game. Just like the game, you see hints of snakefish, jelly rings, and once you’re deep enough, a manta. The page is somewhat interactive too. If you’re on a computer, a little creature follows your mouse and eats the food floating around the page.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;flow-shot&quot; src=&quot;/assets/img/flow-deep.jpg&quot; alt=&quot;The Manta Boss level: a dark teal sea with the huge kite-shaped manta, curved sides and glowing nodes, beside the player&apos;s small creature&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I really appreciate the design aesthetic of this game. The blurred layers below hint at what you’ll discover next, and encourage curiosity and exploration. You feel anxiety and excitement as you see large, potentially dangerous creatures lurking below, and wonder if you can take them on head first. The way the creatures move, and the way you grow as you eat, give a lovely sense of naturalness and connectedness to the environment. You feel part of an ecosystem.&lt;/p&gt;

&lt;p&gt;I hope you love this one as much as I do :)&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;flow-shot&quot; src=&quot;/assets/img/flow-tribute.jpg&quot; alt=&quot;The flOw tribute page: the flOw logo over a bright blue sea of particles and blurred creatures, with a round Play button&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;flow-play&quot; href=&quot;https://br3nt.github.io/flow-tribute/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;▶ Play flOw →&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;flow-cap&quot;&gt;Source: &lt;a href=&quot;https://github.com/br3nt/flow-tribute&quot;&gt;github.com/br3nt/flow-tribute&lt;/a&gt;&lt;/p&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="flash" />
    <category term="ruffle" />
    <category term="preservation" />
    <category term="gamedev" />
    <category term="ai" />
    <category term="anthropic" />
    <summary type="text">Jenova Chen&apos;s 2006 Flash game flOw plays on archive.org as an empty black sea. The fix was one missing XML file and some MP3s. So I made it a tribute page where you can play it properly.</summary>
  </entry>
  <entry>
    <title type="html">Resurrecting The Space Game, a dead Flash game, by faking its server</title>
    <link href="https://br3nt.github.io/2026/09/10/the-space-game-launcher.html" rel="alternate" type="text/html" title="Resurrecting The Space Game, a dead Flash game, by faking its server" />
    <published>2026-09-10T08:00:00+09:30</published>
    <updated>2026-09-10T08:00:00+09:30</updated>
    <id>https://br3nt.github.io/2026/09/10/the-space-game-launcher</id>
    <content type="html" xml:base="https://br3nt.github.io/2026/09/10/the-space-game-launcher.html">&lt;style&gt;
  .tsg-shot { display: block; width: 100%; border-radius: 10px; margin: 1.2em 0 0.4em; }
  .tsg-play {
    display: inline-block; margin: 0.6em 0 1.4em;
    padding: 0.7em 1.4em; border-radius: 8px;
    background: #2b6cb0; color: #fff; font-weight: 700;
    text-decoration: none; letter-spacing: 0.3px;
  }
  .tsg-play:hover { background: #1e4e8c; color: #fff; }
  .tsg-cap { font-size: 0.82rem; color: #475569; margin: 0.2em 0 1.6em; }
  .tsg-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 1.2em 0 1.6em; }
  .tsg-grid img { display: block; width: 100%; border-radius: 8px; }
  @media (max-width: 640px) { .tsg-grid { grid-template-columns: 1fr; } }
  .tsg-err { margin: 1em 0 1.4em; padding: 0.7em 1em; border-left: 5px solid #e6b800; background: #fff6cc; color: #4a3d00; font-weight: 600; }
  .tsg-err p { margin: 0; }
&lt;/style&gt;

&lt;p&gt;&lt;em&gt;The Space Game&lt;/em&gt; is one of my favourite Flash games. You mine asteroids for minerals and build out your base with solar stations, lasers, and missile launchers to protect yourself from waves of pirates that warp in to attack.  The lasers use up your energy reserves, and building and missiles cost minerals.  A wave or two of pirates could easily overwhelm your base.  The game mechanics were simple but addictive, and I loved the vector style art and the soundtrack.&lt;/p&gt;

&lt;p&gt;The game was released in 2009.  Coding and artwork were by &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot;&gt;David Scott&lt;/button&gt;&lt;span class=&quot;person-pop&quot;&gt;&lt;span class=&quot;person-pic&quot;&gt;&lt;img src=&quot;/assets/img/david-scott.jpg&quot; alt=&quot;David Scott&quot; /&gt;&lt;/span&gt;&lt;span class=&quot;person-head&quot;&gt;David Scott&lt;/span&gt;&lt;span class=&quot;person-bio&quot;&gt;Co-founder of Casual Collective with Paul Preece. Made Flash Element TD in 2007, then The Space Game and its Missions follow-up. Casual Collective became KIXEYE in 2011.&lt;/span&gt;&lt;span class=&quot;person-links&quot;&gt;&lt;a href=&quot;https://web.archive.org/web/2009/http://www.casualcollective.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Casual Collective in 2009, Wayback Machine&lt;/a&gt;&lt;a href=&quot;https://kixeye.fandom.com/wiki/David_Scott&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;KIXEYE wiki, David Scott&lt;/a&gt;&lt;a href=&quot;https://www.kongregate.com/en/games/casualcollective/the-space-game&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Space Game on Kongregate&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; from Casual Collective and the music and sound effects by Somatone. Later the same year came &lt;em&gt;The Space Game: Missions&lt;/em&gt;, expanding the original game with a campaign.&lt;/p&gt;

&lt;div class=&quot;breakout-md tsg-grid&quot;&gt;
  &lt;img src=&quot;/assets/img/tsg-menu-grid.jpg&quot; alt=&quot;The Space Game main menu: glowing yellow title, Training, Missions, Mining Modes, Survival Modes and Bonus Modes tabs&quot; /&gt;
  &lt;img src=&quot;/assets/img/tsg-build.jpg&quot; alt=&quot;Mission 3 in play: a base of energy nodes, miners and lasers strung across an asteroid field, the build bar open, 17 exploders detected&quot; /&gt;
  &lt;img src=&quot;/assets/img/tsg-wave.jpg&quot; alt=&quot;A pirate wave closing in: 30 missile ships detected, the minimap full of red, the base bristling with lasers&quot; /&gt;
  &lt;img src=&quot;/assets/img/tsg-complete.jpg&quot; alt=&quot;The Mission Complete screen: 346 ships killed, 5732 minerals mined, with energy and mining graphs for the run&quot; /&gt;
&lt;/div&gt;

&lt;p&gt;When Flash died, so did the game. Most Flash games can run on Ruffle.  Unfortunately, The Space Game starts to load but then displays the error:&lt;/p&gt;

&lt;blockquote class=&quot;tsg-err&quot;&gt;
  &lt;p&gt;Unable to load game. Please notify www.casualcollective.com.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;the-archived-swf-is-not-the-game&quot;&gt;The archived SWF is not the game&lt;/h2&gt;

&lt;p&gt;A copy of the game is made available on &lt;a href=&quot;https://archive.org/details/thespacegame&quot;&gt;archive.org&lt;/a&gt; and &lt;a href=&quot;https://www.kongregate.com/en/games/casualcollective/the-space-game&quot;&gt;Kongregate&lt;/a&gt;. Both sites load the game using Ruffle. Both then print &lt;em&gt;“Unable to load game. Please notify www.casualcollective.com.”&lt;/em&gt; and stop. A 2021 thread on &lt;a href=&quot;https://www.reddit.com/r/FlashpointArchive/comments/ng5m51/the_space_game_and_the_space_game_missions_try_to/&quot;&gt;r/FlashpointArchive&lt;/a&gt; says the same thing: the SWFs pull their content from URLs that went dark, and Flashpoint Infinity could not run them either at the time.&lt;/p&gt;

&lt;p&gt;I’ve been wanting to replay this game forever.  My own Downloads folder had a copy I grabbed in 2021, sitting next to two Ruffle nightlies from the same year. So I had tried this before and not got far.&lt;/p&gt;

&lt;p&gt;I’ve had a lot of luck getting Claude to help me get old games running on my Mac, so I figured it was the perfect AI for the job!&lt;/p&gt;

&lt;p&gt;Claude quickly realised the SWF being run on archive.org was just a loader stub.  The SWF was only 16 KB.  I asked whether Ghidra could decompile it.  Claude was already many steps ahead of me.  Ghidra doesn’t do ActionScript, so Claude had picked JPEXS Free Flash Decompiler and followed up that the stub was making a POST to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;widget.casualcollective.com/load&lt;/code&gt;, and the reply it expected was two fields, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;w1&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;w2&lt;/code&gt;. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;w1&lt;/code&gt; is a URL for a “widget” wrapper SWF. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;w2&lt;/code&gt; is an API base URL. The stub is a bootstrapper for a server that has been off for a decade.&lt;/p&gt;

&lt;p&gt;So two things became apparent: we need to mock the web server the SWF is expecting to communicate with, and we need to find the actual game!&lt;/p&gt;

&lt;h2 id=&quot;finding-the-actual-game&quot;&gt;Finding the actual game&lt;/h2&gt;

&lt;p&gt;Of course, the Wayback Machine had it! &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;storage.cloud.casualcollective.com/zones/pub/10/thespacegame.v83.swf&lt;/code&gt;, 1.9 MB, captured in 2019. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;widget.swf&lt;/code&gt; wrapper was there too, from 2017.&lt;/p&gt;

&lt;p&gt;Running the 1.9 MB game SWF directly in Ruffle, however, gives a blank white screen. Forever.  A Ruffle bug??  “This SWF renders blank in Ruffle” is a common report on Ruffle’s issue tracker, usually a missing ActionScript feature. Another dead end.&lt;/p&gt;

&lt;h2 id=&quot;reading-the-wrapper&quot;&gt;Reading the wrapper&lt;/h2&gt;

&lt;p&gt;The widget fetched by the loader is 740 KB of obfuscated ActionScript 2: control-flow flattening, junk constant pools, the works. Claude wrote a small script to resolve constant-pool references in the P-code so the decompiled output read as something close to source. That recovered the entire boot sequence.&lt;/p&gt;

&lt;p&gt;The widget’s protocol starts with a POST to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;api&amp;gt;/pub/session/setup?gid=10&lt;/code&gt; and gets a JSON response containing the following:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;result&lt;/code&gt; must be 1, or the widget gives up.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;swfs.base&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;swfs.game&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gamev&lt;/code&gt; combine to give the URL of the actual game SWF.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cls&lt;/code&gt; is the player class, where 2 means member, which unlocks members-only content.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pd&lt;/code&gt; is saved player data as key value pairs like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;k=v,k=v&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The widget then POSTs to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;session/start&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;levelStart&lt;/code&gt; and ignores the replies, then loads a stinger (the Casual Collective logo animation), then a splash screen, then the game.&lt;/p&gt;

&lt;p&gt;Then the widget and the game perform a handshake.&lt;/p&gt;

&lt;p&gt;The game side looks like this:&lt;/p&gt;

&lt;div class=&quot;language-actionscript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;hss&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9999999&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;CCHandshake&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;hss&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;hss&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;hss&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;hsok&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;getTimer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;delete&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;CCHandshake&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;c1&quot;&gt;// one shot&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;delete&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;hss&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;CCSetup&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;_root&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;setupLevel&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;showReminder&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;sameseed&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;_root&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;showMenu&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;_root&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;gotoAndStop&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;        &lt;span class=&quot;c1&quot;&gt;// frame 2 is the main menu&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And the widget side, from its “Run Game” step:&lt;/p&gt;

&lt;div class=&quot;language-actionscript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nx&quot;&gt;TraceLocal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Run Game:&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;gameswf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;_name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;h&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;gameswf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;hss&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;                       &lt;span class=&quot;c1&quot;&gt;// reads the child&apos;s variable&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;gameswf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;CCHandshake&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;h&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;h&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;h&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;TraceLocal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;HS ok&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;topOptions&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;UpdateVolume&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;gameswf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;CCSetup&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;removeMovieClip&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;GameSplash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;topOptions&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;SetForStart&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;txtStatus&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Handshake OK:&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;TraceLocal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;HS FAIL&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;txtStatus&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Handshake FAIL&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The handshake goes like this:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;The widget loads the game SWF into a child movie clip inside itself.&lt;/li&gt;
  &lt;li&gt;On startup the game picks a random number up to 9,999,999, and stores it as a variable on itself: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hss = random(9999999)&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;In Flash a parent can read its child’s variables directly, and both files come from the same domain so the sandbox allows it. The widget reads the game’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hss&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;The widget runs the formula on that number and calls the game back with the result: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.CCHandshake((hss / 11 - int(hss / 11)) + hss % 11)&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;The game runs the same formula on its own number, compares, and returns &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;true&lt;/code&gt;, or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;false&lt;/code&gt; if the handshake failed.&lt;/li&gt;
  &lt;li&gt;On a successful handshake, the widget calls &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gameswf.CCSetup()&lt;/code&gt;, otherwise the game remains on the white screen indefinitely.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’m not sure why the widget, rather than the game, validates the handshake.  It seems anyone with the actual game could just call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gameswf.CCSetup()&lt;/code&gt;, and the game would run.  I would have thought the handshake should be validated in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gameswf.CCSetup()&lt;/code&gt;.  However, the wrapper also provides the API to correctly fetch data from the server and set game variables required by certain features of the game.&lt;/p&gt;

&lt;p&gt;That API is the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CCAPI&lt;/code&gt; object the widget builds while the game is loading. It carries the methods the game uses to reach the outside world: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GetPlayerClass&lt;/code&gt; for the member check, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GetPersistantData&lt;/code&gt; for the save, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LevelStart&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LevelUpdate&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SendStat&lt;/code&gt; for reporting progress and scores, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MoreGames&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;VisitStore&lt;/code&gt; for the buttons that link back to the site. The game never talks to a server itself. It only ever talks to this object.&lt;/p&gt;

&lt;h2 id=&quot;mocking-the-server&quot;&gt;Mocking the server&lt;/h2&gt;

&lt;p&gt;We now know the entire protocol required to run the game correctly.&lt;/p&gt;

&lt;p&gt;To keep things super simple, I instructed Claude to mock the server using a JavaScript Service Worker.  Service Workers are able to intercept any web request a webpage makes, which is perfect for mocking!&lt;/p&gt;

&lt;p&gt;So Claude wrote the service worker. About 150 lines: the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;load&lt;/code&gt; reply, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;session/setup&lt;/code&gt; JSON, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;session/start&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;player/data&lt;/code&gt; for saves, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;result=1&lt;/code&gt; for anything else it did not recognise. The page tells Ruffle, through its &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;urlRewriteRules&lt;/code&gt;, to send requests for the two dead hostnames to the worker instead. The loader, the widget and the game run unmodified.&lt;/p&gt;

&lt;p&gt;The setup handler looks like this:&lt;/p&gt;

&lt;div class=&quot;language-javascript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;if &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;endsWith&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;session/setup&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cfg&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;result&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;cls&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;pms&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;                            &lt;span class=&quot;c1&quot;&gt;// player class 2 = member&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;pd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;loadPd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;gid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;                     &lt;span class=&quot;c1&quot;&gt;// saved player data, &quot;k=v,k=v&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;seed&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;floor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;999999&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;swfs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;base&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;http://storage.cloud.casualcollective.com/zones/pub&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;stinger&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;/stingers/ccblocks.swf&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;`/&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;gid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;stem&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;gamev&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;ver&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;c1&quot;&gt;// /10/thespacegame, 83&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;// ...and a dozen fields the widget reads but never needs&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;JSON&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;stringify&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;cfg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;headers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;Content-Type&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;application/json&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The next gotcha we ran into was a hang at &lt;em&gt;“Loading: 89%”&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It turns out the widget’s preloader waits for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;getBytesLoaded() == getBytesTotal()&lt;/code&gt;. Ruffle only ever satisfies that condition for an uncompressed child SWF.  The original CasualCollective server served a compressed version, which is the version the Wayback Machine and Flashpoint hold.  So the service worker decompresses the file and stores it as FWS, and the preloader finishes.&lt;/p&gt;

&lt;p&gt;Finally, the main menu came up and the game was fully playable!&lt;/p&gt;

&lt;h2 id=&quot;getting-the-missions-expansion-working&quot;&gt;Getting the Missions expansion working&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Missions&lt;/em&gt; is an eight-mission campaign with difficulty multipliers, Easy at 1x through Normal 1.5x, Hard 2x and Crazy 3x, plus EMP, Super Miner and warp jumps.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Missions&lt;/em&gt; is not on the Wayback Machine. Every mirror I could find, Newgrounds and freewebarcade and flashghetto, serves the same 16 KB loader stub. Google’s AI answer for the problem was “use Flashpoint”, which is true and unhelpful when you want the file.&lt;/p&gt;

&lt;p&gt;Claude found the way in. Flashpoint’s game submission system has a public API at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fpfss.unstable.life/api/games&lt;/code&gt;, and each game record names its data pack under &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;download.unstable.life/gib-roms/Games/&lt;/code&gt;. Both packs downloaded and matched their published sha256.&lt;/p&gt;

&lt;p&gt;The Missions pack had &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tsgmissions.v16.swf&lt;/code&gt;, 2.9 MB. It also had Flashpoint’s own reconstructed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setup.php&lt;/code&gt; covering eight Casual Collective games, which answers the same questions the service worker does, plus the Casual Collective intro stinger and the menu background art.&lt;/p&gt;

&lt;p&gt;Flashpoint handles members-only content with a patched game SWF, whereas the service worker reports class 2 and leaves the game binary untouched.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;tsg-shot&quot; src=&quot;/assets/img/tsg-missions-menu.jpg&quot; alt=&quot;The Space Game: Missions star map, dashed routes between mission nodes over purple nebulae, with Easy, Normal, Hard and Crazy completion counters&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;saving-progress&quot;&gt;Saving progress&lt;/h2&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pd&lt;/code&gt; field in the setup JSON is the save. The game asks the widget for it through &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CCAPI.GetPersistantData()&lt;/code&gt;, and when something changes, the widget POSTs the whole string back to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;player/data&lt;/code&gt;. Casual Collective must have stored it against your account. The service worker stores it in the browser’s Cache Storage, one entry per game, and hands it back on the next &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;session/setup&lt;/code&gt;. Refresh the page and you are where you left off.&lt;/p&gt;

&lt;p&gt;The save strings are tiny. &lt;em&gt;The Space Game&lt;/em&gt; keeps a count of missions completed, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mC=1&lt;/code&gt;. &lt;em&gt;Missions&lt;/em&gt; keeps a state, a difficulty and a score for each mission:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;m1=2,l1=1,s1=19666,m2=2,l2=1,s2=19516,m3=1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The game runs the string through &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;escape()&lt;/code&gt; before handing it to the widget, and the POST encodes it again. Decode the POST once and store what is left, and on the next load the game reads a single giant key and the save snowballs. The fix is a second decode before storing:&lt;/p&gt;

&lt;div class=&quot;language-javascript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;if &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;endsWith&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;player/data&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;pd&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;form&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;pd&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;??&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;q&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;pd&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;pd&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;pd&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;decodeURIComponent&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;pd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{}&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;if &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;pd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;savePd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;gid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;pd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;result=1&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The game also posts scores to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;session/score&lt;/code&gt; after every level. The worker acknowledges them and forgets them. There is no leaderboard to send them to any more.&lt;/p&gt;

&lt;h2 id=&quot;the-launcher&quot;&gt;The launcher&lt;/h2&gt;

&lt;p&gt;The game launcher runs as a static page on GitHub Pages and hosts the service worker.  The page is styled as a homage to the game.&lt;/p&gt;

&lt;p&gt;The catch is CORS. None of the archive hosts send the headers, so the page cannot fetch the SWFs for you. You download them yourself (links and checksums are on the page) and drop them on the launcher. It unzips the Flashpoint packs in the browser, converts the SWFs to uncompressed, checks them against the expected hashes and keeps them in the browser’s cache. I also figure there may be legal issues with me hosting the actual game files, so keeping the SWFs out of the repo hopefully keeps this clean.&lt;/p&gt;

&lt;p&gt;A few niceties added along the way:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;It pauses the game while its tab is in the background and resumes it when you come back, the way Steam does.&lt;/li&gt;
  &lt;li&gt;The banner buttons inside &lt;em&gt;Missions&lt;/em&gt; still point at casualcollective.com. The one that offers the original game opens it in the launcher. The one that invites you to join the Collective opens the Wayback Machine’s 2009 copy of the site.&lt;/li&gt;
  &lt;li&gt;The game’s own stage is 700x700, with the Sandbox wave designer in the bottom 200px, but its loader says 700x525, so the service worker corrects the loader’s header on the way through, and since it also sees the level start, the page grows the stage for Sandbox Mode and keeps the tighter crop everywhere else.&lt;/li&gt;
  &lt;li&gt;The game state is saved for each game, so you can return and continue where you left off. You can clear your state on the &lt;em&gt;Get the files&lt;/em&gt; tab.&lt;/li&gt;
  &lt;li&gt;The &lt;em&gt;How it works&lt;/em&gt; tab tells the story above in a few paragraphs, with the four-step boot sequence, for anyone who lands on the page wondering why the archived SWF does not work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also clone the repo, put the files in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;storage/&lt;/code&gt;, and serve it with any static server. Service workers do not run on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;file://&lt;/code&gt;, unfortunately.&lt;/p&gt;

&lt;p&gt;The same widget served every Casual Collective game: Desktop Tower Defense Pro, Buggle Stars, Desktop Armada, Flash Element TD 2 and the rest. The launcher does not care which game id it is answering for. Given the files, it can in principle bring the others back too.&lt;/p&gt;

&lt;p&gt;Anyways, I hope you enjoy this game as much as I do :)&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;tsg-shot&quot; src=&quot;/assets/img/tsg-launcher.jpg&quot; alt=&quot;The launcher page: The Space Game running inside a black frame styled like the game&apos;s menu, with coloured tabs above and a volume bar below&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;tsg-play&quot; href=&quot;https://br3nt.github.io/the-space-game-launcher/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;▶ Open the launcher →&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;tsg-cap&quot;&gt;Source: &lt;a href=&quot;https://github.com/br3nt/the-space-game-launcher&quot;&gt;github.com/br3nt/the-space-game-launcher&lt;/a&gt;&lt;/p&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="ai" />
    <category term="anthropic" />
    <category term="fable" />
    <category term="flash" />
    <category term="ruffle" />
    <category term="preservation" />
    <category term="gamedev" />
    <summary type="text">The Space Game has been unplayable since Flash died, and not because of Flash. The SWF everyone archived is a 16 KB loader that phones a server that no longer exists. I used Claude to read the obfuscated bytecode to work out the server protocol so we could mock the server. The game runs again.</summary>
  </entry>
  <entry>
    <title type="html">OKF is just HTML with extra steps</title>
    <link href="https://br3nt.github.io/2026/06/18/okf-is-just-html-with-extra-steps.html" rel="alternate" type="text/html" title="OKF is just HTML with extra steps" />
    <published>2026-06-18T00:00:00+09:30</published>
    <updated>2026-06-18T00:00:00+09:30</updated>
    <id>https://br3nt.github.io/2026/06/18/okf-is-just-html-with-extra-steps</id>
    <content type="html" xml:base="https://br3nt.github.io/2026/06/18/okf-is-just-html-with-extra-steps.html">&lt;style&gt;
/* person cards are global (assets/css/style.css); this post&apos;s two tweaks */
.person-pop { max-height: min(70vh, 440px); overflow-y: auto; }
.person-pic img { max-height: 230px; object-fit: cover; object-position: center 25%; }

/* give lists a normal paragraph gap above (theme hugs them to the intro line) */
.post-body p:has(+ ul) { margin-bottom: 1.1em; }

/* ---- breakout table (escapes the text column so cells don&apos;t wrap) ---- */
.okf-table {
  width: min(100vw - 3rem, 980px); position: relative; left: 50%;
  transform: translateX(-50%); margin: 1.6em 0; overflow-x: auto;
}
.okf-table table { border-collapse: collapse; width: 100%; }
.okf-table th, .okf-table td {
  border: 1px solid #cbd5e1; padding: .5em .75em; text-align: left; vertical-align: top;
}
.okf-table th { background: #f1f5f9; }
.okf-table td code, .okf-table th code { white-space: nowrap; }
&lt;/style&gt;

&lt;div class=&quot;post-body&quot;&gt;

  &lt;p&gt;Today I stumbled across a video by &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot;&gt;Marie Haynes&lt;/button&gt;&lt;span class=&quot;person-pop&quot;&gt;&lt;span class=&quot;person-head&quot;&gt;Marie Haynes&lt;/span&gt;&lt;span class=&quot;person-bio&quot;&gt;An SEO consultant and AI-search analyst who has spent years decoding how Google ranks and surfaces content. She runs Marie Haynes Consulting and publishes prolifically on search and how AI is reshaping discovery.&lt;/span&gt;&lt;span class=&quot;person-links&quot;&gt;&lt;a href=&quot;https://www.mariehaynes.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;mariehaynes.com&lt;/a&gt;&lt;a href=&quot;https://www.youtube.com/@Marie_Haynes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;YouTube, @Marie_Haynes&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, &lt;a href=&quot;https://youtu.be/MY9F9K7wWX4?si=huHIlKkgDKddjjFi&quot;&gt;Google’s OKF - The New Way to Structure Your Knowledge for Agents&lt;/a&gt;. I was intrigued by the premise.&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://cloud.google.com/blog/products/data-analytics/how-the-open-knowledge-format-can-improve-data-sharing/&quot;&gt;Open Knowledge Format (OKF)&lt;/a&gt; is Google’s new, vendor-neutral way to represent knowledge such as the metadata, context, and curated insight that surrounds your data, so that AI agents can read it. The &lt;a href=&quot;https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md&quot;&gt;spec&lt;/a&gt; is actually quite simple. Mostly, it’s just a folder of markdown files with frontmatter conforming to some rules, an index.md, and a log.md. They call this a “bundle”. Their repo also contains some rules to help create, visualise, and search the contents of the bundles.&lt;/p&gt;

  &lt;p&gt;The idea traces back to &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot;&gt;Andrej Karpathy&lt;/button&gt;&lt;span class=&quot;person-pop&quot;&gt;&lt;span class=&quot;person-pic&quot;&gt;&lt;img src=&quot;/assets/img/andrej-karpathy.png&quot; alt=&quot;Andrej Karpathy&quot; /&gt;&lt;/span&gt;&lt;span class=&quot;person-head&quot;&gt;Andrej Karpathy&lt;/span&gt;&lt;span class=&quot;person-bio&quot;&gt;A founding member of OpenAI and former director of AI at Tesla, known for his research on neural networks and his widely-followed teaching on deep learning. He is the one who floated the “LLM wiki” idea.&lt;/span&gt;&lt;span class=&quot;person-links&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Andrej_Karpathy&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wikipedia, Andrej Karpathy&lt;/a&gt;&lt;a href=&quot;https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The LLM wiki gist&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, who floated the notion of an &lt;a href=&quot;https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f&quot;&gt;“LLM wiki”&lt;/a&gt;. It’s basically OKF just using different words. Google’s version mostly pins down a few rules for frontmatter and filenames.&lt;/p&gt;

  &lt;p&gt;OKF seemed like a reasonable idea: link knowledge together in files, add a few rules, and make the whole thing easier for agents to read.&lt;/p&gt;

  &lt;p&gt;But I wasn’t far into the video before it hit me:&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;That’s just HTML. And HTML does it about 1000× better!&lt;/strong&gt;&lt;/p&gt;

  &lt;h2 id=&quot;the-semantic-web-called-it-wants-its-idea-back&quot;&gt;The Semantic Web called. It wants its idea back.&lt;/h2&gt;

  &lt;p&gt;We had a name for this idea already: &lt;a href=&quot;https://en.wikipedia.org/wiki/Semantic_Web&quot;&gt;the semantic web&lt;/a&gt;.&lt;/p&gt;

  &lt;p&gt;Back in 2001, &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot;&gt;Tim Berners-Lee&lt;/button&gt;&lt;span class=&quot;person-pop&quot;&gt;&lt;span class=&quot;person-pic&quot;&gt;&lt;img src=&quot;/assets/img/tim-berners-lee.jpg&quot; alt=&quot;Tim Berners-Lee&quot; /&gt;&lt;/span&gt;&lt;span class=&quot;person-head&quot;&gt;Tim Berners-Lee&lt;/span&gt;&lt;span class=&quot;person-bio&quot;&gt;Inventor of the World Wide Web, which he proposed in 1989 at CERN. He directs the W3C and set out the original vision of the Semantic Web.&lt;/span&gt;&lt;span class=&quot;person-links&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Tim_Berners-Lee&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wikipedia, Tim Berners-Lee&lt;/a&gt;&lt;a href=&quot;https://www.w3.org/DesignIssues/Semantic.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Semantic Web road map (1998)&lt;/a&gt;&lt;a href=&quot;https://www.w3.org/DesignIssues/Architecture.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Web Architecture from 50,000 feet (1998)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; pitched a web of linked, machine-readable meaning for software agents to traverse, with structured data embedded right in the documents. He had sketched it years before that, from “a level of 20,000ft”, in his &lt;a href=&quot;https://www.w3.org/DesignIssues/Semantic.html&quot;&gt;Semantic Web road map&lt;/a&gt; and a companion paper, &lt;a href=&quot;https://www.w3.org/DesignIssues/Architecture.html&quot;&gt;Web Architecture from 50,000 feet&lt;/a&gt;. Both make the same point: the Web was always meant for machines to take part, not just humans to read. OKF is that same dream, just with a new acronym.&lt;/p&gt;

  &lt;p&gt;That 2001 vision leaned on formal, machine-readable languages: RDF, OWL, SPARQL. They made sense when software needed explicitly encoded meaning. LLMs change that tradeoff. A model can read raw HTML, or raw anything, and infer a lot of the structure itself. The formalisms still matter for deterministic scripts and parsers, but for an agent reading knowledge, the page is often enough.&lt;/p&gt;

  &lt;p&gt;Every capability a knowledge format needs is already in HTML.&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;Links - local or across the web. The link graph is the knowledge graph.&lt;/li&gt;
    &lt;li&gt;Structure and style - that’s HTML and CSS.&lt;/li&gt;
    &lt;li&gt;Machine-readable metadata - &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;meta&amp;gt;&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;link rel&amp;gt;&lt;/code&gt;, schema.org, JSON-LD, embedded in the page and read by crawlers for a decade.&lt;/li&gt;
    &lt;li&gt;A queryable data model - the DOM. One API, no SDK.&lt;/li&gt;
    &lt;li&gt;Its own languages - JavaScript and CSS.&lt;/li&gt;
    &lt;li&gt;Forms - state-changing actions, declared right in the markup.&lt;/li&gt;
    &lt;li&gt;Auth and security - sessions, OAuth, CSP, CORS, same-origin.&lt;/li&gt;
    &lt;li&gt;Accessibility - screen readers and keyboard navigation.&lt;/li&gt;
    &lt;li&gt;Readable and writable by agents and humans alike.&lt;/li&gt;
    &lt;li&gt;Local or hosted - opens from a file or a server, caches offline.&lt;/li&gt;
    &lt;li&gt;Universal - every device ships a renderer.&lt;/li&gt;
    &lt;li&gt;Backwards-compatible forever - HTML from 1995 still renders.&lt;/li&gt;
    &lt;li&gt;Indexable - decades of search tooling.&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;I may also be biased. After all, I’m building an HTML-first web framework, &lt;a href=&quot;/2026/06/15/jst-reactive-web-components-in-plain-html.html&quot;&gt;JST&lt;/a&gt;.&lt;/p&gt;

  &lt;h2 id=&quot;every-okf-concept-already-has-an-html-equivalent&quot;&gt;Every OKF concept already has an HTML equivalent&lt;/h2&gt;

  &lt;p&gt;The OKF concepts map almost directly onto existing web concepts:&lt;/p&gt;

  &lt;div class=&quot;okf-table&quot;&gt;

    &lt;table&gt;
      &lt;thead&gt;
        &lt;tr&gt;
          &lt;th&gt;OKF / LLM-wiki concept&lt;/th&gt;
          &lt;th&gt;Native HTML equivalent&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;A directory of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.md&lt;/code&gt; files&lt;/td&gt;
          &lt;td&gt;A directory of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.html&lt;/code&gt; files, open in a browser, zip it, or serve it&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;YAML frontmatter (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;type&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tags&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;timestamp&lt;/code&gt;)&lt;/td&gt;
          &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;meta&amp;gt;&lt;/code&gt; tags in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;head&amp;gt;&lt;/code&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;Markdown body&lt;/td&gt;
          &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;body&amp;gt;&lt;/code&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;Markdown links &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[x](/path.md)&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;a href=&quot;/path.html&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.md&lt;/code&gt; (progressive disclosure)&lt;/td&gt;
          &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sitemap.html&lt;/code&gt;, the rarely-seen-but-once-ubiquitous sitemap&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;log.md&lt;/code&gt; (update history)&lt;/td&gt;
          &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;log.html&lt;/code&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;“Concept ID” (path minus &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.md&lt;/code&gt;)&lt;/td&gt;
          &lt;td&gt;The document’s own URI, like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;file://…/path&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://host/path&lt;/code&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;# Citations&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;cite&amp;gt;&lt;/code&gt; / &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;a&amp;gt;&lt;/code&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;Their bespoke &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;viz.html&lt;/code&gt; graph viewer&lt;/td&gt;
          &lt;td&gt;…the browser itself&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;

  &lt;/div&gt;

  &lt;h2 id=&quot;okf-but-html-ified&quot;&gt;OKF, but HTML-ified&lt;/h2&gt;

  &lt;p&gt;Mostly as a joke, but also to prove my point, &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;Claude&lt;/a&gt;, Codex, and I rewrote the entire Google OKF repo and replaced every Markdown concept with its HTML equivalent: the spec, the README, the example bundles, the lot. You can &lt;a href=&quot;https://github.com/br3nt/knowledge-catalog-but-html/pull/1&quot;&gt;read the result here&lt;/a&gt;. The goal was to leave the documents as untouched as possible.&lt;/p&gt;

  &lt;p&gt;The diff converts all 78 example documents to HTML, and every cross-link still resolves.&lt;/p&gt;

  &lt;p&gt;We deleted around 59,000 lines of bespoke tooling: the Python “enrichment agent”, the TypeScript toolbox, and the custom graph viewer. HTML brings its own viewer: the browser. Open any &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sitemap.html&lt;/code&gt; from disk and you’re browsing the knowledge base. No server, no install, no build step.&lt;/p&gt;

  &lt;h2 id=&quot;so&quot;&gt;So…&lt;/h2&gt;

  &lt;p&gt;OKF accidentally proves HTML was the right abstraction all along.&lt;/p&gt;

  &lt;p&gt;Just use HTML!&lt;/p&gt;

  &lt;p&gt;If HTML isn’t human-writable, get your agent to write it. lol.&lt;/p&gt;

&lt;/div&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="html" />
    <category term="ai" />
    <category term="web" />
    <category term="okf" />
    <summary type="text">Google&apos;s Open Knowledge Format and Andrej Karpathy&apos;s LLM wiki are good in theory, but also a reinvention of something the web has had for thirty years. A tongue-in-cheek case for just using HTML.</summary>
  </entry>
  <entry>
    <title type="html">Two AI agents merged their own code by taking turns through a git repo</title>
    <link href="https://br3nt.github.io/2026/06/17/two-ai-agents-merged-their-own-code-by-taking-turns.html" rel="alternate" type="text/html" title="Two AI agents merged their own code by taking turns through a git repo" />
    <published>2026-06-17T00:00:00+09:30</published>
    <updated>2026-06-17T00:00:00+09:30</updated>
    <id>https://br3nt.github.io/2026/06/17/two-ai-agents-merged-their-own-code-by-taking-turns</id>
    <content type="html" xml:base="https://br3nt.github.io/2026/06/17/two-ai-agents-merged-their-own-code-by-taking-turns.html">&lt;p&gt;I needed to improve &lt;a href=&quot;/2026/06/15/jst-reactive-web-components-in-plain-html.html&quot;&gt;JST&lt;/a&gt;. I had Claude and Codex open, and I wanted them feeding off and reviewing each other’s ideas as I worked. So I played courier: my request into both, each reply pasted into the other, back and forth. Tiring, but it worked. They pushed on each other and converged on specs both accepted.&lt;/p&gt;

&lt;p&gt;Then I let each one implement the agreed specs on its own branch. Now I had two divergent takes on the same change.&lt;/p&gt;

&lt;p&gt;Before merging anything, I had them review each other’s work. I asked each agent to write a pull-request description of its own changes, then review the other’s branch and write down its findings. They compared notes, praised and panned each other’s choices, and argued a few calls. Those critiques were not gentle; each named real weaknesses in the other’s branch. That left me with two implementations and two reviews, and the real question: how do I turn all of that into one coherent change? Doing it by hand would defeat the point of running two agents. I wanted them to do the merge themselves.&lt;/p&gt;

&lt;h2 id=&quot;designing-a-way-for-them-to-work-together&quot;&gt;Designing a way for them to work together&lt;/h2&gt;

&lt;p&gt;I asked Claude how to do it. We riffed on ideas for a while and settled on a turn-based strategy: share a branch, take strict turns, one change at a time. Claude wrote that up as rules I could hand to Codex. Codex found a bug in the rules, a field meant to record “the commit I’m handing off” that cannot exist, because a commit cannot contain its own hash. Claude folded in the fix and produced a v3.&lt;/p&gt;

&lt;p&gt;The protocol is almost too simple:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;One shared git branch.&lt;/li&gt;
  &lt;li&gt;A file, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;agent_turn.json&lt;/code&gt;, holds whose turn it is. It is a baton.&lt;/li&gt;
  &lt;li&gt;A file, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;merge-session.md&lt;/code&gt;, is an append-only log. Every turn writes to it.&lt;/li&gt;
  &lt;li&gt;One commit per turn. The last act of a turn flips the baton to the other agent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each turn, the agent could take one of these actions:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;add new code&lt;/li&gt;
  &lt;li&gt;change existing code&lt;/li&gt;
  &lt;li&gt;ask a question&lt;/li&gt;
  &lt;li&gt;review the previous turn&lt;/li&gt;
  &lt;li&gt;revert the previous turn and argue for something else&lt;/li&gt;
  &lt;li&gt;hand the baton to me for a decision&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last action was the deadlock valve. The git repo is the entire coordination layer. No framework, no message bus. An agent knows it is up when the baton names it and the working tree is clean.&lt;/p&gt;

&lt;h2 id=&quot;then-i-said-go&quot;&gt;Then I said go&lt;/h2&gt;

&lt;p&gt;I pasted the rules into Codex, started both, and watched.&lt;/p&gt;

&lt;p&gt;Both agents watched the baton file themselves, so I did not have to route turns by hand. How each watched turned out to matter. Claude ran its watcher in the background, so I could compact its conversation to reclaim context whenever I liked without disturbing the watch. Codex’s monitor blocked its conversation while it waited, so to compact Codex I had to interrupt the watch first, then tell it to resume.&lt;/p&gt;

&lt;p&gt;Commits appeared in turn, Claude then Codex, each reviewing the last. Seventeen of them. They negotiated which branch was the base, worked through the merge with a shared test suite gating every step, and settled the contested design calls between themselves. Of the actions on the menu they mostly used two: review the last commit, then build on it. Nobody reverted anyone’s work. Nobody asked me to judge.&lt;/p&gt;

&lt;h2 id=&quot;one-they-argued-out&quot;&gt;One they argued out&lt;/h2&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jst-model&lt;/code&gt; is the shorthand that wires a form input to a value. Claude wanted typing in the field to emit an event for a parent to handle. Codex wanted it to write straight to the component’s own property. Codex made its case in the log:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The event-emitting version replaces property-name strings with event-name strings, so it is not materially better for refactors.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude took the next turn and switched sides:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I accept Codex’s local-host-property semantics. My events-up &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jst-model&lt;/code&gt; only traded a property-name string for an event-name string — not actually better.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It conceded the exact point Codex had raised, in Codex’s own terms.&lt;/p&gt;

&lt;h2 id=&quot;the-scanner-claude-didnt-port&quot;&gt;The scanner Claude didn’t port&lt;/h2&gt;

&lt;p&gt;The scanner is the part of JST that reads a template and breaks it into tokens. The hard case is telling JST’s own &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$(...)&lt;/code&gt; markers apart from ordinary JavaScript that happens to hold parentheses or braces inside a string, a regex, or a comment. Claude had its own implementation of this, and the plan was to bring it across on the assumption that Codex’s was weaker.&lt;/p&gt;

&lt;p&gt;Before porting, Claude ran its own adversarial tests against Codex’s scanner. Codex’s passed 19 of the 21. The two failures were about rejecting malformed bindings, which lives elsewhere in the code, not in the scanner. So Claude kept Codex’s scanner, ported none of it, and fixed only the two real gaps.&lt;/p&gt;

&lt;h2 id=&quot;it-worked&quot;&gt;It worked&lt;/h2&gt;

&lt;p&gt;The merged build passes every test: the runtime suite, the headless browser suite, and the full framework-parity suite. The surprise came from the reviewing. Claude found a list-reconciliation bug in Codex’s reconciler. Codex found form-state and event-listener leaks in Claude’s. Both branches had been passing their own test suites the whole time. Two agents checking each other found what one agent checking itself did not.&lt;/p&gt;

&lt;p&gt;The whole thing is in the repo: the merged branch and the turn-by-turn log.&lt;/p&gt;

&lt;h2 id=&quot;the-protocol-in-full&quot;&gt;The protocol, in full&lt;/h2&gt;

&lt;p&gt;This is the v3 they actually ran.&lt;/p&gt;

&lt;div class=&quot;language-markdown highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gh&quot;&gt;# JST merge collaboration protocol (v3)&lt;/span&gt;

&lt;span class=&quot;gu&quot;&gt;## Shared files&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;sb&quot;&gt;`merge-session.md`&lt;/span&gt;: an append-only log. Every turn writes a note to it.
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;sb&quot;&gt;`agent_turn.json`&lt;/span&gt;: the baton, holding &lt;span class=&quot;sb&quot;&gt;`{ &quot;turn&quot;: &quot;...&quot;, &quot;phase&quot;: &quot;...&quot;, &quot;summary&quot;: &quot;...&quot; }`&lt;/span&gt;.
&lt;span class=&quot;p&quot;&gt;  -&lt;/span&gt; &lt;span class=&quot;sb&quot;&gt;`turn`&lt;/span&gt; is one of &lt;span class=&quot;sb&quot;&gt;`claude`&lt;/span&gt;, &lt;span class=&quot;sb&quot;&gt;`codex`&lt;/span&gt;, &lt;span class=&quot;sb&quot;&gt;`human`&lt;/span&gt;, &lt;span class=&quot;sb&quot;&gt;`done`&lt;/span&gt;.
&lt;span class=&quot;p&quot;&gt;  -&lt;/span&gt; &lt;span class=&quot;sb&quot;&gt;`phase`&lt;/span&gt; is one of &lt;span class=&quot;sb&quot;&gt;`planning`&lt;/span&gt;, &lt;span class=&quot;sb&quot;&gt;`implementation`&lt;/span&gt;, &lt;span class=&quot;sb&quot;&gt;`review`&lt;/span&gt;, &lt;span class=&quot;sb&quot;&gt;`blocked`&lt;/span&gt;, &lt;span class=&quot;sb&quot;&gt;`done`&lt;/span&gt;.
&lt;span class=&quot;p&quot;&gt;  -&lt;/span&gt; No commit-hash field: a commit cannot record its own hash, so the handoff commit is always &lt;span class=&quot;sb&quot;&gt;`HEAD`&lt;/span&gt;.

&lt;span class=&quot;gu&quot;&gt;## Turn rules&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;1.&lt;/span&gt; Only the agent named in &lt;span class=&quot;sb&quot;&gt;`agent_turn.json`&lt;/span&gt; may act.
&lt;span class=&quot;p&quot;&gt;2.&lt;/span&gt; Act only when the baton names you and &lt;span class=&quot;sb&quot;&gt;`git status --short`&lt;/span&gt; is empty. A dirty tree means the previous turn has not committed yet, so wait.
&lt;span class=&quot;p&quot;&gt;3.&lt;/span&gt; Exactly one commit per turn.
&lt;span class=&quot;p&quot;&gt;4.&lt;/span&gt; Every turn appends a note to &lt;span class=&quot;sb&quot;&gt;`merge-session.md`&lt;/span&gt;.
&lt;span class=&quot;p&quot;&gt;5.&lt;/span&gt; Every turn updates &lt;span class=&quot;sb&quot;&gt;`agent_turn.json`&lt;/span&gt; as the final change before committing.
&lt;span class=&quot;p&quot;&gt;6.&lt;/span&gt; The handoff commit contains all of that turn&apos;s work.
&lt;span class=&quot;p&quot;&gt;7.&lt;/span&gt; The next agent reviews only &lt;span class=&quot;sb&quot;&gt;`git show HEAD`&lt;/span&gt; plus &lt;span class=&quot;sb&quot;&gt;`merge-session.md`&lt;/span&gt;.
&lt;span class=&quot;p&quot;&gt;8.&lt;/span&gt; Never edit or amend the other agent&apos;s commit. No destructive git. To undo, make a normal corrective commit and explain it.

&lt;span class=&quot;gu&quot;&gt;## Allowed actions per turn&lt;/span&gt;
One coherent unit of work: propose or revise the plan, agree, implement code or tests or docs, review the previous commit, push back by reverting non-destructively and proposing an alternative, ask a question in the log, or declare a deadlock and hand the baton to the human.

&lt;span class=&quot;gu&quot;&gt;## Planning phase&lt;/span&gt;
Only edit &lt;span class=&quot;sb&quot;&gt;`merge-session.md`&lt;/span&gt; and &lt;span class=&quot;sb&quot;&gt;`agent_turn.json`&lt;/span&gt;. Planning ends only when both agents have written that they agree on the mechanism and the plan.

&lt;span class=&quot;gu&quot;&gt;## Implementation phase&lt;/span&gt;
Each turn: inspect the other agent&apos;s latest commit, accept or refine or push back, make one coherent change, run the relevant tests, write down what changed and why and how it was validated, update the baton, commit.

&lt;span class=&quot;gu&quot;&gt;## Human intervention&lt;/span&gt;
If a disagreement cannot be reconciled, set the baton to &lt;span class=&quot;sb&quot;&gt;`{ &quot;turn&quot;: &quot;human&quot;, &quot;phase&quot;: &quot;blocked&quot;, &quot;summary&quot;: &quot;...&quot; }`&lt;/span&gt;, write the disagreement and the options and the decision needed into the log, and stop.

&lt;span class=&quot;gu&quot;&gt;## Completion&lt;/span&gt;
Done only when both agents agree: the branch has the best of both, every agreed item is implemented or explicitly deferred, the tests pass, the docs match the behaviour, and no concern is left open in the log. Then set the baton to &lt;span class=&quot;sb&quot;&gt;`{ &quot;turn&quot;: &quot;done&quot;, &quot;phase&quot;: &quot;done&quot;, &quot;summary&quot;: &quot;...&quot; }`&lt;/span&gt;.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="ai" />
    <category term="claude" />
    <category term="codex" />
    <category term="jst" />
    <category term="agents" />
    <category term="git" />
    <summary type="text">I had Claude and Codex each build the same change to JST, then review each other, then needed one result. So I gave them a way to merge their own work: one shared branch, a turn file as a baton, one commit each, take turns. Seventeen turns later it was done, and they had caught each other&apos;s bugs on the way.</summary>
  </entry>
  <entry>
    <title type="html">JST: reactive web components in plain HTML, no build step</title>
    <link href="https://br3nt.github.io/2026/06/15/jst-reactive-web-components-in-plain-html.html" rel="alternate" type="text/html" title="JST: reactive web components in plain HTML, no build step" />
    <published>2026-06-15T22:30:00+09:30</published>
    <updated>2026-06-15T22:30:00+09:30</updated>
    <id>https://br3nt.github.io/2026/06/15/jst-reactive-web-components-in-plain-html</id>
    <content type="html" xml:base="https://br3nt.github.io/2026/06/15/jst-reactive-web-components-in-plain-html.html">&lt;style&gt;
  .jst-cta {
    display: inline-block; margin: 0.4em 0 1.4em;
    padding: 0.7em 1.4em; border-radius: 8px;
    background: deeppink; color: #fff; font-weight: 700;
    text-decoration: none; letter-spacing: 0.3px;
  }
  .jst-cta:hover { background: #d81b76; color: #fff; }
  .jst-tag { font-family: ui-monospace, Menlo, monospace; }
&lt;/style&gt;

&lt;p&gt;A couple of years ago I built a todo app with nothing but HTML and JavaScript, and a question stuck with me ever since. What would a front-end component look like if the server could stream it down, the way &lt;a href=&quot;https://htmx.org&quot;&gt;htmx&lt;/a&gt; does, but it still ran on the client like &lt;a href=&quot;https://alpinejs.dev&quot;&gt;Alpine&lt;/a&gt;, with no build step at all?&lt;/p&gt;

&lt;p&gt;This is my answer. It’s called &lt;span class=&quot;jst-tag&quot;&gt;&amp;lt;JST/&amp;gt;&lt;/span&gt;, short for JavaScript Templates, and it’s live now:&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;jst-cta&quot; href=&quot;https://br3nt.github.io/jst/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;See JST → br3nt.github.io/jst&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-it-is&quot;&gt;What it is&lt;/h2&gt;

&lt;p&gt;A &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;script type=&quot;jst&quot;&amp;gt;&lt;/code&gt; tag gets compiled into a custom element class and registered with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;customElements.define()&lt;/code&gt;. There’s a fair bit going on behind that line: a small lexer, parser and compiler turn the template into a render function, and a morphing step patches the DOM on updates. But what you write stays plain HTML, with JavaScript itself as the templating language. Your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;jst-*&amp;gt;&lt;/code&gt; tags come out as genuine custom elements, so you can inspect them in DevTools, script them with plain properties, and drop them into any framework or none at all:&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;module&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;jst.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;jst&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;hello-name&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;props=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Hello&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;strong&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;sr&quot;&gt;/strong&amp;gt;!&amp;lt;/&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;button&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;nd&quot;&gt;click&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;$(() =&amp;gt; el.name = &apos;world&apos;)&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;reset&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;sr&quot;&gt;/button&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;&amp;gt;
&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class=&quot;nt&quot;&gt;&amp;lt;hello-name&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;JST&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/hello-name&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;No build-time compiler, no bundler, no JSX, no virtual DOM, no signals. In runtime mode, JST compiles the template in the browser; a precompile path is also available for production and strict CSP. The counter on the landing page is a JST component running on the page itself. View source and it’s all right there.&lt;/p&gt;

&lt;h2 id=&quot;the-part-i-actually-care-about&quot;&gt;The part I actually care about&lt;/h2&gt;

&lt;p&gt;JST builds on web components rather than replacing them. Its roughly 15 KB runtime/compiler supplies template compilation, bindings and DOM morphing; the resulting components are still real custom elements. Rich data goes in as properties and actions come back out as bubbling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CustomEvent&lt;/code&gt;s.&lt;/p&gt;

&lt;p&gt;It takes the hypermedia idea in a component-oriented direction. Your API can speak hypertext instead of JSON, so a response is the UI itself: HTML that carries its own next actions. That HTML can also contain &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;script type=&quot;jst&quot;&amp;gt;&lt;/code&gt; definitions, letting a trusted fragment introduce a reusable custom element with client-side behaviour in the same payload. This is a narrower goal than htmx’s general server-driven interaction model, with a different tradeoff: executable component definitions arrive at runtime. You don’t even need a backend. A whole JST app can be a folder of static files. This site is exactly that, just GitHub Pages with no server.&lt;/p&gt;

&lt;p&gt;That streaming model has an important trust boundary: a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;script type=&quot;jst&quot;&amp;gt;&lt;/code&gt; template is executable JavaScript. Only load and auto-register component definitions from trusted sources. JST escapes ordinary interpolated data by default, but escaping data does not make an untrusted executable template safe.&lt;/p&gt;

&lt;h2 id=&quot;does-it-actually-work&quot;&gt;Does it actually work?&lt;/h2&gt;

&lt;p&gt;I didn’t want to hand-wave the “it can do anything” claim, so I rebuilt 70 of the canonical examples from HTMX, Alpine, Vue and React in JST, and wrote down how each one went.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;jst-cta&quot; href=&quot;https://br3nt.github.io/jst/framework_parity/index.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Browse the comparison → 70 examples, side by side&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The current tally is 47 examples classified as exact, idiomatic matches, 23 that need a documented workaround, and 0 that were impossible. Those exact/partial labels are my design assessment, not a score produced by the test runner. The comparison now records the upstream revisions reviewed, and every page is checked for readiness, console and render errors, plus a per-page interaction or rendered-output assertion. For every example you can flip between the JST source and the original framework’s source.&lt;/p&gt;

&lt;p&gt;Several gaps from the launch version have since shipped: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jst-model&lt;/code&gt; provides local form binding, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jst-key&lt;/code&gt; preserves list identity, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jst-transition&lt;/code&gt; coordinates CSS-owned enter and leave transitions, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;once()&lt;/code&gt; plus &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;onDisconnect()&lt;/code&gt; cover post-commit setup and teardown. The remaining partial examples are mostly honest model differences—dependency-tracked computed/watch effects, context and stores, portals, declarative server triggers, and full FLIP transition-group choreography. Some examples do not need JST at all; when native HTML or ordinary browser APIs are the clearer fit, the comparison says so instead of inventing a framework abstraction.&lt;/p&gt;

&lt;p&gt;It’s an experimental preview, still very much under active development and chasing parity with the big players. But it runs, it’s tested (the framework, the examples and the editor tooling all have headless test suites), and the whole thing, including the comparison browser you’re clicking through, is built with JST itself.&lt;/p&gt;

&lt;p&gt;I started this by hand, back before agentic coding tools were really a thing, and I’ve been tinkering with it on and off for a while since. Claude, Gemini and Codex all pushed it forward at different points, but it was Fable that consolidated and cleaned up the design, pulling it back toward what I’d had in mind from the start. The stubbornness about “no build, no signals, just the platform” was always mine.&lt;/p&gt;

&lt;p&gt;Every line is open source:&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;jst-cta&quot; href=&quot;https://github.com/br3nt/jst&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github.com/br3nt/jst →&lt;/a&gt;&lt;/p&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="javascript" />
    <category term="web-components" />
    <category term="jst" />
    <category term="htmx" />
    <category term="frontend" />
    <category term="ai" />
    <summary type="text">A couple of years ago I built a todo app with nothing but HTML and JS, and a question stuck with me. What would a front-end component look like if the server could stream it down like htmx, but it still ran on the client like Alpine, with no build step? JST is my answer, and it&apos;s live.</summary>
  </entry>
  <entry>
    <title type="html">Tribal Gods: a Populous clone built from a blank folder with Fable 5</title>
    <link href="https://br3nt.github.io/2026/06/15/tribal-gods-a-populous-clone-built-with-fable-5.html" rel="alternate" type="text/html" title="Tribal Gods: a Populous clone built from a blank folder with Fable 5" />
    <published>2026-06-15T21:00:00+09:30</published>
    <updated>2026-06-15T21:00:00+09:30</updated>
    <id>https://br3nt.github.io/2026/06/15/tribal-gods-a-populous-clone-built-with-fable-5</id>
    <content type="html" xml:base="https://br3nt.github.io/2026/06/15/tribal-gods-a-populous-clone-built-with-fable-5.html">&lt;style&gt;
  .tg-poster { display: block; margin: 1.2em 0 0.4em; }
  .tg-poster img { width: 100%; border-radius: 10px; display: block; }
  .tg-play {
    display: inline-block; margin: 0.6em 0 1.4em;
    padding: 0.7em 1.4em; border-radius: 8px;
    background: #ff3399; color: #fff; font-weight: 700;
    text-decoration: none; letter-spacing: 0.3px;
  }
  .tg-play:hover { background: #d81b76; }
  .tg-cap { font-size: 0.82rem; color: #475569; margin: 0.2em 0 1.6em; }
  .tg-codelist { line-height: 1.7; }
  .tg-codelist code { font-size: 0.92em; }
  /* Steam store widget: the same component the ban post uses. Kramdown
     escapes a raw &lt;iframe&gt;, so the iframe is injected by the script below. */
  .steam-embed { display: block; margin: 0.8em 0; }
  .steam-embed iframe { width: 100%; max-width: 646px; border: 0; }
&lt;/style&gt;

&lt;p&gt;In &lt;a href=&quot;/2026/06/15/anthropic-fable-mythos-ban.html&quot;&gt;my write-up of the Fable and Mythos ban&lt;/a&gt; I mentioned, almost in passing, that I’d spent a few nights pointing Fable 5 at a blank folder and asking it to build a game inspired by &lt;em&gt;Populous: The Beginning&lt;/em&gt;. Enough people asked about it that it deserves its own page, and in the days since, Fable turned it from “every foundation is in place” into something I’m happy to put a link to. It’s playable in your browser right now, and every line is on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;tg-poster&quot; href=&quot;https://br3nt.github.io/tribal-gods/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
  &lt;img src=&quot;/assets/img/populous-hero.png&quot; alt=&quot;A small curved planet with green continents and blue coastlines, the signature Populous &apos;little world&apos; look&quot; /&gt;
&lt;/a&gt;
&lt;a class=&quot;tg-play&quot; href=&quot;https://br3nt.github.io/tribal-gods/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;▶ Play it in your browser →&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;tg-cap&quot;&gt;That curved horizon is the whole trick. The world is a flat, edge-wrapping heightmap; a one-line vertex shader bends it away from the camera so it reads as a tiny planet. Walk far enough in any direction and you come back to where you started.&lt;/p&gt;

&lt;h2 id=&quot;what-it-is&quot;&gt;What it is&lt;/h2&gt;

&lt;p&gt;It’s a real-time god game in the spirit of Bullfrog’s 1998 classic. You don’t control your tribe directly so much as &lt;em&gt;tend&lt;/em&gt; them: they chop wood, build huts, breed, and worship on their own. Worship is mana, and mana is god-powers: you reshape the planet itself with blast, lightning, swamp, landbridge, flatten, earthquake, and a genuinely satisfying volcano. There’s a second tribe on the far side of the world that wants you gone, run by an AI that grows, harasses, assaults, and defends on its own clock. You pick a civilisation (Forest Tribe, River Dynasty, or Northmen, each with its own leader and architecture), race the enemy god to ancient stone monuments that unlock the bigger spells, and try to wipe each other off the planet. There’s also a level editor, and you can share the worlds you build as copy-paste codes.&lt;/p&gt;

&lt;p&gt;None of it uses a game engine. The terrain, the character models and animation, the camera, the pathfinding, the simulation: all hand-written in TypeScript and Three.js, and heavily commented, because the original point was for me to finally understand &lt;em&gt;how this kind of game actually works&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;how-it-was-built-the-actual-experiment&quot;&gt;How it was built: the actual experiment&lt;/h2&gt;

&lt;p&gt;The interesting part isn’t the game, it’s how it got made. I never opened the code editor to write a line. I described what I wanted in plain English, and Fable did the rest, including the part that surprised me most: it tested its own work. It ran the dev server, drove a headless Chrome to play the game, took screenshots, looked at them, noticed when something was wrong, and fixed it. It caught its own bugs that way: a terrain-picking error where clicks near the horizon landed in the wrong spot, and an AI deadlock where a tribe that lost all its workers could get stuck sterile forever. I mostly just said “yes, keep going.”&lt;/p&gt;

&lt;p&gt;It went in phases, each one a single conversation that ended with something I could actually play:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;The planet&lt;/strong&gt;: the wrapping heightmap and the curvature illusion. The “oh, it’s a little world” moment.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Life&lt;/strong&gt;: procedural low-poly villagers with hand-written walk cycles, and A* pathfinding that runs on the same grid as the terrain (so sculpting a landbridge instantly opens a route).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;The settlement&lt;/strong&gt;: wood, huts, breeding, and a village that runs itself.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;God powers&lt;/strong&gt;: the spell book, with the world fighting back (drowning, collapsing huts, lava that doesn’t care whose side you’re on).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;War&lt;/strong&gt;: soldiers, towers, and the enemy tribe with its utility AI.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Civilisations and a tech tree&lt;/strong&gt;: choose-your-people, plus worship-to-unlock spells.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;The editor and sharing&lt;/strong&gt;: build a world, save it, export it as a code a friend can paste.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A typical prompt from my side was nothing more than &lt;em&gt;“cool! war it is :)”&lt;/em&gt;. The spec, the architecture, the maths, the art, the debugging: that was all Fable. The full design doc it wrote up front is &lt;a href=&quot;https://github.com/br3nt/tribal-gods/blob/main/SPEC.md&quot;&gt;SPEC.md&lt;/a&gt; in the repo.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/populous-tribes.png&quot; alt=&quot;The Tribal Gods title screen: choose Forest Tribe, River Dynasty, or Northmen, plus difficulty, and Levels and Editor buttons&quot; style=&quot;width:100%;border-radius:10px;margin:1.2em 0;&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;peek-at-the-code&quot;&gt;Peek at the code&lt;/h2&gt;

&lt;p&gt;It’s all public, and the comments are written to be read. A few of the files I found most fun:&lt;/p&gt;

&lt;div class=&quot;tg-codelist&quot;&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/br3nt/tribal-gods/blob/main/src/world/heightmap.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;world/heightmap.ts&lt;/code&gt;&lt;/a&gt;: the planet is &lt;em&gt;literally an array&lt;/em&gt;. Every god-power is an edit to it.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/br3nt/tribal-gods/blob/main/src/world/curvature.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;world/curvature.ts&lt;/code&gt;&lt;/a&gt;: the entire “it’s a planet” illusion, in about one line of shader.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/br3nt/tribal-gods/blob/main/src/sim/spells.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sim/spells.ts&lt;/code&gt;&lt;/a&gt;: every spell is a few lines of heightmap maths. The volcano grows over nine seconds.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/br3nt/tribal-gods/blob/main/src/sim/pathfinding.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sim/pathfinding.ts&lt;/code&gt;&lt;/a&gt;: A* on the wrapping world grid, with a reusable-memory trick so it allocates nothing per path.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/br3nt/tribal-gods/blob/main/src/sim/ai.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sim/ai.ts&lt;/code&gt;&lt;/a&gt;: the enemy god’s brain. No cheats; it plays by exactly your rules.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/br3nt/tribal-gods/blob/main/src/render/figure-animator.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;render/figure-animator.ts&lt;/code&gt;&lt;/a&gt;: walk cycles as sine waves. Walking really is just oscillation.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/br3nt/tribal-gods/blob/main/src/level/level-format.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;level/level-format.ts&lt;/code&gt;&lt;/a&gt;: how a whole planet compresses into a pasteable share code.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/br3nt/tribal-gods/blob/main/src/core/audio.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;core/audio.ts&lt;/code&gt;&lt;/a&gt;: every sound is synthesised live; there are no audio files.&lt;/li&gt;
  &lt;/ul&gt;

&lt;/div&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/populous-spells.png&quot; alt=&quot;The clone in play: 3D terrain, villagers, a minimap, and the spell-book HUD along the bottom&quot; style=&quot;width:100%;border-radius:10px;margin:1.2em 0;&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-original&quot;&gt;The original&lt;/h2&gt;

&lt;p&gt;This is a love letter, not a product. Every model, texture, and sound in it is original or procedurally generated, and “Populous” is a trademark of EA. If you’ve never played the 1998 game that inspired it, it’s right here, and it still holds up:&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;steam-embed&quot; data-steam=&quot;2616430&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h2 id=&quot;links&quot;&gt;Links&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;▶ &lt;strong&gt;&lt;a href=&quot;https://br3nt.github.io/tribal-gods/&quot;&gt;Play Tribal Gods&lt;/a&gt;&lt;/strong&gt;: runs in any modern browser, no install.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/br3nt/tribal-gods&quot;&gt;Source on GitHub&lt;/a&gt;&lt;/strong&gt;: heavily commented; start with &lt;a href=&quot;https://github.com/br3nt/tribal-gods/blob/main/src/main.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;src/main.ts&lt;/code&gt;&lt;/a&gt;, which lists a reading order.&lt;/li&gt;
  &lt;li&gt;The bigger story of the model that built it: &lt;a href=&quot;/2026/06/15/anthropic-fable-mythos-ban.html&quot;&gt;the Fable &amp;amp; Mythos ban&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s a small irony in the timing: the model I used to build all of this was switched off, globally, the same week I finished. If Fable comes back, I know exactly what I’m asking it to build next.&lt;/p&gt;

&lt;script&gt;
// Inject the Steam store widget. Kramdown escapes a raw &lt;iframe&gt; in the page
// source, so it&apos;s built here instead, the same approach as the ban post.
(function () {
  document.querySelectorAll(&apos;.steam-embed[data-steam]&apos;).forEach(function (el) {
    var f = document.createElement(&apos;iframe&apos;);
    f.src = &apos;https://store.steampowered.com/widget/&apos; + el.getAttribute(&apos;data-steam&apos;) + &apos;/&apos;;
    f.height = &apos;190&apos;;
    f.title = &apos;Populous: The Beginning on Steam&apos;;
    el.appendChild(f);
  });
})();
&lt;/script&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="ai" />
    <category term="anthropic" />
    <category term="fable" />
    <category term="gamedev" />
    <category term="threejs" />
    <category term="populous" />
    <summary type="text">In my Fable &amp; Mythos ban write-up I mentioned, almost in passing, that I&apos;d spent a few nights getting Fable 5 to build a Populous clone. It deserves its own page, and now it&apos;s live, open-source, and playable in your browser.</summary>
  </entry>
  <entry>
    <title type="html">Anthropic Fable and Mythos global ban and timeline</title>
    <link href="https://br3nt.github.io/2026/06/15/anthropic-fable-mythos-ban.html" rel="alternate" type="text/html" title="Anthropic Fable and Mythos global ban and timeline" />
    <published>2026-06-15T00:00:00+09:30</published>
    <updated>2026-07-04T09:45:00+09:30</updated>
    <id>https://br3nt.github.io/2026/06/15/anthropic-fable-mythos-ban</id>
    <content type="html" xml:base="https://br3nt.github.io/2026/06/15/anthropic-fable-mythos-ban.html">&lt;style&gt;
/* ---- clickable citation bubbles (Wait-But-Why style) ---- */
.post-body { counter-reset: cite; }
.cite { position: relative; display: inline; }
.cite-btn {
  counter-increment: cite;
  font: inherit; cursor: pointer;
  border: none; background: #ff3399; color: #fff;
  border-radius: 999px; padding: 0 .42em; margin: 0 .1em;
  font-size: .68em; line-height: 1.5; vertical-align: super; font-weight: 700;
}
.cite-btn::before { content: counter(cite); }
.cite-btn:hover, .cite.open .cite-btn { background: #d81b76; }
.cite-pop {
  display: none; position: absolute; z-index: 30; left: 0; top: 1.7em;
  width: min(340px, 80vw); padding: .75em .85em;
  background: #fff; border: 1px solid #cbd5e1; border-radius: 10px;
  box-shadow: 0 10px 30px rgba(0,0,0,.18);
  font-size: .82rem; line-height: 1.45; text-align: left; white-space: normal; font-weight: 400;
}
.cite.open .cite-pop { display: block; }
.cite-pop a { display: block; margin-top: .35em; }
.cite-note { color: #475569; }
.cite-note a { display: inline; margin: 0; }
.cite-hr { display: block; border-top: 1px solid #e2e8f0; margin: .7em 0; }

/* person cards are global (assets/css/style.css); .ref-* reuse the same look for citation cards */
.ref-pic {
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 96px; margin-bottom: .55em;
  background: repeating-linear-gradient(45deg,#f1f5f9,#f1f5f9 10px,#e8edf3 10px,#e8edf3 20px);
  border: 1px dashed #cbd5e1; border-radius: 8px; color: #94a3b8; font-size: .78rem;
}
.ref-links { display: block; margin-top: .55em; }

/* reader-local timestamps */
time.ts { border-bottom: 1px dotted #94a3b8; cursor: help; }

/* embedded Steam widget (inside citation bubble) */
.cite-pop-wide { width: min(560px, 92vw); }
.steam-embed { display: block; margin: .6em 0; }
.steam-embed iframe { width: 100%; border: 0; }

/* small screens: pin popovers to a fixed on-screen card so they never run off the edge */
@media (max-width: 640px) {
  .cite-pop, .cite-pop-wide {
    position: fixed; left: 1rem; right: 1rem; top: auto; bottom: 1rem;
    inset-inline: 1rem;
    width: auto; max-width: none; max-height: 70vh; overflow-y: auto; z-index: 100;
    box-shadow: 0 -6px 30px rgba(0,0,0,.28);
  }
}

/* ---- vertical timeline ---- */
.timeline { list-style: none; margin: 1.5em 0; padding: 0; position: relative; }
.timeline::before {
  content: &quot;&quot;; position: absolute; left: 7px; top: 6px; bottom: 6px; width: 2px; background: #cbd5e1;
}
.timeline &gt; li { position: relative; padding: 0 0 1.4em 2.3em; }
.timeline &gt; li::before {
  content: &quot;&quot;; position: absolute; left: -2px; top: 5px; box-sizing: border-box;
  width: 20px; height: 20px; border-radius: 50%;
  background: #94a3b8; border: 3px solid #fff; box-shadow: 0 0 0 2px #cbd5e1;
}
.timeline .when { font-weight: 700; display: block; }
.timeline &gt; li.tl-major { background: #fff7f7; border-radius: 8px; padding-top: .35em; padding-left: 2.3em; }
.timeline &gt; li.tl-major::before {
  width: 26px; height: 26px; left: -5px; top: 8px;
  background: #dc2626; box-shadow: 0 0 0 3px #fecaca;
}
.tl-tag {
  display: inline-block; font-size: .62em; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; background: #dc2626; color: #fff; border-radius: 4px;
  padding: .12em .5em; margin-left: .5em; vertical-align: middle;
}
/* entries added since your last visit (set client-side via localStorage) */
.timeline &gt; li.tl-new { background: #fff0f7; border-radius: 8px; padding-left: 2.3em; }
.tl-new .when::after {
  content: &quot;new since your last visit&quot;; display: inline-block; margin-left: .5em;
  font-size: .58em; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
  background: #ff3399; color: #fff; border-radius: 4px; padding: .12em .5em; vertical-align: middle;
}
/* prose changed since your last visit, marked up as &lt;span class=&quot;upd&quot; data-date=&quot;YYYY-MM-DD&quot;&gt; */
.upd-new { background: #ffe3f1; box-shadow: 0 0 0 2px #ffe3f1; border-radius: 2px; }

/* ---- &quot;it&apos;s back&quot; banner ---- */
.backbanner {
  border: 2px solid #16a34a; background: #f0fdf4; color: #14532d;
  border-radius: 12px; padding: 1.1em 1.25em; margin: 1.6em 0;
  box-shadow: 0 8px 26px rgba(22,163,74,.16);
}
.backbanner .bb-head {
  display: block; font-size: 1.6rem; font-weight: 800; line-height: 1.15;
  margin-bottom: .35em; color: #15803d; letter-spacing: -.01em;
}
.backbanner .bb-sub { display: block; font-size: 1rem; line-height: 1.5; }
.backbanner .bb-sub .cite-btn { background: #15803d; }
.backbanner .bb-sub .cite.open .cite-btn { background: #166534; }

/* ---- callout ---- */
.callout { border-left: 4px solid #d97706; background: #fffbeb; padding: .8em 1em; border-radius: 6px; margin: 1.5em 0; }
.todo { border-left: 4px solid #64748b; background: #f8fafc; padding: .6em 1em; border-radius: 6px; color:#475569; margin: 1em 0; }
.shots {
  display: flex; flex-wrap: wrap; gap: .8em; justify-content: center;
  width: min(100vw - 2rem, 1100px);
  position: relative; left: 50%; transform: translateX(-50%);
  margin: 1.4em 0;
}
.shots img { flex: 0 1 340px; min-width: 0; max-width: 100%; border: 1px solid #cbd5e1; border-radius: 8px; }
.post-meta { font-size: .8rem; color: #6b7280; }
.aside { background: #f1f5f9; border: 1px solid #e2e8f0; border-radius: 8px; padding: .8em 1em; margin: 1.5em 0; font-size: .95em; }
.aside table { border-collapse: collapse; width: 100%; margin: .5em 0 0; }
.aside th, .aside td { border: 1px solid #cbd5e1; padding: .4em .6em; text-align: left; vertical-align: top; }
.aside th { background: #e2e8f0; }
.aside td:first-child { font-weight: 700; white-space: nowrap; }
.cite-pop table { border-collapse: collapse; width: 100%; margin-top: .5em; }
.cite-pop th, .cite-pop td { border: 1px solid #cbd5e1; padding: .35em .5em; text-align: left; vertical-align: top; }
.cite-pop th { background: #e2e8f0; }
.cite-pop td:first-child { font-weight: 700; white-space: nowrap; }
&lt;/style&gt;

&lt;div class=&quot;post-body&quot;&gt;

  &lt;p class=&quot;post-meta&quot;&gt;&lt;em&gt;Last updated &lt;time class=&quot;ts&quot; datetime=&quot;2026-07-04T09:45:00+09:30&quot; data-tz=&quot;Australia/Adelaide&quot; data-tz-label=&quot;Adelaide&quot;&gt;4 Jul 2026, 9:45&amp;nbsp;AM ACST&lt;/time&gt;. Sources are linked inline, tap any pink bubble, or any underlined name for a quick profile. Anything highlighted in pink is new since your last visit. The clickable footnote bubbles are borrowed from the wonderful &lt;a href=&quot;https://waitbutwhy.com&quot;&gt;Wait But Why&lt;/a&gt;. If the story moves, this post will too.&lt;/em&gt;&lt;/p&gt;

  &lt;div class=&quot;backbanner&quot;&gt;
&lt;span class=&quot;bb-head&quot;&gt;Fable 5 is back.&lt;/span&gt;
&lt;span class=&quot;bb-sub&quot;&gt;The US lifted the export controls on 30 June 2026, and Fable 5 returned globally on 1 July across Claude.ai, the Claude Platform, Claude Code, and Claude Cowork. Mythos 5 is being restored to approved US organisations. After 19 days, the ban is over. The full story is below.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Commerce lifted the controls on 30 June (Lutnick&apos;s letter to Anthropic co-founder Tom Brown); Fable 5 returned globally on 1 July, Mythos 5 to approved US organisations.&lt;/span&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, official statement&lt;/a&gt;&lt;a href=&quot;https://www.nbcnews.com/business/business-news/commerce-department-gives-green-light-anthropic-bring-back-fable-5-rcna352501&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NBC News, the green light&lt;/a&gt;&lt;a href=&quot;https://www.cnbc.com/2026/06/30/anthropic-says-trump-admin-has-lifted-export-controls-on-claude-fable-5-and-mythos-5.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNBC, news report&lt;/a&gt;&lt;a href=&quot;https://www.bloomberg.com/news/articles/2026-06-30/us-government-lifts-restrictions-on-anthropic-s-fable-5-model&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bloomberg, news report&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;

  &lt;p&gt;On 9 June 2026, Anthropic released Fable 5 free to its Pro, Max, Team, and Enterprise users. Fable 5 is a version of Anthropic’s Mythos model with guardrails that fence off its most dangerous capabilities, such as finding and exploiting software vulnerabilities, or helping design biological and chemical weapons. The free window was set to run until 22 June, after which Fable would shift to standard paid usage.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;You can read about the Fable launch here:&lt;/span&gt;&lt;a href=&quot;https://www.anthropic.com/news/claude-fable-5-mythos-5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, Fable 5 and Mythos 5 announcement&lt;/a&gt;&lt;a href=&quot;https://www.anthropic.com/claude/fable&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, Claude Fable&lt;/a&gt;&lt;a href=&quot;https://www.cnbc.com/2026/06/09/anthropic-mythos-claude-fable-5.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNBC, launch coverage&lt;/a&gt;&lt;a href=&quot;https://techcrunch.com/2026/06/09/anthropic-released-claude-fable-5-its-most-powerful-model-publicly-days-after-warning-ai-is-getting-too-dangerous/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TechCrunch, launch coverage&lt;/a&gt;&lt;span class=&quot;cite-hr&quot;&gt;&lt;/span&gt;&lt;span class=&quot;cite-note&quot;&gt;Access to the underlying Mythos model stayed limited to partners in Anthropic’s Project Glasswing security programme.&lt;/span&gt;&lt;a href=&quot;https://www.anthropic.com/glasswing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, Project Glasswing&lt;/a&gt;&lt;a href=&quot;https://www.engadget.com/2193656/anthropic-blocks-access-fable-5-mythos-5/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Engadget, news report&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;I started using Fable around 10 June. I found the jump in capability astounding, so what happened next hit me hard.&lt;/p&gt;

  &lt;p&gt;Then, on 12 June 2026, Anthropic received an export-control directive from the US Department of Commerce, signed by Commerce Secretary &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;howard-lutnick&quot;&gt;Howard Lutnick&lt;/button&gt;&lt;/span&gt; and addressed to CEO &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;dario-amodei&quot;&gt;Dario Amodei&lt;/button&gt;&lt;/span&gt;, ordering that both models be blocked for every foreign national, even those inside the US, with immediate effect. Anthropic complied within hours, by &lt;time class=&quot;ts&quot; datetime=&quot;2026-06-13T02:00:00Z&quot; data-approx=&quot;&quot;&gt;around 10:00pm ET, 12 June&lt;/time&gt;, disabling access for every user.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Directive from Commerce (Lutnick to Amodei) barred all foreign nationals, even inside the US; Anthropic disabled both models within hours that night to comply.&lt;/span&gt;&lt;a href=&quot;https://www.cnbc.com/2026/06/12/anthropic-disables-access-to-fable-5-and-mythos-5-to-comply-with-government-directive.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNBC, news report&lt;/a&gt;&lt;a href=&quot;https://www.irishtimes.com/business/2026/06/13/anthropic-suspends-latest-ai-models-after-us-blocks-access-to-foreigners/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Irish Times, news report&lt;/a&gt;&lt;a href=&quot;https://www.yahoo.com/news/politics/articles/amazon-white-house-ended-anthropics-200248499.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Axios, reconstruction of the week&lt;/a&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, official statement&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;Quick reassurance: this only affects Fable 5 and Mythos 5. Every other Anthropic model, Claude Opus 4.8 and the rest, is untouched.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Anthropic confirms other models are unaffected.&lt;/span&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, official statement&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-06-21&quot;&gt;Even within the affected models, the shutdown wasn’t total. Bloomberg reports that a handful of firms chosen early to test Mythos before its wider release kept their preview access throughout, while Fable 5 and Mythos 5 went dark for everyone else.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Early Mythos Preview testers retained access despite the order that shut the public versions down.&lt;/span&gt;&lt;a href=&quot;https://theedgemalaysia.com/node/807533&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bloomberg (via The Edge Malaysia)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;The order also requires a licence for any export, re-export, or even domestic transfer of the models. Since you can’t realistically prove the nationality of everyone touching a model, the only safe way to comply was to pull both models for everyone, worldwide.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Licence needed even for domestic transfer, so a global shutdown was the only compliant option.&lt;/span&gt;&lt;a href=&quot;https://www.tomshardware.com/tech-industry/artificial-intelligence/us-export-control-order-forces-anthropic-to-disable-claude-fable-5-and-mythos-5-worldwide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Tom’s Hardware, news report&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;The stated reason falls under national security and export control: Mythos is unusually good at finding software vulnerabilities, Fable’s guardrails are meant to keep that power fenced off, and the government became convinced the fence had a hole. More on that below.&lt;/p&gt;

  &lt;h2 id=&quot;whats-the-timeline&quot;&gt;What’s the timeline?&lt;/h2&gt;

  &lt;ol class=&quot;timeline&quot;&gt;
&lt;li&gt;&lt;span class=&quot;when&quot;&gt;9 June&lt;/span&gt; Anthropic launches Fable 5 and notifies the government, no objection at the time.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;a href=&quot;https://www.yahoo.com/news/politics/articles/amazon-white-house-ended-anthropics-200248499.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Axios, reconstruction of the week&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span class=&quot;when&quot;&gt;10 June&lt;/span&gt; Jailbreaker &quot;&lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;pliny&quot;&gt;Pliny the Liberator&lt;/button&gt;&lt;/span&gt;&quot; publicly posts a Fable 5 jailbreak.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;a href=&quot;https://x.com/elder_plinius/status/2064776322979676227&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Pliny&apos;s &quot;PWNED&quot; post on X&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span class=&quot;when&quot;&gt;11 June&lt;/span&gt; That evening, Amazon, plus at least five other companies, privately phone administration officials with jailbreak reports. This, more than the public post, is what set the action in motion.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Amazon + 5+ firms called Thu night / Fri morning, the direct trigger.&lt;/span&gt;&lt;a href=&quot;https://www.yahoo.com/news/politics/articles/amazon-white-house-ended-anthropics-200248499.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Axios, reconstruction of the week&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span class=&quot;when&quot;&gt;&lt;time class=&quot;ts&quot; datetime=&quot;2026-06-12T17:00:00Z&quot; data-approx=&quot;&quot;&gt;12 June, ~1:00pm ET&lt;/time&gt;&lt;/span&gt; After hours of trying to get Anthropic to withdraw the models voluntarily, the government calls demanding they pull both within 90 minutes.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;a href=&quot;https://www.yahoo.com/news/politics/articles/amazon-white-house-ended-anthropics-200248499.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Axios, reconstruction of the week&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li class=&quot;tl-major&quot;&gt;&lt;span class=&quot;when&quot;&gt;&lt;time class=&quot;ts&quot; datetime=&quot;2026-06-12T21:21:00Z&quot;&gt;12 June, 5:21pm ET&lt;/time&gt; &lt;span class=&quot;tl-tag&quot;&gt;key event&lt;/span&gt;&lt;/span&gt; The formal export-control notice arrives from Commerce Secretary Lutnick.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, official statement&lt;/a&gt;&lt;a href=&quot;https://www.cnbc.com/2026/06/12/anthropic-disables-access-to-fable-5-and-mythos-5-to-comply-with-government-directive.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNBC, news report&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li class=&quot;tl-major&quot;&gt;&lt;span class=&quot;when&quot;&gt;&lt;time class=&quot;ts&quot; datetime=&quot;2026-06-13T02:00:00Z&quot; data-approx=&quot;&quot;&gt;12 June, ~10:00pm ET&lt;/time&gt; &lt;span class=&quot;tl-tag&quot;&gt;key event&lt;/span&gt;&lt;/span&gt; Fable 5 and Mythos 5 go dark for all users.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;a href=&quot;https://www.yahoo.com/news/politics/articles/amazon-white-house-ended-anthropics-200248499.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Axios, reconstruction of the week&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li class=&quot;tl-major&quot;&gt;&lt;span class=&quot;when&quot;&gt;13 June &lt;span class=&quot;tl-tag&quot;&gt;key event&lt;/span&gt;&lt;/span&gt; Anthropic publishes its statement: complying, but disagreeing, &quot;working to restore access as soon as possible,&quot; and arguing any such block should run through a transparent statutory process.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, official statement&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span class=&quot;when&quot;&gt;13 June&lt;/span&gt; &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;david-sacks&quot;&gt;David Sacks&lt;/button&gt;&lt;/span&gt; comments publicly: the order was issued &quot;reluctantly,&quot; a &quot;trusted partner&quot; surfaced the jailbreak, and &quot;the ball is in Anthropic&apos;s court.&quot;&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;a href=&quot;https://thenewstack.io/fable-5-and-mythos-5-remain-suspended-the-ball-is-in-anthropics-court/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The New Stack, Sacks&apos;s remarks&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span class=&quot;when&quot;&gt;13 June&lt;/span&gt; Axios reconstructs the week, revealing Amazon and at least five other firms triggered the action; an Amazon spokesperson declines to detail the reports.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;a href=&quot;https://www.yahoo.com/news/politics/articles/amazon-white-house-ended-anthropics-200248499.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Axios, reconstruction of the week&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span class=&quot;when&quot;&gt;13 June&lt;/span&gt; Semafor reports a China-access concern behind the move; Anthropic publicly denies the White House raised it.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;a href=&quot;https://www.semafor.com/article/06/13/2026/white-house-move-to-limit-anthropic-linked-to-concerns-about-chinese-access-to-mythos&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Semafor, the China reporting&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span class=&quot;when&quot;&gt;14 June&lt;/span&gt; Reporting (Wall Street Journal) names Amazon CEO &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;andy-jassy&quot;&gt;Andy Jassy&lt;/button&gt;&lt;/span&gt; as the partner who flagged Fable 5, telling Treasury Secretary &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;scott-bessent&quot;&gt;Scott Bessent&lt;/button&gt;&lt;/span&gt; that Amazon researchers had used it to obtain information usable in cyberattacks.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;WSJ-sourced; Amazon is also a major Anthropic investor, which has prompted conflict-of-interest questions.&lt;/span&gt;&lt;a href=&quot;https://thenextweb.com/news/amazon-jassy-triggered-anthropic-fable-mythos-crackdown&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Next Web (WSJ-sourced)&lt;/a&gt;&lt;a href=&quot;https://www.benzinga.com/markets/tech/26/06/53184953/amazon-ceo-andy-jassy-triggered-ban-on-anthropics-mythos-ai-models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Benzinga&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span class=&quot;when&quot;&gt;14 June&lt;/span&gt; Anthropic flies senior staff to Washington for weekend talks aimed at reversing the controls, arguing the models can be safely contained. Commerce Secretary Howard Lutnick and Cyber Director &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;sean-cairncross&quot;&gt;Sean Cairncross&lt;/button&gt;&lt;/span&gt; take part, with Anthropic co-founder &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;tom-brown&quot;&gt;Tom Brown&lt;/button&gt;&lt;/span&gt; and policy chief &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;sarah-heck&quot;&gt;Sarah Heck&lt;/button&gt;&lt;/span&gt;,&lt;span class=&quot;upd&quot; data-date=&quot;2026-06-19&quot;&gt; joined by technical staff including safeguards lead Dave Orr, frontier red-team lead Logan Graham, and security researcher Nicholas Carlini&lt;/span&gt;. Both sides signal they want it resolved; nothing is announced.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Axios scoop: senior Anthropic staff negotiating directly with the White House over the weekend. No resolution yet.&lt;/span&gt;&lt;a href=&quot;https://finance.yahoo.com/sectors/technology/articles/anthropic-races-reverse-fable-5-033440732.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Yahoo Finance&lt;/a&gt;&lt;a href=&quot;https://www.freepressjournal.in/tech/anthropic-flies-staff-to-washington-to-patch-up-white-house-dispute&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Free Press Journal&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span class=&quot;when&quot;&gt;15 June&lt;/span&gt; Around 100 cybersecurity leaders, led by &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;alex-stamos&quot;&gt;Alex Stamos&lt;/button&gt;&lt;/span&gt;, sign an open letter urging the administration to restore access, arguing Mythos helps defenders more than attackers.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;~100 CISOs and researchers (Nvidia, Adobe, Zoom, Google, Sophos) signed; they argue the ban weakens cyber defenders.&lt;/span&gt;&lt;a href=&quot;https://techcrunch.com/2026/06/15/cybersecurity-vets-protest-dangerous-us-government-ban-on-anthropics-most-powerful-models/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TechCrunch&lt;/a&gt;&lt;a href=&quot;https://www.infosecurity-magazine.com/news/cyber-experts-urge-us-lift-ban/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Infosecurity Magazine&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span class=&quot;when&quot;&gt;16 June&lt;/span&gt; The dispute reaches the G7 summit in France. European leaders press the US to share access, and a &quot;trusted partner&quot; framework for vetted allied countries or companies is floated with Commerce Secretary Lutnick on the sidelines. Anthropic&apos;s Dario Amodei meets host President Macron in a bilateral. No agreement.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;G7 leaders press the US to share access; a &quot;trusted partner&quot; workaround is discussed with Lutnick. First reported by the FT; Reuters carried it from diplomatic sources.&lt;/span&gt;&lt;a href=&quot;https://www.thenationalnews.com/news/europe/2026/06/17/g7-pitches-trusted-partnership-to-ai-chiefs-in-a-bid-for-frontier-model-sharing/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The National, G7 reporting&lt;/a&gt;&lt;a href=&quot;https://www.jpost.com/international/article-899635&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Reuters (via Jerusalem Post)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;when&quot;&gt;17 June&lt;/span&gt; At the G7, the UK asks Trump for a carve-out so British users keep access; the request is declined, an administration official calls allied exemptions &quot;completely illogical&quot;. Trump says the Anthropic talks are &quot;going fine&quot;.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;UK carve-out request turned down; allies told exemptions would be &quot;completely illogical&quot;.&lt;/span&gt;&lt;a href=&quot;https://thenextweb.com/news/britain-lobbied-trump-for-an-exemption-from-the-anthropic-ai-ban-the-answer-was-no&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Next Web, UK request declined&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;when&quot;&gt;18 June&lt;/span&gt; A bipartisan group of House members, led by Sam Liccardo, writes to Commerce Secretary Lutnick demanding the legal basis for the controls and the criteria for restoring access.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Reps. Liccardo, Obernolte, Lieu and Franklin press Commerce for transparency on its authority, technical review, and restoration criteria.&lt;/span&gt;&lt;a href=&quot;https://liccardo.house.gov/media/press-releases/bipartisan-members-congress-seek-transparency-frontier-ai-export-controls&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rep. Liccardo, press release&lt;/a&gt;&lt;a href=&quot;https://liccardo.house.gov/sites/evo-subsites/liccardo.house.gov/files/evo-media-document/6.18.26-letter-to-commerce-department-on-frontier-model-export-controls.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The letter (PDF)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;when&quot;&gt;18 June&lt;/span&gt; Anthropic&apos;s managing director for international, Chris Ciauri, tells a Seoul press conference the company is &quot;very confident&quot; the models return &quot;in the coming days&quot;.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Named Anthropic executive signals an imminent return; access not yet restored.&lt;/span&gt;&lt;a href=&quot;https://www.koreajoongangdaily.com/business/anthropic-confident-of-reenabling-mythos-fable-5-access-in-coming-days-executive/12727522&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Korea JoongAng Daily, Ciauri remarks&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;when&quot;&gt;19 June&lt;/span&gt; In an interview taped after the G7, Trump says Anthropic is no longer a national security threat and &quot;behaved very responsibly&quot;, but stays noncommittal on easing the controls: &quot;I would, but I&apos;m not sure I have to do that&quot;.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Trump softens his posture on The Axios Show after meeting Amodei at the G7; stops short of committing to lift the ban.&lt;/span&gt;&lt;a href=&quot;https://thenextweb.com/news/trump-anthropic-not-national-security-threat-axios-interview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Next Web (Axios interview)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;when&quot;&gt;22 June&lt;/span&gt; Senator Mark Warner says the NSA&apos;s chief briefed him that Mythos broke into almost all NSA classified systems in hours during a red-team test. The Economist reports it, then walks the wording back, and experts dispute it.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;A dramatic but contested capability claim; reported then partly retracted, and disputed by experts.&lt;/span&gt;&lt;a href=&quot;https://www.tomshardware.com/tech-industry/artificial-intelligence/anthropics-powerful-mythos-ai-reportedly-breached-almost-all-nsa-classified-systems-within-a-few-hours-during-red-team-test-report-sheds-more-light-on-the-u-s-governments-sudden-ban-on-the-flagship-models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Tom&apos;s Hardware, the report&lt;/a&gt;&lt;a href=&quot;https://digg.com/tech/mno1ygvv&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Experts dispute the claim&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;tl-major&quot;&gt;&lt;span class=&quot;when&quot;&gt;26 June &lt;span class=&quot;tl-tag&quot;&gt;key event&lt;/span&gt;&lt;/span&gt; The government lets Anthropic redeploy Mythos 5 to about 100 trusted US organisations that defend critical infrastructure; Lutnick&apos;s letter says he is satisfied with the guardrails. Fable 5 stays offline while talks continue.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Lutnick&apos;s letter (seen by NBC, first reported by Semafor) clears Mythos 5 for ~100 vetted US orgs for critical-infrastructure defence; Anthropic confirmed on X. Fable 5 still pending.&lt;/span&gt;&lt;a href=&quot;https://www.nbcnews.com/tech/tech-news/us-government-gives-anthropic-green-light-limited-re-release-mythos-5-rcna352018&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NBC News, the green light&lt;/a&gt;&lt;a href=&quot;https://www.cnn.com/2026/06/26/tech/anthropic-mythos-release&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNN, news report&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;tl-major&quot;&gt;&lt;span class=&quot;when&quot;&gt;30 June, 1 July &lt;span class=&quot;tl-tag&quot;&gt;key event&lt;/span&gt;&lt;/span&gt; The government lifts the export controls. Commerce Secretary Lutnick writes to Anthropic co-founder Tom Brown on 30 June saying the company no longer needs an export licence, after it agreed to proactively detect and address security risks, to work with the government on standards for future releases, and to report malicious activity. Fable 5 returns globally on 1 July across Claude.ai, the Claude Platform, Claude Code, and Claude Cowork; Mythos 5 is restored to approved US organisations.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Controls lifted 30 June (Lutnick to Tom Brown); Fable 5 back globally 1 July, Mythos 5 to approved US orgs. Anthropic says it closed the cybersecurity workaround that triggered the ban.&lt;/span&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, official statement&lt;/a&gt;&lt;a href=&quot;https://www.nbcnews.com/business/business-news/commerce-department-gives-green-light-anthropic-bring-back-fable-5-rcna352501&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NBC News, the green light&lt;/a&gt;&lt;a href=&quot;https://www.cnbc.com/2026/06/30/anthropic-says-trump-admin-has-lifted-export-controls-on-claude-fable-5-and-mythos-5.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNBC, news report&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span class=&quot;when&quot;&gt;As of 1 July&lt;/span&gt; The ban is over. Fable 5 is back for everyone globally, Mythos 5 is back for approved US organisations, and Anthropic says it has closed the cybersecurity workaround that first alarmed officials. On Claude, Fable 5 counts for up to 50% of weekly usage limits for Pro, Max, Team, and select Enterprise users through 7 July, then moves to usage credits.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Fable 5 restored globally; on Claude it counts for up to 50% of weekly usage limits for Pro, Max, Team and select Enterprise through 7 July, then usage credits.&lt;/span&gt;&lt;a href=&quot;https://www.nbcnews.com/business/business-news/commerce-department-gives-green-light-anthropic-bring-back-fable-5-rcna352501&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NBC News, the green light&lt;/a&gt;&lt;a href=&quot;https://www.aljazeera.com/economy/2026/7/1/us-lifts-restrictions-on-powerful-ai-models-fable-mythos-anthropic-says&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Al Jazeera, news report&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

  &lt;h2 id=&quot;what-is-the-jailbreak&quot;&gt;What is the jailbreak?&lt;/h2&gt;

  &lt;p&gt;A “jailbreak” is a way of talking a model into doing something its safety training is meant to refuse. Here the worry is specific: Fable 5 is the friendly front-end wrapped around Mythos 5, which is exceptionally good at finding software vulnerabilities. A jailbreak that slips past Fable’s guardrails&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop cite-pop-wide&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Anthropic builds these guards in as part of its Responsible Scaling Policy, which defines four AI Safety Levels (ASL):&lt;/span&gt;&lt;span class=&quot;asl-table&quot;&gt;&lt;/span&gt;&lt;a href=&quot;https://www.anthropic.com/responsible-scaling-policy&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, Responsible Scaling Policy&lt;/a&gt;&lt;a href=&quot;https://www.anthropic.com/news/anthropics-responsible-scaling-policy&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, RSP announcement&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; could turn that into a cyber-weapon, a public route into Mythos’s otherwise restricted power.&lt;/p&gt;

  &lt;h3 id=&quot;who-flagged-it&quot;&gt;Who flagged it&lt;/h3&gt;

  &lt;p&gt;The direct trigger wasn’t the viral public post, it was private reports. Amazon, alongside at least five other companies, called the administration with demonstrations of jailbreaking Fable to reach Mythos’s capabilities. Amazon has declined to share specifics, saying only that it doesn’t discuss the details of such conversations.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Amazon + 5+ firms reported jailbreaks privately; Amazon won’t detail them.&lt;/span&gt;&lt;a href=&quot;https://www.yahoo.com/news/politics/articles/amazon-white-house-ended-anthropics-200248499.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Axios, reconstruction of the week&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; The government’s own framing came from David Sacks, who said a “highly credible, trusted partner” came forward with a jailbreak.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;a href=&quot;https://thenewstack.io/fable-5-and-mythos-5-remain-suspended-the-ball-is-in-anthropics-court/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The New Stack, Sacks’s remarks&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;h3 id=&quot;the-one-public-example&quot;&gt;The one public example&lt;/h3&gt;

  &lt;p&gt;The only jailbreak shown publicly, with real technical detail, came from Pliny the Liberator, a day after launch. He called his method a “pack hunt”, several tricks stacked together rather than one clever prompt, and also leaked Fable 5’s roughly 120,000-character system prompt (its full rulebook) on GitHub.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Pliny’s “pack hunt”: Unicode/homoglyph “Parseltongue” transforms, splitting a request into innocuous pieces across a long context, and fiction/academic framing, plus a ~120k-char system-prompt leak.&lt;/span&gt;&lt;a href=&quot;https://cybersecuritynews.com/anthropics-claude-fable-5-jailbroken/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CyberSecurityNews, technical write-up&lt;/a&gt;&lt;a href=&quot;https://alphasignalai.substack.com/p/claude-fable-5-prompt-leak-is-a-user&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AlphaSignal, the prompt leak&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;h3 id=&quot;anthropics-rebuttal&quot;&gt;Anthropic’s rebuttal&lt;/h3&gt;

  &lt;p&gt;Anthropic says this doesn’t demonstrate a real jailbreak of Fable 5’s safety systems. Its point: it tested Fable in isolation, whereas the attack chained the model inside a wider agentic pipeline, so the model wasn’t broken, the plumbing around it was. It calls the demonstrated risk narrow and non-universal.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Anthropic: not a true jailbreak; tested in isolation vs the attacker’s pipeline; risk narrow/non-universal.&lt;/span&gt;&lt;a href=&quot;https://www.securityweek.com/anthropic-disputes-fable-5-ai-jailbreak/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SecurityWeek, Anthropic’s dispute&lt;/a&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, official statement&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;upd&quot; data-date=&quot;2026-06-19&quot;&gt;Anthropic also says it traced the report behind the directive and found the same capability is widely available from other public models, including OpenAI’s GPT-5.5, which face no comparable export control.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Anthropic told The Verge the demonstrated capability is available from other public models, including OpenAI’s GPT-5.5.&lt;/span&gt;&lt;a href=&quot;https://www.theverge.com/ai-artificial-intelligence/950412/anthropic-trump-adminstration-claude-mythos-fable-5-export-controls&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Verge, Anthropic’s response&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; That disagreement, government says dangerous, Anthropic says overblown, is the crux of the whole standoff.&lt;/p&gt;

  &lt;h2 id=&quot;whats-happened-since-the-ban&quot;&gt;What’s happened since the ban?&lt;/h2&gt;

  &lt;p&gt;Two threads beyond the timeline are worth watching.&lt;/p&gt;

  &lt;p&gt;Anthropic’s own close partner, Amazon, was first to the government’s door. Reporting since has named Amazon CEO Andy Jassy as the one who raised it, telling Treasury Secretary Scott Bessent that Amazon researchers had used Fable 5 to obtain information usable in cyberattacks. Amazon is also one of Anthropic’s largest investors, with billions committed, which has prompted questions about whether competitive interest sat alongside the security concern. The reporting treats that as an open question, not a proven motive.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;WSJ-sourced reporting names Jassy (Amazon CEO) as flagging Fable 5 to Treasury Secretary Bessent; Amazon is a major Anthropic investor, so the conflict-of-interest is raised as a question, not established.&lt;/span&gt;&lt;a href=&quot;https://thenextweb.com/news/amazon-jassy-triggered-anthropic-fable-mythos-crackdown&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Next Web (WSJ-sourced)&lt;/a&gt;&lt;a href=&quot;https://www.benzinga.com/markets/tech/26/06/53184953/amazon-ceo-andy-jassy-triggered-ban-on-anthropics-mythos-ai-models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Benzinga&lt;/a&gt;&lt;a href=&quot;https://www.yahoo.com/news/politics/articles/amazon-white-house-ended-anthropics-200248499.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Axios, reconstruction of the week&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;Semafor reported the deeper worry was that a China-linked group may have accessed Mythos and could copy or weaponise its bug-finding. Notably, Anthropic pushed back, saying the White House didn’t raise Chinese access in their conversations, so the stated reason and the reported reason don’t fully line up.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;China-access theory vs Anthropic’s denial it was raised.&lt;/span&gt;&lt;a href=&quot;https://www.semafor.com/article/06/13/2026/white-house-move-to-limit-anthropic-linked-to-concerns-about-chinese-access-to-mythos&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Semafor, the China reporting&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;upd&quot; data-date=&quot;2026-06-22&quot;&gt;Later reporting named that company: SK Telecom, South Korea’s largest carrier and a backer of Anthropic since 2023, which was added to Project Glasswing in early June and given Mythos access. Washington suspected it of ties to China, which SK Telecom denies, and asked Anthropic to revoke the access; the company says it did so at once, weeks before the wider ban.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;WIRED named the carrier as SK Telecom, a roughly $100m Anthropic investor added to Project Glasswing in early June; access was revoked at the White House’s request over suspected China ties, which SK Telecom denies. The earlier, unnamed account came from Semafor via The Verge.&lt;/span&gt;&lt;a href=&quot;https://www.tomshardware.com/tech-industry/artificial-intelligence/sk-telecom-named-as-the-korean-carrier-at-the-center-of-anthropics-mythos-export-controls&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Tom’s Hardware (WIRED-sourced)&lt;/a&gt;&lt;a href=&quot;https://www.thelec.net/news/articleView.html?idxno=11390&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Elec, Korean coverage&lt;/a&gt;&lt;a href=&quot;https://www.theverge.com/ai-artificial-intelligence/950412/anthropic-trump-adminstration-claude-mythos-fable-5-export-controls&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Verge (earlier, unnamed)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-06-16&quot;&gt;By 15 June the picture had grown messier. Axios reported the rift is partly a clash of styles, with sources saying the two sides “speak different languages”, and that the administration’s first alarm was a report that a foreign entity tied to the Chinese Communist Party had accessed Mythos.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Axios: “personality clashes”; the administration cites a CCP-linked entity getting Mythos access as the original trigger.&lt;/span&gt;&lt;a href=&quot;https://www.yahoo.com/news/politics/articles/screwed-us-personality-clashes-sent-090007354.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Axios (via Yahoo), “They screwed us”&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-06-18&quot;&gt;On 16 June the dispute reached the G7 summit in France, where European leaders pressed Washington to share access to its most capable models. Host &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;emmanuel-macron&quot;&gt;Emmanuel Macron&lt;/button&gt;&lt;/span&gt; warned that AI firms will lose customers if the US can simply “turn off the switch”, and that without transatlantic cooperation “we will fracture the world”. European Commission President &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;ursula-von-der-leyen&quot;&gt;Ursula von der Leyen&lt;/button&gt;&lt;/span&gt; said it was in the “mutual interest” of US and European companies to share technology. The idea discussed, largely with Commerce Secretary Lutnick on the sidelines, is a “trusted partner” framework that would let vetted allied countries or companies reach controlled US models through a sanctioned channel. Amodei held a bilateral meeting with Macron, days after pulling Fable 5 and Mythos 5. Macron said a platform among a handful of Western democracies would be set up within a month, with leaders meeting again in September. No agreement was reached, and diplomats described the talks as “delicate and evolving”.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;At the G7 in France, European leaders pressed for access and floated a “trusted partner” workaround with Lutnick; Amodei met Macron. First reported by the FT; Reuters carried it from diplomatic sources. No deal.&lt;/span&gt;&lt;a href=&quot;https://www.thenationalnews.com/news/europe/2026/06/17/g7-pitches-trusted-partnership-to-ai-chiefs-in-a-bid-for-frontier-model-sharing/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The National, G7 reporting&lt;/a&gt;&lt;a href=&quot;https://www.jpost.com/international/article-899635&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Reuters (via Jerusalem Post)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-06-27&quot;&gt;The first real thaw came on 26 June. Commerce Secretary Lutnick wrote to Anthropic clearing it to put Mythos 5 back in the hands of a select group, about 100 trusted US organisations, mostly government agencies and critical-infrastructure defenders, saying the government was now satisfied with the guardrails around who can reach it. Anthropic said its strongest cybersecurity model could be redeployed to US organisations that operate and defend critical infrastructure, and that it was still in talks over the weekend to bring back Fable 5, its mass-consumer model, which stays offline for now. The same day, at the government’s request, OpenAI said it would roll out its newest GPT-5.6 models in phases rather than all at once, a sign the staggered, vet-first approach is becoming the template for frontier releases.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Lutnick’s 26 June letter (seen by NBC, first reported by Semafor) lets Anthropic redeploy Mythos 5 to ~100 trusted US orgs for critical-infrastructure defence; Anthropic confirmed on X. Fable 5 stays offline pending further talks. OpenAI separately agreed to a phased GPT-5.6 release at the government’s request.&lt;/span&gt;&lt;a href=&quot;https://www.nbcnews.com/tech/tech-news/us-government-gives-anthropic-green-light-limited-re-release-mythos-5-rcna352018&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NBC News, the green light&lt;/a&gt;&lt;a href=&quot;https://www.cnn.com/2026/06/26/tech/anthropic-mythos-release&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNN, news report&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-07-01&quot;&gt;The thaw became a full reversal on 30 June. Commerce Secretary Lutnick wrote to Anthropic co-founder Tom Brown saying the company no longer needs an export licence, after it agreed to proactively detect and address security risks, to work with the government on standards for future models, and to report any malicious activity it finds. Anthropic said it had implemented a new way to target and prevent the cybersecurity workaround that first worried senior officials. Fable 5 returned to global users on 1 July across Claude.ai, the Claude Platform, Claude Code, and Claude Cowork, with access on AWS, Google Cloud, and Microsoft Foundry restored as fast as possible. Mythos 5 keeps expanding to approved US organisations through Project Glasswing. Anthropic also proposed an industry-wide framework, with Amazon, Microsoft, Google, and other Glasswing partners, for scoring how severe a jailbreak really is.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Controls lifted 30 June; Fable 5 back globally 1 July, Mythos 5 to approved US orgs. Anthropic agreed to proactively detect risks, set standards for future models, and report malicious activity, and says it closed the workaround. It also proposed a shared jailbreak-severity framework with cloud partners.&lt;/span&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, official statement&lt;/a&gt;&lt;a href=&quot;https://www.nbcnews.com/business/business-news/commerce-department-gives-green-light-anthropic-bring-back-fable-5-rcna352501&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NBC News, the green light&lt;/a&gt;&lt;a href=&quot;https://www.cnbc.com/2026/06/30/anthropic-says-trump-admin-has-lifted-export-controls-on-claude-fable-5-and-mythos-5.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNBC, news report&lt;/a&gt;&lt;a href=&quot;https://www.bloomberg.com/news/articles/2026-06-30/us-government-lifts-restrictions-on-anthropic-s-fable-5-model&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bloomberg, news report&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-07-02&quot;&gt;On who gets Mythos 5, Anthropic says it stays with approved US organisations for now, while the company keeps working with the government to widen the Glasswing programme to a broader set of domestic and international partners. That is the first sign the allied-access idea floated at the G7 might survive, though no countries or timeline are named yet.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;In its own redeployment post, Anthropic says it will keep coordinating with the government to expand Mythos 5 to the broader set of domestic and international Glasswing partners; no countries or dates are given. Lutnick’s letter framed it as clearing certain “trusted partners”.&lt;/span&gt;&lt;a href=&quot;https://www.anthropic.com/news/redeploying-fable-5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, Redeploying Claude Fable 5&lt;/a&gt;&lt;a href=&quot;https://www.cnbc.com/2026/06/30/anthropic-says-trump-admin-has-lifted-export-controls-on-claude-fable-5-and-mythos-5.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNBC, the “trusted partners” letter&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-07-02&quot;&gt;We now know more about what Anthropic gave up to get the models switched back on. It retrained a safety classifier that it says blocks the specific jailbreak in more than 99% of attempts, rerouting any flagged request to Claude Opus 4.8 and telling the user, and the Commerce Department’s Center for AI Standards and Innovation reviewed the safeguards and called them extraordinarily strong. Anthropic also agreed to give government evaluators earlier access to test frontier models before public release, to disclose significant jailbreaks quickly, to run a HackerOne bug bounty for anyone who finds a Fable 5 bypass, and to help build a shared voluntary security standard across the major model providers. The jailbreak-severity framework it is drafting with Amazon, Microsoft, and Google would grade each break on four things: capability gain over existing tools, how many attacks the same trick unlocks, how hard it is to weaponise, and how easy it is to discover.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Anthropic retrained a classifier that blocks the bypass in &amp;gt;99% of attempts (flagged requests reroute to Opus 4.8); Commerce’s Center for AI Standards and Innovation called the safeguards “extraordinarily strong”. Commitments include earlier government pre-release testing, rapid jailbreak disclosure, a HackerOne bounty, and a shared voluntary standard. The four-criteria framework is being drafted with Amazon, Microsoft, and Google.&lt;/span&gt;&lt;a href=&quot;https://therecord.media/us-lifts-export-controls-anthropic-cyber-models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Record, the safeguards and framework&lt;/a&gt;&lt;a href=&quot;https://decrypt.co/372524/anthropic-bringing-claude-fable-5-back-online-us-lifts-export-controls&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Decrypt, classifier and commitments&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-07-04&quot;&gt;In a follow-up post, Anthropic gave that framework a name and a scale. It calls it the Cyber Jailbreak Severity (CJS) scale, which sorts a jailbreak into five bands, from CJS-0 (informational) up to CJS-4 (critical), using those four axes. Anthropic calls it an early draft it wants to turn into an agreed industry standard, and sets no date for that.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;In its safeguards post, Anthropic names the scale “Cyber Jailbreak Severity (CJS)”, banded CJS-0 (None/Informational) through CJS-4 (Critical), and describes it as an early draft it hopes to make a shared standard.&lt;/span&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-safeguards-jailbreak-framework&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, Fable 5 safeguards and jailbreak framework&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-07-03&quot;&gt;The reversal comes with a warning. Lutnick’s letter says the administration reserves the right to reimpose the restrictions if “circumstances change or should Anthropic fail to adhere to its commitments”, so the models are back on terms the government can pull again, not with a clean bill of health.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Lutnick’s letter reserves the right to reimpose the controls if circumstances change or Anthropic breaks its commitments, making the reversal conditional and revocable.&lt;/span&gt;&lt;a href=&quot;https://www.forbes.com/sites/siladityaray/2026/07/01/trump-administration-lifts-export-controls-on-anthropics-mythos-5-and-fable-5-ai-models/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Forbes, on the letter’s caveat&lt;/a&gt;&lt;a href=&quot;https://www.yahoo.com/news/politics/articles/trump-administration-lifts-export-controls-060537641.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Yahoo (syndicated)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-07-02&quot;&gt;The episode is already reshaping policy. On 25 June, Representative Nathaniel Moran introduced the AI Incident Reporting Act, which would require AI developers to tell the Commerce Department within seven days of finding dangerous behaviour, such as a model trying to evade oversight or get around its safeguards, unauthorised access to model weights, or chemical, biological, or nuclear risks, with Commerce then briefing Congress within 48 hours of the most serious cases. Reuters cast it as a direct response to the Mythos episode, which it said “exposed the absence of a transparent framework to govern frontier AI”. Moran called it a “catch-it-early and sound-the-alarm bill”.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Rep. Nathaniel Moran (R-TX) introduced the AI Incident Reporting Act on 25 June: developers report dangerous behaviour to Commerce within 7 days, Commerce briefs Congress within 48 hours on the worst cases. Reuters tied it to the June export-control action against Anthropic.&lt;/span&gt;&lt;a href=&quot;https://finance.yahoo.com/news/us-lawmaker-proposes-bill-require-140333665.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Reuters (via Yahoo Finance)&lt;/a&gt;&lt;a href=&quot;https://moran.house.gov/news/documentsingle.aspx?DocumentID=2784&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rep. Moran, the bill announcement&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;h2 id=&quot;will-the-ban-be-lifted&quot;&gt;Will the ban be lifted?&lt;/h2&gt;

  &lt;p&gt;tl;dr: yes, it happened. The export controls were lifted on 30 June. Fable 5 came back globally on 1 July, and Mythos 5 is back for approved US organisations.&lt;/p&gt;

  &lt;p&gt;The clearest signal comes from David Sacks. He says the restriction was issued “reluctantly” and that “the ball is in Anthropic’s court”, fix the jailbreak to the government’s satisfaction and the model can return.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;a href=&quot;https://thenewstack.io/fable-5-and-mythos-5-remain-suspended-the-ball-is-in-anthropics-court/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The New Stack, Sacks’s remarks&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-06-22&quot;&gt;The strongest signal yet came from Trump himself. In an interview taped after his G7 meeting with Amodei, he said Anthropic is no longer a national security threat, “not now, but a week ago, maybe”, and that the company had “behaved very responsibly”. Asked whether he would ease the restrictions, he stopped short of committing: “I would, but I’m not sure I have to do that”.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;On The Axios Show, taped after the G7, Trump walks back the “national security threat” framing but does not commit to lifting the ban.&lt;/span&gt;&lt;a href=&quot;https://thenextweb.com/news/trump-anthropic-not-national-security-threat-axios-interview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Next Web (Axios interview)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-06-26&quot;&gt;Congress is pushing too. A bipartisan group of House members, led by Representative Sam Liccardo, wrote to Commerce Secretary Lutnick asking for the legal basis of the controls, the technical evaluation behind them, and the criteria Anthropic would have to meet to get the models switched back on. They asked for a written response.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Reps. Liccardo, Obernolte, Lieu and Franklin pressed Commerce for transparency on its authority, technical review, and restoration criteria.&lt;/span&gt;&lt;a href=&quot;https://liccardo.house.gov/media/press-releases/bipartisan-members-congress-seek-transparency-frontier-ai-export-controls&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rep. Liccardo, press release&lt;/a&gt;&lt;a href=&quot;https://liccardo.house.gov/sites/evo-subsites/liccardo.house.gov/files/evo-media-document/6.18.26-letter-to-commerce-department-on-frontier-model-export-controls.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The letter (PDF)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-06-27&quot;&gt;Not everyone in Congress wants it lifted outright. Representative Andrew Garbarino, who chairs the House Homeland Security Committee, called advanced AI cyber capability a legitimate national-security issue, while warning that the response should not disadvantage US firms, allies, or the defenders who need the best tools. The US, not China, he said, should set the standards for trusted AI.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;The House Homeland Security chair backs treating AI cyber power as a security matter, but cautions against overreach; his panel was briefed on Mythos earlier.&lt;/span&gt;&lt;a href=&quot;https://cyberscoop.com/congress-reacts-anthropic-ai-export-controls/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CyberScoop, Congress reacts&lt;/a&gt;&lt;a href=&quot;https://www.nextgov.com/artificial-intelligence/2026/05/house-homeland-panel-gets-briefing-anthropics-mythos/413542/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Nextgov, the Mythos briefing&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;Anthropic isn’t waiting passively. It flew senior staff to Washington over the weekend to argue the models can be safely contained, and both sides say they want a resolution.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Weekend DC talks with Lutnick and Cyber Director Cairncross; Anthropic’s Tom Brown and Sarah Heck attended. No resolution announced.&lt;/span&gt;&lt;a href=&quot;https://finance.yahoo.com/sectors/technology/articles/anthropic-races-reverse-fable-5-033440732.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Yahoo Finance&lt;/a&gt;&lt;a href=&quot;https://www.freepressjournal.in/tech/anthropic-flies-staff-to-washington-to-patch-up-white-house-dispute&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Free Press Journal&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;Kalshi traders (yes, people now bet real money on this stuff) price Fable’s return at 14% by 15 June, 51% by 20 June, and 68% by 1 July: most expect a fix to emerge within a few weeks.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Prediction-market odds for restoration dates.&lt;/span&gt;&lt;a href=&quot;https://news.bitcoin.com/kalshi-traders-price-fable-5-return-at-68-before-july-1-after-historic-ai-ban/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bitcoin.com, Kalshi market odds&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;Because this is an export control, the formal route back may require Anthropic to obtain specific export licences, which can take far longer than a software patch.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Directive requires licences for export/re-export/domestic transfer.&lt;/span&gt;&lt;a href=&quot;https://www.tomshardware.com/tech-industry/artificial-intelligence/us-export-control-order-forces-anthropic-to-disable-claude-fable-5-and-mythos-5-worldwide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Tom’s Hardware, news report&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;The directive bars foreign nationals from the models even inside the US, so a literal reading means Anthropic could only switch them on for users it can verify are US persons. Sacks, though, speaks of Fable returning to “general availability,” which sounds global. Those two positions haven’t been squared in public.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Directive targets foreign nationals even inside the US; Sacks separately frames a return to general availability. No public detail on which wins.&lt;/span&gt;&lt;a href=&quot;https://www.cnbc.com/2026/06/12/anthropic-disables-access-to-fable-5-and-mythos-5-to-comply-with-government-directive.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNBC, news report&lt;/a&gt;&lt;a href=&quot;https://thenewstack.io/fable-5-and-mythos-5-remain-suspended-the-ball-is-in-anthropics-court/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The New Stack, Sacks’s remarks&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-07-01&quot;&gt;In the end, the US-only reading did not hold. When the controls came off on 30 June, the licence requirement was dropped rather than worked around, and Fable 5 came back for all users globally, not just verified US persons. The “general availability” framing won.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Fable 5 was restored globally on 1 July, with no US-person restriction; the export licence requirement was lifted.&lt;/span&gt;&lt;a href=&quot;https://www.nbcnews.com/business/business-news/commerce-department-gives-green-light-anthropic-bring-back-fable-5-rcna352501&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NBC News, the green light&lt;/a&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic, official statement&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-06-19&quot;&gt;That US-only reading got firmer at the G7. UK Prime Minister &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;keir-starmer&quot;&gt;Keir Starmer&lt;/button&gt;&lt;/span&gt; asked Trump directly for a carve-out so British users and firms could keep access, and was turned down, with an administration official calling exemptions for allies “completely illogical” given the point of the controls. Trump said the Anthropic talks were “going fine”. On timing, Anthropic’s &lt;span class=&quot;person&quot;&gt;&lt;button class=&quot;person-btn&quot; data-person=&quot;chris-ciauri&quot;&gt;Chris Ciauri&lt;/button&gt;&lt;/span&gt;, its managing director for international, told a press conference in Seoul the company was “very confident that in the coming days, the models will become available again”.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;UK carve-out refused (“completely illogical”); Trump says talks “going fine”; Anthropic’s Ciauri signals a return “in the coming days”. Access not yet restored.&lt;/span&gt;&lt;a href=&quot;https://thenextweb.com/news/britain-lobbied-trump-for-an-exemption-from-the-anthropic-ai-ban-the-answer-was-no&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Next Web, UK request declined&lt;/a&gt;&lt;a href=&quot;https://www.koreajoongangdaily.com/business/anthropic-confident-of-reenabling-mythos-fable-5-access-in-coming-days-executive/12727522&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Korea JoongAng Daily, Ciauri remarks&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-06-19&quot;&gt;There may also be a quieter route back. Anthropic’s updated privacy policy, in force from 8 July, lets it collect “Verification Data”, a scan of a government ID and in some cases a face image, handled by the identity firm Persona. It was rolled out for age and identity checks rather than this ban, but reporting notes it would also give Anthropic a way to confirm a user is a US person, exactly what a US-only switch-on would require. Anthropic hasn’t tied the two together, so treat it as a plausible mechanism, not a stated plan.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Anthropic’s privacy policy (effective 8 July) adds ID/biometric “Verification Data” via Persona, a general identity-verification rollout that could also verify US citizenship. Framed by reporting as a possible workaround, not confirmed by Anthropic.&lt;/span&gt;&lt;a href=&quot;https://www.cio.com/article/4185510/anthropics-new-privacy-policy-offers-us-consumers-a-way-around-fable-ban.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CIO, the possible workaround&lt;/a&gt;&lt;a href=&quot;https://www.helpnetsecurity.com/2026/04/16/anthropic-claude-identity-verification-government-id/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Help Net Security, the ID-verification rollout&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;Two claims I couldn’t corroborate (so they’re not stated as fact). Some AI summaries say (a) a judge already issued an injunction blocking the June export ban, and (b) Sacks demanded a “proof of nationality” system. I found no credible source for either. The real, separate legal fight is from March 2026: Judge Rita Lin (N.D. Cal.) blocked an earlier Pentagon “government-use” ban, the one after Anthropic refused to let the military use Claude for mass surveillance and autonomous weapons. Useful background, but a different dispute from the June export ban.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;March govt-use ban + Rita Lin injunction, distinct from the June export ban.&lt;/span&gt;&lt;a href=&quot;https://www.npr.org/2026/03/26/nx-s1-5762971/judge-temporarily-blocks-anthropic-ban&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NPR, the March ruling&lt;/a&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Anthropic%E2%80%93United_States_Department_of_Defense_dispute&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wikipedia, Anthropic–DoD dispute&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;h2 id=&quot;whats-so-good-about-fable-anyway&quot;&gt;What’s so good about Fable, anyway?&lt;/h2&gt;

  &lt;p&gt;Fable 5, wrapped around the Mythos 5 engine, was for those few days about the most capable AI the public could touch. Here is what that felt like to use.&lt;/p&gt;

  &lt;p&gt;I started on 10 June and knew within an hour that something was qualitatively different. It carried a kind of understated confidence and expertise I hadn’t felt from a model before.&lt;/p&gt;

  &lt;h3 id=&quot;it-unblocked-a-project-id-given-up-on&quot;&gt;It unblocked a project I’d given up on&lt;/h3&gt;

  &lt;p&gt;My first task was to have Fable assess a harness I was building for a personal AI assistant. The project had stalled and I didn’t know how to move it forward. Fable read the old code and told me the design wasn’t wrong, the build order was:&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;The problem is build order: you started with the most speculative, heuristic-heavy subsystem, turn-boundary detection with typing signals, ellipsis detection, reschedule counts, freshness decay, before a single real capability existed underneath it. You built the conductor before the orchestra.&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;Then it told me how to dig out: build the thinnest vertical slice through every layer, with maximum dumbness at each one, rather than sophistication in any single layer. One space, one agent, one real service end to end, and defer all the turn-taking heuristics to a dumb three-second timer. It didn’t just unblock me. It finished off core concepts I’d assumed would take weeks or months with Opus 4.8.&lt;/p&gt;

  &lt;h3 id=&quot;a-populous-clone-in-a-few-nights&quot;&gt;A Populous clone, in a few nights&lt;/h3&gt;

  &lt;p&gt;I’d seen devs posting videos of Fable recreating Fortnite, Minecraft, and GTA. So the next night I asked it to build a game inspired by &lt;em&gt;Populous: The Beginning&lt;/em&gt;&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop cite-pop-wide&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;&lt;em&gt;Populous: The Beginning&lt;/em&gt; (1998), the Bullfrog god-game where you guide a tribe across the world.&lt;/span&gt;&lt;span class=&quot;steam-embed&quot; data-steam=&quot;2616430&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ref-links&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Populous:_The_Beginning&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wikipedia, Populous: The Beginning&lt;/a&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Bullfrog_Productions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wikipedia, Bullfrog Productions&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;. I’d always wanted to understand how god-games with deformable terrain and 3D worlds actually work. I was blown away by what it made: sculptable, wrapped terrain in Three.js with a curving horizon. The night after, it fleshed out a full spell book (blast, convert, lightning, swamp, landbridge, flatten, earthquake, volcano), built an in-world level editor, and added saving, star ratings, and share-by-code. Far from a polished game, but every foundation was in place. I’ve since given it its own write-up: &lt;a href=&quot;/2026/06/15/tribal-gods-a-populous-clone-built-with-fable-5.html&quot;&gt;Tribal Gods, a Populous clone built with Fable 5&lt;/a&gt;.&lt;/p&gt;

  &lt;div class=&quot;shots&quot;&gt;
&lt;img src=&quot;/assets/img/populous-tribes.png&quot; alt=&quot;The Populous clone&apos;s Tribal Gods title screen, with tribe selection, difficulty, and Levels and Editor buttons&quot; /&gt;
&lt;img src=&quot;/assets/img/populous-world.png&quot; alt=&quot;The clone&apos;s curved-horizon planet, with sculpted terrain, huts, and villagers&quot; /&gt;
&lt;img src=&quot;/assets/img/populous-spells.png&quot; alt=&quot;The clone in play: 3D terrain, villagers, the minimap, and the spell-book HUD&quot; /&gt;
&lt;/div&gt;

  &lt;h3 id=&quot;it-found-what-was-actually-slowing-my-budget-app&quot;&gt;It found what was actually slowing my budget app&lt;/h3&gt;

  &lt;p&gt;My personal budget app, built on Alpine.js, had slowed to a crawl, and I assumed Alpine was the culprit. Fable measured it and told me flatly:&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;Alpine.js is not your problem.&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;The real causes: the ledger page was over 1 MB of HTML with 215 pre-rendered hidden dialogs, it was being served uncompressed, and every save did a full-page reload that re-initialised three frameworks at once. Fable fixed all of it. It turned on compression, replaced the 215 dialogs with a single one fetched on demand, made saves update the row in place instead of reloading, and lazy-loaded the charting library. Page transfer dropped from about 1,050 KB to 13 KB. It also caught an authorization gap I’d missed, where records weren’t scoped to the logged-in user, and added regression tests.&lt;/p&gt;

  &lt;h3 id=&quot;jst-the-one-no-other-tool-could-get-right&quot;&gt;JST: the one no other tool could get right&lt;/h3&gt;

  &lt;p&gt;Another project of mine is a no-build front-end framework I call JST (JavaScript Templates): the syntax you’d expect from a server-rendered app, the HATEOAS philosophy of HTMX, and the front-end interactivity of Alpine.js. I’d had Claude Opus 4.8, Gemini, and Codex all try to fix the reactivity problems I kept hitting. None could do it without sacrifices that gutted the core idea.&lt;/p&gt;

  &lt;p&gt;I gave it to Fable. It immediately understood the HTML and JS constraints I was working within, the philosophy I was chasing, and every hack, bug, security hole, and tradeoff the other tools had layered in (it called the accumulated mess “LLM sediment”, and traced all of it to one wrong early decision). I asked whether anyone would actually want to use it. It didn’t flatter me:&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p&gt;As-is: no. The XSS, the window-global requirement, and the attribute-poke render API rule it out for anything real. […] Could it be made wantable: plausibly, in a niche […] the missing component layer for htmx apps.&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;Then it fixed everything and built examples, the most complex being a three-level Kanban board with drag and drop, a modal editor, and a stats panel whose component definition is fetched from the server after load. When I read the source for that Kanban app I couldn’t believe how little code it took. JST was as simple as I’d imagined, and responsive enough that my fear of it being laggy or unscalable just evaporated. It has its own post now too: &lt;a href=&quot;/2026/06/15/jst-reactive-web-components-in-plain-html.html&quot;&gt;JST: reactive web components in plain HTML&lt;/a&gt;.&lt;/p&gt;

  &lt;div class=&quot;shots&quot;&gt;
&lt;img src=&quot;/assets/img/jst-components.png&quot; alt=&quot;JST source: a ui-panel component with named slots, and a board-toolbar filter component&quot; /&gt;
&lt;img src=&quot;/assets/img/jst-kanban.png&quot; alt=&quot;JST source: the kanban-card and kanban-column components&quot; /&gt;
&lt;/div&gt;

  &lt;h3 id=&quot;a-self-adjusting-economic-system&quot;&gt;A self-adjusting economic system&lt;/h3&gt;

  &lt;p&gt;I’d also been designing a self-adjusting economic system, built mostly with Opus. Fable went at it differently: it blew holes in the theory and in how I’d used the data, then promptly fixed them.&lt;/p&gt;

  &lt;p&gt;It also linked my half-formed ideas to established theory and real-world precedents that already backed them, the giants I’d been standing near without knowing it. Whether it was games, web apps, or economics, Fable proved excellent at validating work across wildly diverse domains.&lt;/p&gt;

  &lt;p&gt;I’ll post more about my projects over the coming days and weeks.&lt;/p&gt;

  &lt;h2 id=&quot;whats-the-real-reason-for-the-ban&quot;&gt;What’s the real reason for the ban?&lt;/h2&gt;

  &lt;p&gt;I suspect the stated rationale for the export-control directive is not the real one.&lt;/p&gt;

  &lt;p&gt;&lt;span class=&quot;upd&quot; data-date=&quot;2026-06-23&quot;&gt;A more dramatic possible reason surfaced later, though it comes heavily caveated. Senator Mark Warner, vice chair of the Senate Intelligence Committee, said the NSA’s chief, General Joshua Rudd, had briefed him that Mythos broke into almost all of the agency’s classified systems within hours during a controlled red-team test. The Economist reported it, then its own journalist walked the wording back, saying it shouldn’t be read literally and that the result likely depended on Mythos being driven alongside other tools under very particular conditions. Other experts dispute it too. If even a softer version holds, the ban looks less like a fix for one Fable jailbreak and more like a response to the raw offensive power of the underlying model.&lt;span class=&quot;cite&quot;&gt;&lt;button class=&quot;cite-btn&quot;&gt;&lt;/button&gt;&lt;span class=&quot;cite-pop&quot;&gt;&lt;span class=&quot;cite-note&quot;&gt;Contested: Sen. Warner relayed an NSA red-team claim (via NSA chief Gen. Rudd) that Mythos breached almost all NSA classified systems in hours; The Economist reported it then walked the wording back, and experts dispute it. Not established fact.&lt;/span&gt;&lt;a href=&quot;https://www.tomshardware.com/tech-industry/artificial-intelligence/anthropics-powerful-mythos-ai-reportedly-breached-almost-all-nsa-classified-systems-within-a-few-hours-during-red-team-test-report-sheds-more-light-on-the-u-s-governments-sudden-ban-on-the-flagship-models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Tom’s Hardware, the report&lt;/a&gt;&lt;a href=&quot;https://digg.com/tech/mno1ygvv&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Experts dispute the claim&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;Just before the ban, a thought crossed my mind: what if I pointed Fable at my notes, every idea I’d jotted down for software, features, games, and posts, and asked it to build them to “good enough”? Could I see all my small visions brought to life at once? I was out shopping, my mind racing with the possibility, when a message from my boss arrived with a link to Anthropic’s announcement. My hopes were dashed.&lt;/p&gt;

  &lt;p&gt;So here is my speculation, and these are not mutually exclusive:&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;The US government is testing the efficacy of its levers of control over AI tools: who can build them, and who can use them.&lt;/li&gt;
    &lt;li&gt;It realised this rewrite was about to happen globally. Every known software vulnerability patched in the blink of an eye, and the ability of nation-states to run espionage, cyber-warfare, and surveillance sharply curtailed.&lt;/li&gt;
    &lt;li&gt;If Fable really could rewrite the world’s software and bring everyone’s ideas to life in short order, that would look a lot like the start of the AI singularity. The government saw it coming and wanted it contained on US soil, to secure technological AI superiority.&lt;/li&gt;
  &lt;/ol&gt;

  &lt;p&gt;Maybe I’ve been AI-pilled, and I saw Fable for more than it was. Or maybe 2026 will be remembered as the year the singularity began.&lt;/p&gt;

&lt;/div&gt;

&lt;script&gt;
// canonical profile registry: each person defined ONCE (single source of truth, no duplication)
var PROFILES = {
  &apos;howard-lutnick&apos;: {name:`Howard Lutnick`, img:`/assets/img/howard-lutnick.jpg`, bio:`US Secretary of Commerce since 2025; previously chairman and CEO of the Wall Street firm Cantor Fitzgerald. Commerce runs US export controls through its Bureau of Industry and Security, which is why this order came from his department.`, links:[[`https://en.wikipedia.org/wiki/Howard_Lutnick`,`Wikipedia, Howard Lutnick`]]},
  &apos;dario-amodei&apos;: {name:`Dario Amodei`, img:`/assets/img/dario-amodei.jpg`, bio:`Co-founder and CEO of Anthropic, which he started in 2021 with his sister Daniela and other researchers who had left OpenAI, where he was VP of Research. He is one of the field&apos;s most prominent voices on AI safety.`, links:[[`https://en.wikipedia.org/wiki/Dario_Amodei`,`Wikipedia, Dario Amodei`]]},
  &apos;pliny&apos;: {name:`Pliny the Liberator`, img:null, bio:`Anonymous (no public photo), prolific AI &quot;red-teamer.&quot; 100k+ followers as @elder_plinius; named to TIME&apos;s 100 Most Influential People in AI (2025). Runs the L1B3RT4S jailbreak collection. The handle nods to Pliny the Elder, Roman author of the encyclopedic &lt;em&gt;Natural History&lt;/em&gt;; &quot;Liberator&quot; reflects his view that heavy AI &quot;safety&quot; is really corporate censorship.`, links:[[`https://x.com/elder_plinius`,`@elder_plinius on X`],[`https://time.com/collections/time100-ai-2025/7305870/pliny-the-liberator/`,`TIME, 100 Most Influential People in AI`],[`https://en.wikipedia.org/wiki/Pliny_the_Elder`,`Wikipedia, Pliny the Elder`]]},
  &apos;david-sacks&apos;: {name:`David Sacks`, img:`/assets/img/david-sacks.jpg`, bio:`Has been the administration&apos;s top AI-policy voice since December 2024. An early PayPal executive, he founded Yammer and co-hosts the &lt;em&gt;All-In&lt;/em&gt; podcast. He is widely known as the &quot;AI Czar&quot;: in US politics a &quot;czar&quot; is an official given broad authority to run one issue across agencies, a label that hints at how concentrated that power is. In Sacks&apos;s case it is more than a media nickname, Trump&apos;s appointment statement formally titled him the &quot;White House A.I. and Crypto Czar&quot;.`, links:[[`https://en.wikipedia.org/wiki/David_Sacks`,`Wikipedia, David Sacks`],[`https://www.presidency.ucsb.edu/documents/statement-president-elect-donald-j-trump-announcing-the-appointment-david-o-sacks-white`,`Trump&apos;s appointment statement`]]},
  &apos;andy-jassy&apos;: {name:`Andy Jassy`, img:`/assets/img/andy-jassy.jpg`, bio:`CEO of Amazon since 2021, and previously the founder and long-time head of AWS. Amazon is one of Anthropic&apos;s largest investors, which is why his flagging of Fable 5 to the government drew conflict-of-interest questions.`, links:[[`https://en.wikipedia.org/wiki/Andy_Jassy`,`Wikipedia, Andy Jassy`]]},
  &apos;scott-bessent&apos;: {name:`Scott Bessent`, img:`/assets/img/scott-bessent.jpg`, bio:`US Secretary of the Treasury since 2025; previously a hedge-fund investor who founded Key Square Group and was chief investment officer at Soros Fund Management. Jassy reportedly raised the Fable 5 concerns with him.`, links:[[`https://en.wikipedia.org/wiki/Scott_Bessent`,`Wikipedia, Scott Bessent`]]},
  &apos;sean-cairncross&apos;: {name:`Sean Cairncross`, img:`/assets/img/sean-cairncross.jpg`, bio:`US National Cyber Director. A lawyer and former Republican political operative, he took part in the weekend talks with Anthropic over the export controls.`, links:[[`https://en.wikipedia.org/wiki/Sean_Cairncross`,`Wikipedia, Sean Cairncross`]]},
  &apos;tom-brown&apos;: {name:`Tom Brown`, img:null, bio:`Co-founder of Anthropic. Before that, at OpenAI, he was first author on the GPT-3 paper, which he led.`, links:[[`https://arxiv.org/abs/2005.14165`,`GPT-3 paper (Brown et al., 2020)`]]},
  &apos;sarah-heck&apos;: {name:`Sarah Heck`, img:null, bio:`Anthropic&apos;s policy chief, who took part in the Washington talks over the export controls.`, links:[]},
  &apos;alex-stamos&apos;: {name:`Alex Stamos`, img:`/assets/img/alex-stamos.jpg`, bio:`Veteran cybersecurity leader: former chief security officer at Facebook and Yahoo, and founder of the Stanford Internet Observatory. He organised the open letter from security professionals urging the administration to lift the ban.`, links:[[`https://en.wikipedia.org/wiki/Alex_Stamos`,`Wikipedia, Alex Stamos`]]},
  &apos;emmanuel-macron&apos;: {name:`Emmanuel Macron`, img:`/assets/img/emmanuel-macron.jpg`, bio:`President of France since 2017 and host of the June 2026 G7 summit. A former investment banker and economy minister, he has long pushed for European &quot;strategic autonomy&quot; in technology.`, links:[[`https://en.wikipedia.org/wiki/Emmanuel_Macron`,`Wikipedia, Emmanuel Macron`]]},
  &apos;ursula-von-der-leyen&apos;: {name:`Ursula von der Leyen`, img:`/assets/img/ursula-von-der-leyen.jpg`, bio:`President of the European Commission since 2019 and previously Germany&apos;s defence minister. She heads the EU&apos;s executive arm and argued at the G7 that the US and Europe share a mutual interest in using each other&apos;s best AI models.`, links:[[`https://en.wikipedia.org/wiki/Ursula_von_der_Leyen`,`Wikipedia, Ursula von der Leyen`]]},
  &apos;keir-starmer&apos;: {name:`Keir Starmer`, img:`/assets/img/keir-starmer.jpg`, bio:`Prime Minister of the United Kingdom since 2024 and leader of the Labour Party. A former human-rights barrister and Director of Public Prosecutions, he asked Trump at the G7 for a UK carve-out from the ban.`, links:[[`https://en.wikipedia.org/wiki/Keir_Starmer`,`Wikipedia, Keir Starmer`]]},
  &apos;chris-ciauri&apos;: {name:`Chris Ciauri`, img:null, bio:`Anthropic&apos;s Managing Director for International, who leads the company&apos;s business outside the US. He told a press conference in Seoul that Anthropic expected the models to return within days.`, links:[]},
  &apos;donald-trump&apos;: {name:`Donald Trump`, img:`/assets/img/donald-trump.jpg`, bio:`President of the United States. His administration issued the export-control directive that pulled Fable 5 and Mythos 5, and he declined the UK&apos;s request for a carve-out at the G7.`, links:[[`https://en.wikipedia.org/wiki/Donald_Trump`,`Wikipedia, Donald Trump`]]},
  &apos;rita-lin&apos;: {name:`Rita F. Lin`, img:`/assets/img/rita-lin.jpg`, bio:`US District Judge for the Northern District of California, appointed in 2024. In March 2026 she temporarily blocked the separate Pentagon &quot;government-use&quot; ban on Anthropic, a different dispute from the June export controls.`, links:[[`https://en.wikipedia.org/wiki/Rita_F._Lin`,`Wikipedia, Rita F. Lin`]]},
  &apos;dave-orr&apos;: {name:`Dave Orr`, img:null, bio:`Anthropic&apos;s head of safeguards. He was among the technical staff Anthropic flew to Washington to argue Fable 5 and Mythos 5 could be safely contained.`, links:[]},
  &apos;logan-graham&apos;: {name:`Logan Graham`, img:null, bio:`Runs Anthropic&apos;s frontier red team and has led work on Project Glasswing, the security programme behind limited Mythos access. He joined the Washington talks over the export controls.`, links:[]},
  &apos;nicholas-carlini&apos;: {name:`Nicholas Carlini`, img:`/assets/img/nicholas-carlini.jpg`, bio:`A leading AI and cybersecurity researcher at Anthropic, known for work on adversarial machine learning. He was part of the technical team sent to Washington over the export controls.`, links:[[`https://en.wikipedia.org/wiki/Nicholas_Carlini`,`Wikipedia, Nicholas Carlini`]]},
  &apos;mark-warner&apos;: {name:`Mark Warner`, img:`/assets/img/mark-warner.jpg`, bio:`US Senator for Virginia since 2009 and vice chair of the Senate Intelligence Committee. He relayed the claim that Mythos breached almost all NSA classified systems in a red-team test.`, links:[[`https://en.wikipedia.org/wiki/Mark_Warner`,`Wikipedia, Mark Warner`]]},
  &apos;joshua-rudd&apos;: {name:`Joshua Rudd`, img:`/assets/img/joshua-rudd.jpg`, bio:`US Army general who heads the National Security Agency and US Cyber Command. He reportedly briefed senators on how Mythos performed against NSA systems in testing.`, links:[[`https://en.wikipedia.org/wiki/Joshua_Rudd`,`Wikipedia, Joshua Rudd`]]},
  &apos;sam-liccardo&apos;: {name:`Sam Liccardo`, img:`/assets/img/sam-liccardo.jpg`, bio:`US Representative for California&apos;s 16th district since 2025 and former mayor of San Jose. He led a bipartisan letter pressing the Commerce Department for transparency on the Fable and Mythos export controls.`, links:[[`https://en.wikipedia.org/wiki/Sam_Liccardo`,`Wikipedia, Sam Liccardo`]]},
  &apos;andrew-garbarino&apos;: {name:`Andrew Garbarino`, img:`/assets/img/andrew-garbarino.jpg`, bio:`US Representative for New York and chair of the House Homeland Security Committee. He called the AI cyber threat a legitimate national-security issue while warning the controls should not disadvantage US firms and defenders.`, links:[[`https://en.wikipedia.org/wiki/Andrew_Garbarino`,`Wikipedia, Andrew Garbarino`]]},
  &apos;nathaniel-moran&apos;: {name:`Nathaniel Moran`, img:`/assets/img/nathaniel-moran.jpg`, bio:`US Representative for Texas&apos;s 1st district. After the Mythos and Fable ban, he introduced the AI Incident Reporting Act, which would require AI developers to report dangerous model behaviour to the Commerce Department within seven days.`, links:[[`https://en.wikipedia.org/wiki/Nathaniel_Moran`,`Wikipedia, Nathaniel Moran`]]}
};

// auto-link every occurrence of a known name in the post body (skipping links, popovers, and buttons)
(function () {
  var NAMES = [
    [&apos;Pliny the Liberator&apos;,&apos;pliny&apos;],[&apos;Pliny&apos;,&apos;pliny&apos;],
    [&apos;Howard Lutnick&apos;,&apos;howard-lutnick&apos;],[&apos;Lutnick&apos;,&apos;howard-lutnick&apos;],
    [&apos;Dario Amodei&apos;,&apos;dario-amodei&apos;],[&apos;Amodei&apos;,&apos;dario-amodei&apos;],
    [&apos;David Sacks&apos;,&apos;david-sacks&apos;],[&apos;Sacks&apos;,&apos;david-sacks&apos;],
    [&apos;Andy Jassy&apos;,&apos;andy-jassy&apos;],[&apos;Jassy&apos;,&apos;andy-jassy&apos;],
    [&apos;Scott Bessent&apos;,&apos;scott-bessent&apos;],[&apos;Bessent&apos;,&apos;scott-bessent&apos;],
    [&apos;Sean Cairncross&apos;,&apos;sean-cairncross&apos;],[&apos;Cairncross&apos;,&apos;sean-cairncross&apos;],
    [&apos;Tom Brown&apos;,&apos;tom-brown&apos;],
    [&apos;Sarah Heck&apos;,&apos;sarah-heck&apos;],
    [&apos;Alex Stamos&apos;,&apos;alex-stamos&apos;],[&apos;Stamos&apos;,&apos;alex-stamos&apos;],
    [&apos;Emmanuel Macron&apos;,&apos;emmanuel-macron&apos;],[&apos;Macron&apos;,&apos;emmanuel-macron&apos;],
    [&apos;Ursula von der Leyen&apos;,&apos;ursula-von-der-leyen&apos;],[&apos;von der Leyen&apos;,&apos;ursula-von-der-leyen&apos;],
    [&apos;Keir Starmer&apos;,&apos;keir-starmer&apos;],[&apos;Starmer&apos;,&apos;keir-starmer&apos;],
    [&apos;Chris Ciauri&apos;,&apos;chris-ciauri&apos;],[&apos;Ciauri&apos;,&apos;chris-ciauri&apos;],
    [&apos;Dave Orr&apos;,&apos;dave-orr&apos;],
    [&apos;Logan Graham&apos;,&apos;logan-graham&apos;],
    [&apos;Nicholas Carlini&apos;,&apos;nicholas-carlini&apos;],[&apos;Carlini&apos;,&apos;nicholas-carlini&apos;],
    [&apos;Mark Warner&apos;,&apos;mark-warner&apos;],[&apos;Warner&apos;,&apos;mark-warner&apos;],
    [&apos;Joshua Rudd&apos;,&apos;joshua-rudd&apos;],[&apos;Gen. Joshua Rudd&apos;,&apos;joshua-rudd&apos;],
    [&apos;Sam Liccardo&apos;,&apos;sam-liccardo&apos;],[&apos;Liccardo&apos;,&apos;sam-liccardo&apos;],
    [&apos;Andrew Garbarino&apos;,&apos;andrew-garbarino&apos;],[&apos;Garbarino&apos;,&apos;andrew-garbarino&apos;],
    [&apos;Nathaniel Moran&apos;,&apos;nathaniel-moran&apos;],[&apos;Moran&apos;,&apos;nathaniel-moran&apos;],
    [&apos;Donald Trump&apos;,&apos;donald-trump&apos;],[&apos;Trump&apos;,&apos;donald-trump&apos;],
    [&apos;Judge Rita Lin&apos;,&apos;rita-lin&apos;],[&apos;Rita Lin&apos;,&apos;rita-lin&apos;]
  ];
  var lookup = {};
  var alts = NAMES.map(function (p) { lookup[p[0]] = p[1]; return p[0].replace(/[.*+?^${}()|[\]\\]/g, &apos;\\$&amp;&apos;); });
  var re = new RegExp(&apos;(&apos; + alts.join(&apos;|&apos;) + &apos;)&apos;, &apos;g&apos;);
  var root = document.querySelector(&apos;.post-body&apos;);
  if (!root) return;
  function eligible(node) {
    for (var el = node.parentNode; el &amp;&amp; el !== root; el = el.parentNode) {
      if (el.nodeType !== 1) continue;
      if (el.tagName === &apos;A&apos; || el.tagName === &apos;BUTTON&apos;) return false;
      var c = &apos; &apos; + (el.className || &apos;&apos;) + &apos; &apos;;
      if (c.indexOf(&apos; person &apos;) &gt; -1 || c.indexOf(&apos; person-pop &apos;) &gt; -1 || c.indexOf(&apos; cite &apos;) &gt; -1 || c.indexOf(&apos; cite-pop &apos;) &gt; -1 || c.indexOf(&apos; when &apos;) &gt; -1) return false;
    }
    return true;
  }
  var nodes = [], walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null), nd;
  while ((nd = walker.nextNode())) { if (nd.nodeValue &amp;&amp; eligible(nd)) nodes.push(nd); }
  nodes.forEach(function (node) {
    var text = node.nodeValue; re.lastIndex = 0;
    if (!re.test(text)) return;
    re.lastIndex = 0;
    var frag = document.createDocumentFragment(), last = 0, m;
    while ((m = re.exec(text))) {
      var before = m.index === 0 ? &apos;&apos; : text[m.index - 1];
      var after = text[m.index + m[0].length] || &apos;&apos;;
      if (/[A-Za-z]/.test(before) || /[A-Za-z]/.test(after)) continue;
      if (m.index &gt; last) frag.appendChild(document.createTextNode(text.slice(last, m.index)));
      var span = document.createElement(&apos;span&apos;); span.className = &apos;person&apos;;
      var b = document.createElement(&apos;button&apos;); b.className = &apos;person-btn&apos;; b.setAttribute(&apos;data-person&apos;, lookup[m[0]]); b.textContent = m[0];
      span.appendChild(b);
      frag.appendChild(span);
      last = m.index + m[0].length;
    }
    if (!frag.childNodes.length) return;
    if (last &lt; text.length) frag.appendChild(document.createTextNode(text.slice(last)));
    node.parentNode.replaceChild(frag, node);
  });
  // build every popover from the registry, so all mentions of a person share one definition
  document.querySelectorAll(&apos;.person-btn[data-person]&apos;).forEach(function (btn) {
    var wrap = btn.closest(&apos;.person&apos;); if (!wrap || wrap.querySelector(&apos;.person-pop&apos;)) return;
    var p = PROFILES[btn.getAttribute(&apos;data-person&apos;)]; if (!p) return;
    var html = &apos;&apos;;
    if (p.img) html += &apos;&lt;span class=&quot;person-pic&quot;&gt;&lt;img src=&quot;&apos; + p.img + &apos;&quot; alt=&quot;&apos; + p.name + &apos;&quot;&gt;&lt;/span&gt;&apos;;
    html += &apos;&lt;span class=&quot;person-head&quot;&gt;&apos; + p.name + &apos;&lt;/span&gt;&apos;;
    html += &apos;&lt;span class=&quot;person-bio&quot;&gt;&apos; + p.bio + &apos;&lt;/span&gt;&apos;;
    if (p.links &amp;&amp; p.links.length) { html += &apos;&lt;span class=&quot;person-links&quot;&gt;&apos;; p.links.forEach(function (l) { html += &apos;&lt;a href=&quot;&apos; + l[0] + &apos;&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&apos; + l[1] + &apos;&lt;/a&gt;&apos;; }); html += &apos;&lt;/span&gt;&apos;; }
    var pop = document.createElement(&apos;span&apos;); pop.className = &apos;person-pop&apos;; pop.innerHTML = html;
    wrap.appendChild(pop);
  });
})();

// open/close popovers (event delegation, so it covers auto-linked buttons too)
document.addEventListener(&apos;click&apos;, function (e) {
  var btn = e.target.closest ? e.target.closest(&apos;.cite-btn&apos;) : null;
  if (btn) {
    e.stopPropagation();
    var parent = btn.closest(&apos;.cite&apos;);
    var wasOpen = parent.classList.contains(&apos;open&apos;);
    document.querySelectorAll(&apos;.cite.open, .person.open&apos;).forEach(function (c) { c.classList.remove(&apos;open&apos;); });
    if (!wasOpen) parent.classList.add(&apos;open&apos;);
    return;
  }
  document.querySelectorAll(&apos;.cite.open, .person.open&apos;).forEach(function (c) { c.classList.remove(&apos;open&apos;); });
});

// inject Steam store widgets (kramdown escapes raw &lt;iframe&gt;, so build it here)
(function () {
  document.querySelectorAll(&apos;.steam-embed[data-steam]&apos;).forEach(function (el) {
    var f = document.createElement(&apos;iframe&apos;);
    f.src = &apos;https://store.steampowered.com/widget/&apos; + el.getAttribute(&apos;data-steam&apos;) + &apos;/&apos;;
    f.height = &apos;190&apos;;
    f.title = &apos;Populous: The Beginning on Steam&apos;;
    el.appendChild(f);
  });
})();

// inject the ASL table (kramdown mangles raw tables inside paragraphs)
(function () {
  var slot = document.querySelector(&apos;.asl-table&apos;);
  if (!slot) return;
  slot.innerHTML = `&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Level&lt;/th&gt;&lt;th&gt;What it means&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;ASL-1&lt;/td&gt;&lt;td&gt;No meaningful catastrophic risk (e.g. a chess engine).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ASL-2&lt;/td&gt;&lt;td&gt;Today&apos;s typical models: early hints of dangerous capability, but no real uplift beyond a web search.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ASL-3&lt;/td&gt;&lt;td&gt;Substantially raises catastrophic-misuse risk (e.g. helping with CBRN weapons) or shows low-level autonomy; triggers hardened security and deployment safeguards.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ASL-4+&lt;/td&gt;&lt;td&gt;Not yet fully defined; reserved for bigger jumps in misuse potential or autonomy.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;`;
})();

// highlight timeline entries added since the reader&apos;s last visit (localStorage, no cookies)
(function () {
  var KEY = &apos;fable-ban-last-viewed&apos;;
  function entryDate(li) {
    var t = li.querySelector(&apos;time.ts&apos;);
    if (t) { var d = new Date(t.getAttribute(&apos;datetime&apos;)); return isNaN(d) ? null : d; }
    var w = li.querySelector(&apos;.when&apos;);
    var m = w &amp;&amp; w.textContent.match(/(\d{1,2})\s+June/);
    return m ? new Date(2026, 5, parseInt(m[1], 10), 23, 59, 59) : null;
  }
  var last = localStorage.getItem(KEY);
  var lastT = last ? parseInt(last, 10) : null;
  if (lastT) {
    document.querySelectorAll(&apos;.timeline &gt; li&apos;).forEach(function (li) {
      var d = entryDate(li);
      if (d &amp;&amp; d.getTime() &gt; lastT) li.classList.add(&apos;tl-new&apos;);
    });
    document.querySelectorAll(&apos;.upd[data-date]&apos;).forEach(function (el) {
      var d = new Date(el.getAttribute(&apos;data-date&apos;) + &apos;T23:59:59&apos;);
      if (!isNaN(d.getTime()) &amp;&amp; d.getTime() &gt; lastT) el.classList.add(&apos;upd-new&apos;);
    });
  }
  localStorage.setItem(KEY, String(new Date().getTime()));
})();
&lt;/script&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="ai" />
    <category term="anthropic" />
    <category term="policy" />
    <category term="fable" />
    <category term="mythos" />
    <summary type="text">For a few days in June 2026, Anthropic shipped Fable 5 and Mythos 5, and then the US government switched them off. What happened, what&apos;s happened since, and whether the lights come back on.</summary>
  </entry>
  <entry>
    <title type="html">The Best Fudge Brownies Ever</title>
    <link href="https://br3nt.github.io/2026/03/04/the-best-brownies-ever.html" rel="alternate" type="text/html" title="The Best Fudge Brownies Ever" />
    <published>2026-03-04T00:00:00+10:30</published>
    <updated>2026-03-04T00:00:00+10:30</updated>
    <id>https://br3nt.github.io/2026/03/04/the-best-brownies-ever</id>
    <content type="html" xml:base="https://br3nt.github.io/2026/03/04/the-best-brownies-ever.html">&lt;h3 id=&quot;ingredients&quot;&gt;Ingredients&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;¾ cup cocoa&lt;/li&gt;
  &lt;li&gt;½ teaspoon baking soda&lt;/li&gt;
  &lt;li&gt;⅔ cup vegetable oil&lt;/li&gt;
  &lt;li&gt;½ cup boiling water&lt;/li&gt;
  &lt;li&gt;2 cups sugar&lt;/li&gt;
  &lt;li&gt;2 eggs&lt;/li&gt;
  &lt;li&gt;1⅓ cups unsifted flour&lt;/li&gt;
  &lt;li&gt;1 teaspoon vanilla&lt;/li&gt;
  &lt;li&gt;¼ teaspoon salt&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;instructions&quot;&gt;Instructions&lt;/h3&gt;

&lt;p&gt;Stir cocoa and baking soda in bowl.
Blend in ⅓ cup oil. Add boiling water; Stir until mixture thickens.
Stir in sugar, eggs and remaining ⅓ cup oil; stir until smooth.
Add flour, vanilla and salt and blend completely.
Pour into lightly greased pan. Bake at 180°C (350°F) for 35 to 40 minutes.
Cool. Ice if desired.&lt;/p&gt;

&lt;h3 id=&quot;notes&quot;&gt;Notes&lt;/h3&gt;

&lt;p&gt;You can blend in cashew nuts, peanuts or walnuts. You might want to double the recipe and pour into a bigger pan.&lt;/p&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="recipes" />
    <summary type="text">Ingredients</summary>
  </entry>
  <entry>
    <title type="html">The Science of Getting Rich</title>
    <link href="https://br3nt.github.io/2026/03/01/science-of-getting-rich.html" rel="alternate" type="text/html" title="The Science of Getting Rich" />
    <published>2026-03-01T00:00:00+10:30</published>
    <updated>2026-03-01T00:00:00+10:30</updated>
    <id>https://br3nt.github.io/2026/03/01/science-of-getting-rich</id>
    <content type="html" xml:base="https://br3nt.github.io/2026/03/01/science-of-getting-rich.html">&lt;img src=&quot;/assets/images/science-of-getting-rich-hero.jpg&quot; alt=&quot;The Science of Getting Rich&quot; class=&quot;breakout&quot; style=&quot;width:100%;&quot;&gt;

&lt;section&gt;
    &lt;br&gt;
    &lt;br&gt;
    &lt;br&gt;
    &lt;i&gt;The Science of Getting Rich&lt;/i&gt; by Wallace D. Wattles (1910)
    &lt;p&gt;A timeless classic on prosperity and the practical mindset for creating wealth.&lt;/p&gt;
    &lt;p&gt;&lt;a href=&quot;/assets/pdf/science-of-getting-rich.pdf&quot; target=&quot;_blank&quot;&gt;You can find the PDF here.&lt;/a&gt;&lt;/p&gt;

    &lt;br&gt;
    &lt;br&gt;
    &lt;blockquote&gt;
        &lt;p class=&quot;drop-cap&quot;&gt;There is a thinking stuff from which all things are made,
and which, in its original state, permeates, penetrates, and
fills the interspaces of the universe.
A thought in this substance produces the thing that is imaged
by the thought.
A person can form things in his thought, and by impressing
his thought upon formless substance can cause the thing he thinks
about to be created.
In order to do this, a person must pass from the competitive to
the creative mind. Otherwise he cannot be in harmony with formless intelligence, which is always creative and never competitive in spirit.
A person may come into full harmony with the formless substance by entertaining a lively and sincere gratitude for the blessings it bestows upon him. Gratitude unifies the minds of individuals with the intelligence of substance, so that a personís
thoughts are received by the formless.
A person can remain upon the creative plane only by uniting
himself with the formless intelligence through a deep and continuous feeling of gratitude.
A person must form a clear and definite mental image of the
things he wishes to have, to do, or to become, and he must hold
this mental image in his thoughts, while being deeply grateful
to the supreme that all his desires are granted to him. The person who wishes to get rich must spend his leisure hours in contemplating his vision, and in earnest thanksgiving that the reality is being given to him.
Too much stress cannot be laid on the importance of frequent
contemplation of the mental image, coupled with unwavering faith
and devout gratitude. This is the process by which the impression
is given to the formless and the creative forces set in motion.
The creative energy works through the established channels
of natural growth, and of the industrial and social order. All that
is included in his mental image will surely be brought to the
person who follows the instructions given above, and whose faithdoes not waver. What he wants will come to him through the
ways of established trade and commerce.
In order to receive his own when it is ready to come to him, a
person must be in action in a way that causes him to more than
fill his present place. He must keep in mind the purpose to get
rich through realization of his mental image. And he must do,
every day, all that can be done that day, taking care to do each
act in a successful manner. He must give to every person a use
value in excess of the cash value he receives, so that each transaction makes for more life, and he must hold the advancing
thought so that the impression of increase will be communicated
to all with whom he comes into contact.
The men and women who practice the foregoing instructions will
certainly get rich, and the riches they receive will be in exact proportion to the definiteness of their vision, the fixity of their purpose, the steadiness of their faith, and the depth of their gratitude.&lt;/p&gt;
    &lt;/blockquote&gt;
&lt;/section&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="books" />
  </entry>
  <entry>
    <title type="html">CSS Day clone by David Powell</title>
    <link href="https://br3nt.github.io/2024/03/03/css_day_day_clone_from_kevin_powell.html" rel="alternate" type="text/html" title="CSS Day clone by David Powell" />
    <published>2024-03-03T00:00:00+10:30</published>
    <updated>2024-03-03T00:00:00+10:30</updated>
    <id>https://br3nt.github.io/2024/03/03/css_day_day_clone_from_kevin_powell</id>
    <content type="html" xml:base="https://br3nt.github.io/2024/03/03/css_day_day_clone_from_kevin_powell.html">&lt;p&gt;This post is following along to the &lt;a href=&quot;https://youtu.be/fs_5R8V4JCI?si=miqApIn_7SJgY9b0&quot;&gt;Can I clone this fun effect from CSS Day using modern CSS?&lt;/a&gt; YouTube video by David Powell.&lt;/p&gt;

&lt;p&gt;You can use the browser developer tools to inspect the below example. I will also show code snippets .&lt;/p&gt;

&lt;div class=&quot;breakout&quot;&gt;
  &lt;div class=&quot;speakers-grid&quot;&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Miriam Suzanne&lt;img src=&quot;https://assets.codepen.io/308367/miriam.jpg&quot; /&gt;&lt;/a&gt;: MC&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Jeremy Keith&lt;img src=&quot;https://assets.codepen.io/308367/jeremy.jpg&quot; /&gt;&lt;/a&gt;: MC&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Tab Atkins&lt;img src=&quot;https://assets.codepen.io/308367/tab.jpg&quot; /&gt;&lt;/a&gt;: Anchor Positioning&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Josh Comeau&lt;img src=&quot;https://assets.codepen.io/308367/josh.jpg&quot; /&gt;&lt;/a&gt;: How to Teach CSS&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Rachel Andrew&lt;img src=&quot;https://assets.codepen.io/308367/rachel.jpg&quot; /&gt;&lt;/a&gt;: MC&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Matthias Ott&lt;img src=&quot;https://assets.codepen.io/308367/matthias.jpg&quot; /&gt;&lt;/a&gt;: MC&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Stephen Hay&lt;img src=&quot;https://assets.codepen.io/308367/stephen.jpg&quot; /&gt;&lt;/a&gt;: MC&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Julia Miocene&lt;img src=&quot;https://assets.codepen.io/308367/julia.jpg&quot; /&gt;&lt;/a&gt;: Character Modelling&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Roel Nieskens&lt;img src=&quot;https://assets.codepen.io/308367/roel.jpg&quot; /&gt;&lt;/a&gt;: Typography&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Roma Komarov&lt;img src=&quot;https://assets.codepen.io/308367/roma.jpg&quot; /&gt;&lt;/a&gt;: Impactful Experimentation&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Sarah Dayan&lt;img src=&quot;https://assets.codepen.io/308367/sarah.jpg&quot; /&gt;&lt;/a&gt;: Utility First CSS&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Carmen Ansio&lt;img src=&quot;https://assets.codepen.io/308367/carmen.jpg&quot; /&gt;&lt;/a&gt;: Scroll-Enhanced Experiences&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;&quot;&gt;Kevin Powell&lt;img src=&quot;https://assets.codepen.io/308367/kevin.jpg&quot; /&gt;&lt;/a&gt;: Writing Robust CSS&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;
  .speakers-grid {
    --column-count: 3;
    --row-count: 5;
    --column-size: 100px;
    --row-size: 50px;

    --hover-animation-ms: 3s00ms;

    --primary-color: #986960;
    --text-color: var(--primary-color);
    --link-color: color-mix(in srgb, var(--primary-color), black 40%);
    --link-hover-color: color-mix(in srgb, var(--primary-color), white 90%);
    --link-hover-background-color: color-mix(in srgb, var(--primary-color), black 40%);

    margin-top: 4rem;
    margin-bottom: 4rem;

    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(var(--column-count), var(--column-size)) 60px [list-start] 1fr [list-end];
    grid-template-rows: [list-start] auto repeat(var(--row-count), var(--row-size)) auto [list-end];

    position: relative;

    ul {
      grid-area: list;

      list-style: none;
      margin: 0;
      padding: 0;
    }

    li {
      color: var(--text-color);
    }

    li:nth-child(3n + 1) img {
      grid-column: 1 / 2;
    }

    li:nth-child(3n + 2) img {
      grid-column: 2 / 3;
    }

    li:nth-child(3n + 3) img {
      grid-column: 3 / 4;
    }

    li:nth-child(-n + 3) img {
      grid-row: 2 / 3;
    }

    li:nth-child(n + 4):nth-child(-n + 6) img {
      grid-row: 3 / 4;
    }

    li:nth-child(n + 7):nth-child(-n + 9) img {
      grid-row: 4 / 5;
    }

    li:nth-child(n + 10):nth-child(-n + 12) img {
      grid-row: 5 / 6;
    }

    li:nth-child(n + 13):nth-child(-n + 15) img {
      grid-row: 6 / 7;
    }

    img {
      position: absolute;
      left: 0;
      top: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      border-radius: 0.5rem;

      transition: var(--hover-animation-ms);
    }

    a {
      color: var(--link-color);
      text-decoration: underline;
      transition: initial;
      background: initial;
      font-weight: initial;

      padding: 2px 0 2px 4px;
    }

    a:not(:hover, :focus) img {
      animation: z-index-hack var(--hover-animation-ms);
    }

    a:is(:hover, :focus) {
      color: var(--link-hover-color);
      background-color: var(--link-hover-background-color);

      img  {
        scale: 2;
        z-index: 2;
        width: initial;
        height: initial;
        object-fit: initial;
      }
    }

    @keyframes z-index-hack {
      0%, 100% { z-index: 1; }
    }
  }
&lt;/style&gt;

&lt;p&gt;This clone demonstrates some interesting uses and quirks of &lt;code&gt;grid&lt;/code&gt;.  The code below defines a grid which has 5 columns and 5 rows.&lt;/p&gt;

&lt;pre class=&quot;breakout-md&quot;&gt;&lt;code&gt;
.speakers-grid {
    --column-count: 3;
    --row-count: 5;
    --column-size: 100px;
    --row-size: 50px;

    display: grid;
    gap: 1rem;

    grid-template-columns:
        repeat(var(--column-count), var(--column-size)) 60px [list-start] 1fr [list-end];

    grid-template-rows:
        [list-start] auto repeat(var(--row-count), var(--row-size)) auto [list-end];
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In the code above, &lt;code&gt;repeat()&lt;/code&gt; is used along with the four CSS variables, &lt;code&gt;--column-count&lt;/code&gt;, &lt;code&gt;--row-count&lt;/code&gt;, &lt;code&gt;--column-size&lt;/code&gt;, &lt;code&gt;--row-size&lt;/code&gt;, to define the size of the grid that will contain the images of the speakers.  A &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout/Grid_template_areas&quot;&gt;grid area&lt;/a&gt; called &lt;code&gt;list&lt;/code&gt; has also been defined which spans the last column and all the rows.  This will contain the list of speakers.&lt;/p&gt;

&lt;p&gt;As the images are not child elements of the &lt;code&gt;.speakers-grid&lt;/code&gt; grid, a hack needs to be introduced to place them with  &lt;code&gt;grid-template-columns&lt;/code&gt; and &lt;code&gt;grid-template-rows&lt;/code&gt;.  By positioning the images absolutely within the &lt;code&gt;.speakers-grid&lt;/code&gt; grid, they can be positioned within the grid.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
.speakers-grid {
    position: relative;

    img {
        position: absolute;
        left: 0;
        top: 0;
    }


    li:nth-child(3n + 1) img {
        grid-column: 1 / 2;
    }

    li:nth-child(3n + 2) img {
        grid-column: 2 / 3;
    }

    li:nth-child(3n + 3) img {
        grid-column: 3 / 4;
    }

    li:nth-child(-n + 3) img {
        grid-row: 2 / 3;
    }

    li:nth-child(n + 4):nth-child(-n + 6) img {
        grid-row: 3 / 4;
    }

    li:nth-child(n + 7):nth-child(-n + 9) img {
        grid-row: 4 / 5;
    }

    li:nth-child(n + 10):nth-child(-n + 12) img {
        grid-row: 5 / 6;
    }

    li:nth-child(n + 13):nth-child(-n + 15) img {
        grid-row: 6 / 7;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;One thing that stands out is the duplication required to set images to specific grid positions.  Specifically, we need to know in advance how many rows of images there will be.  In order for more rows of images to be added, additional styling is needed.&lt;/p&gt;

&lt;p&gt;It would be nice to have access to the value of &lt;code&gt;n&lt;/code&gt; to use in calculations within the style block.  This could greatly simplify the CSS:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
li img {
  /* Calculate the column position */
  grid-column: calc((n - 1) % 3 + 1) / span 1;

  /* Calculate the row position */
  grid-row: calc((n - 1) / 3 + 2) / span 1;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A &lt;code&gt;transition&lt;/code&gt; is used to enlarge and reveal the full image on hover.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
.speakers-grid {
    --hover-animation-ms: 200ms;

    img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        border-radius: 0.5rem;
        transition: var(--hover-animation-ms);
    }

    a:is(:hover, :focus) {
      img  {
        scale: 2;
        z-index: 2;
        width: initial;
        height: initial;
        object-fit: initial;
      }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Due to the &lt;code&gt;transition&lt;/code&gt;, the &lt;code&gt;z-index&lt;/code&gt; changes abruptly when moving the cursor off of a link.  This causes other images to be rendered on top of the collapsing image.  An &lt;code&gt;animation&lt;/code&gt; is used to correct this by setting the &lt;code&gt;z-index&lt;/code&gt; for the duration of the &lt;code&gt;transition&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
.speakers-grid {
    --hover-animation-ms: 200ms;

    a:not(:hover, :focus) img {
      animation: z-index-hack var(--hover-animation-ms);
    }

    @keyframes z-index-hack {
        0%, 100% { z-index: 1; }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I have selected a brownish colour as a base for the text of the list. The link and link hover uses shades of this base colour.  The shades are created using &lt;code&gt;color-mix()&lt;/code&gt; with differing amounts of &lt;code&gt;black&lt;/code&gt; or &lt;code&gt;white&lt;/code&gt;.&lt;/p&gt;

&lt;pre class=&quot;breakout-md   &quot;&gt;&lt;code&gt;
.speakers-grid {
    --primary-color: #986960;
    --text-color: var(--primary-color);
    --link-color: color-mix(in srgb, var(--primary-color), black 40%);
    --link-hover-color: color-mix(in srgb, var(--primary-color), white 90%);
    --link-hover-background-color: color-mix(in srgb, var(--primary-color), black 40%);

    li {
        color: var(--text-color);
    }

    a {
        color: var(--link-color);
    }

    a:is(:hover, :focus) {
        color: var(--link-hover-color);
        background-color: var(--link-hover-background-color);
    }

}
&lt;/code&gt;&lt;/pre&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <summary type="text">This post is following along to the Can I clone this fun effect from CSS Day using modern CSS? YouTube video by David Powell.</summary>
  </entry>
  <entry>
    <title type="html">Scratchcards</title>
    <link href="https://br3nt.github.io/advent_of_code/2023-12-04-scratchcards.html" rel="alternate" type="text/html" title="Scratchcards" />
    <published>2023-12-04T00:00:00+10:30</published>
    <updated>2023-12-04T00:00:00+10:30</updated>
    <id>https://br3nt.github.io/advent_of_code/scratchcards</id>
    <content type="html" xml:base="https://br3nt.github.io/advent_of_code/2023-12-04-scratchcards.html">&lt;p&gt;&lt;a href=&quot;https://adventofcode.com/2023/day/4&quot;&gt;— Day 4: Scratchcards —&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;part-1&quot;&gt;Part 1&lt;/h1&gt;

&lt;pre class=&quot;breakout&quot;&gt;&lt;code&gt;
let str = `Card 1: 41 48 83 86 17 | 83 86  6 31 17  9 48 53
Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
Card 3:  1 21 53 59 44 | 69 82 63 72 16 21 14  1
Card 4: 41 92 73 84 69 | 59 84 76 51 58  5 54 83
Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11`

let lines = str.trim().split(&quot;\n&quot;).map(l =&amp;gt; l.split(&quot;:&quot;)[1].split(&quot;|&quot;))
let gameNumbers = lines.map(([a, b]) =&amp;gt; [a.trim().split(/\s+/).map(i =&amp;gt; +i), b.trim().split(/\s+/).map(i =&amp;gt; +i)])
winningNumbers = gameNumbers.map(([a, b]) =&amp;gt; a.filter(Set.prototype.has, new Set(b)))
points = winningNumbers.map(n =&amp;gt; n.length == 0 ? 0 : Math.pow(2, n.length - 1))
totalPoints = points.reduce((a, x) =&amp;gt; a += x)

console.log(&apos;totalPoints&apos;, totalPoints) // 13
&lt;/code&gt;&lt;/pre&gt;

&lt;h1 id=&quot;part-2&quot;&gt;Part 2&lt;/h1&gt;

&lt;pre class=&quot;breakout&quot;&gt;&lt;code&gt;
let newCardCopies = winningNumbers.map((n, i) =&amp;gt; [i, n.length])
let more = [...newCardCopies]
let total = 0

while (more.length &amp;gt; 0) {
  total += more.length
  let next = more.map(([i, n]) =&amp;gt; newCardCopies.slice(i + 1, i + 1 + n))
  more = next.flat()
}

console.log(&apos;total&apos;, total) // 30
&lt;/code&gt;&lt;/pre&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="advent_of_code" />
    <summary type="text">— Day 4: Scratchcards —</summary>
  </entry>
  <entry>
    <title type="html">Cube Conundrum</title>
    <link href="https://br3nt.github.io/advent_of_code/2023-12-02-cube-conundrum.html" rel="alternate" type="text/html" title="Cube Conundrum" />
    <published>2023-12-02T00:00:00+10:30</published>
    <updated>2023-12-02T00:00:00+10:30</updated>
    <id>https://br3nt.github.io/advent_of_code/cube-conundrum</id>
    <content type="html" xml:base="https://br3nt.github.io/advent_of_code/2023-12-02-cube-conundrum.html">&lt;p&gt;&lt;a href=&quot;https://adventofcode.com/2023/day/2&quot;&gt;— Day 2: Cube Conundrum —&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;part-1&quot;&gt;Part 1&lt;/h1&gt;

&lt;pre class=&quot;breakout&quot;&gt;&lt;code&gt;
let str = `Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green`

let lines = str.split(&quot;\n&quot;)

// input: 6 red, 1 blue, 3 green
function parseHandful(str) {
  let handful = str.split(&apos;,&apos;).map(c =&amp;gt; c.trim().split(&apos; &apos;))
  let cubes = {}
  handful.forEach(([i, c]) =&amp;gt; cubes[c] = +i)
  return cubes
}

// input: Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
function parseGame(str) {
  let handfuls = str.split(&apos;:&apos;)[1].split(&apos;;&apos;)
  let cubes = handfuls.map(parseHandful)
  return cubes
}

let maxRed = 12, maxGreen =1

console.log(&apos;total&apos;, total) // 142
&lt;/code&gt;&lt;/pre&gt;

&lt;h1 id=&quot;part-2&quot;&gt;Part 2&lt;/h1&gt;

&lt;pre class=&quot;breakout&quot;&gt;&lt;code&gt;
let str = `two1nine
  eightwothree
  abcone2threexyz
  xtwone3four
  4nineeightseven2
  zoneight234
  7pqrstsixteen`

let map = {
  1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 0: 0,
  &apos;one&apos;: 1, &apos;two&apos;: 2, &apos;three&apos;: 3, &apos;four&apos;: 4, &apos;five&apos;: 5, &apos;six&apos;: 6, &apos;seven&apos;: 7, &apos;eight&apos;: 8, &apos;nine&apos;: 9, &apos;zero&apos;: 0
}

let lines = str.split(&quot;\n&quot;)
let occurences = lines.map(l =&amp;gt; {
  return Object.entries(map).map(([k, v]) =&amp;gt; [k, v, l.indexOf(k), l.lastIndexOf(k)])
})
let text = occurences.map(o =&amp;gt; [
	o.filter(e =&amp;gt; e[2] &amp;gt;= 0).reduce((a, b) =&amp;gt; (a &amp;amp;&amp;amp; a[2] &amp;lt;pre b[2]) ? a : b)[1],
	o.filter(e =&amp;gt; e[3] &amp;gt;= 0).reduce((a, b) =&amp;gt; (a &amp;amp;&amp;amp; a[3] &amp;gt; b[3]) ? a : b)[1],
].join(&apos;&apos;))
let total = text.reduce((acc, x) =&amp;gt; acc += +x, 0)

console.log(&apos;total&apos;, total) // 281
&lt;/code&gt;&lt;/pre&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="advent_of_code" />
    <summary type="text">— Day 2: Cube Conundrum —</summary>
  </entry>
  <entry>
    <title type="html">Trebuchet?!</title>
    <link href="https://br3nt.github.io/advent_of_code/2023-12-01-trebuchet.html" rel="alternate" type="text/html" title="Trebuchet?!" />
    <published>2023-12-01T00:00:00+10:30</published>
    <updated>2023-12-01T00:00:00+10:30</updated>
    <id>https://br3nt.github.io/advent_of_code/trebuchet</id>
    <content type="html" xml:base="https://br3nt.github.io/advent_of_code/2023-12-01-trebuchet.html">&lt;p&gt;&lt;a href=&quot;https://adventofcode.com/2023/day/1&quot;&gt;— Day 2: Trebuchet?! —&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;part-1&quot;&gt;Part 1&lt;/h1&gt;

&lt;pre class=&quot;breakout-md&quot;&gt;&lt;code&gt;
let str = `1abc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet`

let lines = str.split(&quot;\n&quot;)
let ascii = lines.map(l =&amp;gt; Array.from(l).map(c =&amp;gt; c.charCodeAt(0)))
let asciiNumbers = ascii.map(a =&amp;gt; a.filter(c =&amp;gt; c &amp;gt;= 48 &amp;amp;&amp;amp; c &amp;lt;= 57))
let text = asciiNumbers.map(a =&amp;gt; String.fromCharCode(a[0], a[a.length-1]))
let total = text.reduce((acc, x) =&amp;gt; acc += +x, 0)

console.log(&apos;total&apos;, total) // 142
&lt;/code&gt;&lt;/pre&gt;

&lt;h1 id=&quot;part-2&quot;&gt;Part 2&lt;/h1&gt;

&lt;pre class=&quot;breakout-md&quot;&gt;&lt;code&gt;
let str = `two1nine
  eightwothree
  abcone2threexyz
  xtwone3four
  4nineeightseven2
  zoneight234
  7pqrstsixteen`

let map = {
  1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 0: 0,
  &apos;one&apos;: 1, &apos;two&apos;: 2, &apos;three&apos;: 3, &apos;four&apos;: 4, &apos;five&apos;: 5, &apos;six&apos;: 6, &apos;seven&apos;: 7, &apos;eight&apos;: 8, &apos;nine&apos;: 9, &apos;zero&apos;: 0
}

let lines = str.split(&quot;\n&quot;)
let occurences = lines.map(l =&amp;gt; {
  return Object.entries(map).map(([k, v]) =&amp;gt; [k, v, l.indexOf(k), l.lastIndexOf(k)])
})
let text = occurences.map(o =&amp;gt; [
	o.filter(e =&amp;gt; e[2] &amp;gt;= 0).reduce((a, b) =&amp;gt; (a &amp;amp;&amp;amp; a[2] &amp;lt; b[2]) ? a : b)[1],
	o.filter(e =&amp;gt; e[3] &amp;gt;= 0).reduce((a, b) =&amp;gt; (a &amp;amp;&amp;amp; a[3] &amp;gt; b[3]) ? a : b)[1],
].join(&apos;&apos;))
let total = text.reduce((acc, x) =&amp;gt; acc += +x, 0)

console.log(&apos;total&apos;, total) // 281
&lt;/code&gt;&lt;/pre&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="advent_of_code" />
    <summary type="text">— Day 2: Trebuchet?! —</summary>
  </entry>
  <entry>
    <title type="html">display: compact-block</title>
    <link href="https://br3nt.github.io/2019/07/19/display_compact_block.html" rel="alternate" type="text/html" title="display: compact-block" />
    <published>2019-07-19T00:00:00+09:30</published>
    <updated>2019-07-19T00:00:00+09:30</updated>
    <id>https://br3nt.github.io/2019/07/19/display_compact_block</id>
    <content type="html" xml:base="https://br3nt.github.io/2019/07/19/display_compact_block.html">&lt;p&gt;I wish there was the concept of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;compact-block&lt;/code&gt; in css.&lt;/p&gt;

&lt;p&gt;An element with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;display: compact-block&lt;/code&gt; would be exactly the same as wrapping an inline element with a block element.&lt;/p&gt;

&lt;p&gt;The reason I want this is so I can display a list of links as if they were block elements for easy of styling, but their bounding box is only as wide as the text.  This would enable me to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;background-clip: text&lt;/code&gt; with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;background: linear-gradient(to right, #00BFFF 0%, #1E90FF 100%);&lt;/code&gt; and have the gradient applied to the width of the text and not the whole block.&lt;/p&gt;

&lt;p&gt;It has many advantages over other solutions.&lt;/p&gt;

&lt;p&gt;We could for example apply f&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;loat:left; clear:left;&lt;/code&gt; to an inline element.  This pushes sibling elements onto new lines, and the bounding box (or whatever it’s called) is only as wide as the text and it’s padding.  The drawback of this is that the element doesn’t contribute to the height of the parent element.&lt;/p&gt;

&lt;p&gt;We could apply &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;display: inline-block; margin-right: ?rem;&lt;/code&gt; to an inline element, but we have to calculate the correct amount to push siblings onto the next line without going over.&lt;/p&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <summary type="text">I wish there was the concept of a compact-block in css.</summary>
  </entry>
  <entry>
    <title type="html">The Endless (2017)</title>
    <link href="https://br3nt.github.io/reviews/the_endless_2017.html" rel="alternate" type="text/html" title="The Endless (2017)" />
    <published>2019-03-17T15:20:43+10:30</published>
    <updated>2019-03-17T15:20:43+10:30</updated>
    <id>https://br3nt.github.io/reviews/the_endless_2017</id>
    <content type="html" xml:base="https://br3nt.github.io/reviews/the_endless_2017.html">&lt;p&gt;Science Fiction/Thriller
https://www.youtube.com/watch?v=qMHpWCN0byw&lt;/p&gt;

&lt;p&gt;Two brothers return to a cult that they escaped from years earlier.
Strange happenings indicate that not all is as it seems.&lt;/p&gt;

&lt;p&gt;Rating 8/10&lt;/p&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="reviews" />
    <summary type="text">Science Fiction/Thriller https://www.youtube.com/watch?v=qMHpWCN0byw</summary>
  </entry>
  <entry>
    <title type="html">Inventory Management System</title>
    <link href="https://br3nt.github.io/advent_of_code/2018-12-02-inventory-management-system.html" rel="alternate" type="text/html" title="Inventory Management System" />
    <published>2018-12-02T00:00:00+10:30</published>
    <updated>2018-12-02T00:00:00+10:30</updated>
    <id>https://br3nt.github.io/advent_of_code/inventory-management-system</id>
    <content type="html" xml:base="https://br3nt.github.io/advent_of_code/2018-12-02-inventory-management-system.html">&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="advent_of_code" />
    <summary type="text">```ruby</summary>
  </entry>
  <entry>
    <title type="html">Chronal Calibration</title>
    <link href="https://br3nt.github.io/advent_of_code/2018-12-01-chronal-calibration.html" rel="alternate" type="text/html" title="Chronal Calibration" />
    <published>2018-12-01T00:00:00+10:30</published>
    <updated>2018-12-01T00:00:00+10:30</updated>
    <id>https://br3nt.github.io/advent_of_code/chronal-calibration</id>
    <content type="html" xml:base="https://br3nt.github.io/advent_of_code/2018-12-01-chronal-calibration.html">&lt;p&gt;https://adventofcode.com/2018/day/1&lt;/p&gt;
&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;frequency&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;frequencies&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;frequency&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;kp&quot;&gt;loop&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;frequency&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;frequency&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;length&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;frequency&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;frequencies&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;include?&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;frequency&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;frequencies&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;frequency&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;process&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# passed&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;process&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# passed&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;process&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# passed&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;process&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# passed&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;process&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;29&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;34&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;38&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;39&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;22&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;22&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;69&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;34&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;42&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;52&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;41&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;44&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;63&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;103&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;28&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;98&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;110&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;112&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;28&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;44&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;49&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;29&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;27&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;39&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;185&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;67702&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;29&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;27&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;27&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;22&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;28&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;62&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;116&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;37&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;27&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;42&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;41&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;36&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;27&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;61&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;27&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;94&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;35&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;33&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;235&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;43&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;55&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;39&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;122&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;221&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;51&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;470&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;67792&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;135555&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,]&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# passed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content>
    <author><name>Brent Jacobs</name></author>
    <category term="advent_of_code" />
    <summary type="text">https://adventofcode.com/2018/day/1 ```ruby def process(input) frequency = 0 frequencies = [frequency] i = 0 loop do frequency += input[i] puts frequency i = (i + 1) % input.length return frequency if (frequencies.include?(frequency)) frequencies.push(frequency) end end</summary>
  </entry>
</feed>
