<snapdata remixID="11407392"><project name="java перегляд коду 1.0" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAiVJREFUeF7t0sEJADAMA7Fm/6Gb0iXuIy9gODT37ZgCUYEBMCrv9hcAEIS0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nS+C496oTPb3DAAAAABJRU5ErkJggg==</thumbnail><scenes select="1"><scene name="java перегляд коду 1.0"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="написати команду" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs></block-definition></blocks><stage name="Сцена" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="6"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="7"></list></costumes><sounds><list struct="atomic" id="8"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Спрайт" idx="1" x="200" y="-180.00000000010425" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="255,255,255,1" pen="middle" id="13"><costumes><list struct="atomic" id="14"></list></costumes><sounds><list struct="atomic" id="15"></list></sounds><blocks></blocks><variables><variable name="і"><l>29</l></variable><variable name="прокрутка"><l>0</l></variable></variables><scripts><script x="452.5" y="10.777777777777782"><block s="receiveKey"><l><option>+</option></l><list></list></block><block s="doSetVar"><l>повноекраний режим</l><block s="reportEquals"><block var="повноекраний режим"/><block s="reportBoolean"><l><bool>false</bool></l></block></block></block></script><script x="448.16666666666663" y="105.66666666666663"><block s="receiveKey"><l><option>up arrow</option></l><list></list></block><block s="doIf"><block s="reportNot"><block s="reportLessThan"><block var="прокрутка"/><l>1</l></block></block><script><block s="doChangeVar"><l>прокрутка</l><l>-1</l></block></script></block></script><script x="449" y="216.83333333333337"><block s="receiveKey"><l><option>down arrow</option></l><list></list></block><block s="doIf"><block s="reportNot"><block s="reportGreaterThan"><block var="прокрутка"/><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><block var="список"/></block><l>1</l></block></block></block><script><block s="doChangeVar"><l>прокрутка</l><l>1</l></block></script></block></script><script x="452.5" y="335.7777777777778"><block s="receiveKey"><l><option>enter</option></l><list></list></block><block s="doStopThis"><l><option>other scripts in sprite</option></l></block><block s="clear"></block><block s="doRun"><block var="список"/><list></list></block><block s="doBroadcast"><l>знову</l><list></list></block></script><script x="25.833333333333336" y="8.333333333333334"><block s="receiveGo"></block><block s="doSetVar"><l>повноекраний режим</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>список</l><block s="reportNewList"><list></list></block></block><block s="doBroadcast"><l>знову</l><list></list></block><block s="doAsk"><l>URL адреса</l></block><block s="doSetVar"><l>список</l><block s="reportTextSplit"><block s="reportURL"><block s="getLastAnswer"></block></block><l><option>line</option></l></block></block><block s="doSetVar"><l>прокрутка</l><l>0</l></block></script><script x="28.333333333333336" y="207.05555555555534"><block s="receiveMessage"><l>знову</l><list></list></block><block s="doForever"><script><block s="clear"></block><block s="setColor"><color>12,0,0,1</color></block><block s="setSize"><l>1</l></block><block s="doSetVar"><l>і</l><block var="прокрутка"/></block><block s="gotoXY"><l>-235</l><l>165</l></block><block s="doWarp"><script><block s="doRepeat"><l>29</l><script><block s="doChangeVar"><l>і</l><l>1</l></block><block s="write"><block s="reportListItem"><block var="і"/><block var="список"/></block><l>12</l></block><block s="up"></block><block s="gotoXY"><l>-230</l><block s="reportDifference"><block s="yPosition"></block><l>12</l></block></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="повноекраний режим"/><block s="reportBoolean"><l><bool>false</bool></l></block></block><script><block s="setColor"><color>255,255,255,1</color></block><block s="gotoXY"><l>200</l><l>180</l></block><block s="setSize"><l>320</l></block><block s="down"></block><block s="gotoXY"><l>200</l><l>-180</l></block></script></block><block s="up"></block></script></block></script></scripts></sprite><watcher var="список" style="normal" x="-2" y="-2" color="243,118,29" hidden="true"/><watcher scope="Спрайт" var="і" style="normal" x="0" y="0" color="243,118,29" hidden="true"/><watcher scope="Спрайт" var="прокрутка" style="normal" x="-1" y="-1" color="243,118,29" hidden="true"/><watcher var="номер команди" style="normal" x="-1" y="-1" color="243,118,29" hidden="true"/><watcher var="повноекраний режим" style="normal" x="0" y="0" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="список"><list struct="atomic" id="183">&lt;!DOCTYPE html&gt;,&lt;html&gt;,    &lt;head&gt;,&quot;	&lt;meta name=&quot;&quot;snap-cloud-domain&quot;&quot; location=&quot;&quot;https://snap.berkeley.edu:443&quot;&quot;&gt;&quot;,&quot;        &lt;meta charset=&quot;&quot;UTF-8&quot;&quot;&gt;&quot;,        &lt;title&gt;Snap! Build Your Own Blocks&lt;/title&gt;,&quot;        &lt;meta name=&quot;&quot;description&quot;&quot; content=&quot;&quot;The Snap! Community. Snap! is a blocks-based programming language built by UC Berkeley and used by hundrends of thousands of programmers around the world.&quot;&quot;&gt;&quot;,&quot;        &lt;meta name=&quot;&quot;author&quot;&quot; content=&quot;&quot;Bernat Romagosa, Michael Ball, Jens Mönig, Brian Harvey, Jadge Hügle&quot;&quot;&gt;&quot;,,&quot;        &lt;meta name=&quot;&quot;snap-cloud-domain&quot;&quot; location=&quot;&quot;https://snap.berkeley.edu&quot;&quot;&gt;&quot;,&quot;        &lt;link rel=&quot;&quot;icon&quot;&quot; href=&quot;&quot;favicon.ico&quot;&quot;&gt;&quot;,&quot;        &lt;link rel=&quot;&quot;canonical&quot;&quot; href=&quot;&quot;https://snap.berkeley.edu&quot;&quot; /&gt;&quot;,&quot;        &lt;meta name=&quot;&quot;viewport&quot;&quot; content=&quot;&quot;width=device-width, initial-scale=1&quot;&quot;&gt;&quot;,,        &lt;!-- Stylesheets --&gt;,&quot;        &lt;link rel=&quot;&quot;stylesheet&quot;&quot; href=&quot;&quot;libs/reset.css&quot;&quot;&gt;&quot;,&quot;        &lt;link rel=&quot;&quot;stylesheet&quot;&quot; href=&quot;&quot;libs/custom-alert.css&quot;&quot;&gt;&quot;,&quot;        &lt;link rel=&quot;&quot;stylesheet&quot;&quot; href=&quot;&quot;libs/pure-min.css&quot;&quot;&gt;&quot;,&quot;        &lt;link rel=&quot;&quot;stylesheet&quot;&quot; href=&quot;&quot;style/layout.css&quot;&quot;&gt;&quot;,&quot;        &lt;link rel=&quot;&quot;stylesheet&quot;&quot; href=&quot;&quot;style/elements.css&quot;&quot;&gt;&quot;,&quot;        &lt;link rel=&quot;&quot;stylesheet&quot;&quot; href=&quot;&quot;style/classes.css&quot;&quot;&gt;&quot;,&quot;        &lt;link rel=&quot;&quot;stylesheet&quot;&quot;&quot;,&quot;            href=&quot;&quot;https://use.fontawesome.com/releases/v5.7.1/css/all.css&quot;&quot;&quot;,&quot;            integrity=&quot;&quot;sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr&quot;&quot;&quot;,&quot;            crossorigin=&quot;&quot;anonymous&quot;&quot;&gt;&quot;,        &lt;!-- JS --&gt;,&quot;        &lt;script src=&quot;&quot;js/locale.js&quot;&quot;&gt;&lt;/script&gt;&quot;,&quot;        &lt;script src=&quot;&quot;js/base.js&quot;&quot;&gt;&lt;/script&gt;&quot;,&quot;        &lt;script src=&quot;&quot;libs/cloud.js&quot;&quot;&gt;&lt;/script&gt;&quot;,        &lt;script&gt;SnapCloud = new Cloud();&lt;/script&gt;,&quot;        &lt;script src=&quot;&quot;libs/sha512.js&quot;&quot;&gt;&lt;/script&gt;&quot;,    &lt;/head&gt;,    &lt;body&gt;,&quot;        &lt;div id=&quot;&quot;loading&quot;&quot;&gt;&quot;,&quot;            &lt;i class=&quot;&quot;fas fa-spinner fa-spin fa-3x&quot;&quot; aria-hidden=&quot;&quot;true&quot;&quot;&gt;&lt;/i&gt;&quot;,        &lt;/div&gt;,&quot;&lt;nav id=&quot;&quot;top-bar&quot;&quot;&gt;&quot;,&quot;    &lt;div class=&quot;&quot;pure-menu-horizontal pure-menu&quot;&quot;&gt;&quot;,&quot;        &lt;ul class=&quot;&quot;pure-g pure-menu-list&quot;&quot;&gt;&quot;,&quot;            &lt;a class=&quot;&quot;pure-u-1-12&quot;&quot; href=&quot;&quot;/&quot;&quot; aria-label=&quot;&quot;Snap! home page&quot;&quot;&gt;&quot;,&quot;                &lt;img src=&quot;&quot;img/topbar-logo.png&quot;&quot; class=&quot;&quot;logo clickable&quot;&quot;/&gt;&quot;,            &lt;/a&gt;,&quot;            &lt;span class=&quot;&quot;pure-u-5-12&quot;&quot;&gt;&quot;,&quot;                &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                    &lt;a localizable class=&quot;&quot;pure-menu-link run&quot;&quot;&quot;,&quot;                        target=&quot;&quot;_blank&quot;&quot;&gt;Run Snap&lt;em&gt;!&lt;/em&gt;&lt;/a&gt;&quot;,                &lt;/li&gt;,&quot;                &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                    &lt;a localizable class=&quot;&quot;pure-menu-link explore&quot;&quot;&quot;,&quot;                        href=&quot;&quot;explore&quot;&quot;&gt;Explore&lt;/a&gt;&quot;,                &lt;/li&gt;,&quot;                &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                    &lt;a localizable class=&quot;&quot;pure-menu-link forum&quot;&quot;&quot;,&quot;                        href=&quot;&quot;https://forum.snap.berkeley.edu/&quot;&quot;&gt;Forum&lt;/a&gt;&quot;,                &lt;/li&gt;,                &lt;!--,                &lt;!--   =======   Snap!Con   ======= --&gt;,                &lt;!--,&quot;                &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                    &lt;a localizable class=&quot;&quot;pure-menu-link&quot;&quot; target=&quot;&quot;_blank&quot;&quot;&quot;,&quot;                    href=&quot;&quot;https://www.snapcon.org&quot;&quot;&gt;Snap&lt;em&gt;!&lt;/em&gt;shot&lt;/a&gt;&quot;,                &lt;/li&gt;,                --&gt;,            &lt;/span&gt;,&quot;            &lt;i class=&quot;&quot;pure-u-1-24&quot;&quot;&gt;&lt;/i&gt;&quot;,&quot;            &lt;div class=&quot;&quot;search pure-u-1-6&quot;&quot;&gt;&quot;,&quot;                &lt;form action=&quot;&quot;search&quot;&quot;&gt;&quot;,&quot;                    &lt;input type=&quot;&quot;text&quot;&quot; name=&quot;&quot;query&quot;&quot;&gt;&quot;,&quot;                    &lt;i class=&quot;&quot;fas fa-search&quot;&quot;&gt;&lt;/i&gt;&quot;,                &lt;/form&gt;,            &lt;/div&gt;,&quot;            &lt;i class=&quot;&quot;pure-u-1-24&quot;&quot;&gt;&lt;/i&gt;&quot;,&quot;            &lt;li hidden class=&quot;&quot;join pure-menu-item pure-u-1-12&quot;&quot;&gt;&quot;,&quot;                &lt;a localizable class=&quot;&quot;pure-menu-link&quot;&quot;&quot;,&quot;                    href=&quot;&quot;sign_up&quot;&quot;&gt;Join&lt;/a&gt;&lt;/li&gt;&quot;,&quot;            &lt;li hidden class=&quot;&quot;sign-in pure-menu-item pure-u-1-12&quot;&quot;&gt;&quot;,&quot;                &lt;a localizable class=&quot;&quot;pure-menu-link&quot;&quot;&quot;,&quot;                               href=&quot;&quot;login&quot;&quot;&gt;Log In&lt;/a&gt;&lt;/li&gt;&quot;,&quot;            &lt;li hidden class=&quot;&quot;pure-menu-item pure-u-1-6&quot;,&quot;                pure-menu-has-children pure-menu-allow-hover user-menu&quot;&quot;&gt;&quot;,&quot;                &lt;a id=&quot;&quot;menuLink1&quot;&quot; class=&quot;&quot;pure-menu-link visitor clickable&quot;&quot;&gt;&lt;/a&gt;&quot;,&quot;                &lt;ul class=&quot;&quot;pure-menu-children&quot;&quot;&gt;&quot;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a localizable class=&quot;&quot;pure-menu-link my-projects&quot;&quot;&quot;,&quot;                            href=&quot;&quot;my_projects&quot;&quot;&gt;My Projects&lt;/a&gt;&lt;/li&gt;&quot;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a localizable class=&quot;&quot;pure-menu-link my-collections&quot;&quot;&quot;,&quot;                            href=&quot;&quot;my_collections&quot;&quot;&gt;My Collections&lt;/a&gt;&lt;/li&gt;&quot;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a localizable class=&quot;&quot;pure-menu-link my-public-projects&quot;&quot;&quot;,&quot;                           href=&quot;&quot;&quot;&quot;&gt;My Public Page&lt;/a&gt;&lt;/li&gt;&quot;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a localizable class=&quot;&quot;pure-menu-link my-profile&quot;&quot;&quot;,&quot;                            href=&quot;&quot;profile&quot;&quot;&gt;My Profile&lt;/a&gt;&lt;/li&gt;&quot;,&quot;                    &lt;li hidden class=&quot;&quot;pure-menu-item admin&quot;&quot;&gt;&quot;,&quot;                        &lt;a localizable class=&quot;&quot;pure-menu-link&quot;&quot;&quot;,&quot;                            href=&quot;&quot;admin&quot;&quot;&gt;Administration&lt;/a&gt;&lt;/li&gt;&quot;,                    &lt;hr&gt;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a localizable class=&quot;&quot;pure-menu-link clickable&quot;&quot;&quot;,&quot;                            href=&quot;&quot;javascript:SnapCloud.logout(function () {&quot;,                                sessionStorage.clear();,                                location.href = &apos;index&apos;;,&quot;                            });&quot;&quot;&gt;Log Out&lt;/a&gt;&lt;/li&gt;&quot;,                &lt;/ul&gt;,            &lt;/li&gt;,&quot;            &lt;li class=&quot;&quot;pure-menu-item pure-u-1-24 pure-menu-has-children&quot;,&quot;                pure-menu-allow-hover language-select&quot;&quot;&gt;&quot;,&quot;                &lt;a class=&quot;&quot;pure-menu-link clickable&quot;&quot;&gt;&quot;,&quot;                    &lt;i class=&quot;&quot;fas fa-globe&quot;&quot;&gt;&lt;/i&gt;&quot;,                &lt;/a&gt;,&quot;                &lt;ul class=&quot;&quot;pure-menu-children languages&quot;&quot;&gt;&quot;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a class=&quot;&quot;pure-menu-link clickable&quot;&quot;&quot;,&quot;                            href=&quot;&quot;javascript:localizer.setLanguage(&apos;es&apos;);&quot;&quot;&gt;Castellano&lt;/a&gt;&quot;,                    &lt;/li&gt;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a class=&quot;&quot;pure-menu-link clickable&quot;&quot;&quot;,&quot;                            href=&quot;&quot;javascript:localizer.setLanguage(&apos;ca&apos;);&quot;&quot;&gt;Català&lt;/a&gt;&quot;,                    &lt;/li&gt;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a class=&quot;&quot;pure-menu-link clickable&quot;&quot;&quot;,&quot;                            href=&quot;&quot;javascript:localizer.setLanguage(&apos;zh&apos;);&quot;&quot;&gt;简体中文&lt;/a&gt;&quot;,                    &lt;/li&gt;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a class=&quot;&quot;pure-menu-link clickable&quot;&quot;&quot;,&quot;                            href=&quot;&quot;javascript:localizer.setLanguage(&apos;de&apos;);&quot;&quot;&gt;Deutsch&lt;/a&gt;&quot;,                    &lt;/li&gt;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a class=&quot;&quot;pure-menu-link clickable&quot;&quot;&quot;,&quot;                            href=&quot;&quot;javascript:localizer.setLanguage(&apos;en&apos;);&quot;&quot;&gt;English&lt;/a&gt;&quot;,                    &lt;/li&gt;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a class=&quot;&quot;pure-menu-link clickable&quot;&quot;&quot;,&quot;                            href=&quot;&quot;javascript:localizer.setLanguage(&apos;fr&apos;);&quot;&quot;&gt;Français&lt;/a&gt;&quot;,                    &lt;/li&gt;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a class=&quot;&quot;pure-menu-link clickable&quot;&quot;&quot;,&quot;                            href=&quot;&quot;javascript:localizer.setLanguage(&apos;it&apos;);&quot;&quot;&gt;Italiano&lt;/a&gt;&quot;,                    &lt;/li&gt;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a class=&quot;&quot;pure-menu-link clickable&quot;&quot;&quot;,&quot;                            href=&quot;&quot;javascript:localizer.setLanguage(&apos;pt&apos;);&quot;&quot;&gt;Português&lt;/a&gt;&quot;,                    &lt;/li&gt;,&quot;                    &lt;li class=&quot;&quot;pure-menu-item&quot;&quot;&gt;&quot;,&quot;                        &lt;a class=&quot;&quot;pure-menu-link clickable&quot;&quot;&quot;,&quot;                            href=&quot;&quot;javascript:localizer.setLanguage(&apos;tr&apos;);&quot;&quot;&gt;Türkçe&lt;/a&gt;&quot;,                    &lt;/li&gt;,                &lt;/ul&gt;,            &lt;/li&gt;,        &lt;/ul&gt;,    &lt;/div&gt;,&lt;/nav&gt;,&quot;        &lt;div id=&quot;&quot;wrapper&quot;&quot;&gt;&quot;,&quot;&lt;script src=&quot;&quot;js/project.js&quot;&quot;&gt;&lt;/script&gt;&quot;,&quot;&lt;link rel=&quot;&quot;stylesheet&quot;&quot; href=&quot;&quot;style/project.css&quot;&quot;&gt;&quot;,,&lt;!-- Thanks to www.w3schools.com --&gt;,&quot;&lt;link rel=&quot;&quot;stylesheet&quot;&quot; href=&quot;&quot;style/banner.css&quot;&quot;&gt;&quot;,,&quot;&lt;div class=&quot;&quot;slideshow&quot;&quot;&gt;&quot;,    &lt;!--,&quot;    &lt;a href=&quot;&quot;https://snapcon.org/&quot;&quot; target=&quot;&quot;_blank&quot;&quot;&gt;&quot;,&quot;        &lt;div class=&quot;&quot;slide fade&quot;&quot;&gt;&quot;,&quot;            &lt;img src=&quot;&quot;img/snapcon.png&quot;&quot; style=&quot;&quot;width:100%&quot;&quot;&gt;&quot;,        &lt;/div&gt;,    &lt;/a&gt;,    --&gt;,,&quot;    &lt;a href=&quot;&quot;collection.html?user=snapcloud&amp;collection=Chocolate&quot;&quot;&gt;&quot;,&quot;        &lt;div class=&quot;&quot;slide fade&quot;&quot;&gt;&quot;,&quot;            &lt;img src=&quot;&quot;img/totm.png&quot;&quot; style=&quot;&quot;width:100%&quot;&quot;&gt;&quot;,        &lt;/div&gt;,    &lt;/a&gt;,,&quot;    &lt;div class=&quot;&quot;slide fade&quot;&quot;&gt;&quot;,&quot;        &lt;img src=&quot;&quot;img/snap-byob.png&quot;&quot; style=&quot;&quot;width:100%&quot;&quot;&gt;&quot;,    &lt;/div&gt;,,&quot;    &lt;div class=&quot;&quot;slide fade&quot;&quot;&gt;&quot;,&quot;        &lt;img src=&quot;&quot;img/lowfloor.png&quot;&quot; style=&quot;&quot;width:100%&quot;&quot;&gt;&quot;,    &lt;/div&gt;,,&quot;    &lt;div class=&quot;&quot;slide fade&quot;&quot;&gt;&quot;,&quot;        &lt;img src=&quot;&quot;img/widewalls.png&quot;&quot; style=&quot;&quot;width:100%&quot;&quot;&gt;&quot;,    &lt;/div&gt;,,&quot;    &lt;div class=&quot;&quot;slide fade&quot;&quot;&gt;&quot;,&quot;        &lt;img src=&quot;&quot;img/noceiling.png&quot;&quot; style=&quot;&quot;width:100%&quot;&quot;&gt;&quot;,    &lt;/div&gt;,,&quot;    &lt;a class=&quot;&quot;previous&quot;&quot; onclick=&quot;&quot;plusSlides(-1)&quot;&quot;&gt;&amp;#10094;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;next&quot;&quot; onclick=&quot;&quot;plusSlides(1)&quot;&quot;&gt;&amp;#10095;&lt;/a&gt;&quot;,&lt;/div&gt;,&lt;br&gt;,,&lt;script&gt;,    var slideIndex = 1;,,    showSlide(slideIndex);,,    function plusSlides (n) {,        showSlide(slideIndex += n);,    };,,    function currentSlide (n) {,        showSlide(slideIndex = n);,    };,,    function showSlide (n) {,&quot;        var slides = document.querySelectorAll(&apos;.slide&apos;),&quot;,            i;,        if (n &gt; slides.length) { slideIndex = 1 },        if (n &lt; 1) { slideIndex = slides.length },        slides.forEach(function (slide) {,            slide.style.display = &apos;none&apos;;,        });,        slides[slideIndex-1].style.display = &apos;block&apos;;,    };,,&lt;/script&gt;,,&quot;&lt;h1&gt;&lt;span localizable&gt;Welcome to Snap&lt;/span&gt;&lt;em&gt;!&lt;/em&gt;&lt;span hidden class=&quot;&quot;username&quot;&quot;&gt;&lt;/h1&gt;&quot;,,&quot;&lt;div class=&quot;&quot;indent bigger&quot;&quot; localizable&gt;&quot;,Snap&lt;em&gt;!&lt;/em&gt; is a broadly inviting programming language for kids and adults that&apos;s also a platform for serious study of computer science.,&lt;/div&gt;,,&quot;&lt;div class=&quot;&quot;indent v-spaced&quot;&quot;&gt;&quot;,&quot;    &lt;a href=&quot;&quot;/snap&quot;&quot; class=&quot;&quot;pure-button&quot;&quot; localizable&gt;Run Snap&lt;em&gt;!&lt;/em&gt; Now&lt;/a&gt;&quot;,&quot;    &lt;a href=&quot;&quot;/my_projects&quot;&quot; hidden class=&quot;&quot;pure-button&quot;&quot; localizable&gt;My Projects&lt;/a&gt;&quot;,&quot;    &lt;a href=&quot;&quot;&quot;&quot; hidden class=&quot;&quot;pure-button my-public-projects&quot;&quot; localizable&gt;My Public Page&lt;/a&gt;&quot;,&quot;    &lt;a href=&quot;&quot;/examples&quot;&quot; class=&quot;&quot;pure-button&quot;&quot; localizable&gt;Example Projects&lt;/a&gt;&quot;,&quot;    &lt;a href=&quot;&quot;/snap/help/SnapManual.pdf&quot;&quot; class=&quot;&quot;pure-button&quot;&quot; localizable&gt;Reference Manual&lt;/a&gt;&quot;,&lt;/div&gt;,,&lt;script&gt;,let username = sessionStorage &amp;&amp; sessionStorage.username;,,if (username) {,    let heading = document.querySelector(&apos;h1 .username&apos;);,    let publicPage = document.querySelector(&apos;.indent a.my-public-projects&apos;);,    heading.hidden = false;,&quot;    heading.innerHTML = `, ${escapeHtml(username)}`;&quot;,&quot;    document.querySelector(&apos;a[href=&quot;&quot;/my_projects&quot;&quot;]&apos;).hidden = false;&quot;,    publicPage.hidden = false;,    publicPage.href = `/user?user=${encodeURIComponent(username)}`;,},,&lt;/script&gt;,&quot;&lt;br class=&quot;&quot;v-spaced&quot;&quot;&gt;&quot;,,,&lt;!--,    Any template that uses me needs to specify the following functions:,,    // Defines how to retrieve a particular page from the DB,    featured_loadPage (,&quot;        query,      // search query&quot;,&quot;        pageSize,   // amount of elements per page&quot;,&quot;        pageNumber, // current page being requested&quot;,        onSuccess   // callback called when response comes back. Just leave as,&quot;                    // `onSuccess` unless doing something very specific, as&quot;,                    // this callback is defined by the search bar itself.,    ),,    // Defines how to load a particular page,    featured_onLoadPage (,&quot;        response,      // response from the server&quot;,        targetElement  // HTML element where response should be rendered,    ),,&quot;    Once these functions have been defined, just call:&quot;,,    featured_initGrid(callback);,--&gt;,&quot;&lt;div class=&quot;&quot;featured container&quot;&quot;&gt;&quot;,&quot;    &lt;h2 class=&quot;&quot;featured header&quot;&quot; localizable&gt;&lt;/h2&gt;&quot;,&quot;    &lt;div class=&quot;&quot;bar&quot;&quot;&gt;&quot;,&quot;        &lt;div hidden class=&quot;&quot;featured search&quot;&quot;&gt;&quot;,&quot;            &lt;form action=&quot;&quot;featured&quot;&quot;&gt;&quot;,&quot;                &lt;input type=&quot;&quot;text&quot;&quot; name=&quot;&quot;query&quot;&quot;&gt;&quot;,&quot;                &lt;i class=&quot;&quot;fas fa-search&quot;&quot;&gt;&lt;/i&gt;&quot;,            &lt;/form&gt;,            &lt;script&gt;,&quot;                var featured_page = 1,&quot;,&quot;                    featured_totalPages = 1,&quot;,&quot;                    featured_maxPages = [0][0] || 0, // 0 = no limit&quot;,&quot;                    featured_pageSize = [5][0] || 150,&quot;,                    featured_keepIfEmpty = [][0];,,                if (![&apos;Featured Projects&apos;][0]) {,                    document.querySelector(&apos;.featured.header&apos;).remove();,                } else {,                    document.querySelector(&apos;.featured.header&apos;).innerHTML =,                        [&apos;Featured Projects&apos;][0];,                },,                if ([false][0]) {,&quot;                    document.querySelector(&quot;&quot;.featured.search&quot;&quot;).hidden =&quot;,                        false;,                };,,                document.querySelector(&apos;.featured form input&apos;).value =,                    getUrlParameter(&apos;query&apos;);,,                function featured_toPage (pageNumber) {,                    var featured_div =,&quot;                            document.querySelector(&apos;.featured.container&apos;),&quot;,                        featured_listDiv =,&quot;                            document.querySelector(&apos;.featured.list&apos;),&quot;,                        featured_pageSpan =,                            document.querySelector(,&quot;                                &apos;.featured.paginator .page&apos;),&quot;,                        featured_totalPagesSpan =,                            document.querySelector(,&quot;                                &apos;.featured.paginator .total-pages&apos;),&quot;,                        height = featured_listDiv.clientHeight;,,                    // Forces grid to keep previous height when emptied out,                    if (height &gt; 0) {,                        featured_listDiv.style.height = height;,                    },,                    featured_listDiv.innerHTML = &apos;&apos;;,                    beganLoading(&apos;.featured.list&apos;);,,                    featured_loadPage(,&quot;                        getUrlParameter(&apos;query&apos;),&quot;,&quot;                        featured_pageSize,&quot;,&quot;                        pageNumber,&quot;,                        function (response) {,                            featured_totalPages =,                                featured_maxPages || response.pages;,                            featured_totalPagesSpan.textContent =,                                featured_totalPages;,,                            if (featured_totalPages == 0 ||,                                (response.projects &amp;&amp; !response.projects[0]) ||,                                (response.collections &amp;&amp;,                                    !response.collections[0]) ||,                                (response.users &amp;&amp; !response.users[0]),                                // Until we fix the API this will do,                            ) {,                                if (!featured_keepIfEmpty) {,                                    featured_div.remove();,                                } else {,                                    doneLoading(&apos;.featured.list&apos;);,                                },                                return;,                            } else if (featured_totalPages == 1 &amp;&amp;,                                    !featured_keepIfEmpty) {,                                document.querySelector(,                                    &apos;.featured.paginator&apos;).remove();,                            },,&quot;                            featured_onLoadPage(response,&quot;,                                featured_listDiv);,,                            doneLoading(&apos;.featured.list&apos;);,                        },                    );,,                    featured_page = pageNumber;,                    featured_pageSpan.textContent = pageNumber;,                };,,                function featured_initGrid (callback) {,                    featured_toPage(1);,                    if (callback) {,                        callback.call(this);,                    },                };,,            &lt;/script&gt;,        &lt;/div&gt;,&quot;&lt;nav class=&quot;&quot;featured paginator&quot;&quot;&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;featured_toPage(1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;featured_toPage(featured_page - 5 &gt; 0 ? featured_page - 5 : 1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;featured_toPage(featured_page - 1 &gt; 0 ? featured_page - 1 : featured_page);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;span class=&quot;&quot;page&quot;&quot;&gt;&lt;/span&gt; / &lt;span class=&quot;&quot;total-pages&quot;&quot;&gt;&lt;/span&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;featured_toPage(featured_page + 1 &lt; featured_totalPages ? featured_page + 1 : featured_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;featured_toPage(featured_page + 5 &lt; featured_totalPages ? featured_page + 5 : featured_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;featured_toPage(featured_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&lt;/nav&gt;,    &lt;/div&gt;,&quot;    &lt;div class=&quot;&quot;featured list pure-g&quot;&quot;&gt;&lt;/div&gt;&quot;,&lt;/div&gt;,&lt;script&gt;,&quot;    onLoadPage = function (response, targetElement) {&quot;,            response.projects.forEach(function (project) {,                targetElement.append(,                    newProjectDiv(,&quot;                        project,&quot;,                        {,&quot;                            size: &apos;small&apos;,&quot;,&quot;                            gridSize: 5,&quot;,                            extraFields: {,&quot;                                isPublic: &apos;ispublic&apos;,&quot;,&quot;                                isPublished: &apos;ispublished&apos;,&quot;,                                author: &apos;username&apos;,                            },                        },                    ),                );,            });,        };,,    featured_loadPage =,&quot;        function (query, pageSize, pageNumber, onSuccess) {&quot;,            SnapCloud.getCollectionProjects(,&quot;                &apos;snapcloud&apos;,&quot;,&quot;                pageNumber,&quot;,&quot;                pageSize,&quot;,&quot;                &apos;Featured&apos;,&quot;,&quot;                onSuccess,&quot;,&quot;                genericError,&quot;,                true // withThumbnail,            );,        };,,    featured_onLoadPage = onLoadPage;,    featured_initGrid();,&lt;/script&gt;,,&lt;!--,    Any template that uses me needs to specify the following functions:,,    // Defines how to retrieve a particular page from the DB,    snapcon_loadPage (,&quot;        query,      // search query&quot;,&quot;        pageSize,   // amount of elements per page&quot;,&quot;        pageNumber, // current page being requested&quot;,        onSuccess   // callback called when response comes back. Just leave as,&quot;                    // `onSuccess` unless doing something very specific, as&quot;,                    // this callback is defined by the search bar itself.,    ),,    // Defines how to load a particular page,    snapcon_onLoadPage (,&quot;        response,      // response from the server&quot;,        targetElement  // HTML element where response should be rendered,    ),,&quot;    Once these functions have been defined, just call:&quot;,,    snapcon_initGrid(callback);,--&gt;,&quot;&lt;div class=&quot;&quot;snapcon container&quot;&quot;&gt;&quot;,&quot;    &lt;h2 class=&quot;&quot;snapcon header&quot;&quot; localizable&gt;&lt;/h2&gt;&quot;,&quot;    &lt;div class=&quot;&quot;bar&quot;&quot;&gt;&quot;,&quot;        &lt;div hidden class=&quot;&quot;snapcon search&quot;&quot;&gt;&quot;,&quot;            &lt;form action=&quot;&quot;snapcon&quot;&quot;&gt;&quot;,&quot;                &lt;input type=&quot;&quot;text&quot;&quot; name=&quot;&quot;query&quot;&quot;&gt;&quot;,&quot;                &lt;i class=&quot;&quot;fas fa-search&quot;&quot;&gt;&lt;/i&gt;&quot;,            &lt;/form&gt;,            &lt;script&gt;,&quot;                var snapcon_page = 1,&quot;,&quot;                    snapcon_totalPages = 1,&quot;,&quot;                    snapcon_maxPages = [0][0] || 0, // 0 = no limit&quot;,&quot;                    snapcon_pageSize = [5][0] || 150,&quot;,                    snapcon_keepIfEmpty = [][0];,,                if (![&apos;Snap!Shot 2021&apos;][0]) {,                    document.querySelector(&apos;.snapcon.header&apos;).remove();,                } else {,                    document.querySelector(&apos;.snapcon.header&apos;).innerHTML =,                        [&apos;Snap!Shot 2021&apos;][0];,                },,                if ([false][0]) {,&quot;                    document.querySelector(&quot;&quot;.snapcon.search&quot;&quot;).hidden =&quot;,                        false;,                };,,                document.querySelector(&apos;.snapcon form input&apos;).value =,                    getUrlParameter(&apos;query&apos;);,,                function snapcon_toPage (pageNumber) {,                    var snapcon_div =,&quot;                            document.querySelector(&apos;.snapcon.container&apos;),&quot;,                        snapcon_listDiv =,&quot;                            document.querySelector(&apos;.snapcon.list&apos;),&quot;,                        snapcon_pageSpan =,                            document.querySelector(,&quot;                                &apos;.snapcon.paginator .page&apos;),&quot;,                        snapcon_totalPagesSpan =,                            document.querySelector(,&quot;                                &apos;.snapcon.paginator .total-pages&apos;),&quot;,                        height = snapcon_listDiv.clientHeight;,,                    // Forces grid to keep previous height when emptied out,                    if (height &gt; 0) {,                        snapcon_listDiv.style.height = height;,                    },,                    snapcon_listDiv.innerHTML = &apos;&apos;;,                    beganLoading(&apos;.snapcon.list&apos;);,,                    snapcon_loadPage(,&quot;                        getUrlParameter(&apos;query&apos;),&quot;,&quot;                        snapcon_pageSize,&quot;,&quot;                        pageNumber,&quot;,                        function (response) {,                            snapcon_totalPages =,                                snapcon_maxPages || response.pages;,                            snapcon_totalPagesSpan.textContent =,                                snapcon_totalPages;,,                            if (snapcon_totalPages == 0 ||,                                (response.projects &amp;&amp; !response.projects[0]) ||,                                (response.collections &amp;&amp;,                                    !response.collections[0]) ||,                                (response.users &amp;&amp; !response.users[0]),                                // Until we fix the API this will do,                            ) {,                                if (!snapcon_keepIfEmpty) {,                                    snapcon_div.remove();,                                } else {,                                    doneLoading(&apos;.snapcon.list&apos;);,                                },                                return;,                            } else if (snapcon_totalPages == 1 &amp;&amp;,                                    !snapcon_keepIfEmpty) {,                                document.querySelector(,                                    &apos;.snapcon.paginator&apos;).remove();,                            },,&quot;                            snapcon_onLoadPage(response,&quot;,                                snapcon_listDiv);,,                            doneLoading(&apos;.snapcon.list&apos;);,                        },                    );,,                    snapcon_page = pageNumber;,                    snapcon_pageSpan.textContent = pageNumber;,                };,,                function snapcon_initGrid (callback) {,                    snapcon_toPage(1);,                    if (callback) {,                        callback.call(this);,                    },                };,,            &lt;/script&gt;,        &lt;/div&gt;,&quot;&lt;nav class=&quot;&quot;snapcon paginator&quot;&quot;&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;snapcon_toPage(1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;snapcon_toPage(snapcon_page - 5 &gt; 0 ? snapcon_page - 5 : 1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;snapcon_toPage(snapcon_page - 1 &gt; 0 ? snapcon_page - 1 : snapcon_page);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;span class=&quot;&quot;page&quot;&quot;&gt;&lt;/span&gt; / &lt;span class=&quot;&quot;total-pages&quot;&quot;&gt;&lt;/span&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;snapcon_toPage(snapcon_page + 1 &lt; snapcon_totalPages ? snapcon_page + 1 : snapcon_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;snapcon_toPage(snapcon_page + 5 &lt; snapcon_totalPages ? snapcon_page + 5 : snapcon_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;snapcon_toPage(snapcon_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&lt;/nav&gt;,    &lt;/div&gt;,&quot;    &lt;div class=&quot;&quot;snapcon list pure-g&quot;&quot;&gt;&lt;/div&gt;&quot;,&lt;/div&gt;,&lt;script&gt;,    snapcon_loadPage =,&quot;        function (query, pageSize, pageNumber, onSuccess) {&quot;,            SnapCloud.getCollectionProjects(,&quot;                &apos;snapcloud&apos;,&quot;,&quot;                pageNumber,&quot;,&quot;                pageSize,&quot;,&quot;                &apos;Snap!Shot 2021&apos;,&quot;,&quot;                onSuccess,&quot;,&quot;                genericError,&quot;,                true // withThumbnail,            );,        };,,    snapcon_onLoadPage = onLoadPage;,    snapcon_initGrid();,&lt;/script&gt;,,&lt;!--,    Any template that uses me needs to specify the following functions:,,    // Defines how to retrieve a particular page from the DB,    totm_loadPage (,&quot;        query,      // search query&quot;,&quot;        pageSize,   // amount of elements per page&quot;,&quot;        pageNumber, // current page being requested&quot;,        onSuccess   // callback called when response comes back. Just leave as,&quot;                    // `onSuccess` unless doing something very specific, as&quot;,                    // this callback is defined by the search bar itself.,    ),,    // Defines how to load a particular page,    totm_onLoadPage (,&quot;        response,      // response from the server&quot;,        targetElement  // HTML element where response should be rendered,    ),,&quot;    Once these functions have been defined, just call:&quot;,,    totm_initGrid(callback);,--&gt;,&quot;&lt;div class=&quot;&quot;totm container&quot;&quot;&gt;&quot;,&quot;    &lt;h2 class=&quot;&quot;totm header&quot;&quot; localizable&gt;&lt;/h2&gt;&quot;,&quot;    &lt;div class=&quot;&quot;bar&quot;&quot;&gt;&quot;,&quot;        &lt;div hidden class=&quot;&quot;totm search&quot;&quot;&gt;&quot;,&quot;            &lt;form action=&quot;&quot;totm&quot;&quot;&gt;&quot;,&quot;                &lt;input type=&quot;&quot;text&quot;&quot; name=&quot;&quot;query&quot;&quot;&gt;&quot;,&quot;                &lt;i class=&quot;&quot;fas fa-search&quot;&quot;&gt;&lt;/i&gt;&quot;,            &lt;/form&gt;,            &lt;script&gt;,&quot;                var totm_page = 1,&quot;,&quot;                    totm_totalPages = 1,&quot;,&quot;                    totm_maxPages = [0][0] || 0, // 0 = no limit&quot;,&quot;                    totm_pageSize = [5][0] || 150,&quot;,                    totm_keepIfEmpty = [][0];,,&quot;                if (![&apos;Topic of the Month, March: Chocolate&apos;][0]) {&quot;,                    document.querySelector(&apos;.totm.header&apos;).remove();,                } else {,                    document.querySelector(&apos;.totm.header&apos;).innerHTML =,&quot;                        [&apos;Topic of the Month, March: Chocolate&apos;][0];&quot;,                },,                if ([false][0]) {,&quot;                    document.querySelector(&quot;&quot;.totm.search&quot;&quot;).hidden =&quot;,                        false;,                };,,                document.querySelector(&apos;.totm form input&apos;).value =,                    getUrlParameter(&apos;query&apos;);,,                function totm_toPage (pageNumber) {,                    var totm_div =,&quot;                            document.querySelector(&apos;.totm.container&apos;),&quot;,                        totm_listDiv =,&quot;                            document.querySelector(&apos;.totm.list&apos;),&quot;,                        totm_pageSpan =,                            document.querySelector(,&quot;                                &apos;.totm.paginator .page&apos;),&quot;,                        totm_totalPagesSpan =,                            document.querySelector(,&quot;                                &apos;.totm.paginator .total-pages&apos;),&quot;,                        height = totm_listDiv.clientHeight;,,                    // Forces grid to keep previous height when emptied out,                    if (height &gt; 0) {,                        totm_listDiv.style.height = height;,                    },,                    totm_listDiv.innerHTML = &apos;&apos;;,                    beganLoading(&apos;.totm.list&apos;);,,                    totm_loadPage(,&quot;                        getUrlParameter(&apos;query&apos;),&quot;,&quot;                        totm_pageSize,&quot;,&quot;                        pageNumber,&quot;,                        function (response) {,                            totm_totalPages =,                                totm_maxPages || response.pages;,                            totm_totalPagesSpan.textContent =,                                totm_totalPages;,,                            if (totm_totalPages == 0 ||,                                (response.projects &amp;&amp; !response.projects[0]) ||,                                (response.collections &amp;&amp;,                                    !response.collections[0]) ||,                                (response.users &amp;&amp; !response.users[0]),                                // Until we fix the API this will do,                            ) {,                                if (!totm_keepIfEmpty) {,                                    totm_div.remove();,                                } else {,                                    doneLoading(&apos;.totm.list&apos;);,                                },                                return;,                            } else if (totm_totalPages == 1 &amp;&amp;,                                    !totm_keepIfEmpty) {,                                document.querySelector(,                                    &apos;.totm.paginator&apos;).remove();,                            },,&quot;                            totm_onLoadPage(response,&quot;,                                totm_listDiv);,,                            doneLoading(&apos;.totm.list&apos;);,                        },                    );,,                    totm_page = pageNumber;,                    totm_pageSpan.textContent = pageNumber;,                };,,                function totm_initGrid (callback) {,                    totm_toPage(1);,                    if (callback) {,                        callback.call(this);,                    },                };,,            &lt;/script&gt;,        &lt;/div&gt;,&quot;&lt;nav class=&quot;&quot;totm paginator&quot;&quot;&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;totm_toPage(1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;totm_toPage(totm_page - 5 &gt; 0 ? totm_page - 5 : 1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;totm_toPage(totm_page - 1 &gt; 0 ? totm_page - 1 : totm_page);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;span class=&quot;&quot;page&quot;&quot;&gt;&lt;/span&gt; / &lt;span class=&quot;&quot;total-pages&quot;&quot;&gt;&lt;/span&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;totm_toPage(totm_page + 1 &lt; totm_totalPages ? totm_page + 1 : totm_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;totm_toPage(totm_page + 5 &lt; totm_totalPages ? totm_page + 5 : totm_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;totm_toPage(totm_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&lt;/nav&gt;,    &lt;/div&gt;,&quot;    &lt;div class=&quot;&quot;totm list pure-g&quot;&quot;&gt;&lt;/div&gt;&quot;,&lt;/div&gt;,&lt;script&gt;,    totm_loadPage =,&quot;        function (query, pageSize, pageNumber, onSuccess) {&quot;,            SnapCloud.getCollectionProjects(,&quot;                &apos;snapcloud&apos;,&quot;,&quot;                pageNumber,&quot;,&quot;                pageSize,&quot;,&quot;                &apos;Chocolate&apos;,&quot;,&quot;                onSuccess,&quot;,&quot;                genericError,&quot;,                true // withThumbnail,            );,        };,,    totm_onLoadPage = onLoadPage;,    totm_initGrid();,&lt;/script&gt;,,&lt;script&gt;,    // pick three random curated collections,    var collections =,&quot;        [ &apos;Science Projects&apos;,&quot;,&quot;            &apos;Simulations&apos;,&quot;,&quot;            &apos;3D&apos;,&quot;,&quot;            &apos;Music&apos;,&quot;,&quot;            &apos;Art Projects&apos;,&quot;,&quot;            &apos;Fractals&apos;,&quot;,&quot;            &apos;Animations&apos;,&quot;,            &apos;Games&apos; ];,,    for (var i = collections.length - 1; i &gt; 2; i --) {,&quot;        collections.splice(Math.floor(Math.random()*collections.length), 1);&quot;,    },&lt;/script&gt;,,&lt;!--,    Any template that uses me needs to specify the following functions:,,    // Defines how to retrieve a particular page from the DB,    curated1_loadPage (,&quot;        query,      // search query&quot;,&quot;        pageSize,   // amount of elements per page&quot;,&quot;        pageNumber, // current page being requested&quot;,        onSuccess   // callback called when response comes back. Just leave as,&quot;                    // `onSuccess` unless doing something very specific, as&quot;,                    // this callback is defined by the search bar itself.,    ),,    // Defines how to load a particular page,    curated1_onLoadPage (,&quot;        response,      // response from the server&quot;,        targetElement  // HTML element where response should be rendered,    ),,&quot;    Once these functions have been defined, just call:&quot;,,    curated1_initGrid(callback);,--&gt;,&quot;&lt;div class=&quot;&quot;curated1 container&quot;&quot;&gt;&quot;,&quot;    &lt;h2 class=&quot;&quot;curated1 header&quot;&quot; localizable&gt;&lt;/h2&gt;&quot;,&quot;    &lt;div class=&quot;&quot;bar&quot;&quot;&gt;&quot;,&quot;        &lt;div hidden class=&quot;&quot;curated1 search&quot;&quot;&gt;&quot;,&quot;            &lt;form action=&quot;&quot;curated1&quot;&quot;&gt;&quot;,&quot;                &lt;input type=&quot;&quot;text&quot;&quot; name=&quot;&quot;query&quot;&quot;&gt;&quot;,&quot;                &lt;i class=&quot;&quot;fas fa-search&quot;&quot;&gt;&lt;/i&gt;&quot;,            &lt;/form&gt;,            &lt;script&gt;,&quot;                var curated1_page = 1,&quot;,&quot;                    curated1_totalPages = 1,&quot;,&quot;                    curated1_maxPages = [0][0] || 0, // 0 = no limit&quot;,&quot;                    curated1_pageSize = [5][0] || 150,&quot;,                    curated1_keepIfEmpty = [][0];,,                if (![collections[0]][0]) {,                    document.querySelector(&apos;.curated1.header&apos;).remove();,                } else {,                    document.querySelector(&apos;.curated1.header&apos;).innerHTML =,                        [collections[0]][0];,                },,                if ([false][0]) {,&quot;                    document.querySelector(&quot;&quot;.curated1.search&quot;&quot;).hidden =&quot;,                        false;,                };,,                document.querySelector(&apos;.curated1 form input&apos;).value =,                    getUrlParameter(&apos;query&apos;);,,                function curated1_toPage (pageNumber) {,                    var curated1_div =,&quot;                            document.querySelector(&apos;.curated1.container&apos;),&quot;,                        curated1_listDiv =,&quot;                            document.querySelector(&apos;.curated1.list&apos;),&quot;,                        curated1_pageSpan =,                            document.querySelector(,&quot;                                &apos;.curated1.paginator .page&apos;),&quot;,                        curated1_totalPagesSpan =,                            document.querySelector(,&quot;                                &apos;.curated1.paginator .total-pages&apos;),&quot;,                        height = curated1_listDiv.clientHeight;,,                    // Forces grid to keep previous height when emptied out,                    if (height &gt; 0) {,                        curated1_listDiv.style.height = height;,                    },,                    curated1_listDiv.innerHTML = &apos;&apos;;,                    beganLoading(&apos;.curated1.list&apos;);,,                    curated1_loadPage(,&quot;                        getUrlParameter(&apos;query&apos;),&quot;,&quot;                        curated1_pageSize,&quot;,&quot;                        pageNumber,&quot;,                        function (response) {,                            curated1_totalPages =,                                curated1_maxPages || response.pages;,                            curated1_totalPagesSpan.textContent =,                                curated1_totalPages;,,                            if (curated1_totalPages == 0 ||,                                (response.projects &amp;&amp; !response.projects[0]) ||,                                (response.collections &amp;&amp;,                                    !response.collections[0]) ||,                                (response.users &amp;&amp; !response.users[0]),                                // Until we fix the API this will do,                            ) {,                                if (!curated1_keepIfEmpty) {,                                    curated1_div.remove();,                                } else {,                                    doneLoading(&apos;.curated1.list&apos;);,                                },                                return;,                            } else if (curated1_totalPages == 1 &amp;&amp;,                                    !curated1_keepIfEmpty) {,                                document.querySelector(,                                    &apos;.curated1.paginator&apos;).remove();,                            },,&quot;                            curated1_onLoadPage(response,&quot;,                                curated1_listDiv);,,                            doneLoading(&apos;.curated1.list&apos;);,                        },                    );,,                    curated1_page = pageNumber;,                    curated1_pageSpan.textContent = pageNumber;,                };,,                function curated1_initGrid (callback) {,                    curated1_toPage(1);,                    if (callback) {,                        callback.call(this);,                    },                };,,            &lt;/script&gt;,        &lt;/div&gt;,&quot;&lt;nav class=&quot;&quot;curated1 paginator&quot;&quot;&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated1_toPage(1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated1_toPage(curated1_page - 5 &gt; 0 ? curated1_page - 5 : 1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated1_toPage(curated1_page - 1 &gt; 0 ? curated1_page - 1 : curated1_page);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;span class=&quot;&quot;page&quot;&quot;&gt;&lt;/span&gt; / &lt;span class=&quot;&quot;total-pages&quot;&quot;&gt;&lt;/span&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated1_toPage(curated1_page + 1 &lt; curated1_totalPages ? curated1_page + 1 : curated1_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated1_toPage(curated1_page + 5 &lt; curated1_totalPages ? curated1_page + 5 : curated1_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated1_toPage(curated1_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&lt;/nav&gt;,    &lt;/div&gt;,&quot;    &lt;div class=&quot;&quot;curated1 list pure-g&quot;&quot;&gt;&lt;/div&gt;&quot;,&lt;/div&gt;,&lt;script&gt;,    curated1_loadPage =,&quot;        function (query, pageSize, pageNumber, onSuccess) {&quot;,            SnapCloud.getCollectionProjects(,&quot;                &apos;snapcloud&apos;,&quot;,&quot;                pageNumber,&quot;,&quot;                pageSize,&quot;,&quot;                collections[0],&quot;,&quot;                onSuccess,&quot;,&quot;                genericError,&quot;,                true // withThumbnail,            );,        };,,    curated1_onLoadPage = onLoadPage;,    curated1_initGrid();,&lt;/script&gt;,,&lt;!--,    Any template that uses me needs to specify the following functions:,,    // Defines how to retrieve a particular page from the DB,    curated2_loadPage (,&quot;        query,      // search query&quot;,&quot;        pageSize,   // amount of elements per page&quot;,&quot;        pageNumber, // current page being requested&quot;,        onSuccess   // callback called when response comes back. Just leave as,&quot;                    // `onSuccess` unless doing something very specific, as&quot;,                    // this callback is defined by the search bar itself.,    ),,    // Defines how to load a particular page,    curated2_onLoadPage (,&quot;        response,      // response from the server&quot;,        targetElement  // HTML element where response should be rendered,    ),,&quot;    Once these functions have been defined, just call:&quot;,,    curated2_initGrid(callback);,--&gt;,&quot;&lt;div class=&quot;&quot;curated2 container&quot;&quot;&gt;&quot;,&quot;    &lt;h2 class=&quot;&quot;curated2 header&quot;&quot; localizable&gt;&lt;/h2&gt;&quot;,&quot;    &lt;div class=&quot;&quot;bar&quot;&quot;&gt;&quot;,&quot;        &lt;div hidden class=&quot;&quot;curated2 search&quot;&quot;&gt;&quot;,&quot;            &lt;form action=&quot;&quot;curated2&quot;&quot;&gt;&quot;,&quot;                &lt;input type=&quot;&quot;text&quot;&quot; name=&quot;&quot;query&quot;&quot;&gt;&quot;,&quot;                &lt;i class=&quot;&quot;fas fa-search&quot;&quot;&gt;&lt;/i&gt;&quot;,            &lt;/form&gt;,            &lt;script&gt;,&quot;                var curated2_page = 1,&quot;,&quot;                    curated2_totalPages = 1,&quot;,&quot;                    curated2_maxPages = [0][0] || 0, // 0 = no limit&quot;,&quot;                    curated2_pageSize = [5][0] || 150,&quot;,                    curated2_keepIfEmpty = [][0];,,                if (![collections[1]][0]) {,                    document.querySelector(&apos;.curated2.header&apos;).remove();,                } else {,                    document.querySelector(&apos;.curated2.header&apos;).innerHTML =,                        [collections[1]][0];,                },,                if ([false][0]) {,&quot;                    document.querySelector(&quot;&quot;.curated2.search&quot;&quot;).hidden =&quot;,                        false;,                };,,                document.querySelector(&apos;.curated2 form input&apos;).value =,                    getUrlParameter(&apos;query&apos;);,,                function curated2_toPage (pageNumber) {,                    var curated2_div =,&quot;                            document.querySelector(&apos;.curated2.container&apos;),&quot;,                        curated2_listDiv =,&quot;                            document.querySelector(&apos;.curated2.list&apos;),&quot;,                        curated2_pageSpan =,                            document.querySelector(,&quot;                                &apos;.curated2.paginator .page&apos;),&quot;,                        curated2_totalPagesSpan =,                            document.querySelector(,&quot;                                &apos;.curated2.paginator .total-pages&apos;),&quot;,                        height = curated2_listDiv.clientHeight;,,                    // Forces grid to keep previous height when emptied out,                    if (height &gt; 0) {,                        curated2_listDiv.style.height = height;,                    },,                    curated2_listDiv.innerHTML = &apos;&apos;;,                    beganLoading(&apos;.curated2.list&apos;);,,                    curated2_loadPage(,&quot;                        getUrlParameter(&apos;query&apos;),&quot;,&quot;                        curated2_pageSize,&quot;,&quot;                        pageNumber,&quot;,                        function (response) {,                            curated2_totalPages =,                                curated2_maxPages || response.pages;,                            curated2_totalPagesSpan.textContent =,                                curated2_totalPages;,,                            if (curated2_totalPages == 0 ||,                                (response.projects &amp;&amp; !response.projects[0]) ||,                                (response.collections &amp;&amp;,                                    !response.collections[0]) ||,                                (response.users &amp;&amp; !response.users[0]),                                // Until we fix the API this will do,                            ) {,                                if (!curated2_keepIfEmpty) {,                                    curated2_div.remove();,                                } else {,                                    doneLoading(&apos;.curated2.list&apos;);,                                },                                return;,                            } else if (curated2_totalPages == 1 &amp;&amp;,                                    !curated2_keepIfEmpty) {,                                document.querySelector(,                                    &apos;.curated2.paginator&apos;).remove();,                            },,&quot;                            curated2_onLoadPage(response,&quot;,                                curated2_listDiv);,,                            doneLoading(&apos;.curated2.list&apos;);,                        },                    );,,                    curated2_page = pageNumber;,                    curated2_pageSpan.textContent = pageNumber;,                };,,                function curated2_initGrid (callback) {,                    curated2_toPage(1);,                    if (callback) {,                        callback.call(this);,                    },                };,,            &lt;/script&gt;,        &lt;/div&gt;,&quot;&lt;nav class=&quot;&quot;curated2 paginator&quot;&quot;&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated2_toPage(1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated2_toPage(curated2_page - 5 &gt; 0 ? curated2_page - 5 : 1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated2_toPage(curated2_page - 1 &gt; 0 ? curated2_page - 1 : curated2_page);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;span class=&quot;&quot;page&quot;&quot;&gt;&lt;/span&gt; / &lt;span class=&quot;&quot;total-pages&quot;&quot;&gt;&lt;/span&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated2_toPage(curated2_page + 1 &lt; curated2_totalPages ? curated2_page + 1 : curated2_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated2_toPage(curated2_page + 5 &lt; curated2_totalPages ? curated2_page + 5 : curated2_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated2_toPage(curated2_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&lt;/nav&gt;,    &lt;/div&gt;,&quot;    &lt;div class=&quot;&quot;curated2 list pure-g&quot;&quot;&gt;&lt;/div&gt;&quot;,&lt;/div&gt;,&lt;script&gt;,    curated2_loadPage =,&quot;        function (query, pageSize, pageNumber, onSuccess) {&quot;,            SnapCloud.getCollectionProjects(,&quot;                &apos;snapcloud&apos;,&quot;,&quot;                pageNumber,&quot;,&quot;                pageSize,&quot;,&quot;                collections[1],&quot;,&quot;                onSuccess,&quot;,&quot;                genericError,&quot;,                true // withThumbnail,            );,        };,,    curated2_onLoadPage = onLoadPage;,    curated2_initGrid();,&lt;/script&gt;,,&lt;!--,    Any template that uses me needs to specify the following functions:,,    // Defines how to retrieve a particular page from the DB,    curated3_loadPage (,&quot;        query,      // search query&quot;,&quot;        pageSize,   // amount of elements per page&quot;,&quot;        pageNumber, // current page being requested&quot;,        onSuccess   // callback called when response comes back. Just leave as,&quot;                    // `onSuccess` unless doing something very specific, as&quot;,                    // this callback is defined by the search bar itself.,    ),,    // Defines how to load a particular page,    curated3_onLoadPage (,&quot;        response,      // response from the server&quot;,        targetElement  // HTML element where response should be rendered,    ),,&quot;    Once these functions have been defined, just call:&quot;,,    curated3_initGrid(callback);,--&gt;,&quot;&lt;div class=&quot;&quot;curated3 container&quot;&quot;&gt;&quot;,&quot;    &lt;h2 class=&quot;&quot;curated3 header&quot;&quot; localizable&gt;&lt;/h2&gt;&quot;,&quot;    &lt;div class=&quot;&quot;bar&quot;&quot;&gt;&quot;,&quot;        &lt;div hidden class=&quot;&quot;curated3 search&quot;&quot;&gt;&quot;,&quot;            &lt;form action=&quot;&quot;curated3&quot;&quot;&gt;&quot;,&quot;                &lt;input type=&quot;&quot;text&quot;&quot; name=&quot;&quot;query&quot;&quot;&gt;&quot;,&quot;                &lt;i class=&quot;&quot;fas fa-search&quot;&quot;&gt;&lt;/i&gt;&quot;,            &lt;/form&gt;,            &lt;script&gt;,&quot;                var curated3_page = 1,&quot;,&quot;                    curated3_totalPages = 1,&quot;,&quot;                    curated3_maxPages = [0][0] || 0, // 0 = no limit&quot;,&quot;                    curated3_pageSize = [5][0] || 150,&quot;,                    curated3_keepIfEmpty = [][0];,,                if (![collections[2]][0]) {,                    document.querySelector(&apos;.curated3.header&apos;).remove();,                } else {,                    document.querySelector(&apos;.curated3.header&apos;).innerHTML =,                        [collections[2]][0];,                },,                if ([false][0]) {,&quot;                    document.querySelector(&quot;&quot;.curated3.search&quot;&quot;).hidden =&quot;,                        false;,                };,,                document.querySelector(&apos;.curated3 form input&apos;).value =,                    getUrlParameter(&apos;query&apos;);,,                function curated3_toPage (pageNumber) {,                    var curated3_div =,&quot;                            document.querySelector(&apos;.curated3.container&apos;),&quot;,                        curated3_listDiv =,&quot;                            document.querySelector(&apos;.curated3.list&apos;),&quot;,                        curated3_pageSpan =,                            document.querySelector(,&quot;                                &apos;.curated3.paginator .page&apos;),&quot;,                        curated3_totalPagesSpan =,                            document.querySelector(,&quot;                                &apos;.curated3.paginator .total-pages&apos;),&quot;,                        height = curated3_listDiv.clientHeight;,,                    // Forces grid to keep previous height when emptied out,                    if (height &gt; 0) {,                        curated3_listDiv.style.height = height;,                    },,                    curated3_listDiv.innerHTML = &apos;&apos;;,                    beganLoading(&apos;.curated3.list&apos;);,,                    curated3_loadPage(,&quot;                        getUrlParameter(&apos;query&apos;),&quot;,&quot;                        curated3_pageSize,&quot;,&quot;                        pageNumber,&quot;,                        function (response) {,                            curated3_totalPages =,                                curated3_maxPages || response.pages;,                            curated3_totalPagesSpan.textContent =,                                curated3_totalPages;,,                            if (curated3_totalPages == 0 ||,                                (response.projects &amp;&amp; !response.projects[0]) ||,                                (response.collections &amp;&amp;,                                    !response.collections[0]) ||,                                (response.users &amp;&amp; !response.users[0]),                                // Until we fix the API this will do,                            ) {,                                if (!curated3_keepIfEmpty) {,                                    curated3_div.remove();,                                } else {,                                    doneLoading(&apos;.curated3.list&apos;);,                                },                                return;,                            } else if (curated3_totalPages == 1 &amp;&amp;,                                    !curated3_keepIfEmpty) {,                                document.querySelector(,                                    &apos;.curated3.paginator&apos;).remove();,                            },,&quot;                            curated3_onLoadPage(response,&quot;,                                curated3_listDiv);,,                            doneLoading(&apos;.curated3.list&apos;);,                        },                    );,,                    curated3_page = pageNumber;,                    curated3_pageSpan.textContent = pageNumber;,                };,,                function curated3_initGrid (callback) {,                    curated3_toPage(1);,                    if (callback) {,                        callback.call(this);,                    },                };,,            &lt;/script&gt;,        &lt;/div&gt;,&quot;&lt;nav class=&quot;&quot;curated3 paginator&quot;&quot;&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated3_toPage(1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated3_toPage(curated3_page - 5 &gt; 0 ? curated3_page - 5 : 1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated3_toPage(curated3_page - 1 &gt; 0 ? curated3_page - 1 : curated3_page);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;span class=&quot;&quot;page&quot;&quot;&gt;&lt;/span&gt; / &lt;span class=&quot;&quot;total-pages&quot;&quot;&gt;&lt;/span&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated3_toPage(curated3_page + 1 &lt; curated3_totalPages ? curated3_page + 1 : curated3_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated3_toPage(curated3_page + 5 &lt; curated3_totalPages ? curated3_page + 5 : curated3_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;curated3_toPage(curated3_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&lt;/nav&gt;,    &lt;/div&gt;,&quot;    &lt;div class=&quot;&quot;curated3 list pure-g&quot;&quot;&gt;&lt;/div&gt;&quot;,&lt;/div&gt;,&lt;script&gt;,    curated3_loadPage =,&quot;        function (query, pageSize, pageNumber, onSuccess) {&quot;,            SnapCloud.getCollectionProjects(,&quot;                &apos;snapcloud&apos;,&quot;,&quot;                pageNumber,&quot;,&quot;                pageSize,&quot;,&quot;                collections[2],&quot;,&quot;                onSuccess,&quot;,&quot;                genericError,&quot;,                true // withThumbnail,            );,        };,,    curated3_onLoadPage = onLoadPage;,    curated3_initGrid();,&lt;/script&gt;,,&lt;!--,    Any template that uses me needs to specify the following functions:,,    // Defines how to retrieve a particular page from the DB,    latest_loadPage (,&quot;        query,      // search query&quot;,&quot;        pageSize,   // amount of elements per page&quot;,&quot;        pageNumber, // current page being requested&quot;,        onSuccess   // callback called when response comes back. Just leave as,&quot;                    // `onSuccess` unless doing something very specific, as&quot;,                    // this callback is defined by the search bar itself.,    ),,    // Defines how to load a particular page,    latest_onLoadPage (,&quot;        response,      // response from the server&quot;,        targetElement  // HTML element where response should be rendered,    ),,&quot;    Once these functions have been defined, just call:&quot;,,    latest_initGrid(callback);,--&gt;,&quot;&lt;div class=&quot;&quot;latest container&quot;&quot;&gt;&quot;,&quot;    &lt;h2 class=&quot;&quot;latest header&quot;&quot; localizable&gt;&lt;/h2&gt;&quot;,&quot;    &lt;div class=&quot;&quot;bar&quot;&quot;&gt;&quot;,&quot;        &lt;div hidden class=&quot;&quot;latest search&quot;&quot;&gt;&quot;,&quot;            &lt;form action=&quot;&quot;latest&quot;&quot;&gt;&quot;,&quot;                &lt;input type=&quot;&quot;text&quot;&quot; name=&quot;&quot;query&quot;&quot;&gt;&quot;,&quot;                &lt;i class=&quot;&quot;fas fa-search&quot;&quot;&gt;&lt;/i&gt;&quot;,            &lt;/form&gt;,            &lt;script&gt;,&quot;                var latest_page = 1,&quot;,&quot;                    latest_totalPages = 1,&quot;,&quot;                    latest_maxPages = [20][0] || 0, // 0 = no limit&quot;,&quot;                    latest_pageSize = [5][0] || 150,&quot;,                    latest_keepIfEmpty = [][0];,,                if (![&apos;Latest Projects&apos;][0]) {,                    document.querySelector(&apos;.latest.header&apos;).remove();,                } else {,                    document.querySelector(&apos;.latest.header&apos;).innerHTML =,                        [&apos;Latest Projects&apos;][0];,                },,                if ([false][0]) {,&quot;                    document.querySelector(&quot;&quot;.latest.search&quot;&quot;).hidden =&quot;,                        false;,                };,,                document.querySelector(&apos;.latest form input&apos;).value =,                    getUrlParameter(&apos;query&apos;);,,                function latest_toPage (pageNumber) {,                    var latest_div =,&quot;                            document.querySelector(&apos;.latest.container&apos;),&quot;,                        latest_listDiv =,&quot;                            document.querySelector(&apos;.latest.list&apos;),&quot;,                        latest_pageSpan =,                            document.querySelector(,&quot;                                &apos;.latest.paginator .page&apos;),&quot;,                        latest_totalPagesSpan =,                            document.querySelector(,&quot;                                &apos;.latest.paginator .total-pages&apos;),&quot;,                        height = latest_listDiv.clientHeight;,,                    // Forces grid to keep previous height when emptied out,                    if (height &gt; 0) {,                        latest_listDiv.style.height = height;,                    },,                    latest_listDiv.innerHTML = &apos;&apos;;,                    beganLoading(&apos;.latest.list&apos;);,,                    latest_loadPage(,&quot;                        getUrlParameter(&apos;query&apos;),&quot;,&quot;                        latest_pageSize,&quot;,&quot;                        pageNumber,&quot;,                        function (response) {,                            latest_totalPages =,                                latest_maxPages || response.pages;,                            latest_totalPagesSpan.textContent =,                                latest_totalPages;,,                            if (latest_totalPages == 0 ||,                                (response.projects &amp;&amp; !response.projects[0]) ||,                                (response.collections &amp;&amp;,                                    !response.collections[0]) ||,                                (response.users &amp;&amp; !response.users[0]),                                // Until we fix the API this will do,                            ) {,                                if (!latest_keepIfEmpty) {,                                    latest_div.remove();,                                } else {,                                    doneLoading(&apos;.latest.list&apos;);,                                },                                return;,                            } else if (latest_totalPages == 1 &amp;&amp;,                                    !latest_keepIfEmpty) {,                                document.querySelector(,                                    &apos;.latest.paginator&apos;).remove();,                            },,&quot;                            latest_onLoadPage(response,&quot;,                                latest_listDiv);,,                            doneLoading(&apos;.latest.list&apos;);,                        },                    );,,                    latest_page = pageNumber;,                    latest_pageSpan.textContent = pageNumber;,                };,,                function latest_initGrid (callback) {,                    latest_toPage(1);,                    if (callback) {,                        callback.call(this);,                    },                };,,            &lt;/script&gt;,        &lt;/div&gt;,&quot;&lt;nav class=&quot;&quot;latest paginator&quot;&quot;&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;latest_toPage(1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;latest_toPage(latest_page - 5 &gt; 0 ? latest_page - 5 : 1);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;latest_toPage(latest_page - 1 &gt; 0 ? latest_page - 1 : latest_page);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-left&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;span class=&quot;&quot;page&quot;&quot;&gt;&lt;/span&gt; / &lt;span class=&quot;&quot;total-pages&quot;&quot;&gt;&lt;/span&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;latest_toPage(latest_page + 1 &lt; latest_totalPages ? latest_page + 1 : latest_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;latest_toPage(latest_page + 5 &lt; latest_totalPages ? latest_page + 5 : latest_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-angle-double-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&quot;    &lt;a class=&quot;&quot;clickable&quot;&quot; onclick=&quot;&quot;latest_toPage(latest_totalPages);&quot;&quot;&gt;&lt;i class=&quot;&quot;fas fa-caret-right&quot;&quot;&gt;&lt;/i&gt;&lt;/a&gt;&quot;,&lt;/nav&gt;,    &lt;/div&gt;,&quot;    &lt;div class=&quot;&quot;latest list pure-g&quot;&quot;&gt;&lt;/div&gt;&quot;,&lt;/div&gt;,&lt;script&gt;,    latest_loadPage =,&quot;        function (query, pageSize, pageNumber, onSuccess) {&quot;,            SnapCloud.getPublishedProjectList(,&quot;                null, // no username&quot;,&quot;                pageNumber,&quot;,&quot;                pageSize,&quot;,&quot;                query,&quot;,&quot;                onSuccess,&quot;,&quot;                genericError,&quot;,                true // withThumbnail,            );,        };,,    latest_onLoadPage = onLoadPage;,,    latest_initGrid();,&lt;/script&gt;,,        &lt;/div&gt;,&quot;&lt;div id=&quot;&quot;footer&quot;&quot;&gt;&quot;,&quot;    &lt;div class=&quot;&quot;links pure-g&quot;&quot;&gt;&quot;,&quot;        &lt;div class=&quot;&quot;pure-u-1-5&quot;&quot;&gt;&quot;,            &lt;p&gt;&lt;h4 localizable&gt;About&lt;/h4&gt;&lt;/p&gt;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;about&quot;&quot;&gt;About Snap&lt;em&gt;!&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;blog&quot;&quot;&gt;Blog&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;credits&quot;&quot;&gt;Credits&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;requirements&quot;&quot;&gt;Technical Requirements&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;partners&quot;&quot;&gt;Partners&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;source&quot;&quot; &gt;Source Code&lt;/a&gt;&lt;/p&gt;&quot;,        &lt;/div&gt;,&quot;        &lt;div class=&quot;&quot;pure-u-1-5&quot;&quot;&gt;&quot;,            &lt;p&gt;&lt;h4 localizable&gt;Learning&lt;/h4&gt;&lt;/p&gt;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;examples&quot;&quot;&gt;Examples&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;snap/help/SnapManual.pdf&quot;&quot;&quot;,                &gt;Reference Manual&lt;/a&gt;&lt;/p&gt;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;materials&quot;&quot;&gt;Materials&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;bjc&quot;&quot;&gt;The Beauty and Joy of Computing&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;research&quot;&quot;&gt;Research&lt;/a&gt;&lt;/p&gt;&quot;,        &lt;/div&gt;,&quot;        &lt;div class=&quot;&quot;pure-u-1-5&quot;&quot;&gt;&quot;,            &lt;p&gt;&lt;h4 localizable&gt;Tools&lt;/h4&gt;&lt;/p&gt;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;offline&quot;&quot;&gt;Offline Version&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;extensions&quot;&quot;&gt;Extensions&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a href=&quot;&quot;snapp&quot;&quot;&gt;Snapp&lt;em&gt;!&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a href=&quot;&quot;snapinator&quot;&quot;&gt;Snapinator&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a href=&quot;&quot;https://smerge.org/&quot;&quot;&gt;Smerge&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a href=&quot;&quot;old_site/old-byob.html&quot;&quot;&gt;BYOB (old Snap&lt;em&gt;!&lt;/em&gt;)&lt;/a&gt;&lt;/p&gt;&quot;,        &lt;/div&gt;,&quot;        &lt;div class=&quot;&quot;pure-u-1-5&quot;&quot;&gt;&quot;,            &lt;p&gt;&lt;h4 localizable&gt;Support&lt;/h4&gt;&lt;/p&gt;,&quot;            &lt;p&gt;&lt;a localizable target=&quot;&quot;_blank&quot;&quot;&quot;,&quot;                href=&quot;&quot;https://forum.snap.berkeley.edu/&quot;&quot;&gt;Forum&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;contact&quot;&quot;&gt;Contact Us&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;mirrors&quot;&quot;&gt;Mirrors&lt;/a&gt;&lt;/p&gt;&quot;,        &lt;/div&gt;,&quot;        &lt;div class=&quot;&quot;pure-u-1-5&quot;&quot;&gt;&quot;,            &lt;p&gt;&lt;h4 localizable&gt;Legal&lt;/h4&gt;&lt;/p&gt;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;dmca&quot;&quot;&gt;DMCA&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;privacy&quot;&quot;&gt;Privacy&lt;/a&gt;&lt;/p&gt;&quot;,&quot;            &lt;p&gt;&lt;a localizable href=&quot;&quot;tos&quot;&quot;&gt;Terms of Service&lt;/a&gt;&lt;/p&gt;&quot;,        &lt;/div&gt;,    &lt;/div&gt;,&lt;/div&gt;,,&quot;        &lt;script src=&quot;&quot;libs/custom-alert.min.js&quot;&quot;&gt;&lt;/script&gt;&quot;,        &lt;script&gt;new customAlert();&lt;/script&gt;,,        &lt;script&gt;,        SnapCloud.genericError = genericError;,        document.querySelector(&apos;#top-bar .run&apos;).href = snapURL;,        if (!sessionStorage.username) {,            SnapCloud.initSession(,&quot;                function (username, role) {&quot;,                    sessionStorage.username = username;,                    sessionStorage.role = role;,                    initForUsername(username);,                },            );,        } else {,            initForUsername(sessionStorage.username);,        },,        function initForUsername (username) {,            if (username) {,                SnapCloud.username = username;,                document.querySelector(&apos;li.join&apos;).hidden = true;,                document.querySelector(&apos;li.sign-in&apos;).hidden = true;,                document.querySelector(&apos;li.user-menu&apos;).hidden = false;,                document.querySelector(&apos;a.my-public-projects&apos;).href =,                    &apos;user?user=&apos; + username;,&quot;                if (hasAnyOfRoles([&apos;admin&apos;, &apos;moderator&apos;, &apos;reviewer&apos;])) {&quot;,                    document.querySelector(&apos;.admin&apos;).hidden = false;,                },                fillVisitorFields();,                if (typeof Sentry !== &apos;undefined&apos;) {,                    Sentry.setUser({ username: sessionStorage.username });,                },            } else {,                document.querySelector(&apos;li.join&apos;).hidden = false;,                document.querySelector(&apos;li.sign-in&apos;).hidden = false;,                document.querySelector(&apos;li.user-menu&apos;).hidden = true;,            },            fillUsernameFields();,            fillVisitorFields();,            doneLoading();,        },,        // Share sessionStorage across tabs,        // http://blog.guya.net/2015/06/12/sharing-sessionstorage-between-tabs-for-secure-multi-tab-authentication/,        if (!sessionStorage.length) {,&quot;            localStorage.setItem(&apos;getSessionStorage&apos;, Date.now());&quot;,        };,&quot;        window.addEventListener(&apos;storage&apos;, function(event) {&quot;,            if (event.key == &apos;getSessionStorage&apos;) {,&quot;                localStorage.setItem(&apos;sessionStorage&apos;,&quot;,                    JSON.stringify(sessionStorage));,                localStorage.removeItem(&apos;sessionStorage&apos;);,            } else if (event.key == &apos;sessionStorage&apos; &amp;&amp; !sessionStorage.length) {,&quot;                var data = JSON.parse(event.newValue), value;&quot;,&quot;                for (key in data) { sessionStorage.setItem(key, data[key]); }&quot;,            },        });,        &lt;/script&gt;,&quot;        &lt;script src=&quot;&quot;libs/FileSaver.min.js&quot;&quot;&gt;&lt;/script&gt;&quot;,        &lt;!-- Exception Tracking --&gt;,        &lt;script&gt;,            function setupSentry() {,                    Sentry.init({,&quot;                    dsn:&quot;&quot;https://54ac5f8c0cb443aabfab8ced53cf879f@bugs.cs10.org/8&quot;&quot;,&quot;,                    integrations: [new Sentry.Integrations.BrowserTracing()],                });,,                if (sessionStorage &amp;&amp; sessionStorage.username) {,                    Sentry.setUser({ username: sessionStorage.username });,                } else {,                    Sentry.configureScope(scope =&gt; scope.setUser(null));,                },            },        &lt;/script&gt;,&quot;        &lt;script src=&apos;https://browser.sentry-cdn.com/6.12.0/bundle.tracing.min.js&apos; crossorigin=&quot;&quot;anonymous&quot;&quot; onload=&quot;&quot;setupSentry&quot;&quot;&gt;&lt;/script&gt;&quot;,    &lt;/body&gt;,&lt;/html&gt;,</list></variable><variable name="номер команди"><l>0</l></variable><variable name="повноекраний режим"><bool>false</bool></variable></variables></scene></scenes></project><media name="java перегляд коду 1.0" app="Snap! 7, https://snap.berkeley.edu" version="2"></media></snapdata>