summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rwxr-xr-xFunnyQuestion.conf.php.sh25
-rw-r--r--extensions/ArchInterWiki.sql109
-rw-r--r--extensions/FluxBBAuthPlugin.php153
-rw-r--r--extensions/TimedMediaHandler/.gitignore6
-rw-r--r--extensions/TimedMediaHandler/.gitreview5
-rw-r--r--extensions/TimedMediaHandler/.jscsrc3
-rw-r--r--extensions/TimedMediaHandler/.jshintignore1
-rw-r--r--extensions/TimedMediaHandler/.jshintrc44
-rw-r--r--extensions/TimedMediaHandler/ApiQueryVideoInfo.php268
-rw-r--r--extensions/TimedMediaHandler/ApiTranscodeReset.php184
-rw-r--r--extensions/TimedMediaHandler/ApiTranscodeStatus.php79
-rw-r--r--extensions/TimedMediaHandler/COPYING342
-rw-r--r--extensions/TimedMediaHandler/Gruntfile.js34
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.config.php194
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.loader.js69
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.php103
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/LightDoodleskin.swfbin0 -> 190545 bytes
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/README20
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/config.xml9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/expressInstall.swfbin0 -> 727 bytes
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/kdp3.3.5.27.swfbin0 -> 272405 bytes
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/kdp3.swfbin0 -> 256262 bytes
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/skin.swfbin0 -> 67435 bytes
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING21
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-ogg.txt28
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-opus.txt44
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-theora.txt28
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-vorbis.txt28
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/dynamicaudio.swfbin0 -> 1865 bytes
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-decoder-audio-opus.js24
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-decoder-audio-vorbis.js23
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-decoder-video-theora.js22
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-demuxer-ogg.js23
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-support.js201
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-version.js1
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-worker-audio.js317
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-worker-video.js317
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv.js3966
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/readme.md237
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/af.json23
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/aln.json34
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ar.json59
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/arc.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ast.json89
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/az.json10
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ba.json16
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/be-tarask.json86
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/bg.json12
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/bho.json13
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/bn.json74
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/br.json76
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/bs.json12
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ca.json46
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ce.json15
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/cs.json68
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/cu.json9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/de.json98
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/diq.json70
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/dsb.json83
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/el.json77
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/en-gb.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/en.json95
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/eo.json27
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/es.json99
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/et.json48
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/eu.json17
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/fa.json87
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/fi.json41
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/fr.json97
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/frp.json76
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/fy.json9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ga.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/gl.json96
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/grc.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/gsw.json80
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/he.json83
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/hsb.json83
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/hu.json75
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ia.json79
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/id.json76
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ilo.json16
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/is.json64
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/it.json92
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ja.json84
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ka.json73
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ko.json83
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ksh.json84
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ku-latn.json10
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ky.json9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/lb.json55
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/lt.json90
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/lv.json60
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/mk.json95
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ml.json96
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ms.json82
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/mt.json23
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/nb.json92
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/nds-nl.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/nl.json85
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/nn.json84
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/oc.json50
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/pam.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/pdc.json9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/pl.json81
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/pms.json80
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ps.json21
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/pt-br.json86
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/pt.json101
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/qqq.json50
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/qu.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ro.json83
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/roa-tara.json33
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ru.json100
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/rue.json9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/si.json78
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/sk.json6
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/sr-ec.json78
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/sr-el.json77
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/sv.json96
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ta.json40
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/te.json17
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/tet.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/tl.json83
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/tr.json85
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/tzm.json11
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/uk.json92
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/ur.json12
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/vec.json38
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/vep.json12
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/vi.json77
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/yi.json10
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/zh-hans.json102
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/i18n/zh-hant.json86
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/blackvideo.mp4bin0 -> 4575 bytes
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayer.js2760
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerGeneric.js36
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerIEWebMPrompt.css18
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerIEWebMPrompt.js46
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerImageOverlay.js307
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerKplayer.js485
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerNative.js1088
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerOgvJs.js222
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerVLCApp.js101
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerVlc.js358
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.EmbedTypes.js360
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.MediaElement.js491
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.MediaPlayer.js85
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.MediaPlayers.js195
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.MediaSource.js490
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.processEmbedPlayers.js353
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/skins/EmbedPlayer.css166
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/skins/kskin/PlayerSkinKskin.css484
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/skins/kskin/images/kaltura_open_source_video_platform.gifbin0 -> 3368 bytes
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/skins/kskin/images/kaltura_open_source_video_platform.pngbin0 -> 302 bytes
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/skins/kskin/images/ksprite.pngbin0 -> 13520 bytes
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/skins/kskin/mw.PlayerSkinKskin.js394
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/skins/mvpcf/PlayerSkinMvpcf.css194
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/skins/mvpcf/images/player_big_play_button.pngbin0 -> 2935 bytes
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/skins/mvpcf/mw.PlayerSkinMvpcf.js7
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/skins/mw.PlayerControlBuilder.js2721
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/tests/Player_Audio.html16
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/tests/Player_DynamicEmbed.html24
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/tests/Player_IncludeJQuery.html27
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/tests/Player_Native_Bindings.html129
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/tests/Player_Seek.html35
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/tests/Player_ServerSeek.html35
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/tests/Player_ServerSideSeek.html14
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/tests/Player_Sources.html24
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/tests/Player_Themable.html71
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/TimedText.config.php31
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/TimedText.loader.js52
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/TimedText.php21
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/af.json10
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ar.json14
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ast.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/be-tarask.json28
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/bg.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/bn.json15
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/br.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/bs.json10
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ca.json9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ce.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/cs.json16
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/cy.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/de-formal.json7
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/de.json28
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/diq.json13
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/dsb.json27
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/el.json24
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/en.json25
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/eo.json7
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/es.json30
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/et.json18
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/eu.json10
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/fa.json30
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/fi.json16
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/fr.json29
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/frp.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/fy.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/gl.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/gsw.json27
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/he.json28
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/hsb.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/hu.json23
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ia.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/id.json27
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/it.json29
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ja.json29
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ka.json24
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ko.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ksh.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/lb.json23
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/lt.json9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/lv.json9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/mk.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ml.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ms.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/nb.json25
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/nl.json26
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/nn.json14
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/pdc.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/pfl.json7
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/pl.json29
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/pms.json27
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ps.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/pt-br.json30
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/pt.json30
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/qqq.json19
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ro.json27
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/roa-tara.json14
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ru.json29
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/rue.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/si.json25
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/sl.json8
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/so.json7
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/sr-ec.json15
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/sr-el.json14
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/sv.json27
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ta.json16
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/te.json9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/tl.json27
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/tr.json11
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/uk.json27
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/ur.json9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/vi.json18
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/wa.json15
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/yi.json9
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/zh-hans.json30
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/i18n/zh-hant.json29
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/resources/mw.TextSource.js504
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/resources/mw.TimedText.js1313
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/TimedText/resources/mw.style.TimedText.css18
-rw-r--r--extensions/TimedMediaHandler/README127
-rw-r--r--extensions/TimedMediaHandler/SpecialOrphanedTimedText.php258
-rw-r--r--extensions/TimedMediaHandler/SpecialTimedMediaHandler.php235
-rw-r--r--extensions/TimedMediaHandler/TimedMediaHandler.hooks.php485
-rw-r--r--extensions/TimedMediaHandler/TimedMediaHandler.i18n.alias.php76
-rw-r--r--extensions/TimedMediaHandler/TimedMediaHandler.i18n.magic.php86
-rw-r--r--extensions/TimedMediaHandler/TimedMediaHandler.php306
-rw-r--r--extensions/TimedMediaHandler/TimedMediaHandler.sql19
-rw-r--r--extensions/TimedMediaHandler/TimedMediaHandler_body.php483
-rw-r--r--extensions/TimedMediaHandler/TimedMediaIframeOutput.php152
-rw-r--r--extensions/TimedMediaHandler/TimedMediaThumbnail.php240
-rw-r--r--extensions/TimedMediaHandler/TimedMediaTransformOutput.php486
-rw-r--r--extensions/TimedMediaHandler/TimedTextPage.php187
-rw-r--r--extensions/TimedMediaHandler/TranscodeStatusTable.php236
-rw-r--r--extensions/TimedMediaHandler/WebVideoTranscode/WebVideoTranscode.php1192
-rw-r--r--extensions/TimedMediaHandler/WebVideoTranscode/WebVideoTranscodeJob.php965
-rw-r--r--extensions/TimedMediaHandler/archives/transcode_name_key.sql3
-rw-r--r--extensions/TimedMediaHandler/composer.json10
-rw-r--r--extensions/TimedMediaHandler/gitinfo.json1
-rw-r--r--extensions/TimedMediaHandler/handlers/FLACHandler/FLACHandler.php74
-rw-r--r--extensions/TimedMediaHandler/handlers/ID3Handler/ID3Handler.php107
-rw-r--r--extensions/TimedMediaHandler/handlers/Mp4Handler/Mp4Handler.php139
-rw-r--r--extensions/TimedMediaHandler/handlers/OggHandler/File_Ogg/File/Ogg.php631
-rw-r--r--extensions/TimedMediaHandler/handlers/OggHandler/File_Ogg/File/Ogg/Bitstream.php125
-rw-r--r--extensions/TimedMediaHandler/handlers/OggHandler/File_Ogg/File/Ogg/Flac.php133
-rw-r--r--extensions/TimedMediaHandler/handlers/OggHandler/File_Ogg/File/Ogg/Media.php262
-rw-r--r--extensions/TimedMediaHandler/handlers/OggHandler/File_Ogg/File/Ogg/Opus.php126
-rw-r--r--extensions/TimedMediaHandler/handlers/OggHandler/File_Ogg/File/Ogg/Speex.php122
-rw-r--r--extensions/TimedMediaHandler/handlers/OggHandler/File_Ogg/File/Ogg/Theora.php240
-rw-r--r--extensions/TimedMediaHandler/handlers/OggHandler/File_Ogg/File/Ogg/Vorbis.php790
-rw-r--r--extensions/TimedMediaHandler/handlers/OggHandler/File_Ogg/File/README2
-rw-r--r--extensions/TimedMediaHandler/handlers/OggHandler/OggException.php4
-rw-r--r--extensions/TimedMediaHandler/handlers/OggHandler/OggHandler.php379
-rw-r--r--extensions/TimedMediaHandler/handlers/TextHandler/TextHandler.php305
-rw-r--r--extensions/TimedMediaHandler/handlers/WAVHandler/WAVHandler.php87
-rw-r--r--extensions/TimedMediaHandler/handlers/WebMHandler/WebMHandler.php175
-rw-r--r--extensions/TimedMediaHandler/i18n/ady-cyrl.json11
-rw-r--r--extensions/TimedMediaHandler/i18n/aeb-latn.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/af.json25
-rw-r--r--extensions/TimedMediaHandler/i18n/akz.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/aln.json23
-rw-r--r--extensions/TimedMediaHandler/i18n/an.json20
-rw-r--r--extensions/TimedMediaHandler/i18n/ang.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/ar.json67
-rw-r--r--extensions/TimedMediaHandler/i18n/arc.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/arq.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/arz.json24
-rw-r--r--extensions/TimedMediaHandler/i18n/as.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/ast.json122
-rw-r--r--extensions/TimedMediaHandler/i18n/av.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/avk.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/awa.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/az.json13
-rw-r--r--extensions/TimedMediaHandler/i18n/azb.json11
-rw-r--r--extensions/TimedMediaHandler/i18n/ba.json14
-rw-r--r--extensions/TimedMediaHandler/i18n/bcc.json24
-rw-r--r--extensions/TimedMediaHandler/i18n/bcl.json90
-rw-r--r--extensions/TimedMediaHandler/i18n/be-tarask.json71
-rw-r--r--extensions/TimedMediaHandler/i18n/be.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/bg.json24
-rw-r--r--extensions/TimedMediaHandler/i18n/bgn.json11
-rw-r--r--extensions/TimedMediaHandler/i18n/bho.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/bn.json48
-rw-r--r--extensions/TimedMediaHandler/i18n/br.json51
-rw-r--r--extensions/TimedMediaHandler/i18n/bs.json31
-rw-r--r--extensions/TimedMediaHandler/i18n/ca.json44
-rw-r--r--extensions/TimedMediaHandler/i18n/ce.json85
-rw-r--r--extensions/TimedMediaHandler/i18n/ckb.json14
-rw-r--r--extensions/TimedMediaHandler/i18n/cs.json75
-rw-r--r--extensions/TimedMediaHandler/i18n/cu.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/cv.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/cy.json50
-rw-r--r--extensions/TimedMediaHandler/i18n/da.json100
-rw-r--r--extensions/TimedMediaHandler/i18n/de-formal.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/de.json130
-rw-r--r--extensions/TimedMediaHandler/i18n/din.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/diq.json41
-rw-r--r--extensions/TimedMediaHandler/i18n/dsb.json30
-rw-r--r--extensions/TimedMediaHandler/i18n/dty.json12
-rw-r--r--extensions/TimedMediaHandler/i18n/ee.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/el.json28
-rw-r--r--extensions/TimedMediaHandler/i18n/en-gb.json12
-rw-r--r--extensions/TimedMediaHandler/i18n/en.json154
-rw-r--r--extensions/TimedMediaHandler/i18n/eo.json26
-rw-r--r--extensions/TimedMediaHandler/i18n/es.json117
-rw-r--r--extensions/TimedMediaHandler/i18n/et.json122
-rw-r--r--extensions/TimedMediaHandler/i18n/eu.json29
-rw-r--r--extensions/TimedMediaHandler/i18n/fa.json123
-rw-r--r--extensions/TimedMediaHandler/i18n/fi.json78
-rw-r--r--extensions/TimedMediaHandler/i18n/fo.json12
-rw-r--r--extensions/TimedMediaHandler/i18n/fr.json150
-rw-r--r--extensions/TimedMediaHandler/i18n/frp.json38
-rw-r--r--extensions/TimedMediaHandler/i18n/frr.json11
-rw-r--r--extensions/TimedMediaHandler/i18n/fur.json23
-rw-r--r--extensions/TimedMediaHandler/i18n/fy.json16
-rw-r--r--extensions/TimedMediaHandler/i18n/ga.json13
-rw-r--r--extensions/TimedMediaHandler/i18n/gl.json125
-rw-r--r--extensions/TimedMediaHandler/i18n/gom-deva.json12
-rw-r--r--extensions/TimedMediaHandler/i18n/gom-latn.json11
-rw-r--r--extensions/TimedMediaHandler/i18n/grc.json13
-rw-r--r--extensions/TimedMediaHandler/i18n/gsw.json62
-rw-r--r--extensions/TimedMediaHandler/i18n/gu.json23
-rw-r--r--extensions/TimedMediaHandler/i18n/gv.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/he.json125
-rw-r--r--extensions/TimedMediaHandler/i18n/hi.json39
-rw-r--r--extensions/TimedMediaHandler/i18n/hr.json31
-rw-r--r--extensions/TimedMediaHandler/i18n/hrx.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/hsb.json83
-rw-r--r--extensions/TimedMediaHandler/i18n/ht.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/hu.json37
-rw-r--r--extensions/TimedMediaHandler/i18n/hy.json11
-rw-r--r--extensions/TimedMediaHandler/i18n/ia.json92
-rw-r--r--extensions/TimedMediaHandler/i18n/id.json97
-rw-r--r--extensions/TimedMediaHandler/i18n/ilo.json89
-rw-r--r--extensions/TimedMediaHandler/i18n/io.json11
-rw-r--r--extensions/TimedMediaHandler/i18n/is.json60
-rw-r--r--extensions/TimedMediaHandler/i18n/it.json108
-rw-r--r--extensions/TimedMediaHandler/i18n/ja.json91
-rw-r--r--extensions/TimedMediaHandler/i18n/jut.json21
-rw-r--r--extensions/TimedMediaHandler/i18n/jv.json65
-rw-r--r--extensions/TimedMediaHandler/i18n/ka.json89
-rw-r--r--extensions/TimedMediaHandler/i18n/khw.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/kk-arab.json15
-rw-r--r--extensions/TimedMediaHandler/i18n/kk-cyrl.json56
-rw-r--r--extensions/TimedMediaHandler/i18n/kk-latn.json15
-rw-r--r--extensions/TimedMediaHandler/i18n/km.json24
-rw-r--r--extensions/TimedMediaHandler/i18n/kn.json17
-rw-r--r--extensions/TimedMediaHandler/i18n/ko.json104
-rw-r--r--extensions/TimedMediaHandler/i18n/krc.json11
-rw-r--r--extensions/TimedMediaHandler/i18n/krj.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/ksh.json81
-rw-r--r--extensions/TimedMediaHandler/i18n/ku-latn.json14
-rw-r--r--extensions/TimedMediaHandler/i18n/ky.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/la.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/lad.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/lb.json73
-rw-r--r--extensions/TimedMediaHandler/i18n/lfn.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/li.json21
-rw-r--r--extensions/TimedMediaHandler/i18n/lrc.json44
-rw-r--r--extensions/TimedMediaHandler/i18n/lt.json123
-rw-r--r--extensions/TimedMediaHandler/i18n/luz.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/lv.json22
-rw-r--r--extensions/TimedMediaHandler/i18n/mai.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/mg.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/min.json30
-rw-r--r--extensions/TimedMediaHandler/i18n/mk.json144
-rw-r--r--extensions/TimedMediaHandler/i18n/ml.json124
-rw-r--r--extensions/TimedMediaHandler/i18n/mr.json28
-rw-r--r--extensions/TimedMediaHandler/i18n/ms.json97
-rw-r--r--extensions/TimedMediaHandler/i18n/mt.json11
-rw-r--r--extensions/TimedMediaHandler/i18n/myv.json13
-rw-r--r--extensions/TimedMediaHandler/i18n/mzn.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/nah.json12
-rw-r--r--extensions/TimedMediaHandler/i18n/nap.json122
-rw-r--r--extensions/TimedMediaHandler/i18n/nb.json105
-rw-r--r--extensions/TimedMediaHandler/i18n/nds-nl.json24
-rw-r--r--extensions/TimedMediaHandler/i18n/nds.json20
-rw-r--r--extensions/TimedMediaHandler/i18n/ne.json25
-rw-r--r--extensions/TimedMediaHandler/i18n/nl.json108
-rw-r--r--extensions/TimedMediaHandler/i18n/nn.json41
-rw-r--r--extensions/TimedMediaHandler/i18n/oc.json31
-rw-r--r--extensions/TimedMediaHandler/i18n/olo.json18
-rw-r--r--extensions/TimedMediaHandler/i18n/or.json85
-rw-r--r--extensions/TimedMediaHandler/i18n/os.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/pa.json13
-rw-r--r--extensions/TimedMediaHandler/i18n/pdc.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/pfl.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/pl.json101
-rw-r--r--extensions/TimedMediaHandler/i18n/pms.json96
-rw-r--r--extensions/TimedMediaHandler/i18n/pnb.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/ps.json29
-rw-r--r--extensions/TimedMediaHandler/i18n/pt-br.json40
-rw-r--r--extensions/TimedMediaHandler/i18n/pt.json102
-rw-r--r--extensions/TimedMediaHandler/i18n/qqq.json172
-rw-r--r--extensions/TimedMediaHandler/i18n/qu.json14
-rw-r--r--extensions/TimedMediaHandler/i18n/ro.json93
-rw-r--r--extensions/TimedMediaHandler/i18n/roa-tara.json91
-rw-r--r--extensions/TimedMediaHandler/i18n/ru.json111
-rw-r--r--extensions/TimedMediaHandler/i18n/rue.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/sa.json19
-rw-r--r--extensions/TimedMediaHandler/i18n/sah.json23
-rw-r--r--extensions/TimedMediaHandler/i18n/scn.json11
-rw-r--r--extensions/TimedMediaHandler/i18n/sco.json16
-rw-r--r--extensions/TimedMediaHandler/i18n/sdh.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/sgs.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/shn.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/shy-latn.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/si.json85
-rw-r--r--extensions/TimedMediaHandler/i18n/sk.json25
-rw-r--r--extensions/TimedMediaHandler/i18n/sl.json96
-rw-r--r--extensions/TimedMediaHandler/i18n/sq.json20
-rw-r--r--extensions/TimedMediaHandler/i18n/sr-ec.json55
-rw-r--r--extensions/TimedMediaHandler/i18n/sr-el.json53
-rw-r--r--extensions/TimedMediaHandler/i18n/stq.json20
-rw-r--r--extensions/TimedMediaHandler/i18n/su.json19
-rw-r--r--extensions/TimedMediaHandler/i18n/sv.json125
-rw-r--r--extensions/TimedMediaHandler/i18n/sw.json14
-rw-r--r--extensions/TimedMediaHandler/i18n/szl.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/ta.json32
-rw-r--r--extensions/TimedMediaHandler/i18n/tcy.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/te.json37
-rw-r--r--extensions/TimedMediaHandler/i18n/tg-cyrl.json20
-rw-r--r--extensions/TimedMediaHandler/i18n/tg-latn.json20
-rw-r--r--extensions/TimedMediaHandler/i18n/tk.json20
-rw-r--r--extensions/TimedMediaHandler/i18n/tl.json84
-rw-r--r--extensions/TimedMediaHandler/i18n/tly.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/tr.json80
-rw-r--r--extensions/TimedMediaHandler/i18n/ts.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/tt-cyrl.json17
-rw-r--r--extensions/TimedMediaHandler/i18n/tzm.json8
-rw-r--r--extensions/TimedMediaHandler/i18n/ug-arab.json13
-rw-r--r--extensions/TimedMediaHandler/i18n/uk.json134
-rw-r--r--extensions/TimedMediaHandler/i18n/ur.json21
-rw-r--r--extensions/TimedMediaHandler/i18n/vec.json85
-rw-r--r--extensions/TimedMediaHandler/i18n/vep.json11
-rw-r--r--extensions/TimedMediaHandler/i18n/vi.json130
-rw-r--r--extensions/TimedMediaHandler/i18n/vo.json14
-rw-r--r--extensions/TimedMediaHandler/i18n/vro.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/wa.json4
-rw-r--r--extensions/TimedMediaHandler/i18n/war.json9
-rw-r--r--extensions/TimedMediaHandler/i18n/wuu.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/xmf.json10
-rw-r--r--extensions/TimedMediaHandler/i18n/yi.json15
-rw-r--r--extensions/TimedMediaHandler/i18n/yue.json24
-rw-r--r--extensions/TimedMediaHandler/i18n/zh-hans.json137
-rw-r--r--extensions/TimedMediaHandler/i18n/zh-hant.json119
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/getid3.lib.php1346
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/getid3.php1776
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/license.txt340
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/module.audio-video.matroska.php1771
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/module.audio-video.mpeg.php296
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/module.audio-video.quicktime.php2192
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/module.audio-video.riff.php2435
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/module.audio.ac3.php473
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/module.audio.dts.php291
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/module.audio.flac.php442
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/module.audio.mp3.php2009
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/module.audio.ogg.php671
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/module.tag.id3v1.php359
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/module.tag.id3v2.php3414
-rw-r--r--extensions/TimedMediaHandler/libs/getid3/readme.txt591
-rw-r--r--extensions/TimedMediaHandler/maintenance/cleanupTranscodes.php46
-rw-r--r--extensions/TimedMediaHandler/maintenance/moveTranscoded.php56
-rw-r--r--extensions/TimedMediaHandler/maintenance/resetTranscodes.php41
-rw-r--r--extensions/TimedMediaHandler/maintenance/retryTranscodes.php55
-rw-r--r--extensions/TimedMediaHandler/mwEmbedLoader.php24
-rw-r--r--extensions/TimedMediaHandler/package.json14
-rw-r--r--extensions/TimedMediaHandler/resources/PopUpThumbVideo.css29
-rw-r--r--extensions/TimedMediaHandler/resources/download_sprite.pngbin0 -> 806 bytes
-rw-r--r--extensions/TimedMediaHandler/resources/embedPlayerIframe.css7
-rw-r--r--extensions/TimedMediaHandler/resources/ext.tmh.OgvJsSupport.js67
-rw-r--r--extensions/TimedMediaHandler/resources/ext.tmh.TimedTextSelector.js8
-rw-r--r--extensions/TimedMediaHandler/resources/ext.tmh.transcodetable.js90
-rw-r--r--extensions/TimedMediaHandler/resources/mw.MediaWikiPlayer.loader.js8
-rw-r--r--extensions/TimedMediaHandler/resources/mw.MediaWikiPlayerSupport.js380
-rw-r--r--extensions/TimedMediaHandler/resources/mw.PopUpThumbVideo.js44
-rw-r--r--extensions/TimedMediaHandler/resources/mw.TMHGalleryHook.js46
-rw-r--r--extensions/TimedMediaHandler/resources/player_big_play_button.pngbin0 -> 987 bytes
-rw-r--r--extensions/TimedMediaHandler/resources/player_big_play_button_hover.pngbin0 -> 1022 bytes
-rw-r--r--extensions/TimedMediaHandler/resources/transcodeTable.css14
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/ApiTestCaseVideoUpload.php130
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/README11
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/TestApiUploadVideo.php34
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/TestOggHandler.php67
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/TestTimeParsing.php42
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/TestTimedMediaHandler.php47
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/TestTimedMediaTransformOutput.php142
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/TestVideoThumbnail.php80
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/TestVideoTranscode.php121
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/TestWebMHandler.php52
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/media/README38
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/media/VP9-tractor.webmbin0 -> 179277 bytes
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/media/bear-vp9-opus.webmbin0 -> 101414 bytes
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/media/broken-file.oggbin0 -> 11424 bytes
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/media/doubleTag.ogabin0 -> 11423 bytes
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/media/shuttle10seconds.1080x608.webmbin0 -> 699018 bytes
-rw-r--r--extensions/TimedMediaHandler/tests/phpunit/media/test5seconds.electricsheep.300x400.ogvbin0 -> 299761 bytes
-rw-r--r--extensions/TimedMediaHandler/version5
-rw-r--r--robots.txt8
-rw-r--r--skins/ArchLinux/ArchLinuxTemplate.php31
-rw-r--r--skins/ArchLinux/archlogo.pngbin3254 -> 5282 bytes
-rw-r--r--skins/ArchLinux/archnavbar.css9
-rw-r--r--skins/ArchLinux/favicon.icobin501 -> 1150 bytes
-rw-r--r--skins/ArchLinux/skin.json4
537 files changed, 64465 insertions, 289 deletions
diff --git a/.gitignore b/.gitignore
index cd8c3aed..e5012ef6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,3 +33,7 @@ images/*.*
images/cache
cache/html/*
cache/*.lesscache
+
+.error.log
+/FunnyQuestion.conf.php
+/tmp
diff --git a/FunnyQuestion.conf.php.sh b/FunnyQuestion.conf.php.sh
new file mode 100755
index 00000000..1ca39d1a
--- /dev/null
+++ b/FunnyQuestion.conf.php.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+
+IP=$(realpath "$(dirname "$0")")
+
+cmd="date -u +%V\`uname\`|sha256sum|sed 's/\W//g'"
+answer="$(eval "$cmd")"
+
+declare -A prompts
+prompts[en]='What is the output of the command <tt>%s</tt>?'
+
+{
+ echo '<?php'
+ echo -n '$wgFunnyQuestions = array('
+
+ nl='\n'
+ for lang in "${!prompts[@]}"; do
+ printf "${nl}\t\"${lang}\" => array(\"${prompts[$lang]}\" => \"%s\")" "$cmd" "$answer"
+ nl=',\n'
+ done
+
+ echo
+ echo ');'
+} > "$IP/FunnyQuestion.conf.php"
+
+touch "$IP/extensions/FunnyQuestion/FunnyQuestion.i18n.php"
diff --git a/extensions/ArchInterWiki.sql b/extensions/ArchInterWiki.sql
deleted file mode 100644
index 908e5bbe..00000000
--- a/extensions/ArchInterWiki.sql
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * This script is intended to populate the interwiki table with entries useful
- * for ArchWiki.
- *
- * Before deleting interwiki links, remove them from the articles.
- *
- * In order to find all the interlanguage links of a particular language, you
- * need to do an API search, e.g.
- * https://wiki.archlinux.org/api.php?action=query&list=langbacklinks&lbllimit=max&lblprop=lltitle&lbllang=de
- * This example uses German ('de'), but for the other languages it is enough to
- * change the value of 'lbllang' to the needed language tag.
- *
- * Interwiki links using a specific prefix can be found similarly, for example:
- * https://wiki.archlinux.org/api.php?action=query&list=iwbacklinks&iwbllimit=max&iwblprop=iwtitle&iwblprefix=wikipedia
- * This example uses 'wikipedia', but for other interwiki prefixes it is enough
- * to change the value of 'iwblprefix' accordingly.
- *
- * Note that API queries are always limited, so if given interwiki prefix has
- * more than 500 (or 5000 if you have the 'apihighlimits' right) backlinks, it
- * will be necessary to continue the search as described in
- * https://www.mediawiki.org/wiki/API:Query#Continuing_queries
- *
- * Also note that such queries do not find (all) interwiki redirects, if
- * present. A search like this should do the job instead:
- * https://wiki.archlinux.org/index.php?title=Special%3ASearch&profile=advanced&limit=500&offset=0&search=%22redirect%20%5B%5Bde%3A%22&fulltext=Search&ns0=1&ns1=1&ns2=1&ns3=1&ns4=1&ns5=1&ns6=1&ns7=1&ns8=1&ns9=1&ns10=1&ns11=1&ns12=1&ns13=1&ns14=1&ns15=1&redirs=1&profile=advanced
- */
-
--- Clear the table, we don't want the entries from maintenance/interwiki.sql
-DELETE FROM interwiki;
-
--- Arch's interlanguage prefixes
-INSERT INTO
- interwiki (iw_prefix, iw_url, iw_local, iw_trans)
-VALUES
- ('ar', 'https://wiki.archlinux.org/index.php/$1_(%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9)', 1, 0),
- ('bg', 'https://wiki.archlinux.org/index.php/$1_(%D0%91%D1%8A%D0%BB%D0%B3%D0%B0%D1%80%D1%81%D0%BA%D0%B8)', 1, 0),
- ('cs', 'https://wiki.archlinux.org/index.php/$1_(%C4%8Cesky)', 1, 0),
- ('da', 'https://wiki.archlinux.org/index.php/$1_(Dansk)', 1, 0),
- ('de', 'https://wiki.archlinux.de/title/$1', 1, 0),
- ('el', 'https://wiki.archlinux.org/index.php/$1_(%CE%95%CE%BB%CE%BB%CE%B7%CE%BD%CE%B9%CE%BA%CE%AC)', 1, 0),
- ('en', 'https://wiki.archlinux.org/index.php/$1', 1, 0),
- ('es', 'https://wiki.archlinux.org/index.php/$1_(Espa%C3%B1ol)', 1, 0),
- ('fa', 'http://wiki.archusers.ir/index.php/$1', 1, 0),
- ('fi', 'http://www.archlinux.fi/wiki/$1', 1, 0),
- ('fr', 'http://wiki.archlinux.fr/$1', 1, 0),
- ('he', 'https://wiki.archlinux.org/index.php/$1_(%D7%A2%D7%91%D7%A8%D7%99%D7%AA)', 1, 0),
- ('hr', 'https://wiki.archlinux.org/index.php/$1_(Hrvatski)', 1, 0),
- ('hu', 'https://wiki.archlinux.org/index.php/$1_(Magyar)', 1, 0),
- ('id', 'https://wiki.archlinux.org/index.php/$1_(Indonesia)', 1, 0),
- ('it', 'https://wiki.archlinux.org/index.php/$1_(Italiano)', 1, 0),
- ('ja', 'https://wiki.archlinuxjp.org/index.php/$1', 1, 0),
- ('ko', 'https://wiki.archlinux.org/index.php/$1_(%ED%95%9C%EA%B5%AD%EC%96%B4)', 1, 0),
- ('lt', 'https://wiki.archlinux.org/index.php/$1_(Lietuvi%C5%A1kai)', 1, 0),
- ('nl', 'https://wiki.archlinux.org/index.php/$1_(Nederlands)', 1, 0),
- ('pl', 'https://wiki.archlinux.org/index.php/$1_(Polski)', 1, 0),
- ('pt', 'https://wiki.archlinux.org/index.php/$1_(Portugu%C3%AAs)', 1, 0),
- ('ro', 'http://wiki.archlinux.ro/index.php/$1', 1, 0),
- ('ru', 'https://wiki.archlinux.org/index.php/$1_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)', 1, 0),
- ('sk', 'https://wiki.archlinux.org/index.php/$1_(Slovensk%C3%BD)', 1, 0),
- ('sr', 'https://wiki.archlinux.org/index.php/$1_(%D0%A1%D1%80%D0%BF%D1%81%D0%BA%D0%B8)', 1, 0),
- ('sv', 'http://wiki.archlinux.se/index.php?title=$1', 1, 0),
- ('th', 'https://wiki.archlinux.org/index.php/$1_(%E0%B9%84%E0%B8%97%E0%B8%A2)', 1, 0),
- ('tr', 'http://archtr.org/wiki/index.php?title=$1', 1, 0),
- ('uk', 'https://wiki.archlinux.org/index.php/$1_(%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%81%D1%8C%D0%BA%D0%B0)', 1, 0),
- ('zh-cn', 'https://wiki.archlinux.org/index.php/$1_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)', 1, 0),
- ('zh-tw', 'https://wiki.archlinux.org/index.php/$1_(%E6%AD%A3%E9%AB%94%E4%B8%AD%E6%96%87)', 1, 0);
-
--- Other interwiki prefixes
-INSERT INTO interwiki (iw_prefix,iw_url,iw_local,iw_api) VALUES
-('arxiv','http://www.arxiv.org/abs/$1',0,''),
-('debian','https://wiki.debian.org/$1',0,''),
-('doi','http://dx.doi.org/$1',0,''),
-('emacswiki','http://www.emacswiki.org/cgi-bin/wiki.pl?$1',0,''),
-('foldoc','http://foldoc.org/?$1',0,''),
-('freebsdman','http://www.freebsd.org/cgi/man.cgi?query=$1',0,''),
-('funtoo','http://www.funtoo.org/$1',0,'http://www.funtoo.org/api.php'),
-('gentoo','https://wiki.gentoo.org/wiki/$1',0,'https://wiki.gentoo.org/api.php'),
-('gregswiki','http://mywiki.wooledge.org/$1',0,''),
-('linuxwiki','http://linuxwiki.de/$1',0,''),
-('lqwiki','http://wiki.linuxquestions.org/wiki/$1',0,''),
-('mozillawiki','http://wiki.mozilla.org/$1',0,'https://wiki.mozilla.org/api.php'),
-('rfc','http://www.rfc-editor.org/rfc/rfc$1.txt',0,''),
-('sourceforge','http://sourceforge.net/$1',0,''),
-('wikia','http://www.wikia.com/wiki/$1',0,'')
-;
-
--- Wikimedia Foundation projects and related
--- based on this table: https://meta.wikimedia.org/wiki/Help:Interwiki_linking#Project_titles_and_shortcuts
-INSERT INTO interwiki (iw_prefix,iw_url,iw_local,iw_api) VALUES
-('wikipedia','https://en.wikipedia.org/wiki/$1',0,'https://en.wikipedia.org/w/api.php'),
-('w','https://en.wikipedia.org/wiki/$1',0,'https://en.wikipedia.org/w/api.php'),
-('wiktionary','https://en.wiktionary.org/wiki/$1',0,'https://en.wiktionary.org/w/api.php'),
-('wikt','https://en.wiktionary.org/wiki/$1',0,'https://en.wiktionary.org/w/api.php'),
-('wikinews','https://en.wikinews.org/wiki/$1',0,'https://en.wikinews.org/w/api.php'),
-('wikibooks','https://en.wikibooks.org/wiki/$1',0,'https://en.wikibooks.org/w/api.php'),
-('wikiquote','https://en.wikiquote.org/wiki/$1',0,'https://en.wikiquote.org/w/api.php'),
-('wikisource','https://wikisource.org/wiki/$1',0,'https://wikisource.org/w/api.php'),
-('wikispecies','https://species.wikimedia.org/wiki/$1',0,'https://species.wikimedia.org/w/api.php'),
-('wikiversity','https://en.wikiversity.org/wiki/$1',0,'https://en.wikiversity.org/w/api.php'),
-('wikivoyage','https://en.wikivoyage.org/wiki/$1',0,'https://en.wikivoyage.org/w/api.php'),
-('wikimedia','https://wikimediafoundation.org/wiki/$1',0,'https://wikimediafoundation.org/w/api.php'),
-('wmf','https://wikimediafoundation.org/wiki/$1',0,'https://wikimediafoundation.org/w/api.php'),
-('commons','https://commons.wikimedia.org/wiki/$1',0,'https://commons.wikimedia.org/w/api.php'),
-('metawikimedia','https://meta.wikimedia.org/wiki/$1',0,'https://meta.wikimedia.org/w/api.php'),
-('meta','https://meta.wikimedia.org/wiki/$1',0,'https://meta.wikimedia.org/w/api.php'),
-('mw','https://www.mediawiki.org/wiki/$1',0,'https://www.mediawiki.org/w/api.php'),
-('phabricator','https://phabricator.wikimedia.org/$1',0,''),
-('phab','https://phabricator.wikimedia.org/$1',0,'')
-;
diff --git a/extensions/FluxBBAuthPlugin.php b/extensions/FluxBBAuthPlugin.php
deleted file mode 100644
index 32d4b145..00000000
--- a/extensions/FluxBBAuthPlugin.php
+++ /dev/null
@@ -1,153 +0,0 @@
-<?php
-
-$wgExtensionCredits['other'][] = array(
- 'name' => 'FluxBBAuthPlugin',
- 'version' => '1.6',
- 'description' => 'Use FluxBB accounts in MediaWiki',
- 'author' => 'Pierre Schmitz',
- 'url' => 'https://pierre-schmitz.com/'
-);
-
-require_once(__DIR__.'/../includes/AuthPlugin.php');
-
-global $FluxBBDatabase;
-$FluxBBDatabase = 'fluxbb';
-
-class FluxBBAuthPlugin extends AuthPlugin {
-
- public static function isValidPassword($password) {
- $length = strlen($password);
- return $length >= 4;
- }
-
- private function getUserData($username) {
- global $FluxBBDatabase;
- $dbr = wfGetDB( DB_SLAVE );
-
- return $dbr->selectRow($FluxBBDatabase.'.users', array('username', 'email', 'realname'), array('username' => $username));
- }
-
- public function userExists( $username ) {
- global $FluxBBDatabase;
- $dbr = wfGetDB( DB_SLAVE );
-
- try {
- $result = $dbr->select($FluxBBDatabase.'.users', 'id', array('username' => $username));
- $exists = ($result->numRows() > 0 ? true : false);
- $result->free();
- } catch (DBQueryError $e) {
- $exists = false;
- }
-
- return $exists;
- }
-
- public function authenticate( $username, $password ) {
- global $FluxBBDatabase;
- $dbr = wfGetDB( DB_SLAVE );
-
- try {
- $result = $dbr->select($FluxBBDatabase.'.users', 'id', array('username' => $username, 'password' => sha1($password)));
- $authenticated = ($result->numRows() > 0 ? true : false);
- $result->free();
- } catch (DBQueryError $e) {
- $authenticated = false;
- }
-
- return $authenticated;
- }
-
- public function modifyUITemplate( &$template, &$type ) {
- $template->set( 'usedomain', false );
- }
-
- public function updateUser( &$user ) {
- return $this->initUser($user);
- }
-
- public function autoCreate() {
- return true;
- }
-
- protected function allowRealNameChange() {
- return false;
- }
-
- protected function allowEmailChange() {
- return false;
- }
-
- protected function allowNickChange() {
- return false;
- }
-
- public function allowPasswordChange() {
- return false;
- }
-
- public function allowSetLocalPassword() {
- return false;
- }
-
- public function setPassword( $user, $password ) {
- return false;
- }
-
- public function updateExternalDB( $user ) {
- return false;
- }
-
- public function updateExternalDBGroups( $user, $addgroups, $delgroups = array() ) {
- return false;
- }
-
- public function canCreateAccounts() {
- return false;
- }
-
- public function addUser( $user, $password, $email = '', $realname = '' ) {
- return false;
- }
-
- public function strict() {
- return true;
- }
-
- public function strictUserAuth( $username ) {
- return true;
- }
-
- public function initUser( &$user, $autocreate = false ) {
- try {
- $data = $this->getUserData($user->getName());
- if (!$data) {
- return false;
- }
- $user->setEmail($data->email);
- $user->confirmEmail();
- $user->setRealName($data->realname);
- $user->saveSettings();
- } catch (Exception $e) {
- return false;
- }
- return true;
- }
-
- public function getCanonicalName( $username ) {
- try {
- $data = $this->getUserData($username);
- if ($data !== false) {
- return strtoupper(substr($data->username, 0, 1)).substr($data->username, 1);
- }
- } catch (Exception $e) {
- }
- return $username;
- }
-
-}
-
-$wgAuth = new FluxBBAuthPlugin();
-$wgHiddenPrefs[] = 'realname';
-$wgHooks['isValidPassword'][] = 'FluxBBAuthPlugin::isValidPassword';
-
-?>
diff --git a/extensions/TimedMediaHandler/.gitignore b/extensions/TimedMediaHandler/.gitignore
new file mode 100644
index 00000000..0172e092
--- /dev/null
+++ b/extensions/TimedMediaHandler/.gitignore
@@ -0,0 +1,6 @@
+.svn
+*~
+*.kate-swp
+.*.swp
+.project
+node_modules/
diff --git a/extensions/TimedMediaHandler/.gitreview b/extensions/TimedMediaHandler/.gitreview
new file mode 100644
index 00000000..39e4aad6
--- /dev/null
+++ b/extensions/TimedMediaHandler/.gitreview
@@ -0,0 +1,5 @@
+[gerrit]
+host=gerrit.wikimedia.org
+port=29418
+project=mediawiki/extensions/TimedMediaHandler.git
+defaultbranch=REL1_26
diff --git a/extensions/TimedMediaHandler/.jscsrc b/extensions/TimedMediaHandler/.jscsrc
new file mode 100644
index 00000000..9d22e3f2
--- /dev/null
+++ b/extensions/TimedMediaHandler/.jscsrc
@@ -0,0 +1,3 @@
+{
+ "preset": "wikimedia"
+}
diff --git a/extensions/TimedMediaHandler/.jshintignore b/extensions/TimedMediaHandler/.jshintignore
new file mode 100644
index 00000000..0f77f29d
--- /dev/null
+++ b/extensions/TimedMediaHandler/.jshintignore
@@ -0,0 +1 @@
+MwEmbedModules
diff --git a/extensions/TimedMediaHandler/.jshintrc b/extensions/TimedMediaHandler/.jshintrc
new file mode 100644
index 00000000..ef363f81
--- /dev/null
+++ b/extensions/TimedMediaHandler/.jshintrc
@@ -0,0 +1,44 @@
+{
+ /* Common */
+
+ // Enforcing
+ "camelcase": true,
+ "curly": true,
+ "eqeqeq": true,
+ "immed": true,
+ "latedef": true,
+ "newcap": true,
+ "noarg": true,
+ "noempty": true,
+ "nonew": true,
+ "quotmark": "single",
+ "trailing": true,
+ "undef": true,
+ "unused": true,
+ // Legacy
+ "onevar": true,
+
+ /* Local */
+
+ // Enforcing
+ "bitwise": true,
+ "es3": true,
+ // Relaxing
+ "laxbreak": true,
+ "smarttabs": true,
+ "multistr": true,
+ // Environment
+ "browser": true,
+ // Legacy
+ "nomen": true,
+
+ "predef": [
+ "mediaWiki",
+ "mw",
+ "jQuery",
+ "OGVVersion",
+ "OGVSupport",
+ "OGVPlayer",
+ "OGVLoader"
+ ]
+}
diff --git a/extensions/TimedMediaHandler/ApiQueryVideoInfo.php b/extensions/TimedMediaHandler/ApiQueryVideoInfo.php
new file mode 100644
index 00000000..65239166
--- /dev/null
+++ b/extensions/TimedMediaHandler/ApiQueryVideoInfo.php
@@ -0,0 +1,268 @@
+<?php
+/**
+ * Extends imageinfo with support for videoinfo sources property.
+ *
+ * Alternatively core ApiQueryImageInfo could support being extended in some straightforward ways.
+ * see: http://www.mediawiki.org/wiki/User:Catrope/Extension_review/TimedMediaHandler#ApiQueryVideoInfo.php
+ *
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ // Eclipse helper - will be ignored in production
+ require_once( "ApiBase.php" );
+}
+
+class ApiQueryVideoInfo extends ApiQueryImageInfo {
+
+ public function __construct( $query, $moduleName, $prefix = 'vi' ) {
+ // We allow a subclass to override the prefix, to create a related API module.
+ // Some other parts of MediaWiki construct this with a null $prefix, which used to be ignored when this only took two arguments
+ if ( is_null( $prefix ) ) {
+ $prefix = 'vi';
+ }
+ parent::__construct( $query, $moduleName, $prefix );
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ public function getDescription() {
+ return 'Extends imageinfo to include video source (derivatives) information';
+ }
+
+ static function getInfo( $file, $prop, $result, $thumbParams = null, $version = 'latest' ) {
+ $vals = parent::getInfo( $file, $prop, $result, $thumbParams );
+ if( isset( $prop['derivatives'] ) ) {
+ if ( $file->getHandler() && $file->getHandler() instanceof TimedMediaHandler ) {
+ $vals['derivatives'] = WebVideoTranscode::getSources( $file, array( 'fullurl') );
+ $result->setIndexedTagName( $vals['derivatives'], "derivative" );
+ } else {
+ // Non-TMH file, no derivatives.
+ $vals['derivatives'] = array();
+ }
+ }
+ return $vals;
+ }
+
+ public static function getPropertyNames( $filter = array() ) {
+ $prop = parent::getPropertyNames();
+ $prop[] = 'derivatives';
+ return $prop;
+ }
+
+ public static function getPropertyDescriptions( $filter = array(), $modulePrefix = '' ) {
+ $s = parent::getPropertyDescriptions( $filter, $modulePrefix );
+ $s[] = ' derivatives - Adds an array of the different format and quality versions of an audio or video file that are available.';
+ return $s;
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ public function getExamples() {
+ return array(
+ 'api.php?action=query&titles=File:Folgers.ogv&prop=videoinfo',
+ );
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ */
+ protected function getExamplesMessages() {
+ return array(
+ 'action=query&titles=File:Folgers.ogv&prop=videoinfo'
+ => 'apihelp-query+videoinfo-example-1',
+ );
+ }
+
+ /**
+ * Execute and getAllowedprops have to be copied verbatim because of static self:: references
+ *
+ * With late static binding this would be avoidable:
+ * http://php.net/manual/en/language.oop5.late-static-bindings.php
+ */
+ public function execute() {
+ $params = $this->extractRequestParams();
+
+ $prop = array_flip( $params['prop'] );
+
+ $scale = $this->getScale( $params );
+
+ $pageIds = $this->getPageSet()->getAllTitlesByNamespace();
+ if ( !empty( $pageIds[NS_FILE] ) ) {
+ $titles = array_keys( $pageIds[NS_FILE] );
+ asort( $titles ); // Ensure the order is always the same
+
+ $skip = false;
+ if ( !is_null( $params['continue'] ) ) {
+ $skip = true;
+ $cont = explode( '|', $params['continue'] );
+ if ( count( $cont ) != 2 ) {
+ $this->dieUsage( 'Invalid continue param. You should pass the original ' .
+ 'value returned by the previous query', '_badcontinue' );
+ }
+ $fromTitle = strval( $cont[0] );
+ $fromTimestamp = $cont[1];
+ // Filter out any titles before $fromTitle
+ foreach ( $titles as $key => $title ) {
+ if ( $title < $fromTitle ) {
+ unset( $titles[$key] );
+ } else {
+ break;
+ }
+ }
+ }
+
+ $result = $this->getResult();
+ $images = RepoGroup::singleton()->findFiles( $titles );
+ foreach ( $images as $img ) {
+ // Skip redirects
+ if ( $img->getOriginalTitle()->isRedirect() ) {
+ continue;
+ }
+
+ $start = $skip ? $fromTimestamp : $params['start'];
+ $pageId = $pageIds[NS_IMAGE][ $img->getOriginalTitle()->getDBkey() ];
+
+ $fit = $result->addValue(
+ array( 'query', 'pages', intval( $pageId ) ),
+ 'imagerepository', $img->getRepoName()
+ );
+ if ( !$fit ) {
+ if ( count( $pageIds[NS_IMAGE] ) == 1 ) {
+ // The user is screwed. imageinfo can't be solely
+ // responsible for exceeding the limit in this case,
+ // so set a query-continue that just returns the same
+ // thing again. When the violating queries have been
+ // out-continued, the result will get through
+ $this->setContinueEnumParameter( 'start',
+ wfTimestamp( TS_ISO_8601, $img->getTimestamp() ) );
+ } else {
+ $this->setContinueEnumParameter( 'continue',
+ $this->getContinueStr( $img ) );
+ }
+ break;
+ }
+
+ // Check if we can make the requested thumbnail, and get transform parameters.
+ $finalThumbParams = $this->mergeThumbParams( $img, $scale, $params['urlparam'] );
+
+ // Get information about the current version first
+ // Check that the current version is within the start-end boundaries
+ $gotOne = false;
+ if (
+ ( is_null( $start ) || $img->getTimestamp() <= $start ) &&
+ ( is_null( $params['end'] ) || $img->getTimestamp() >= $params['end'] )
+ ) {
+ $gotOne = true;
+
+ $fit = $this->addPageSubItem( $pageId,
+ self::getInfo( $img, $prop, $result, $finalThumbParams ) );
+ if ( !$fit ) {
+ if ( count( $pageIds[NS_IMAGE] ) == 1 ) {
+ // See the 'the user is screwed' comment above
+ $this->setContinueEnumParameter( 'start',
+ wfTimestamp( TS_ISO_8601, $img->getTimestamp() ) );
+ } else {
+ $this->setContinueEnumParameter( 'continue',
+ $this->getContinueStr( $img ) );
+ }
+ break;
+ }
+ }
+
+ // Now get the old revisions
+ // Get one more to facilitate query-continue functionality
+ $count = ( $gotOne ? 1 : 0 );
+ $oldies = $img->getHistory( $params['limit'] - $count + 1, $start, $params['end'] );
+ foreach ( $oldies as $oldie ) {
+ if ( ++$count > $params['limit'] ) {
+ // We've reached the extra one which shows that there are additional pages to be had. Stop here...
+ // Only set a query-continue if there was only one title
+ if ( count( $pageIds[NS_FILE] ) == 1 ) {
+ $this->setContinueEnumParameter( 'start',
+ wfTimestamp( TS_ISO_8601, $oldie->getTimestamp() ) );
+ }
+ break;
+ }
+ $fit = $this->addPageSubItem( $pageId,
+ self::getInfo( $oldie, $prop, $result, $finalThumbParams ) );
+ if ( !$fit ) {
+ if ( count( $pageIds[NS_IMAGE] ) == 1 ) {
+ $this->setContinueEnumParameter( 'start',
+ wfTimestamp( TS_ISO_8601, $oldie->getTimestamp() ) );
+ } else {
+ $this->setContinueEnumParameter( 'continue',
+ $this->getContinueStr( $oldie ) );
+ }
+ break;
+ }
+ }
+ if ( !$fit ) {
+ break;
+ }
+ $skip = false;
+ }
+
+ if ( defined( 'ApiResult::META_CONTENT' ) ) {
+ $pages = (array)$this->getResult()->getResultData( array( 'query', 'pages' ), array( 'Strip' => 'base' ) );
+ } else {
+ $data = $this->getResultData();
+ $pages = $data['query']['pages'];
+ }
+ foreach ( $pages as $pageid => $arr ) {
+ if ( !isset( $arr['imagerepository'] ) ) {
+ $result->addValue(
+ array( 'query', 'pages', intval( $pageid ) ),
+ 'imagerepository', ''
+ );
+ }
+ // The above can't fail because it doesn't increase the result size
+ }
+ }
+ }
+
+ public function getAllowedParams() {
+ // Get imageinfo params
+ $params = array_intersect_key(
+ parent::getAllowedParams(),
+ array_flip( array(
+ 'limit', 'start', 'end', 'urlwidth', 'urlheight', 'urlparam', 'continue'
+ ) )
+ );
+ if ( defined( 'ApiBase::PARAM_HELP_MSG' ) ) {
+ foreach ( $params as $k => $v ) {
+ if ( !isset( $params[$k][ApiBase::PARAM_HELP_MSG] ) ) {
+ $params[$k][ApiBase::PARAM_HELP_MSG] = "apihelp-query+imageinfo-param-$k";
+ }
+ }
+ }
+
+ // Add our param
+ $params = array(
+ 'prop' => array(
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_DFLT => 'timestamp|user',
+ ApiBase::PARAM_TYPE => self::getPropertyNames(),
+ ),
+ ) + $params;
+
+ return $params;
+ }
+
+ /**
+ * Get API self-documentation.
+ *
+ * Needed since core calls self::getPropertyDescriptions(),
+ * (and not static::getPropertyDescriptions() ) which binds
+ * to the static method in that class instead of the static
+ * method of the same name in this class.
+ * @deprecated since MediaWiki core 1.25
+ */
+ public function getParamDescription() {
+ $params = parent::getParamDescription();
+ $p = $this->getModulePrefix();
+ $params['prop'] = self::getPropertyDescriptions( array(), $p );
+ return $params;
+ }
+}
diff --git a/extensions/TimedMediaHandler/ApiTranscodeReset.php b/extensions/TimedMediaHandler/ApiTranscodeReset.php
new file mode 100644
index 00000000..597d17e1
--- /dev/null
+++ b/extensions/TimedMediaHandler/ApiTranscodeReset.php
@@ -0,0 +1,184 @@
+<?php
+if ( !defined( 'MEDIAWIKI' ) ) {
+ // Eclipse helper - will be ignored in production
+ require_once( 'ApiBase.php' );
+}
+
+/**
+ * Allows users with the 'transcode-reset' right to reset / re-run a transcode job.
+ *
+ * You can specify must specify a media asset title. You optionally can specify
+ * a transcode key, to only reset a single transcode job for a particular media asset.
+ * @ingroup API
+ */
+class ApiTranscodeReset extends ApiBase {
+ public function execute() {
+ global $wgUser, $wgEnableTranscode, $wgWaitTimeForTranscodeReset;
+ // Check if transcoding is enabled on this wiki at all:
+ if( !$wgEnableTranscode ){
+ $this->dieUsage( 'Transcode is disabled on this wiki', 'disabledtranscode' );
+ }
+
+ // Confirm the user has the transcode-reset right
+ if( !$wgUser->isAllowed( 'transcode-reset' ) ){
+ $this->dieUsage( 'You don\'t have permission to reset transcodes', 'missingpermission' );
+ }
+ $params = $this->extractRequestParams();
+
+ // Make sure we have a valid Title
+ $titleObj = Title::newFromText( $params['title'] );
+ if ( !$titleObj || $titleObj->isExternal() ) {
+ $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
+ }
+ // Make sure the title can be transcoded
+ if( !TimedMediaHandlerHooks::isTranscodableTitle( $titleObj ) ){
+ $this->dieUsageMsg( array( 'invalidtranscodetitle', $params['title'] ) );
+ }
+ $transcodeKey = false;
+ // Make sure its a enabled transcode key we are trying to remove:
+ // ( if you update your transcode keys the api is not how you purge the database of expired keys )
+ if( isset( $params['transcodekey'] ) ){
+ global $wgEnabledTranscodeSet, $wgEnabledAudioTranscodeSet;
+ $transcodeSet = array_merge($wgEnabledTranscodeSet, $wgEnabledAudioTranscodeSet);
+ if( !in_array( $params['transcodekey'], $transcodeSet ) ){
+ $this->dieUsage( 'Invalid or disabled transcode key: ' . htmlspecialchars( $params['transcodekey'] ) , 'badtranscodekey' );
+ } else {
+ $transcodeKey = $params['transcodekey'];
+ }
+ }
+
+ // Don't reset if less than 1 hour has passed and we have no error )
+ $file = wfFindFile( $titleObj );
+ $timeSinceLastReset = self::checkTimeSinceLastRest( $file, $transcodeKey );
+ if( $timeSinceLastReset < $wgWaitTimeForTranscodeReset){
+ $this->dieUsage( 'Not enough time has passed since the last reset of this transcode. ' .
+ TimedMediaHandler::getTimePassedMsg( $wgWaitTimeForTranscodeReset - $timeSinceLastReset ) .
+ ' until this transcode can be reset', 'notenoughtimereset');
+ }
+
+ // All good do the transcode removal:
+ WebVideoTranscode::removeTranscodes( $file, $transcodeKey );
+
+ // Oh and we wanted to reset it, right? Trigger again.
+ WebVideoTranscode::updateJobQueue( $file, $transcodeKey );
+
+ $this->getResult()->addValue(null, 'success', 'removed transcode');
+ }
+
+ /**
+ * @param $file
+ * @param $transcodeKey
+ * @return int|string
+ */
+ static public function checkTimeSinceLastRest( $file, $transcodeKey ){
+ global $wgWaitTimeForTranscodeReset;
+ $transcodeStates = WebVideoTranscode::getTranscodeState( $file );
+ if( $transcodeKey ){
+ if( ! $transcodeStates[$transcodeKey] ){
+ // transcode key not found
+ return $wgWaitTimeForTranscodeReset + 1;
+ }
+ return self::getStateResetTime( $transcodeStates[$transcodeKey] );
+ }
+ // least wait is set to reset time:
+ $leastWait = $wgWaitTimeForTranscodeReset + 1;
+ // else check for lowest reset time
+ foreach($transcodeStates as $state ){
+ $ctime = self::getStateResetTime( $state );
+ if( $ctime < $leastWait){
+ $leastWait = $ctime;
+ }
+ }
+ return $leastWait;
+ }
+
+ /**
+ * @param $state
+ * @return int|string
+ */
+ static public function getStateResetTime( $state ){
+ global $wgWaitTimeForTranscodeReset;
+ $db = wfGetDB( DB_SLAVE );
+ // if an error return waitTime +1
+ if( !is_null( $state['time_error']) ){
+ return $wgWaitTimeForTranscodeReset + 1;
+ }
+ // return wait time from most recent event
+ foreach( array( 'time_success', 'time_startwork', 'time_addjob' ) as $timeField ){
+ if( !is_null( $state[ $timeField ] )){
+ return $db->timestamp() - $db->timestamp( $state[ $timeField ] );
+ }
+ }
+ // No time info, return resetWaitTime
+ return $wgWaitTimeForTranscodeReset + 1;
+ }
+
+ public function mustBePosted() {
+ return true;
+ }
+
+ public function isWriteMode() {
+ return true;
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ protected function getDescription() {
+ return 'Users with the \'transcode-reset\' right can reset and re-run a transcode job';
+ }
+
+ protected function getAllowedParams() {
+ return array(
+ 'title' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_REQUIRED => true
+ ),
+ 'transcodekey' => null,
+ 'token' => null,
+ );
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ protected function getParamDescription() {
+ return array(
+ 'title' => 'The media file title',
+ 'transcodekey' => 'The transcode key you wish to reset',
+ 'token' => 'An edit token obtained via action=tokens',
+ );
+ }
+
+ public function needsToken() {
+ return 'csrf';
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ protected function getExamples() {
+ return array(
+ 'Reset all transcodes for Clip.webm :',
+ ' api.php?action=transcodereset&title=File:Clip.webm&token=%2B\\',
+ 'Reset the \'360_560kbs.webm\' transcode key for clip.webm. Get a list of transcode keys via a \'transcodestatus\' query',
+ ' api.php?action=transcodereset&title=File:Clip.webm&transcodekey=360_560kbs.webm&token=%2B\\',
+ );
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ */
+ protected function getExamplesMessages() {
+ return array(
+ 'action=transcodereset&title=File:Clip.webm&token=123ABC'
+ => 'apihelp-transcodereset-example-1',
+ 'action=transcodereset&title=File:Clip.webm&transcodekey=360_560kbs.webm&token=123ABC'
+ => 'apihelp-transcodereset-example-2',
+ );
+ }
+}
diff --git a/extensions/TimedMediaHandler/ApiTranscodeStatus.php b/extensions/TimedMediaHandler/ApiTranscodeStatus.php
new file mode 100644
index 00000000..38dcccc6
--- /dev/null
+++ b/extensions/TimedMediaHandler/ApiTranscodeStatus.php
@@ -0,0 +1,79 @@
+<?php
+/**
+ * Allows for api queries to get detailed information about the transcode state of a particular
+ * media asset. ( basically directly returns the transcode status table )
+ *
+ * This information can be used to generate status tables similar to the one seen
+ * on the image page.
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ // Eclipse helper - will be ignored in production
+ require_once( "ApiBase.php" );
+}
+
+class ApiTranscodeStatus extends ApiQueryBase {
+ public function execute() {
+ $pageIds = $this->getPageSet()->getAllTitlesByNamespace();
+ // Make sure we have files in the title set:
+ if ( !empty( $pageIds[NS_FILE] ) ) {
+ $titles = array_keys( $pageIds[NS_FILE] );
+ asort( $titles ); // Ensure the order is always the same
+
+ $result = $this->getResult();
+ $images = RepoGroup::singleton()->findFiles( $titles );
+ /**
+ * @var $img File
+ */
+ foreach ( $images as $img ) {
+ // if its a "transcode" add the transcode status table output
+ if( TimedMediaHandlerHooks::isTranscodableTitle( $img->getTitle() ) ){
+ $transcodeStatus = WebVideoTranscode::getTranscodeState( $img );
+ // remove useless properties
+ foreach($transcodeStatus as $key=>&$val ){
+ unset( $val['id'] );
+ unset( $val['image_name']);
+ unset( $val['key'] );
+ }
+ $result->addValue( array( 'query', 'pages', $img->getTitle()->getArticleID() ), 'transcodestatus', $transcodeStatus );
+ }
+ }
+ }
+ }
+
+ public function getCacheMode( $params ) {
+ return 'public';
+ }
+
+ public function getAllowedParams() {
+ return array();
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ public function getDescription() {
+ return array(
+ 'Get transcode status for a given file page'
+ );
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ protected function getExamples() {
+ return array (
+ 'api.php?action=query&prop=transcodestatus&titles=File:Clip.webm',
+ );
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ */
+ protected function getExamplesMessages() {
+ return array(
+ 'action=query&prop=transcodestatus&titles=File:Clip.webm'
+ => 'apihelp-query+transcodestatus-example-1',
+ );
+ }
+}
diff --git a/extensions/TimedMediaHandler/COPYING b/extensions/TimedMediaHandler/COPYING
new file mode 100644
index 00000000..019694a9
--- /dev/null
+++ b/extensions/TimedMediaHandler/COPYING
@@ -0,0 +1,342 @@
+== GNU GENERAL PUBLIC LICENSE ==
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+=== Preamble ===
+
+The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and
+modification follow.
+
+== TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ==
+
+'''0.''' This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+'''1.''' You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+'''2.''' You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ '''a)''' You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ '''b)''' You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ '''c)''' If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+'''3.''' You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ '''a)''' Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ '''b)''' Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ '''c)''' Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+'''4.''' You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+'''5.''' You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+'''6.''' Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+'''7.''' If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+'''8.''' If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+'''9.''' The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+'''10.''' If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+=== NO WARRANTY ===
+
+'''11.''' BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+'''12.''' IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ '''END OF TERMS AND CONDITIONS'''
+
+== How to Apply These Terms to Your New Programs ==
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/extensions/TimedMediaHandler/Gruntfile.js b/extensions/TimedMediaHandler/Gruntfile.js
new file mode 100644
index 00000000..45380710
--- /dev/null
+++ b/extensions/TimedMediaHandler/Gruntfile.js
@@ -0,0 +1,34 @@
+/*jshint node:true */
+module.exports = function ( grunt ) {
+ grunt.loadNpmTasks( 'grunt-contrib-jshint' );
+ grunt.loadNpmTasks( 'grunt-jsonlint' );
+ grunt.loadNpmTasks( 'grunt-banana-checker' );
+ grunt.loadNpmTasks( 'grunt-jscs' );
+
+ grunt.initConfig( {
+ jshint: {
+ options: {
+ jshintrc: true
+ },
+ all: [
+ '*.js'
+ ]
+ },
+ jscs: {
+ src: '<%= jshint.all %>'
+ },
+ banana: {
+ all: 'i18n/'
+ },
+ jsonlint: {
+ all: [
+ '*.json',
+ '**/*.json',
+ '!node_modules/**'
+ ]
+ }
+ } );
+
+ grunt.registerTask( 'test', [ 'jshint', 'jscs', 'jsonlint', 'banana' ] );
+ grunt.registerTask( 'default', 'test' );
+};
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.config.php b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.config.php
new file mode 100644
index 00000000..af32b4d7
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.config.php
@@ -0,0 +1,194 @@
+<?php
+ /**
+ * Do not edit this file instead use LocalSettings.php and
+ * $wgMwEmbedModuleConfig[ {configuration name} ] = value; format
+ */
+ return array (
+ // If the player controls should be overlaid on top of the video ( if supported by playback method)
+ // can be set to false per embed player via overlayControls attribute
+ 'EmbedPlayer.OverlayControls' => true,
+
+ // The preferred media codec preference
+ // Note user selected format order
+ 'EmbedPlayer.CodecPreference' => array( 'vp9', 'webm', 'h264', 'ogg' ),
+
+ // If video tag support should be disabled all-together, used to test
+ // fallback decoding methods and direct file links
+ 'EmbedPlayer.DisableVideoTagSupport' => false,
+
+ // If detected browser flash support should be ignored, and flash support,
+ // set to false. This will eliminate support for flash based playback.
+ 'EmbedPlayer.DisableHTML5FlashFallback'=> false,
+
+ // Can be used to set player sources via configuration, useful in cases,
+ // where metadata is loaded from an api, but actual sources need to be pointed
+ // to another location at runtime via config
+ 'EmbedPlayer.ReplaceSources' => null,
+
+ // If the flavor selector menu option should be displayed:
+ // This will be enabled by default in some future release of the library
+ 'EmbedPlayer.EnableFlavorSelector' => false,
+
+ // If the iPad should use html controls
+ // With html controls you can't access native fullscreen
+ // With html controls you can support html themed controls, overlays, ads etc. )
+ 'EmbedPlayer.EnableIpadHTMLControls' => true,
+
+ // If the webkit-playsinline attribute should be added to the video tag. Will cause the player
+ // to play inline on iPhone
+ 'EmbedPlayer.WebKitPlaysInline'=> false,
+
+ // If we should use the native device fullscreen call,
+ // this gives you hybrid player, where controls are in HTML for in browser playback,
+ // and native controls when the fullscreen button is pressed.
+ // its not the default since often users want playback control if using html controls,
+ // ( i.e no add skip etc )
+ 'EmbedPlayer.EnableIpadNativeFullscreen' => false,
+
+ // By default we display an html play screen, image thumb and play button.
+ // even though this is still a 'native' player.
+ // If you are not using ad plugins you may want to set this to false
+ // and display the native play button:
+ 'EmbedPlayer.iPhoneShowHTMLPlayScreen' => true,
+
+ // If the large play button should be disabled on replay:
+ 'EmbedPlayer.ForceLargeReplayButton' => false,
+
+ // The attribution library page
+ 'EmbedPlayer.LibraryPage' => 'http://www.kaltura.org/project/HTML5_Video_Media_JavaScript_Library',
+
+ // What tags will be re-written to video player by default
+ // Set to empty string or null to avoid automatic video tag rewrites to embedPlayer
+ "EmbedPlayer.RewriteSelector" => "video,audio,playlist",
+
+ // Default video size ( if no size provided )
+ "EmbedPlayer.DefaultSize" => "400x300",
+
+ // Default player controls size:
+ 'EmbedPlayer.ControlsHeight' => 31,
+
+ // Default time display size:
+ 'EmbedPlayer.TimeDisplayWidth' => 85,
+
+ // If the video player should attribute kaltura
+ "EmbedPlayer.KalturaAttribution" => true,
+
+ // The attribution button
+ 'EmbedPlayer.AttributionButton' => array(
+ 'title' => 'Kaltura html5 video library',
+ 'href' => 'http://www.kaltura.com',
+ // Style icon to be applied
+ 'class' => 'kaltura-icon',
+ // Style to be applied to the outer attribution button container div
+ 'style' => array(),
+ // An icon image url 16x16 image url or data url )
+ 'iconurl' => false
+ ),
+
+ // If the options control bar menu item should be enabled:
+ 'EmbedPlayer.EnableOptionsMenu' => false,
+
+ // If users can right click on the player
+ 'EmbedPlayer.EnableRightClick' => true,
+
+ // Default supported menu items is merged with skin menu items
+ 'EmbedPlayer.EnabledOptionsMenuItems' => array(
+ // Player Select
+ 'playerSelect',
+
+ // Download the file menu
+ 'download',
+
+ // Share the video menu
+ 'share',
+
+ // Player library link
+ 'aboutPlayerLibrary'
+ ),
+
+ // If the player should wait for metadata like video size and duration, before trying to draw
+ // the player interface.
+ 'EmbedPlayer.WaitForMeta' => true,
+
+ // Set the browser player warning flag displays warning for non optimal playback
+ "EmbedPlayer.ShowNativeWarning" => true,
+
+ // If player errors / alerts should be displayed:
+ "EmbedPlayer.ShowPlayerAlerts" => true,
+
+ // If fullscreen is global enabled.
+ "EmbedPlayer.EnableFullscreen" => true,
+
+ // If the embed player time display should be shown
+ 'EmbedPlayer.EnableTimeDisplay' => true,
+
+ // If the embed player volume control should be displayed
+ 'EmbedPlayer.EnableVolumeControl' => true,
+
+ // If fullscreen should pop-open a new window
+ //( instead of trying to expand the video player to browser fullscreen )
+ "EmbedPlayer.NewWindowFullscreen" => false,
+
+ // If a fullscreen tip to press f11 should be displayed when entering fullscreen
+ "EmbedPlayer.FullscreenTip" => true,
+
+ // if the browser should display a warning for direct file links:
+ "EmbedPlayer.DirectFileLinkWarning" => false,
+
+ "EmbedPlayer.FirefoxLink" => 'http://www.mozilla.com/en-US/firefox/upgrade.html?from=mwEmbed',
+
+ // If mwEmbed should use the Native player controls
+ // this will prevent video tag rewriting and skinning
+ // useful for devices such as iPad / iPod that
+ // don't fully support DOM overlays or don't expose full-screen
+ // functionality to javascript
+ "EmbedPlayer.NativeControls" => false,
+
+ // If mwEmbed should use native controls on mobile safari
+ "EmbedPlayer.NativeControlsMobileSafari" => true,
+
+ // The z-index given to the player interface during full screen ( high z-index )
+ "EmbedPlayer.FullScreenZIndex" => 999998,
+
+ // The default share embed mode ( can be "iframe" or "xssVideo" )
+ //
+ // "iframe" will provide a <iframe tag pointing to mwEmbedFrame.php
+ // Object embedding should be much more compatible with sites that
+ // let users embed flash applets
+ // "xssVideo" will include the source javascript and video tag to
+ // rewrite the player on the remote page DOM
+ // Video tag embedding is much more mash-up friendly but exposes
+ // the remote site to the mwEmbed javascript and can be a xss issue.
+ "EmbedPlayer.ShareEmbedMode" => 'iframe',
+
+ // The skin framework list:
+ "EmbedPlayer.SkinList" => array( 'mvpcf', 'kskin' ),
+
+ // Default player skin name
+ "EmbedPlayer.DefaultSkin" => "mvpcf",
+
+ // Number of milliseconds between interface updates
+ 'EmbedPlayer.MonitorRate' => 250,
+
+ // If on Android should use html5 ( even if flash is installed on the machine )
+ 'EmbedPlayer.UseFlashOnAndroid' => false,
+
+ // If embedPlayer should support server side temporal urls for seeking options are
+ // flash|always|none default is support for flash only.
+ 'EmbedPlayer.EnableURLTimeEncoding' => 'flash',
+
+ // The domains which can read and send events to the video player
+ 'EmbedPLayer.IFramePlayer.DomainWhiteList' => '*',
+
+ // If the iframe should send and receive javascript events across domains via postMessage
+ 'EmbedPlayer.EnableIframeApi' => true,
+
+ // If set to true will output the iframe as inline contents on the same domain as page contents
+ 'EmbedPlayer.PageDomainIframe' => true,
+
+ // When there is no in-browser playback mechanism provide a download link for the play button
+ 'EmbedPlayer.NotPlayableDownloadLink' => true,
+
+ // A black pixel for source switching
+ 'EmbedPlayer.BlackPixel' => "data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%01%00%00%00%01%08%02%00%00%00%90wS%DE%00%00%00%01sRGB%00%AE%CE%1C%E9%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%07tIME%07%DB%0B%0A%17%041%80%9B%E7%F2%00%00%00%19tEXtComment%00Created%20with%20GIMPW%81%0E%17%00%00%00%0CIDAT%08%D7c%60%60%60%00%00%00%04%00%01'4'%0A%00%00%00%00IEND%AEB%60%82"
+ );
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.loader.js b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.loader.js
new file mode 100644
index 00000000..f63a9393
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.loader.js
@@ -0,0 +1,69 @@
+/**
+* EmbedPlayer loader
+*/
+( function( mw, $ ) {
+ /**
+ * Add a DOM ready check for player tags
+ */
+ $( function() {
+ var $selected = $( mw.config.get( 'EmbedPlayer.RewriteSelector' ) );
+ if ( $selected.length ) {
+ var inx = 0;
+ var checkSetDone = function() {
+ if ( inx < $selected.length ) {
+ // put in timeout to avoid browser lockup, and function stack
+ $selected.slice( inx, inx + 1 ).embedPlayer( function() {
+ setTimeout( function() {
+ checkSetDone();
+ }, 5 );
+ } );
+ }
+ inx++;
+ };
+
+ checkSetDone();
+ }
+ } );
+
+ /**
+ * Add the mwEmbed jQuery loader wrapper
+ */
+ $.fn.embedPlayer = function( readyCallback ) {
+ var playerSet = this;
+ mw.log( 'jQuery.fn.embedPlayer :: ' + $( playerSet ).length );
+
+ // Set up the embed video player class request: (include the skin js as well)
+ var dependencySet = [
+ 'mw.EmbedPlayer'
+ ];
+
+ mw.loader.using( [ 'jquery.client', 'jquery.mwEmbedUtil', 'mw.MwEmbedSupport' ], function() {
+ $( playerSet ).each( function( inx, playerElement ) {
+ // we have javascript ( disable controls )
+ $( playerElement ).removeAttr( 'controls' );
+ // Add an overlay loader ( firefox has its own native loading spinner )
+
+ if ( $.client.profile().name !== 'firefox' ) {
+ $( playerElement )
+ .parent()
+ .getAbsoluteOverlaySpinner()
+ .attr('id', 'loadingSpinner_' + $( playerElement ).attr('id') );
+ }
+ // Allow other modules update the dependencies
+ $( mw ).trigger( 'EmbedPlayerUpdateDependencies',
+ [ playerElement, dependencySet ] );
+ } );
+
+ // Remove any duplicates in the dependencySet:
+ dependencySet = $.uniqueArray( dependencySet );
+
+ // Do the request and process the playerElements with updated dependency set
+ mw.loader.using( dependencySet, function() {
+ // Setup the enhanced language:
+ mw.processEmbedPlayers( playerSet, readyCallback );
+ }, function( e ) {
+ throw new Error( 'Error loading EmbedPlayer dependency set: ' + e.message );
+ } );
+ } );
+ };
+} )( mediaWiki, jQuery );
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.php b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.php
new file mode 100644
index 00000000..a813c8d0
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/EmbedPlayer.php
@@ -0,0 +1,103 @@
+<?php
+ global $wgVideoPlayerSkinModule;
+ // Register all the EmbedPlayer modules
+ return array(
+ "mw.MediaElement" => array(
+ 'scripts' => 'resources/mw.MediaElement.js',
+ 'dependencies' => array(
+ 'ext.tmh.OgvJsSupport',
+ )
+ ),
+ "mw.MediaPlayer" => array( 'scripts' => 'resources/mw.MediaPlayer.js' ),
+ "mw.MediaPlayers" => array(
+ 'scripts' => 'resources/mw.MediaPlayers.js',
+ 'dependencies' => 'mw.MediaPlayer'
+ ),
+ "mw.MediaSource" => array( 'scripts' => 'resources/mw.MediaSource.js' ),
+ "mw.EmbedTypes" => array(
+ 'scripts' => 'resources/mw.EmbedTypes.js',
+ 'dependencies' => array(
+ 'mw.MediaPlayers',
+ 'mediawiki.Uri',
+ 'jquery.client',
+ )
+ ),
+ "mw.EmbedPlayer" => array(
+ 'scripts' => array(
+ "resources/mw.processEmbedPlayers.js",
+ "resources/mw.EmbedPlayer.js",
+ "resources/skins/mw.PlayerControlBuilder.js",
+ ),
+ 'dependencies' => array(
+ // mwEmbed support module
+ 'mediawiki.client',
+ 'mediawiki.UtilitiesTime',
+ 'mediawiki.Uri',
+ 'mediawiki.absoluteUrl',
+ 'mediawiki.jqueryMsg',
+
+ // Browser fullscreen api support:
+ 'fullScreenApi',
+
+ // Kinda need this
+ 'mw.MwEmbedSupport',
+
+ // We always end up loading native player
+ 'mw.EmbedPlayerNative',
+
+ // Sub classes:
+ 'mw.MediaElement',
+ 'mw.MediaPlayers',
+ 'mw.MediaSource',
+ 'mw.EmbedTypes',
+
+ // jQuery dependencies:
+ 'jquery.client',
+ 'jquery.hoverIntent',
+ 'jquery.cookie',
+ 'jquery.ui.mouse',
+ 'jquery.debouncedresize',
+ 'jquery.embedMenu',
+ 'jquery.ui.slider',
+ 'jquery.ui.touchPunch',
+
+ // Set to mw.PlayerSkinKskin or mw.PlayerSkinMvpcf in config
+ $wgVideoPlayerSkinModule
+ ),
+ 'styles' => "resources/skins/EmbedPlayer.css",
+ 'messageDir' => 'i18n',
+ ),
+
+ "mw.EmbedPlayerKplayer" => array( 'scripts'=> "resources/mw.EmbedPlayerKplayer.js" ),
+ "mw.EmbedPlayerGeneric" => array( 'scripts'=> "resources/mw.EmbedPlayerGeneric.js" ),
+ "mw.EmbedPlayerNative" => array( 'scripts'=> "resources/mw.EmbedPlayerNative.js" ),
+ "mw.EmbedPlayerVLCApp" => array(
+ 'scripts'=> "resources/mw.EmbedPlayerVLCApp.js",
+ 'dependencies' => array( 'mediawiki.Uri' )
+ ),
+ "mw.EmbedPlayerIEWebMPrompt" => array(
+ 'scripts' => 'resources/mw.EmbedPlayerIEWebMPrompt.js',
+ 'styles' => 'resources/mw.EmbedPlayerIEWebMPrompt.css',
+ ),
+ "mw.EmbedPlayerOgvJs" => array(
+ 'scripts' => 'resources/mw.EmbedPlayerOgvJs.js',
+ 'dependencies' => array(
+ 'jquery.spinner',
+ 'ext.tmh.OgvJsSupport',
+ ),
+ ),
+ "mw.EmbedPlayerImageOverlay" => array( 'scripts'=> "resources/mw.EmbedPlayerImageOverlay.js" ),
+
+ "mw.EmbedPlayerVlc" => array( 'scripts'=> "resources/mw.EmbedPlayerVlc.js" ),
+
+ "mw.PlayerSkinKskin" => array(
+ 'scripts' => "resources/skins/kskin/mw.PlayerSkinKskin.js",
+ 'styles' => "resources/skins/kskin/PlayerSkinKskin.css"
+ ),
+
+ "mw.PlayerSkinMvpcf" => array(
+ 'scripts'=> "resources/skins/mvpcf/mw.PlayerSkinMvpcf.js",
+ 'styles'=> "resources/skins/mvpcf/PlayerSkinMvpcf.css"
+ ),
+ );
+?>
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/LightDoodleskin.swf b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/LightDoodleskin.swf
new file mode 100644
index 00000000..5f25450e
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/LightDoodleskin.swf
Binary files differ
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/README b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/README
new file mode 100644
index 00000000..7b11a51b
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/README
@@ -0,0 +1,20 @@
+
+File: kdp3.swf
+
+This Kaltura Dynamic Player +Playlist (KDP) is a sub package of the taken Kaltura Community Edition (CE) Built from Kaltura.org source.
+
+The full Kaltura Community Edition is licensed under the ( GNU Affero General Public License v3 )
+
+And the source code is available on the kaltura.org site:
+http://www.kaltura.org/project/kalturaCE
+
+More info about the KDP:
+http://www.kaltura.org/kdp-dynamic-player-and-playlist-widget
+
+
+
+File: expressInstall.swf
+is part of SWFObject v2.2 <http://code.google.com/p/swfobject/>
+ and is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
+
+
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/config.xml b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/config.xml
new file mode 100644
index 00000000..a4c4e9c8
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/config.xml
@@ -0,0 +1,9 @@
+<layout id="full" skinPath="assets/skin.swf">
+ <HBox id="topLevel" width="100%" height="100%">
+ <VBox id="player" width="100%" height="100%" styleName="black">
+ <Canvas height="100%" width="100%" id="PlayerHolder" styleName="black">
+ <Video id="video" width="100%" height="100%" />
+ </Canvas>
+ </VBox>
+ </HBox>
+</layout> \ No newline at end of file
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/expressInstall.swf b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/expressInstall.swf
new file mode 100644
index 00000000..0fbf8fca
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/expressInstall.swf
Binary files differ
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/kdp3.3.5.27.swf b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/kdp3.3.5.27.swf
new file mode 100644
index 00000000..b400fa68
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/kdp3.3.5.27.swf
Binary files differ
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/kdp3.swf b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/kdp3.swf
new file mode 100644
index 00000000..c2f3891c
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/kdp3.swf
Binary files differ
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/skin.swf b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/skin.swf
new file mode 100644
index 00000000..3c8bf053
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/kaltura-player/skin.swf
Binary files differ
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING
new file mode 100644
index 00000000..96498a60
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING
@@ -0,0 +1,21 @@
+ogv.js & ogv.swf wrapper and player code
+
+Copyright (c) 2013-2014 Brion Vibber and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-ogg.txt b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-ogg.txt
new file mode 100644
index 00000000..6111c6c5
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-ogg.txt
@@ -0,0 +1,28 @@
+Copyright (c) 2002, Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-opus.txt b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-opus.txt
new file mode 100644
index 00000000..9c739c34
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-opus.txt
@@ -0,0 +1,44 @@
+Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
+ Jean-Marc Valin, Timothy B. Terriberry,
+ CSIRO, Gregory Maxwell, Mark Borgerding,
+ Erik de Castro Lopo
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of Internet Society, IETF or IETF Trust, nor the
+names of specific contributors, may be used to endorse or promote
+products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Opus is subject to the royalty-free patent licenses which are
+specified at:
+
+Xiph.Org Foundation:
+https://datatracker.ietf.org/ipr/1524/
+
+Microsoft Corporation:
+https://datatracker.ietf.org/ipr/1914/
+
+Broadcom Corporation:
+https://datatracker.ietf.org/ipr/1526/
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-theora.txt b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-theora.txt
new file mode 100644
index 00000000..c8ccce4f
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-theora.txt
@@ -0,0 +1,28 @@
+Copyright (C) 2002-2009 Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-vorbis.txt b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-vorbis.txt
new file mode 100644
index 00000000..28de72a9
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/COPYING-vorbis.txt
@@ -0,0 +1,28 @@
+Copyright (c) 2002-2008 Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/dynamicaudio.swf b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/dynamicaudio.swf
new file mode 100644
index 00000000..2e3ce4e4
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/dynamicaudio.swf
Binary files differ
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-decoder-audio-opus.js b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-decoder-audio-opus.js
new file mode 100644
index 00000000..4e73c95a
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-decoder-audio-opus.js
@@ -0,0 +1,24 @@
+var OGVDecoderAudioOpus = function(Module) {
+ Module = Module || {};
+
+var options=Module;Module={print:(function(str){console.log(str)})};var Module;if(!Module)Module=(typeof OGVDecoderAudioOpus!=="undefined"?OGVDecoderAudioOpus:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB;var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){return Module["read"](filename,true)};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i<Runtime.functionPointers.length;i++){if(!Runtime.functionPointers[i]){Runtime.functionPointers[i]=func;return 2*(1+i)}}throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}),removeFunction:(function(index){Runtime.functionPointers[(index-2)/2]=null}),warnOnce:(function(text){if(!Runtime.warnOnce.shown)Runtime.warnOnce.shown={};if(!Runtime.warnOnce.shown[text]){Runtime.warnOnce.shown[text]=1;Module.printErr(text)}}),funcWrappers:{},getFuncWrapper:(function(func,sig){assert(sig);if(!Runtime.funcWrappers[sig]){Runtime.funcWrappers[sig]={}}var sigCache=Runtime.funcWrappers[sig];if(!sigCache[func]){sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func,arguments)}}return sigCache[func]}),getCompilerSetting:(function(name){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"}),stackAlloc:(function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+15&-16;return ret}),staticAlloc:(function(size){var ret=STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+15&-16;return ret}),dynamicAlloc:(function(size){var ret=DYNAMICTOP;DYNAMICTOP=DYNAMICTOP+size|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0){if(opts&&opts.async){EmterpreterAsync.asyncFinalizers.push((function(){Runtime.stackRestore(stack)}));return}Runtime.stackRestore(stack)}return ret};var sourceRegex=/^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(jsfunc){var parsed=jsfunc.toString().match(sourceRegex).slice(1);return{arguments:parsed[0],body:parsed[1],returnValue:parsed[2]}}var JSsource={};for(var fun in JSfuncs){if(JSfuncs.hasOwnProperty(fun)){JSsource[fun]=parseJSFunc(JSfuncs[fun])}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident);var numericArgs=argTypes.every((function(type){return type==="number"}));var numericRet=returnType!=="string";if(numericRet&&numericArgs){return cfunc}var argNames=argTypes.map((function(x,i){return"$"+i}));var funcstr="(function("+argNames.join(",")+") {";var nargs=argTypes.length;if(!numericArgs){funcstr+="var stack = "+JSsource["stackSave"].body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type==="number")continue;var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";";funcstr+=convertCode.body+";";funcstr+=arg+"="+convertCode.returnValue+";"}}var cfuncname=parseJSFunc((function(){return cfunc})).returnValue;funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");";if(!numericRet){var strgfy=parseJSFunc((function(){return Pointer_stringify})).returnValue;funcstr+="ret = "+strgfy+"(ret);"}if(!numericArgs){funcstr+=JSsource["stackRestore"].body.replace("()","(stack)")+";"}funcstr+="return ret})";return eval(funcstr)}}))();Module["cwrap"]=cwrap;Module["ccall"]=ccall;function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];if(typeof curr==="function"){curr=Runtime.getFunctionIndex(curr)}type=singleType||types[i];if(type===0){i++;continue}if(type=="i64")type="i32";setValue(ret+i,curr,type);if(previousType!==type){typeSize=Runtime.getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}Module["allocate"]=allocate;function getMemory(size){if(!staticSealed)return Runtime.staticAlloc(size);if(typeof _sbrk!=="undefined"&&!_sbrk.called||!runtimeInitialized)return Runtime.dynamicAlloc(size);return _malloc(size)}Module["getMemory"]=getMemory;function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a<i;a++)pre+=" ";Module.print(pre+"^")}function parseNested(){i++;if(func[i]==="K")i++;var parts=[];while(func[i]!=="E"){if(func[i]==="S"){i++;var next=func.indexOf("_",i);var num=func.substring(i,next)||0;parts.push(subs[num]||"?");i=next+1;continue}if(func[i]==="C"){parts.push(parts[parts.length-1]);i+=2;continue}var size=parseInt(func.substr(i));var pre=size.toString().length;if(!size||!pre){i--;break}var curr=func.substr(i+pre,size);parts.push(curr);subs.push(curr);i+=pre+size}i++;return parts}function parse(rawList,limit,allowVoid){limit=limit||Infinity;var ret="",list=[];function flushList(){return"("+list.join(", ")+")"}var name;if(func[i]==="N"){name=parseNested().join("::");limit--;if(limit===0)return rawList?[name]:name}else{if(func[i]==="K"||first&&func[i]==="L")i++;var size=parseInt(func.substr(i));if(size){var pre=size.toString().length;name=func.substr(i+pre,size);i+=pre+size}}first=false;if(func[i]==="I"){i++;var iList=parse(true);var iRet=parse(true,1,true);ret+=iRet[0]+" "+name+"<"+iList.join(", ")+">"}else{ret=name}paramLoop:while(i<func.length&&limit-->0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var totalMemory=64*1024;while(totalMemory<TOTAL_MEMORY||totalMemory<2*TOTAL_STACK){if(totalMemory<16*1024*1024){totalMemory*=2}else{totalMemory+=16*1024*1024}}if(totalMemory!==TOTAL_MEMORY){Module.printErr("increasing TOTAL_MEMORY to "+totalMemory+" to be compliant with the asm.js spec (and given that TOTAL_STACK="+TOTAL_STACK+")");TOTAL_MEMORY=totalMemory}assert(typeof Int32Array!=="undefined"&&typeof Float64Array!=="undefined"&&!!(new Int32Array(1))["subarray"]&&!!(new Int32Array(1))["set"],"JS engine does not provide full typed array support");var buffer;buffer=new ArrayBuffer(TOTAL_MEMORY);HEAP8=new Int8Array(buffer);HEAP16=new Int16Array(buffer);HEAP32=new Int32Array(buffer);HEAPU8=new Uint8Array(buffer);HEAPU16=new Uint16Array(buffer);HEAPU32=new Uint32Array(buffer);HEAPF32=new Float32Array(buffer);HEAPF64=new Float64Array(buffer);HEAP32[0]=255;assert(HEAPU8[0]===255&&HEAPU8[3]===0,"Typed arrays 2 must be run on a little-endian system");Module["HEAP"]=HEAP;Module["buffer"]=buffer;Module["HEAP8"]=HEAP8;Module["HEAP16"]=HEAP16;Module["HEAP32"]=HEAP32;Module["HEAPU8"]=HEAPU8;Module["HEAPU16"]=HEAPU16;Module["HEAPU32"]=HEAPU32;Module["HEAPF32"]=HEAPF32;Module["HEAPF64"]=HEAPF64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i<array.length){var chr=array[i];HEAP8[buffer+i>>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i<array.length;i++){HEAP8[buffer++>>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<<bits-1)+value:Math.pow(2,bits)+value}function reSign(value,bits,ignore){if(value<=0){return value}var half=bits<=32?Math.abs(1<<bits-1):Math.pow(2,bits-1);if(value>=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var ASM_CONSTS=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+25856;__ATINIT__.push();allocate([0,255,0,255,0,255,0,255,0,255,0,254,1,0,1,255,0,254,0,253,2,0,1,255,0,254,0,253,3,0,1,255,0,0,206,64,0,0,200,64,0,0,184,64,0,0,170,64,0,0,162,64,0,0,154,64,0,0,144,64,0,0,140,64,0,0,156,64,0,0,150,64,0,0,146,64,0,0,142,64,0,0,156,64,0,0,148,64,0,0,138,64,0,0,144,64,0,0,140,64,0,0,148,64,0,0,152,64,0,0,142,64,0,0,112,64,0,0,112,64,0,0,112,64,0,0,112,64,0,0,112,64,0,0,0,0,224,112,44,15,3,2,1,0,254,237,192,132,70,23,4,0,255,252,226,155,61,11,2,0,250,245,234,203,71,50,42,38,35,33,31,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,179,99,0,0,0,0,0,0,232,11,0,0,240,11,0,0,0,12,0,0,0,0,0,0,32,12,0,0,72,12,0,0,152,12,0,0,0,0,0,0,32,0,10,0,20,46,100,1,56,13,0,0,120,14,0,0,184,14,0,0,208,14,0,0,112,15,0,0,184,15,0,0,0,16,0,0,0,0,0,0,32,0,16,0,102,38,171,1,24,16,0,0,24,18,0,0,88,18,0,0,120,18,0,0,120,19,0,0,192,19,0,0,8,20,0,0,0,0,0,0,92,202,190,216,182,223,154,226,156,230,120,236,122,244,204,252,52,3,134,11,136,19,100,25,102,29,74,32,66,39,164,53,249,247,246,245,244,234,210,202,201,200,197,174,82,59,56,55,54,46,22,12,11,10,9,7,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,48,20,0,0,56,20,0,0,120,0,0,0,0,0,0,0,128,64,0,0,0,0,0,0,232,158,10,0,0,0,0,0,230,0,0,0,0,0,0,0,243,221,192,181,0,0,0,0,100,0,240,0,32,0,100,0,205,60,0,48,0,32,0,0,171,85,0,0,0,0,0,0,192,128,64,0,0,0,0,0,205,154,102,51,0,0,0,0,213,171,128,85,43,0,0,0,224,192,160,128,96,64,32,0,100,40,16,7,3,1,0,0,253,250,244,233,212,182,150,131,120,110,98,85,72,60,49,40,32,25,19,15,13,11,9,8,7,6,5,4,3,2,1,0,210,208,206,203,199,193,183,168,142,104,74,52,37,27,20,14,10,6,4,2,0,0,0,0,223,201,183,167,152,138,124,111,98,88,79,70,62,56,50,44,39,35,31,27,24,21,18,16,14,12,10,8,6,4,3,2,1,0,0,0,0,0,0,0,188,176,155,138,119,97,67,43,26,10,0,0,0,0,0,0,165,119,80,61,47,35,27,20,14,9,4,0,0,0,0,0,113,63,0,0,0,0,0,0,125,51,26,18,15,12,11,10,9,8,7,6,5,4,3,2,1,0,198,105,45,22,15,12,11,10,9,8,7,6,5,4,3,2,1,0,213,162,116,83,59,43,32,24,18,15,12,9,7,6,5,3,2,0,239,187,116,59,28,16,11,10,9,8,7,6,5,4,3,2,1,0,250,229,188,135,86,51,30,19,13,10,8,6,5,4,3,2,1,0,249,235,213,185,156,128,103,83,66,53,42,33,26,21,17,13,10,0,254,249,235,206,164,118,77,46,27,16,10,7,5,4,3,2,1,0,255,253,249,239,220,191,156,119,85,57,37,23,15,10,6,4,2,0,255,253,251,246,237,223,203,179,152,124,98,75,55,40,29,21,15,0,255,254,253,247,220,162,106,67,42,28,18,12,9,6,4,3,2,0,0,0,0,0,241,190,178,132,87,74,41,14,0,223,193,157,140,106,57,39,18,0,0,0,0,0,0,0,128,0,214,42,0,235,128,21,0,244,184,72,11,0,248,214,128,42,7,0,248,225,170,80,25,5,0,251,236,198,126,54,18,3,0,250,238,211,159,82,35,15,5,0,250,231,203,168,128,88,53,25,6,0,252,238,216,185,148,108,71,40,18,4,0,253,243,225,199,166,128,90,57,31,13,3,0,254,246,233,212,183,147,109,73,44,23,10,2,0,255,250,240,223,198,166,128,90,58,33,16,6,1,0,255,251,244,231,210,181,146,110,75,46,25,12,5,1,0,255,253,248,238,221,196,164,128,92,60,35,18,8,3,1,0,255,253,249,242,229,208,180,146,110,76,48,27,14,7,3,1,0,129,0,207,50,0,236,129,20,0,245,185,72,10,0,249,213,129,42,6,0,250,226,169,87,27,4,0,251,233,194,130,62,20,4,0,250,236,207,160,99,47,17,3,0,255,240,217,182,131,81,41,11,1,0,255,254,233,201,159,107,61,20,2,1,0,255,249,233,206,170,128,86,50,23,7,1,0,255,250,238,217,186,148,108,70,39,18,6,1,0,255,252,243,226,200,166,128,90,56,30,13,4,1,0,255,252,245,231,209,180,146,110,76,47,25,11,4,1,0,255,253,248,237,219,194,163,128,93,62,37,19,8,3,1,0,255,254,250,241,226,205,177,145,111,79,51,30,15,6,2,1,0,129,0,203,54,0,234,129,23,0,245,184,73,10,0,250,215,129,41,5,0,252,232,173,86,24,3,0,253,240,200,129,56,15,2,0,253,244,217,164,94,38,10,1,0,253,245,226,189,132,71,27,7,1,0,253,246,231,203,159,105,56,23,6,1,0,255,248,235,213,179,133,85,47,19,5,1,0,255,254,243,221,194,159,117,70,37,12,2,1,0,255,254,248,234,208,171,128,85,48,22,8,2,1,0,255,254,250,240,220,189,149,107,67,36,16,6,2,1,0,255,254,251,243,227,201,166,128,90,55,29,13,5,2,1,0,255,254,252,246,234,213,183,147,109,73,43,22,10,4,2,1,0,130,0,200,58,0,231,130,26,0,244,184,76,12,0,249,214,130,43,6,0,252,232,173,87,24,3,0,253,241,203,131,56,14,2,0,254,246,221,167,94,35,8,1,0,254,249,232,193,130,65,23,5,1,0,255,251,239,211,162,99,45,15,4,1,0,255,251,243,223,186,131,74,33,11,3,1,0,255,252,245,230,202,158,105,57,24,8,2,1,0,255,253,247,235,214,179,132,84,44,19,7,2,1,0,255,254,250,240,223,196,159,112,69,36,15,6,2,1,0,255,254,253,245,231,209,176,136,93,55,27,11,3,2,1,0,255,254,253,252,239,221,194,158,117,76,42,18,4,3,2,1,0,0,0,2,5,9,14,20,27,35,44,54,65,77,90,104,119,135,0,0,0,0,0,0,0,254,49,67,77,82,93,99,198,11,18,24,31,36,45,255,46,66,78,87,94,104,208,14,21,32,42,51,66,255,94,104,109,112,115,118,248,53,69,80,88,95,102,0,0,0,0,0,0,0,32,254,31,246,31,234,31,216,31,194,31,168,31,136,31,98,31,58,31,10,31,216,30,160,30,98,30,34,30,220,29,144,29,66,29,238,28,150,28,58,28,216,27,114,27,10,27,156,26,42,26,180,25,58,25,188,24,60,24,182,23,46,23,160,22,16,22,126,21,232,20,78,20,176,19,16,19,110,18,200,17,30,17,116,16,198,15,22,15,100,14,174,13,248,12,64,12,132,11,200,10,10,10,74,9,138,8,198,7,2,7,62,6,120,5,178,4,234,3,34,3,90,2,146,1,202,0,0,0,54,255,110,254,166,253,222,252,22,252,78,251,136,250,194,249,254,248,58,248,118,247,182,246,246,245,56,245,124,244,192,243,8,243,82,242,156,241,234,240,58,240,140,239,226,238,56,238,146,237,240,236,80,236,178,235,24,235,130,234,240,233,96,233,210,232,74,232,196,231,68,231,198,230,76,230,214,229,100,229,246,228,142,228,40,228,198,227,106,227,18,227,190,226,112,226,36,226,222,225,158,225,96,225,40,225,246,224,198,224,158,224,120,224,88,224,62,224,40,224,22,224,10,224,2,224,0,224,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,255,1,255,2,254,2,254,3,253,0,1,0,1,255,2,255,2,254,3,254,3,0,2,255,255,255,0,0,1,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,255,2,1,0,1,1,0,0,255,255,0,0,0,0,0,0,1,255,0,1,255,0,255,1,254,2,254,254,2,253,2,3,253,252,3,252,4,4,251,5,250,251,6,249,6,5,8,247,0,0,1,0,0,0,0,0,0,0,255,1,0,0,1,255,0,1,255,255,1,255,2,1,255,2,254,254,2,254,2,2,3,253,0,1,0,0,0,0,0,0,1,0,1,0,0,1,255,1,0,0,2,1,255,2,255,255,2,255,2,2,255,3,254,254,254,3,0,1,0,0,1,0,1,255,2,255,2,255,2,3,254,3,254,254,4,4,253,5,253,252,6,252,6,5,251,8,250,251,249,9,42,175,213,201,207,255,64,0,17,0,99,255,97,1,16,254,163,0,39,43,189,86,217,255,6,0,91,0,86,255,186,0,23,0,128,252,192,24,216,77,237,255,220,255,102,0,167,255,232,255,72,1,73,252,8,10,37,62,0,0,0,0,0,0,135,199,61,201,64,0,128,0,134,255,36,0,54,1,0,253,72,2,51,36,69,69,12,0,128,0,18,0,114,255,32,1,139,255,159,252,27,16,123,56,104,2,13,200,246,255,39,0,58,0,210,255,172,255,120,0,184,0,197,254,227,253,4,5,4,21,64,35,0,0,0,0,230,62,198,196,243,255,0,0,20,0,26,0,5,0,225,255,213,255,252,255,65,0,90,0,7,0,99,255,8,255,212,255,81,2,47,6,52,10,199,12,228,87,5,197,3,0,242,255,236,255,241,255,2,0,25,0,37,0,25,0,240,255,185,255,149,255,177,255,50,0,36,1,111,2,214,3,8,5,184,5,148,107,103,196,17,0,12,0,8,0,1,0,246,255,234,255,226,255,224,255,234,255,3,0,44,0,100,0,168,0,243,0,61,1,125,1,173,1,199,1,189,0,168,253,105,2,103,119,117,0,97,255,210,251,8,116,52,0,221,0,168,246,116,110,252,255,17,2,234,242,229,102,208,255,246,2,140,240,165,93,176,255,137,3,117,239,6,83,157,255,204,3,130,239,102,71,149,255,199,3,139,240,39,59,153,255,128,3,97,242,174,46,165,255,5,3,207,244,94,34,185,255,99,2,161,247,152,22,210,255,169,1,161,250,180,11,0,0,157,62,0,64,94,62,0,192,4,62,0,128,237,62,0,64,137,62,0,0,0,0,0,192,76,63,0,0,205,61,0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,25,23,2,0,0,0,0,0,126,124,119,109,87,41,19,9,4,2,0,0,0,0,0,0,24,78,0,0,216,80,0,0,148,83,0,0,76,86,0,0,0,89,0,0,176,91,0,0,92,94,0,0,196,95,0,0,128,96,0,0,244,96,0,0,64,97,0,0,120,97,0,0,152,97,0,0,176,97,0,0,188,97,0,0,0,0,0,0,149,139,0,0,55,152,0,0,255,165,0,0,4,181,0,0,103,197,0,0,69,215,0,0,193,234,0,0,255,255,0,0,112,20,0,0,0,0,0,0,72,127,65,129,66,128,65,128,64,128,62,128,64,128,64,128,92,78,92,79,92,78,90,79,116,41,115,40,114,40,132,26,132,26,145,17,161,12,176,10,177,11,24,179,48,138,54,135,54,132,53,134,56,133,55,132,55,132,61,114,70,96,74,88,75,88,87,74,89,66,91,67,100,59,108,50,120,40,122,37,97,43,78,50,83,78,84,81,88,75,86,74,87,71,90,73,93,74,93,74,109,40,114,36,117,34,117,34,143,17,145,18,146,19,162,12,165,10,178,7,189,6,190,8,177,9,23,178,54,115,63,102,66,98,69,99,74,89,71,91,73,91,78,89,86,80,92,66,93,64,102,59,103,60,104,60,117,52,123,44,138,35,133,31,97,38,77,45,61,90,93,60,105,42,107,41,110,45,116,38,113,38,112,38,124,26,132,27,136,19,140,20,155,14,159,16,158,18,170,13,177,10,187,8,192,6,175,9,159,10,21,178,59,110,71,86,75,85,84,83,91,66,88,73,87,72,92,75,98,72,105,58,107,54,115,52,114,55,112,56,129,51,132,40,150,33,140,29,98,35,77,42,42,121,96,66,108,43,111,40,117,44,123,32,120,36,119,33,127,33,134,34,139,21,147,23,152,20,158,25,154,26,166,21,173,16,184,13,184,10,150,13,139,15,22,178,63,114,74,82,84,83,92,82,103,62,96,72,96,67,101,73,107,72,113,55,118,52,125,52,118,52,117,55,135,49,137,39,157,32,145,29,97,33,77,40,0,0,102,63,0,0,76,63,0,0,38,63,0,0,0,63,0,134,107,63,0,20,46,63,0,112,189,62,0,208,76,62,2,1,0,0,0,0,0,0,0,8,13,16,19,21,23,24,26,27,28,29,30,31,32,32,33,34,34,35,36,36,37,37,6,0,0,0,4,0,0,0,3,0,0,0,0,0,0,0,0,15,8,7,4,11,12,3,2,13,10,5,6,9,14,1,0,9,6,3,4,5,8,1,2,7,0,0,0,0,0,0,6,0,3,0,7,3,0,1,10,0,2,6,18,10,12,0,4,0,2,0,0,0,9,4,7,4,0,3,12,7,7,0,210,6,138,58,171,152,0,0,198,26,169,100,246,216,0,0,71,56,43,30,21,12,6,0,199,165,144,124,109,96,84,71,61,51,42,32,23,15,8,0,241,225,211,199,187,175,164,153,142,132,123,114,105,96,88,80,72,64,57,50,44,38,33,29,24,20,16,12,9,5,2,0,4,6,24,7,5,0,0,2,0,0,12,28,41,13,252,247,15,42,25,14,1,254,62,41,247,246,37,65,252,3,250,4,66,7,248,16,14,38,253,33,13,22,39,23,12,255,36,64,27,250,249,10,55,43,17,1,1,8,1,1,6,245,74,53,247,244,55,76,244,8,253,3,93,27,252,26,39,59,3,248,2,0,77,11,9,248,22,44,250,7,40,9,26,3,9,249,20,101,249,4,3,248,42,26,0,241,33,68,2,23,254,55,46,254,15,3,255,21,16,41,250,27,61,39,5,245,42,88,4,1,254,60,65,6,252,255,251,73,56,1,247,19,94,29,247,0,12,99,6,4,8,237,102,46,243,3,2,13,3,2,9,235,84,72,238,245,46,104,234,8,18,38,48,23,0,240,70,83,235,11,5,245,117,22,248,250,23,117,244,3,3,248,95,28,4,246,15,77,60,241,255,4,124,2,252,3,38,84,24,231,2,13,42,13,31,21,252,56,46,255,255,35,79,243,19,249,65,88,247,242,20,4,81,49,227,20,0,75,3,239,5,247,44,92,248,1,253,22,69,31,250,95,41,244,5,39,67,16,252,1,0,250,120,55,220,243,44,122,4,232,81,5,11,3,7,2,0,9,10,88,12,35,60,83,108,132,157,180,206,228,15,32,55,77,101,125,151,175,201,225,19,42,66,89,114,137,162,184,209,230,12,25,50,72,97,120,147,172,200,223,26,44,69,90,114,135,159,180,205,225,13,22,53,80,106,130,156,180,205,228,15,25,44,64,90,115,142,168,196,222,19,24,62,82,100,120,145,168,190,214,22,31,50,79,103,120,151,170,203,227,21,29,45,65,106,124,150,171,196,224,30,49,75,97,121,142,165,186,209,229,19,25,52,70,93,116,143,166,192,219,26,34,62,75,97,118,145,167,194,217,25,33,56,70,91,113,143,165,196,223,21,34,51,72,97,117,145,171,196,222,20,29,50,67,90,117,144,168,197,221,22,31,48,66,95,117,146,168,196,222,24,33,51,77,116,134,158,180,200,224,21,28,70,87,106,124,149,170,194,217,26,33,53,64,83,117,152,173,204,225,27,34,65,95,108,129,155,174,210,225,20,26,72,99,113,131,154,176,200,219,34,43,61,78,93,114,155,177,205,229,23,29,54,97,124,138,163,179,209,229,30,38,56,89,118,129,158,178,200,231,21,29,49,63,85,111,142,163,193,222,27,48,77,103,133,158,179,196,215,232,29,47,74,99,124,151,176,198,220,237,33,42,61,76,93,121,155,174,207,225,29,53,87,112,136,154,170,188,208,227,24,30,52,84,131,150,166,186,203,229,37,48,64,84,104,118,156,177,201,230,212,178,148,129,108,96,85,82,79,77,61,59,57,56,51,49,48,45,42,41,40,38,36,34,31,30,21,12,10,3,1,0,255,245,244,236,233,225,217,203,190,176,175,161,149,136,125,114,102,91,81,71,60,52,43,35,28,20,19,18,12,11,5,0,179,138,140,148,151,149,153,151,163,116,67,82,59,92,72,100,89,92,0,0,0,0,0,0,16,0,0,0,0,99,66,36,36,34,36,34,34,34,34,83,69,36,52,34,116,102,70,68,68,176,102,68,68,34,65,85,68,84,36,116,141,152,139,170,132,187,184,216,137,132,249,168,185,139,104,102,100,68,68,178,218,185,185,170,244,216,187,187,170,244,187,187,219,138,103,155,184,185,137,116,183,155,152,136,132,217,184,184,170,164,217,171,155,139,244,169,184,185,170,164,216,223,218,138,214,143,188,218,168,244,141,136,155,170,168,138,220,219,139,164,219,202,216,137,168,186,246,185,139,116,185,219,185,138,100,100,134,100,102,34,68,68,100,68,168,203,221,218,168,167,154,136,104,70,164,246,171,137,139,137,155,218,219,139,255,254,253,238,14,3,2,1,0,255,254,252,218,35,3,2,1,0,255,254,250,208,59,4,2,1,0,255,254,246,194,71,10,2,1,0,255,252,236,183,82,8,2,1,0,255,252,235,180,90,17,2,1,0,255,248,224,171,97,30,4,1,0,255,254,236,173,95,37,7,1,0,255,255,255,131,6,145,255,255,255,255,255,236,93,15,96,255,255,255,255,255,194,83,25,71,221,255,255,255,255,162,73,34,66,162,255,255,255,210,126,73,43,57,173,255,255,255,201,125,71,48,58,130,255,255,255,166,110,73,57,62,104,210,255,255,251,123,65,55,68,100,171,255,250,0,3,0,6,0,3,0,3,0,3,0,4,0,3,0,3,0,3,0,205,1,0,0,7,23,38,54,69,85,100,116,131,147,162,178,193,208,223,239,13,25,41,55,69,83,98,112,127,142,157,171,187,203,220,236,15,21,34,51,61,78,92,106,126,136,152,167,185,205,225,240,10,21,36,50,63,79,95,110,126,141,157,173,189,205,221,237,17,20,37,51,59,78,89,107,123,134,150,164,184,205,224,240,10,15,32,51,67,81,96,112,129,142,158,173,189,204,220,236,8,21,37,51,65,79,98,113,126,138,155,168,179,192,209,218,12,15,34,55,63,78,87,108,118,131,148,167,185,203,219,236,16,19,32,36,56,79,91,108,118,136,154,171,186,204,220,237,11,28,43,58,74,89,105,120,135,150,165,180,196,211,226,241,6,16,33,46,60,75,92,107,123,137,156,169,185,199,214,225,11,19,30,44,57,74,89,105,121,135,152,169,186,202,218,234,12,19,29,46,57,71,88,100,120,132,148,165,182,199,216,233,17,23,35,46,56,77,92,106,123,134,152,167,185,204,222,237,14,17,45,53,63,75,89,107,115,132,151,171,188,206,221,240,9,16,29,40,56,71,88,103,119,137,154,171,189,205,222,237,16,19,36,48,57,76,87,105,118,132,150,167,185,202,218,236,12,17,29,54,71,81,94,104,126,136,149,164,182,201,221,237,15,28,47,62,79,97,115,129,142,155,168,180,194,208,223,238,8,14,30,45,62,78,94,111,127,143,159,175,192,207,223,239,17,30,49,62,79,92,107,119,132,145,160,174,190,204,220,235,14,19,36,45,61,76,91,108,121,138,154,172,189,205,222,238,12,18,31,45,60,76,91,107,123,138,154,171,187,204,221,236,13,17,31,43,53,70,83,103,114,131,149,167,185,203,220,237,17,22,35,42,58,78,93,110,125,139,155,170,188,206,224,240,8,15,34,50,67,83,99,115,131,146,162,178,193,209,224,239,13,16,41,66,73,86,95,111,128,137,150,163,183,206,225,241,17,25,37,52,63,75,92,102,119,132,144,160,175,191,212,231,19,31,49,65,83,100,117,133,147,161,174,187,200,213,227,242,18,31,52,68,88,103,117,126,138,149,163,177,192,207,223,239,16,29,47,61,76,90,106,119,133,147,161,176,193,209,224,240,15,21,35,50,61,73,86,97,110,119,129,141,175,198,218,237,225,204,201,184,183,175,158,154,153,135,119,115,113,110,109,99,98,95,79,68,52,50,48,45,43,32,31,27,18,10,3,0,255,251,235,230,212,201,196,182,167,166,163,151,138,124,110,104,90,78,76,70,69,57,45,34,24,21,11,6,5,4,3,0,175,148,160,176,178,173,174,164,177,174,196,182,198,192,182,68,62,66,60,72,117,85,90,118,136,151,142,160,142,155,0,0,0,0,0,0,0,0,0,1,100,102,102,68,68,36,34,96,164,107,158,185,180,185,139,102,64,66,36,34,34,0,1,32,208,139,141,191,152,185,155,104,96,171,104,166,102,102,102,132,1,0,0,0,0,16,16,0,80,109,78,107,185,139,103,101,208,212,141,139,173,153,123,103,36,0,0,0,0,0,0,1,48,0,0,0,0,0,0,32,68,135,123,119,119,103,69,98,68,103,120,118,118,102,71,98,134,136,157,184,182,153,139,134,208,168,248,75,189,143,121,107,32,49,34,34,34,0,17,2,210,235,139,123,185,137,105,134,98,135,104,182,100,183,171,134,100,70,68,70,66,66,34,131,64,166,102,68,36,2,1,0,134,166,102,68,34,34,66,132,212,246,158,139,107,107,87,102,100,219,125,122,137,118,103,132,114,135,137,105,171,106,50,34,164,214,141,143,185,151,121,103,192,34,0,0,0,0,0,1,208,109,74,187,134,249,159,137,102,110,154,118,87,101,119,101,0,2,0,36,36,66,68,35,96,164,102,100,36,0,2,33,167,138,174,102,100,84,2,2,100,107,120,119,36,197,24,0,255,254,253,244,12,3,2,1,0,255,254,252,224,38,3,2,1,0,255,254,251,209,57,4,2,1,0,255,254,244,195,69,4,2,1,0,255,251,232,184,84,7,2,1,0,255,254,240,186,86,14,2,1,0,255,254,239,178,91,30,5,1,0,255,248,227,177,100,19,2,1,0,255,255,255,156,4,154,255,255,255,255,255,227,102,15,92,255,255,255,255,255,213,83,24,72,236,255,255,255,255,150,76,33,63,214,255,255,255,190,121,77,43,55,185,255,255,255,245,137,71,43,59,139,255,255,255,255,131,66,50,66,107,194,255,255,166,116,76,55,53,125,255,255,100,0,3,0,40,0,3,0,3,0,3,0,5,0,14,0,14,0,10,0,11,0,3,0,8,0,9,0,7,0,3,0,91,1,0,0,0,0,0,0,203,150,0,0,0,0,0,0,215,195,166,125,110,82,0,0,255,255,0,0,0,0,0,0,184,126,154,121,0,0,0,0,154,121,102,102,0,0,0,0,184,126,51,115,0,0,0,0,15,0,0,0,10,0,0,0,5,0,0,0,0,0,0,0,128,187,0,0,120,0,0,0,21,0,0,0,21,0,0,0,0,154,89,63,0,0,0,0,0,0,128,63,0,0,128,63,224,20,0,0,3,0,0,0,8,0,0,0,120,0,0,0,11,0,0,0,16,21,0,0,248,21,0,0,40,22,0,0,128,7,0,0,3,0,0,0,8,24,0,0,64,24,0,0,120,24,0,0,176,24,0,0,232,24,0,0,136,1,0,0,8,53,0,0,224,53,0,0,104,55,0,0,0,0,0,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,10,0,12,0,14,0,16,0,20,0,24,0,28,0,34,0,40,0,48,0,60,0,78,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,80,75,69,63,56,49,40,34,29,20,18,10,0,0,0,0,0,0,0,0,110,100,90,84,78,71,65,58,51,45,39,32,26,20,12,0,0,0,0,0,0,118,110,103,93,86,80,75,70,65,59,53,47,40,31,23,15,4,0,0,0,0,126,119,112,104,95,89,83,78,72,66,60,54,47,39,32,25,17,12,1,0,0,134,127,120,114,103,97,91,85,78,72,66,60,54,47,41,35,29,23,16,10,1,144,137,130,124,113,107,101,95,88,82,76,70,64,57,51,45,39,33,26,15,1,152,145,138,132,123,117,111,105,98,92,86,80,74,67,61,55,49,43,36,20,1,162,155,148,142,133,127,121,115,108,102,96,90,84,77,71,65,59,53,46,30,1,172,165,158,152,143,137,131,125,118,112,106,100,94,87,81,75,69,63,56,45,20,200,200,200,200,200,200,200,200,198,193,188,183,178,173,168,163,158,153,148,129,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,8,0,8,0,16,0,16,0,16,0,21,0,21,0,24,0,29,0,34,0,36,0,0,0,0,0,0,0,106,28,141,56,82,187,30,58,8,105,220,58,130,237,87,59,137,99,178,59,3,42,5,60,48,220,57,60,180,62,119,60,28,163,158,60,209,242,197,60,254,134,241,60,155,171,16,61,5,173,42,61,132,194,70,61,83,230,100,61,17,137,130,61,135,159,147,61,203,178,165,61,209,190,184,61,58,191,204,61,84,175,225,61,20,138,247,61,14,37,7,62,217,244,18,62,95,49,31,62,104,215,43,62,138,227,56,62,48,82,70,62,148,31,84,62,191,71,98,62,142,198,112,62,176,151,127,62,82,91,135,62,96,15,143,62,152,229,150,62,121,219,158,62,112,238,166,62,216,27,175,62,251,96,183,62,17,187,191,62,70,39,200,62,183,162,208,62,120,42,217,62,148,187,225,62,12,83,234,62,222,237,242,62,6,137,251,62,190,16,2,63,31,90,6,63,36,159,10,63,80,222,14,63,43,22,19,63,65,69,23,63,37,106,27,63,115,131,31,63,206,143,35,63,230,141,39,63,116,124,43,63,63,90,47,63,25,38,51,63,231,222,54,63,153,131,58,63,51,19,62,63,197,140,65,63,119,239,68,63,127,58,72,63,39,109,75,63,206,134,78,63,229,134,81,63,241,108,84,63,142,56,87,63,105,233,89,63,69,127,92,63,250,249,94,63,115,89,97,63,175,157,99,63,193,198,101,63,207,212,103,63,17,200,105,63,210,160,107,63,110,95,109,63,80,4,111,63,244,143,112,63,230,2,114,63,189,93,115,63,31,161,116,63,191,205,117,63,87,228,118,63,176,229,119,63,151,210,120,63,227,171,121,63,115,114,122,63,39,39,123,63,231,202,123,63,157,94,124,63,53,227,124,63,156,89,125,63,189,194,125,63,134,31,126,63,222,112,126,63,171,183,126,63,207,244,126,63,38,41,127,63,134,85,127,63,190,122,127,63,150,153,127,63,204,178,127,63,20,199,127,63,28,215,127,63,130,227,127,63,221,236,127,63,182,243,127,63,138,248,127,63,200,251,127,63,214,253,127,63,7,255,127,63,165,255,127,63,232,255,127,63,253,255,127,63,0,0,128,63,224,1,0,0,135,136,8,59,255,255,255,255,5,0,96,0,3,0,32,0,4,0,8,0,2,0,4,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,88,74,0,0,136,56,0,0,0,0,0,0,240,0,0,0,137,136,136,59,1,0,0,0,5,0,48,0,3,0,16,0,4,0,4,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,72,0,0,136,56,0,0,0,0,0,0,120,0,0,0,136,136,8,60,2,0,0,0,5,0,24,0,3,0,8,0,2,0,4,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,71,0,0,136,56,0,0,0,0,0,0,60,0,0,0,137,136,136,60,3,0,0,0,5,0,12,0,3,0,4,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,56,0,0,136,56,0,0,0,0,0,0,255,255,127,63,142,255,127,63,106,254,127,63,147,252,127,63,7,250,127,63,200,246,127,63,214,242,127,63,48,238,127,63,214,232,127,63,200,226,127,63,7,220,127,63,147,212,127,63,107,204,127,63,143,195,127,63,0,186,127,63,189,175,127,63,199,164,127,63,29,153,127,63,192,140,127,63,176,127,127,63,236,113,127,63,118,99,127,63,75,84,127,63,110,68,127,63,222,51,127,63,154,34,127,63,163,16,127,63,250,253,126,63,157,234,126,63,141,214,126,63,203,193,126,63,86,172,126,63,46,150,126,63,83,127,126,63,198,103,126,63,134,79,126,63,148,54,126,63,239,28,126,63,152,2,126,63,143,231,125,63,211,203,125,63,102,175,125,63,70,146,125,63,116,116,125,63,241,85,125,63,188,54,125,63,213,22,125,63,60,246,124,63,242,212,124,63,246,178,124,63,73,144,124,63,235,108,124,63,219,72,124,63,27,36,124,63,169,254,123,63,135,216,123,63,180,177,123,63,48,138,123,63,252,97,123,63,23,57,123,63,130,15,123,63,61,229,122,63,72,186,122,63,162,142,122,63,77,98,122,63,72,53,122,63,148,7,122,63,48,217,121,63,29,170,121,63,90,122,121,63,233,73,121,63,200,24,121,63,249,230,120,63,123,180,120,63,78,129,120,63,115,77,120,63,234,24,120,63,178,227,119,63,205,173,119,63,58,119,119,63,249,63,119,63,10,8,119,63,110,207,118,63,37,150,118,63,47,92,118,63,140,33,118,63,60,230,117,63,64,170,117,63,151,109,117,63,66,48,117,63,65,242,116,63,148,179,116,63,59,116,116,63,55,52,116,63,135,243,115,63,44,178,115,63,38,112,115,63,118,45,115,63,26,234,114,63,20,166,114,63,100,97,114,63,10,28,114,63,5,214,113,63,87,143,113,63,0,72,113,63,255,255,112,63,85,183,112,63,2,110,112,63,6,36,112,63,98,217,111,63,21,142,111,63,32,66,111,63,132,245,110,63,63,168,110,63,83,90,110,63,192,11,110,63,134,188,109,63,165,108,109,63,29,28,109,63,239,202,108,63,27,121,108,63,161,38,108,63,128,211,107,63,187,127,107,63,80,43,107,63,64,214,106,63,140,128,106,63,50,42,106,63,53,211,105,63,147,123,105,63,77,35,105,63,100,202,104,63,216,112,104,63,168,22,104,63,213,187,103,63,96,96,103,63,72,4,103,63,143,167,102,63,51,74,102,63,54,236,101,63,151,141,101,63,87,46,101,63,119,206,100,63,245,109,100,63,212,12,100,63,18,171,99,63,177,72,99,63,176,229,98,63,16,130,98,63,209,29,98,63,243,184,97,63,119,83,97,63,92,237,96,63,164,134,96,63,78,31,96,63,91,183,95,63,203,78,95,63,158,229,94,63,213,123,94,63,112,17,94,63,110,166,93,63,210,58,93,63,154,206,92,63,198,97,92,63,89,244,91,63,81,134,91,63,174,23,91,63,114,168,90,63,157,56,90,63,46,200,89,63,39,87,89,63,135,229,88,63,79,115,88,63,127,0,88,63,23,141,87,63,24,25,87,63,130,164,86,63,86,47,86,63,147,185,85,63,58,67,85,63,75,204,84,63,199,84,84,63,174,220,83,63,1,100,83,63,191,234,82,63,233,112,82,63,127,246,81,63,130,123,81,63,242,255,80,63,207,131,80,63,26,7,80,63,210,137,79,63,250,11,79,63,144,141,78,63,148,14,78,63,9,143,77,63,237,14,77,63,65,142,76,63,5,13,76,63,59,139,75,63,225,8,75,63,249,133,74,63,131,2,74,63,127,126,73,63,238,249,72,63,207,116,72,63,36,239,71,63,237,104,71,63,41,226,70,63,218,90,70,63,0,211,69,63,155,74,69,63,172,193,68,63,50,56,68,63,47,174,67,63,162,35,67,63,141,152,66,63,239,12,66,63,200,128,65,63,26,244,64,63,229,102,64,63,40,217,63,63,229,74,63,63,27,188,62,63,204,44,62,63,247,156,61,63,157,12,61,63,190,123,60,63,92,234,59,63,117,88,59,63,10,198,58,63,29,51,58,63,173,159,57,63,187,11,57,63,71,119,56,63,81,226,55,63,218,76,55,63,227,182,54,63,107,32,54,63,116,137,53,63,253,241,52,63,7,90,52,63,147,193,51,63,160,40,51,63,48,143,50,63,66,245,49,63,216,90,49,63,241,191,48,63,142,36,48,63,175,136,47,63,85,236,46,63,129,79,46,63,50,178,45,63,105,20,45,63,39,118,44,63,107,215,43,63,55,56,43,63,139,152,42,63,103,248,41,63,204,87,41,63,186,182,40,63,50,21,40,63,51,115,39,63,191,208,38,63,214,45,38,63,121,138,37,63,167,230,36,63,97,66,36,63,169,157,35,63,125,248,34,63,223,82,34,63,207,172,33,63,77,6,33,63,91,95,32,63,248,183,31,63,37,16,31,63,226,103,30,63,48,191,29,63,16,22,29,63,129,108,28,63,132,194,27,63,26,24,27,63,67,109,26,63,0,194,25,63,81,22,25,63,54,106,24,63,177,189,23,63,193,16,23,63,103,99,22,63,163,181,21,63,118,7,21,63,225,88,20,63,228,169,19,63,127,250,18,63,179,74,18,63,128,154,17,63,231,233,16,63,232,56,16,63,132,135,15,63,187,213,14,63,142,35,14,63,254,112,13,63,10,190,12,63,179,10,12,63,250,86,11,63,223,162,10,63,99,238,9,63,134,57,9,63,73,132,8,63,172,206,7,63,175,24,7,63,84,98,6,63,155,171,5,63,131,244,4,63,15,61,4,63,61,133,3,63,15,205,2,63,134,20,2,63,161,91,1,63,97,162,0,63,143,209,255,62,167,93,254,62,14,233,252,62,194,115,251,62,198,253,249,62,27,135,248,62,193,15,247,62,186,151,245,62,6,31,244,62,168,165,242,62,158,43,241,62,236,176,239,62,145,53,238,62,144,185,236,62,232,60,235,62,154,191,233,62,169,65,232,62,21,195,230,62,223,67,229,62,8,196,227,62,145,67,226,62,124,194,224,62,200,64,223,62,120,190,221,62,140,59,220,62,6,184,218,62,230,51,217,62,46,175,215,62,223,41,214,62,249,163,212,62,125,29,211,62,110,150,209,62,204,14,208,62,151,134,206,62,210,253,204,62,125,116,203,62,153,234,201,62,39,96,200,62,40,213,198,62,159,73,197,62,138,189,195,62,236,48,194,62,198,163,192,62,25,22,191,62,230,135,189,62,45,249,187,62,241,105,186,62,50,218,184,62,241,73,183,62,47,185,181,62,238,39,180,62,47,150,178,62,242,3,177,62,57,113,175,62,4,222,173,62,86,74,172,62,47,182,170,62,144,33,169,62,122,140,167,62,239,246,165,62,239,96,164,62,124,202,162,62,151,51,161,62,64,156,159,62,122,4,158,62,68,108,156,62,161,211,154,62,145,58,153,62,22,161,151,62,48,7,150,62,225,108,148,62,41,210,146,62,11,55,145,62,135,155,143,62,158,255,141,62,81,99,140,62,162,198,138,62,145,41,137,62,32,140,135,62,80,238,133,62,34,80,132,62,151,177,130,62,176,18,129,62,222,230,126,62,169,167,123,62,195,103,120,62,47,39,117,62,238,229,113,62,4,164,110,62,115,97,107,62,60,30,104,62,98,218,100,62,232,149,97,62,207,80,94,62,26,11,91,62,204,196,87,62,230,125,84,62,107,54,81,62,93,238,77,62,191,165,74,62,146,92,71,62,218,18,68,62,151,200,64,62,206,125,61,62,128,50,58,62,174,230,54,62,93,154,51,62,141,77,48,62,66,0,45,62,125,178,41,62,66,100,38,62,145,21,35,62,110,198,31,62,219,118,28,62,218,38,25,62,109,214,21,62,152,133,18,62,91,52,15,62,186,226,11,62,183,144,8,62,84,62,5,62,148,235,1,62,240,48,253,61,6,138,246,61,113,226,239,61,51,58,233,61,79,145,226,61,207,231,219,61,181,61,213,61,3,147,206,61,192,231,199,61,242,59,193,61,156,143,186,61,195,226,179,61,108,53,173,61,155,135,166,61,85,217,159,61,159,42,153,61,126,123,146,61,246,203,139,61,11,28,133,61,135,215,124,61,70,118,111,61,93,20,98,61,214,177,84,61,185,78,71,61,16,235,57,61,229,134,44,61,64,34,31,61,44,189,17,61,178,87,4,61,181,227,237,60,96,23,211,60,118,74,184,60,11,125,157,60,50,175,130,60,250,193,79,60,254,36,26,60,42,15,201,59,153,167,59,59,46,125,214,185,210,70,113,187,171,222,227,187,166,140,39,188,129,41,93,188,225,98,137,188,160,48,164,188,236,253,190,188,179,202,217,188,224,150,244,188,49,177,7,189,147,22,21,189,140,123,34,189,19,224,47,189,30,68,61,189,165,167,74,189,157,10,88,189,254,108,101,189,190,206,114,189,234,23,128,189,27,200,134,189,237,119,141,189,92,39,148,189,99,214,154,189,253,132,161,189,38,51,168,189,217,224,174,189,17,142,181,189,202,58,188,189,254,230,194,189,170,146,201,189,200,61,208,189,84,232,214,189,74,146,221,189,164,59,228,189,93,228,234,189,114,140,241,189,221,51,248,189,154,218,254,189,82,192,2,190,252,18,6,190,71,101,9,190,50,183,12,190,186,8,16,190,221,89,19,190,152,170,22,190,234,250,25,190,208,74,29,190,71,154,32,190,78,233,35,190,225,55,39,190,0,134,42,190,166,211,45,190,211,32,49,190,131,109,52,190,181,185,55,190,101,5,59,190,147,80,62,190,58,155,65,190,90,229,68,190,240,46,72,190,249,119,75,190,116,192,78,190,93,8,82,190,179,79,85,190,115,150,88,190,156,220,91,190,42,34,95,190,27,103,98,190,109,171,101,190,31,239,104,190,44,50,108,190,148,116,111,190,84,182,114,190,106,247,117,190,211,55,121,190,141,119,124,190,150,182,127,190,117,122,129,190,69,25,131,190,185,183,132,190,208,85,134,190,136,243,135,190,225,144,137,190,218,45,139,190,112,202,140,190,164,102,142,190,116,2,144,190,223,157,145,190,228,56,147,190,129,211,148,190,182,109,150,190,129,7,152,190,226,160,153,190,215,57,155,190,95,210,156,190,121,106,158,190,35,2,160,190,94,153,161,190,38,48,163,190,125,198,164,190,96,92,166,190,206,241,167,190,198,134,169,190,71,27,171,190,80,175,172,190,224,66,174,190,245,213,175,190,143,104,177,190,173,250,178,190,77,140,180,190,110,29,182,190,16,174,183,190,48,62,185,190,207,205,186,190,234,92,188,190,130,235,189,190,148,121,191,190,31,7,193,190,35,148,194,190,159,32,196,190,145,172,197,190,248,55,199,190,211,194,200,190,34,77,202,190,226,214,203,190,19,96,205,190,181,232,206,190,197,112,208,190,66,248,209,190,45,127,211,190,131,5,213,190,67,139,214,190,109,16,216,190,255,148,217,190,249,24,219,190,89,156,220,190,29,31,222,190,70,161,223,190,211,34,225,190,193,163,226,190,16,36,228,190,190,163,229,190,204,34,231,190,56,161,232,190,0,31,234,190,36,156,235,190,162,24,237,190,122,148,238,190,171,15,240,190,51,138,241,190,18,4,243,190,70,125,244,190,207,245,245,190,170,109,247,190,217,228,248,190,88,91,250,190,40,209,251,190,71,70,253,190,181,186,254,190,56,23,0,191,187,208,0,191,228,137,1,191,178,66,2,191,37,251,2,191,59,179,3,191,246,106,4,191,83,34,5,191,83,217,5,191,245,143,6,191,56,70,7,191,29,252,7,191,162,177,8,191,199,102,9,191,140,27,10,191,240,207,10,191,243,131,11,191,147,55,12,191,209,234,12,191,172,157,13,191,36,80,14,191,56,2,15,191,232,179,15,191,50,101,16,191,24,22,17,191,151,198,17,191,176,118,18,191,99,38,19,191,174,213,19,191,145,132,20,191,13,51,21,191,31,225,21,191,200,142,22,191,8,60,23,191,221,232,23,191,72,149,24,191,72,65,25,191,220,236,25,191,4,152,26,191,192,66,27,191,15,237,27,191,240,150,28,191,99,64,29,191,104,233,29,191,254,145,30,191,37,58,31,191,220,225,31,191,35,137,32,191,250,47,33,191,95,214,33,191,82,124,34,191,212,33,35,191,227,198,35,191,127,107,36,191,167,15,37,191,92,179,37,191,157,86,38,191,104,249,38,191,191,155,39,191,160,61,40,191,11,223,40,191,255,127,41,191,125,32,42,191,131,192,42,191,17,96,43,191,39,255,43,191,196,157,44,191,232,59,45,191,146,217,45,191,195,118,46,191,121,19,47,191,180,175,47,191,115,75,48,191,183,230,48,191,127,129,49,191,203,27,50,191,153,181,50,191,234,78,51,191,189,231,51,191,18,128,52,191,232,23,53,191,63,175,53,191,22,70,54,191,110,220,54,191,69,114,55,191,156,7,56,191,113,156,56,191,197,48,57,191,150,196,57,191,230,87,58,191,178,234,58,191,252,124,59,191,194,14,60,191,3,160,60,191,193,48,61,191,250,192,61,191,173,80,62,191,219,223,62,191,131,110,63,191,165,252,63,191,64,138,64,191,83,23,65,191,224,163,65,191,228,47,66,191,96,187,66,191,83,70,67,191,190,208,67,191,158,90,68,191,246,227,68,191,194,108,69,191,5,245,69,191,188,124,70,191,232,3,71,191,137,138,71,191,157,16,72,191,37,150,72,191,32,27,73,191,142,159,73,191,111,35,74,191,193,166,74,191,134,41,75,191,188,171,75,191,99,45,76,191,122,174,76,191,2,47,77,191,250,174,77,191,98,46,78,191,57,173,78,191,126,43,79,191,51,169,79,191,85,38,80,191,230,162,80,191,228,30,81,191,80,154,81,191,40,21,82,191,109,143,82,191,30,9,83,191,59,130,83,191,195,250,83,191,183,114,84,191,22,234,84,191,223,96,85,191,18,215,85,191,176,76,86,191,183,193,86,191,39,54,87,191,0,170,87,191,66,29,88,191,236,143,88,191,254,1,89,191,120,115,89,191,89,228,89,191,162,84,90,191,81,196,90,191,102,51,91,191,226,161,91,191,195,15,92,191,10,125,92,191,183,233,92,191,200,85,93,191,62,193,93,191,24,44,94,191,87,150,94,191,249,255,94,191,255,104,95,191,104,209,95,191,51,57,96,191,98,160,96,191,243,6,97,191,229,108,97,191,58,210,97,191,240,54,98,191,8,155,98,191,128,254,98,191,89,97,99,191,146,195,99,191,44,37,100,191,37,134,100,191,126,230,100,191,55,70,101,191,78,165,101,191,197,3,102,191,154,97,102,191,205,190,102,191,94,27,103,191,77,119,103,191,154,210,103,191,68,45,104,191,75,135,104,191,174,224,104,191,111,57,105,191,139,145,105,191,4,233,105,191,217,63,106,191,9,150,106,191,148,235,106,191,123,64,107,191,188,148,107,191,89,232,107,191,79,59,108,191,160,141,108,191,75,223,108,191,79,48,109,191,173,128,109,191,101,208,109,191,117,31,110,191,223,109,110,191,161,187,110,191,187,8,111,191,46,85,111,191,248,160,111,191,27,236,111,191,149,54,112,191,103,128,112,191,144,201,112,191,15,18,113,191,230,89,113,191,19,161,113,191,151,231,113,191,113,45,114,191,160,114,114,191,38,183,114,191,1,251,114,191,50,62,115,191,184,128,115,191,148,194,115,191,196,3,116,191,73,68,116,191,34,132,116,191,80,195,116,191,210,1,117,191,168,63,117,191,210,124,117,191,80,185,117,191,33,245,117,191,69,48,118,191,189,106,118,191,136,164,118,191,166,221,118,191,22,22,119,191,217,77,119,191,239,132,119,191,87,187,119,191,17,241,119,191,29,38,120,191,122,90,120,191,42,142,120,191,43,193,120,191,125,243,120,191,33,37,121,191,22,86,121,191,92,134,121,191,242,181,121,191,218,228,121,191,18,19,122,191,154,64,122,191,115,109,122,191,157,153,122,191,22,197,122,191,223,239,122,191,248,25,123,191,97,67,123,191,26,108,123,191,34,148,123,191,122,187,123,191,32,226,123,191,23,8,124,191,92,45,124,191,240,81,124,191,211,117,124,191,5,153,124,191,134,187,124,191,85,221,124,191,115,254,124,191,223,30,125,191,154,62,125,191,163,93,125,191,250,123,125,191,159,153,125,191,146,182,125,191,211,210,125,191,98,238,125,191,63,9,126,191,105,35,126,191,225,60,126,191,167,85,126,191,186,109,126,191,27,133,126,191,201,155,126,191,196,177,126,191,13,199,126,191,162,219,126,191,133,239,126,191,181,2,127,191,50,21,127,191,252,38,127,191,19,56,127,191,118,72,127,191,39,88,127,191,36,103,127,191,110,117,127,191,5,131,127,191,232,143,127,191,25,156,127,191,149,167,127,191,95,178,127,191,116,188,127,191,215,197,127,191,133,206,127,191,129,214,127,191,200,221,127,191,93,228,127,191,61,234,127,191,106,239,127,191,227,243,127,191,169,247,127,191,187,250,127,191,25,253,127,191,196,254,127,191,187,255,127,191,250,255,127,63,57,254,127,63,169,249,127,63,75,242,127,63,30,232,127,63,35,219,127,63,89,203,127,63,193,184,127,63],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([91,163,127,63,40,139,127,63,39,112,127,63,90,82,127,63,191,49,127,63,88,14,127,63,37,232,126,63,38,191,126,63,92,147,126,63,200,100,126,63,105,51,126,63,65,255,125,63,79,200,125,63,150,142,125,63,20,82,125,63,203,18,125,63,188,208,124,63,231,139,124,63,77,68,124,63,239,249,123,63,205,172,123,63,233,92,123,63,67,10,123,63,221,180,122,63,182,92,122,63,209,1,122,63,46,164,121,63,206,67,121,63,178,224,120,63,220,122,120,63,76,18,120,63,4,167,119,63,4,57,119,63,79,200,118,63,228,84,118,63,198,222,117,63,246,101,117,63,117,234,116,63,68,108,116,63,101,235,115,63,218,103,115,63,163,225,114,63,194,88,114,63,57,205,113,63,9,63,113,63,52,174,112,63,187,26,112,63,160,132,111,63,228,235,110,63,138,80,110,63,147,178,109,63,1,18,109,63,213,110,108,63,17,201,107,63,183,32,107,63,201,117,106,63,73,200,105,63,57,24,105,63,155,101,104,63,111,176,103,63,186,248,102,63,124,62,102,63,184,129,101,63,111,194,100,63,164,0,100,63,90,60,99,63,145,117,98,63,76,172,97,63,142,224,96,63,89,18,96,63,174,65,95,63,145,110,94,63,3,153,93,63,8,193,92,63,160,230,91,63,207,9,91,63,152,42,90,63,251,72,89,63,253,100,88,63,159,126,87,63,229,149,86,63,208,170,85,63,99,189,84,63,161,205,83,63,140,219,82,63,39,231,81,63,117,240,80,63,121,247,79,63,52,252,78,63,171,254,77,63,223,254,76,63,212,252,75,63,140,248,74,63,10,242,73,63,82,233,72,63,101,222,71,63,71,209,70,63,251,193,69,63,132,176,68,63,229,156,67,63,32,135,66,63,58,111,65,63,52,85,64,63,19,57,63,63,216,26,62,63,136,250,60,63,38,216,59,63,180,179,58,63,54,141,57,63,175,100,56,63,34,58,55,63,147,13,54,63,5,223,52,63,124,174,51,63,249,123,50,63,130,71,49,63,25,17,48,63,194,216,46,63,127,158,45,63,86,98,44,63,72,36,43,63,90,228,41,63,144,162,40,63,235,94,39,63,113,25,38,63,37,210,36,63,9,137,35,63,35,62,34,63,117,241,32,63,4,163,31,63,210,82,30,63,228,0,29,63,61,173,27,63,225,87,26,63,211,0,25,63,25,168,23,63,180,77,22,63,170,241,20,63,253,147,19,63,178,52,18,63,204,211,16,63,80,113,15,63,66,13,14,63,164,167,12,63,124,64,11,63,205,215,9,63,154,109,8,63,233,1,7,63,189,148,5,63,25,38,4,63,3,182,2,63,126,68,1,63,28,163,255,62,110,186,252,62,250,206,249,62,202,224,246,62,228,239,243,62,81,252,240,62,26,6,238,62,71,13,235,62,224,17,232,62,237,19,229,62,119,19,226,62,135,16,223,62,36,11,220,62,88,3,217,62,42,249,213,62,164,236,210,62,205,221,207,62,175,204,204,62,82,185,201,62,191,163,198,62,254,139,195,62,24,114,192,62,22,86,189,62,0,56,186,62,224,23,183,62,189,245,179,62,161,209,176,62,149,171,173,62,162,131,170,62,207,89,167,62,39,46,164,62,178,0,161,62,121,209,157,62,133,160,154,62,223,109,151,62,143,57,148,62,160,3,145,62,26,204,141,62,5,147,138,62,107,88,135,62,86,28,132,62,205,222,128,62,182,63,123,62,16,191,116,62,187,59,110,62,201,181,103,62,77,45,97,62,89,162,90,62,255,20,84,62,81,133,77,62,99,243,70,62,70,95,64,62,13,201,57,62,202,48,51,62,144,150,44,62,114,250,37,62,130,92,31,62,210,188,24,62,118,27,18,62,127,120,11,62,1,212,4,62,29,92,252,61,114,13,239,61,41,188,225,61,102,104,212,61,78,18,199,61,8,186,185,61,184,95,172,61,132,3,159,61,146,165,145,61,7,70,132,61,18,202,109,61,122,5,83,61,145,62,56,61,164,117,29,61,252,170,2,61,202,189,207,60,86,35,154,60,97,14,73,60,197,167,187,59,61,122,86,186,9,70,241,187,18,221,99,188,80,138,167,188,65,36,221,188,227,93,9,189,35,40,36,189,150,240,62,189,242,182,89,189,234,122,116,189,26,158,135,189,66,253,148,189,200,90,162,189,134,182,175,189,87,16,189,189,22,104,202,189,155,189,215,189,195,16,229,189,105,97,242,189,101,175,255,189,74,125,6,190,104,33,13,190,250,195,19,190,237,100,26,190,46,4,33,190,172,161,39,190,83,61,46,190,16,215,52,190,210,110,59,190,134,4,66,190,25,152,72,190,121,41,79,190,148,184,85,190,86,69,92,190,174,207,98,190,137,87,105,190,214,220,111,190,128,95,118,190,120,223,124,190,84,174,129,190,129,235,132,190,56,39,136,190,114,97,139,190,36,154,142,190,69,209,145,190,205,6,149,190,179,58,152,190,238,108,155,190,116,157,158,190,61,204,161,190,64,249,164,190,115,36,168,190,207,77,171,190,73,117,174,190,218,154,177,190,120,190,180,190,27,224,183,190,186,255,186,190,75,29,190,190,199,56,193,190,37,82,196,190,91,105,199,190,97,126,202,190,48,145,205,190,188,161,208,190,0,176,211,190,241,187,214,190,135,197,217,190,186,204,220,190,129,209,223,190,211,211,226,190,169,211,229,190,250,208,232,190,189,203,235,190,234,195,238,190,120,185,241,190,96,172,244,190,154,156,247,190,28,138,250,190,223,116,253,190,109,46,0,191,3,161,1,191,45,18,3,191,230,129,4,191,44,240,5,191,250,92,7,191,76,200,8,191,30,50,10,191,108,154,11,191,50,1,13,191,108,102,14,191,23,202,15,191,45,44,17,191,172,140,18,191,144,235,19,191,213,72,21,191,118,164,22,191,113,254,23,191,192,86,25,191,98,173,26,191,81,2,28,191,138,85,29,191,9,167,30,191,203,246,31,191,204,68,33,191,9,145,34,191,124,219,35,191,36,36,37,191,253,106,38,191,2,176,39,191,48,243,40,191,132,52,42,191,250,115,43,191,143,177,44,191,63,237,45,191,7,39,47,191,227,94,48,191,208,148,49,191,202,200,50,191,206,250,51,191,218,42,53,191,232,88,54,191,247,132,55,191,2,175,56,191,7,215,57,191,3,253,58,191,241,32,60,191,207,66,61,191,154,98,62,191,79,128,63,191,233,155,64,191,104,181,65,191,198,204,66,191,1,226,67,191,23,245,68,191,3,6,70,191,196,20,71,191,86,33,72,191,182,43,73,191,225,51,74,191,212,57,75,191,141,61,76,191,9,63,77,191,68,62,78,191,61,59,79,191,240,53,80,191,90,46,81,191,121,36,82,191,74,24,83,191,202,9,84,191,247,248,84,191,206,229,85,191,77,208,86,191,112,184,87,191,55,158,88,191,156,129,89,191,160,98,90,191,62,65,91,191,117,29,92,191,65,247,92,191,162,206,93,191,148,163,94,191,20,118,95,191,34,70,96,191,186,19,97,191,217,222,97,191,127,167,98,191,169,109,99,191,84,49,100,191,126,242,100,191,38,177,101,191,73,109,102,191,229,38,103,191,248,221,103,191,128,146,104,191,123,68,105,191,232,243,105,191,195,160,106,191,12,75,107,191,192,242,107,191,222,151,108,191,100,58,109,191,80,218,109,191,160,119,110,191,83,18,111,191,102,170,111,191,217,63,112,191,169,210,112,191,213,98,113,191,91,240,113,191,58,123,114,191,113,3,115,191,253,136,115,191,222,11,116,191,17,140,116,191,150,9,117,191,107,132,117,191,143,252,117,191,0,114,118,191,189,228,118,191,198,84,119,191,24,194,119,191,178,44,120,191,147,148,120,191,187,249,120,191,40,92,121,191,217,187,121,191,205,24,122,191,2,115,122,191,121,202,122,191,47,31,123,191,36,113,123,191,88,192,123,191,201,12,124,191,118,86,124,191,95,157,124,191,130,225,124,191,224,34,125,191,119,97,125,191,71,157,125,191,79,214,125,191,142,12,126,191,4,64,126,191,176,112,126,191,146,158,126,191,169,201,126,191,245,241,126,191,117,23,127,191,41,58,127,191,16,90,127,191,43,119,127,191,120,145,127,191,248,168,127,191,170,189,127,191,143,207,127,191,165,222,127,191,237,234,127,191,102,244,127,191,17,251,127,191,237,254,127,191,234,255,127,63,229,248,127,63,166,230,127,63,45,201,127,63,124,160,127,63,149,108,127,63,121,45,127,63,44,227,126,63,177,141,126,63,11,45,126,63,63,193,125,63,82,74,125,63,72,200,124,63,40,59,124,63,247,162,123,63,189,255,122,63,128,81,122,63,72,152,121,63,30,212,120,63,9,5,120,63,19,43,119,63,70,70,118,63,172,86,117,63,78,92,116,63,56,87,115,63,118,71,114,63,19,45,113,63,28,8,112,63,158,216,110,63,165,158,109,63,64,90,108,63,126,11,107,63,107,178,105,63,25,79,104,63,150,225,102,63,242,105,101,63,62,232,99,63,139,92,98,63,234,198,96,63,109,39,95,63,38,126,93,63,40,203,91,63,133,14,90,63,83,72,88,63,163,120,86,63,139,159,84,63,32,189,82,63,118,209,80,63,163,220,78,63,189,222,76,63,219,215,74,63,19,200,72,63,124,175,70,63,46,142,68,63,65,100,66,63,206,49,64,63,236,246,61,63,180,179,59,63,66,104,57,63,173,20,55,63,16,185,52,63,134,85,50,63,41,234,47,63,21,119,45,63,101,252,42,63,53,122,40,63,161,240,37,63,198,95,35,63,192,199,32,63,172,40,30,63,169,130,27,63,212,213,24,63,74,34,22,63,42,104,19,63,147,167,16,63,164,224,13,63,123,19,11,63,57,64,8,63,253,102,5,63,231,135,2,63,45,70,255,62,91,113,249,62,151,145,243,62,36,167,237,62,69,178,231,62,60,179,225,62,76,170,219,62,186,151,213,62,201,123,207,62,190,86,201,62,223,40,195,62,112,242,188,62,183,179,182,62,251,108,176,62,129,30,170,62,146,200,163,62,115,107,157,62,108,7,151,62,197,156,144,62,199,43,138,62,185,180,131,62,199,111,122,62,33,107,109,62,17,92,96,62,41,67,83,62,253,32,70,62,32,246,56,62,38,195,43,62,164,136,30,62,45,71,17,62,87,255,3,62,110,99,237,61,194,189,210,61,218,14,184,61,222,87,157,61,251,153,130,61,188,172,79,61,101,28,26,61,153,10,201,60,42,167,59,60,193,120,214,186,45,68,113,188,87,215,227,188,76,129,39,189,148,15,93,189,21,74,137,189,90,6,164,189,109,187,190,189,34,104,217,189,78,11,244,189,227,81,7,190,47,152,20,190,247,215,33,190,165,16,47,190,166,65,60,190,100,106,73,190,77,138,86,190,205,160,99,190,80,173,112,190,69,175,125,190,13,83,133,190,158,200,139,190,13,56,146,190,18,161,152,190,102,3,159,190,191,94,165,190,216,178,171,190,105,255,177,190,43,68,184,190,216,128,190,190,42,181,196,190,219,224,202,190,165,3,209,190,69,29,215,190,117,45,221,190,241,51,227,190,118,48,233,190,192,34,239,190,141,10,245,190,155,231,250,190,211,92,0,191,56,64,3,191,219,29,6,191,155,245,8,191,90,199,11,191,247,146,14,191,84,88,17,191,80,23,20,191,205,207,22,191,172,129,25,191,208,44,28,191,26,209,30,191,109,110,33,191,171,4,36,191,183,147,38,191,116,27,41,191,199,155,43,191,147,20,46,191,187,133,48,191,38,239,50,191,183,80,53,191,85,170,55,191,227,251,57,191,74,69,60,191,110,134,62,191,55,191,64,191,139,239,66,191,83,23,69,191,117,54,71,191,218,76,73,191,107,90,75,191,16,95,77,191,179,90,79,191,62,77,81,191,154,54,83,191,179,22,85,191,114,237,86,191,197,186,88,191,149,126,90,191,208,56,92,191,98,233,93,191,56,144,95,191,64,45,97,191,103,192,98,191,156,73,100,191,206,200,101,191,235,61,103,191,227,168,104,191,167,9,106,191,39,96,107,191,84,172,108,191,31,238,109,191,122,37,111,191,88,82,112,191,171,116,113,191,103,140,114,191,127,153,115,191,231,155,116,191,149,147,117,191,126,128,118,191,150,98,119,191,212,57,120,191,47,6,121,191,158,199,121,191,23,126,122,191,148,41,123,191,13,202,123,191,122,95,124,191,213,233,124,191,24,105,125,191,62,221,125,191,64,70,126,191,28,164,126,191,204,246,126,191,77,62,127,191,156,122,127,191,182,171,127,191,153,209,127,191,67,236,127,191,180,251,127,191,166,255,127,63,148,227,127,63,156,154,127,63,204,36,127,63,56,130,126,63,253,178,125,63,63,183,124,63,42,143,123,63,243,58,122,63,212,186,120,63,17,15,119,63,246,55,117,63,213,53,115,63,8,9,113,63,241,177,110,63,249,48,108,63,144,134,105,63,47,179,102,63,83,183,99,63,132,147,96,63,78,72,93,63,69,214,89,63,3,62,86,63,43,128,82,63,101,157,78,63,94,150,74,63,204,107,70,63,106,30,66,63,249,174,61,63,64,30,57,63,13,109,52,63,50,156,47,63,135,172,42,63,235,158,37,63,63,116,32,63,109,45,27,63,97,203,21,63,13,79,16,63,104,185,10,63,107,11,5,63,46,140,254,62,221,212,242,62,241,242,230,62,127,232,218,62,166,183,206,62,136,98,194,62,78,235,181,62,42,84,169,62,81,159,156,62,253,206,143,62,109,229,130,62,206,201,107,62,98,159,81,62,48,80,55,62,211,224,28,62,241,85,2,62,98,104,207,61,124,0,154,61,36,251,72,61,27,164,187,60,243,119,86,187,100,61,241,188,187,192,99,189,103,93,167,189,20,189,220,189,3,251,8,190,115,127,35,190,52,231,61,190,164,45,88,190,38,78,114,190,18,34,134,190,137,5,147,190,52,207,159,190,213,124,172,190,51,12,185,190,26,123,197,190,91,199,209,190,205,238,221,190,80,239,233,190,199,198,245,190,144,185,0,191,38,121,6,191,36,33,12,191,141,176,17,191,102,38,23,191,186,129,28,191,152,193,33,191,21,229,38,191,74,235,43,191,86,211,48,191,91,156,53,191,131,69,58,191,253,205,62,191,252,52,67,191,188,121,71,191,125,155,75,191,132,153,79,191,31,115,83,191,161,39,87,191,99,182,90,191,198,30,94,191,48,96,97,191,15,122,100,191,216,107,103,191,7,53,106,191,31,213,108,191,169,75,111,191,55,152,113,191,98,186,115,191,201,177,117,191,22,126,119,191,246,30,121,191,33,148,122,191,85,221,123,191,89,250,124,191,250,234,125,191,14,175,126,191,116,70,127,191,15,177,127,191,206,238,127,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,41,0,41,0,41,0,82,0,82,0,123,0,164,0,200,0,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,41,0,41,0,41,0,123,0,123,0,123,0,164,0,164,0,240,0,10,1,27,1,39,1,41,0,41,0,41,0,41,0,41,0,41,0,41,0,41,0,123,0,123,0,123,0,123,0,240,0,240,0,240,0,10,1,10,1,49,1,62,1,72,1,80,1,123,0,123,0,123,0,123,0,123,0,123,0,123,0,123,0,240,0,240,0,240,0,240,0,49,1,49,1,49,1,62,1,62,1,87,1,95,1,102,1,108,1,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,49,1,49,1,49,1,49,1,87,1,87,1,87,1,95,1,95,1,114,1,120,1,126,1,131,1,0,0,0,0,0,0,40,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,40,15,23,28,31,34,36,38,39,41,42,43,44,45,46,47,47,49,50,51,52,53,54,55,55,57,58,59,60,61,62,63,63,65,66,67,68,69,70,71,71,40,20,33,41,48,53,57,61,64,66,69,71,73,75,76,78,80,82,85,87,89,91,92,94,96,98,101,103,105,107,108,110,112,114,117,119,121,123,124,126,128,40,23,39,51,60,67,73,79,83,87,91,94,97,100,102,105,107,111,115,118,121,124,126,129,131,135,139,142,145,148,150,153,155,159,163,166,169,172,174,177,179,35,28,49,65,78,89,99,107,114,120,126,132,136,141,145,149,153,159,165,171,176,180,185,189,192,199,205,211,216,220,225,229,232,239,245,251,21,33,58,79,97,112,125,137,148,157,166,174,182,189,195,201,207,217,227,235,243,251,17,35,63,86,106,123,139,152,165,177,187,197,206,214,222,230,237,250,25,31,55,75,91,105,117,128,138,146,154,161,168,174,180,185,190,200,208,215,222,229,235,240,245,255,16,36,65,89,110,128,144,159,173,185,196,207,217,226,234,242,250,11,41,74,103,128,151,172,191,209,225,241,255,9,43,79,110,138,163,186,207,227,246,12,39,71,99,123,144,164,182,198,214,228,241,253,9,44,81,113,142,168,192,214,235,255,7,49,90,127,160,191,220,247,6,51,95,134,170,203,234,7,47,87,123,155,184,212,237,6,52,97,137,174,208,240,5,57,106,151,192,231,5,59,111,158,202,243,5,55,103,147,187,224,5,60,113,161,206,248,4,65,122,175,224,4,67,127,182,234,224,224,224,224,224,224,224,224,160,160,160,160,185,185,185,178,178,168,134,61,37,224,224,224,224,224,224,224,224,240,240,240,240,207,207,207,198,198,183,144,66,40,160,160,160,160,160,160,160,160,185,185,185,185,193,193,193,183,183,172,138,64,38,240,240,240,240,240,240,240,240,207,207,207,207,204,204,204,193,193,180,143,66,40,185,185,185,185,185,185,185,185,193,193,193,193,193,193,193,183,183,172,138,65,39,207,207,207,207,207,207,207,207,204,204,204,204,201,201,201,188,188,176,141,66,40,193,193,193,193,193,193,193,193,193,193,193,193,194,194,194,184,184,173,139,65,39,204,204,204,204,204,204,204,204,201,201,201,201,198,198,198,187,187,175,140,66,40,0,0,12,0,24,0,36,0,48,0,4,0,16,0,28,0,40,0,52,0,8,0,20,0,32,0,44,0,56,0,1,0,13,0,25,0,37,0,49,0,5,0,17,0,29,0,41,0,53,0,9,0,21,0,33,0,45,0,57,0,2,0,14,0,26,0,38,0,50,0,6,0,18,0,30,0,42,0,54,0,10,0,22,0,34,0,46,0,58,0,3,0,15,0,27,0,39,0,51,0,7,0,19,0,31,0,43,0,55,0,11,0,23,0,35,0,47,0,59,0,0,0,128,63,0,0,0,128,99,250,127,63,191,117,86,188,139,233,127,63,10,113,214,188,121,205,127,63,231,206,32,189,47,166,127,63,58,94,86,189,175,115,127,63,19,242,133,189,249,53,127,63,42,175,160,189,18,237,126,63,51,101,187,189,253,152,126,63,4,19,214,189,188,57,126,63,115,183,240,189,85,207,125,63,168,168,5,190,203,89,125,63,187,239,18,190,37,217,124,63,92,48,32,190,103,77,124,63,245,105,45,190,152,182,123,63,243,155,58,190,190,20,123,63,194,197,71,190,226,103,122,63,205,230,84,190,9,176,121,63,130,254,97,190,60,237,120,63,77,12,111,190,132,31,120,63,156,15,124,190,234,70,119,63,238,131,132,190,119,99,118,63,62,250,138,190,54,117,117,63,117,106,145,190,48,124,116,63,76,212,151,190,113,120,115,63,122,55,158,190,3,106,114,63,183,147,164,190,244,80,113,63,188,232,170,190,79,45,112,63,65,54,177,190,33,255,110,63,1,124,183,190,118,198,109,63,180,185,189,190,94,131,108,63,21,239,195,190,231,53,107,63,222,27,202,190,30,222,105,63,201,63,208,190,18,124,104,63,146,90,214,190,212,15,103,63,243,107,220,190,116,153,101,63,170,115,226,190,1,25,100,63,113,113,232,190,141,142,98,63,7,101,238,190,40,250,96,63,39,78,244,190,230,91,95,63,144,44,250,190,215,179,93,63,0,0,0,191,15,2,92,63,27,228,2,191,160,70,90,63,119,194,5,191,158,129,88,63,246,154,8,191,29,179,86,63,119,109,11,191,49,219,84,63,218,57,14,191,239,249,82,63,0,0,17,191,108,15,81,63,202,191,19,191,189,27,79,63,24,121,22,191,248,30,77,63,205,43,25,191,52,25,75,63,202,215,27,191,136,10,73,63,241,124,30,191,10,243,70,63,36,27,33,191,209,210,68,63,70,178,35,191,247,169,66,63,58,66,38,191,147,120,64,63,227,202,40,191,189,62,62,63,37,76,43,191,143,252,59,63,227,197,45,191,34,178,57,63,1,56,48,191,144,95,55,63,101,162,50,191,243,4,53,63,243,4,53,191,101,162,50,63,144,95,55,191,1,56,48,63,34,178,57,191,227,197,45,63,143,252,59,191,37,76,43,63,189,62,62,191,227,202,40,63,147,120,64,191,58,66,38,63,247,169,66,191,70,178,35,63,209,210,68,191,36,27,33,63,10,243,70,191,241,124,30,63,136,10,73,191,202,215,27,63,52,25,75,191,205,43,25,63,248,30,77,191,24,121,22,63,189,27,79,191,202,191,19,63,108,15,81,191,0,0,17,63,239,249,82,191,218,57,14,63,49,219,84,191,119,109,11,63,29,179,86,191,246,154,8,63,158,129,88,191,119,194,5,63,160,70,90,191,27,228,2,63,15,2,92,191,0,0,0,63,215,179,93,191,144,44,250,62,230,91,95,191,39,78,244,62,40,250,96,191,7,101,238,62,141,142,98,191,113,113,232,62,1,25,100,191,170,115,226,62,116,153,101,191,243,107,220,62,212,15,103,191,146,90,214,62,18,124,104,191,201,63,208,62,30,222,105,191,222,27,202,62,231,53,107,191,21,239,195,62,94,131,108,191,180,185,189,62,118,198,109,191,1,124,183,62,33,255,110,191,65,54,177,62,79,45,112,191,188,232,170,62,244,80,113,191,183,147,164,62,3,106,114,191,122,55,158,62,113,120,115,191,76,212,151,62,48,124,116,191,117,106,145,62,54,117,117,191,62,250,138,62,119,99,118,191,238,131,132,62,234,70,119,191,156,15,124,62,132,31,120,191,77,12,111,62,60,237,120,191,130,254,97,62,9,176,121,191,205,230,84,62,226,103,122,191,194,197,71,62,190,20,123,191,243,155,58,62,152,182,123,191,245,105,45,62,103,77,124,191,92,48,32,62,37,217,124,191,187,239,18,62,203,89,125,191,168,168,5,62,85,207,125,191,115,183,240,61,188,57,126,191,4,19,214,61,253,152,126,191,51,101,187,61,18,237,126,191,42,175,160,61,249,53,127,191,19,242,133,61,175,115,127,191,58,94,86,61,47,166,127,191,231,206,32,61,121,205,127,191,10,113,214,60,139,233,127,191,191,117,86,60,99,250,127,191,0,48,141,36,0,0,128,191,191,117,86,188,99,250,127,191,10,113,214,188,139,233,127,191,231,206,32,189,121,205,127,191,58,94,86,189,47,166,127,191,19,242,133,189,175,115,127,191,42,175,160,189,249,53,127,191,51,101,187,189,18,237,126,191,4,19,214,189,253,152,126,191,115,183,240,189,188,57,126,191,168,168,5,190,85,207,125,191,187,239,18,190,203,89,125,191,92,48,32,190,37,217,124,191,245,105,45,190,103,77,124,191,243,155,58,190,152,182,123,191,194,197,71,190,190,20,123,191,205,230,84,190,226,103,122,191,130,254,97,190,9,176,121,191,77,12,111,190,60,237,120,191,156,15,124,190,132,31,120,191,238,131,132,190,234,70,119,191,62,250,138,190,119,99,118,191,117,106,145,190,54,117,117,191,76,212,151,190,48,124,116,191,122,55,158,190,113,120,115,191,183,147,164,190,3,106,114,191,188,232,170,190,244,80,113,191,65,54,177,190,79,45,112,191,1,124,183,190,33,255,110,191,180,185,189,190,118,198,109,191,21,239,195,190,94,131,108,191,222,27,202,190,231,53,107,191,201,63,208,190,30,222,105,191,146,90,214,190,18,124,104,191,243,107,220,190,212,15,103,191,170,115,226,190,116,153,101,191,113,113,232,190,1,25,100,191,7,101,238,190,141,142,98,191,39,78,244,190,40,250,96,191,144,44,250,190,230,91,95,191,0,0,0,191,215,179,93,191,27,228,2,191,15,2,92,191,119,194,5,191,160,70,90,191,246,154,8,191,158,129,88,191,119,109,11,191,29,179,86,191,218,57,14,191,49,219,84,191,0,0,17,191,239,249,82,191,202,191,19,191,108,15,81,191,24,121,22,191,189,27,79,191,205,43,25,191,248,30,77,191,202,215,27,191,52,25,75,191,241,124,30,191,136,10,73,191,36,27,33,191,10,243,70,191,70,178,35,191,209,210,68,191,58,66,38,191,247,169,66,191,227,202,40,191,147,120,64,191,37,76,43,191,189,62,62,191,227,197,45,191,143,252,59,191,1,56,48,191,34,178,57,191,101,162,50,191,144,95,55,191,243,4,53,191,243,4,53,191,144,95,55,191,101,162,50,191,34,178,57,191,1,56,48,191,143,252,59,191,227,197,45,191,189,62,62,191,37,76,43,191,147,120,64,191,227,202,40,191,247,169,66,191,58,66,38,191,209,210,68,191,70,178,35,191,10,243,70,191,36,27,33,191,136,10,73,191,241,124,30,191,52,25,75,191,202,215,27,191,248,30,77,191,205,43,25,191,189,27,79,191,24,121,22,191,108,15,81,191,202,191,19,191,239,249,82,191,0,0,17,191,49,219,84,191,218,57,14,191,29,179,86,191,119,109,11,191,158,129,88,191,246,154,8,191,160,70,90,191,119,194,5,191,15,2,92,191,27,228,2,191,215,179,93,191,0,0,0,191,230,91,95,191,144,44,250,190,40,250,96,191,39,78,244,190,141,142,98,191,7,101,238,190,1,25,100,191,113,113,232,190,116,153,101,191,170,115,226,190,212,15,103,191,243,107,220,190,18,124,104,191,146,90,214,190,30,222,105,191,201,63,208,190,231,53,107,191,222,27,202,190,94,131,108,191,21,239,195,190,118,198,109,191,180,185,189,190,33,255,110,191,1,124,183,190,79,45,112,191,65,54,177,190,244,80,113,191,188,232,170,190,3,106,114,191,183,147,164,190,113,120,115,191,122,55,158,190,48,124,116,191,76,212,151,190,54,117,117,191,117,106,145,190,119,99,118,191,62,250,138,190,234,70,119,191,238,131,132,190,132,31,120,191,156,15,124,190,60,237,120,191,77,12,111,190,9,176,121,191,130,254,97,190,226,103,122,191,205,230,84,190,190,20,123,191,194,197,71,190,152,182,123,191,243,155,58,190,103,77,124,191,245,105,45,190,37,217,124,191,92,48,32,190,203,89,125,191,187,239,18,190,85,207,125,191,168,168,5,190,188,57,126,191,115,183,240,189,253,152,126,191,4,19,214,189,18,237,126,191,51,101,187,189,249,53,127,191,42,175,160,189,175,115,127,191,19,242,133,189,47,166,127,191,58,94,86,189,121,205,127,191,231,206,32,189,139,233,127,191,10,113,214,188,99,250,127,191,191,117,86,188,0,0,128,191,0,48,13,165,99,250,127,191,191,117,86,60,139,233,127,191,10,113,214,60,121,205,127,191,231,206,32,61,47,166,127,191,58,94,86,61,175,115,127,191,19,242,133,61,249,53,127,191,42,175,160,61,18,237,126,191,51,101,187,61,253,152,126,191,4,19,214,61,188,57,126,191,115,183,240,61,85,207,125,191,168,168,5,62,203,89,125,191,187,239,18,62,37,217,124,191,92,48,32,62,103,77,124,191,245,105,45,62,152,182,123,191,243,155,58,62,190,20,123,191,194,197,71,62,226,103,122,191,205,230,84,62,9,176,121,191,130,254,97,62,60,237,120,191,77,12,111,62,132,31,120,191,156,15,124,62,234,70,119,191,238,131,132,62,119,99,118,191,62,250,138,62,54,117,117,191,117,106,145,62,48,124,116,191,76,212,151,62,113,120,115,191,122,55,158,62,3,106,114,191,183,147,164,62,244,80,113,191,188,232,170,62,79,45,112,191,65,54,177,62,33,255,110,191,1,124,183,62,118,198,109,191,180,185,189,62,94,131,108,191,21,239,195,62,231,53,107,191,222,27,202,62,30,222,105,191,201,63,208,62,18,124,104,191,146,90,214,62,212,15,103,191,243,107,220,62,116,153,101,191,170,115,226,62,1,25,100,191,113,113,232,62,141,142,98,191,7,101,238,62,40,250,96,191,39,78,244,62,230,91,95,191,144,44,250,62,215,179,93,191,0,0,0,63,15,2,92,191,27,228,2,63,160,70,90,191,119,194,5,63,158,129,88,191,246,154,8,63,29,179,86,191,119,109,11,63,49,219,84,191,218,57,14,63,239,249,82,191,0,0,17,63,108,15,81,191,202,191,19,63,189,27,79,191,24,121,22,63,248,30,77,191,205,43,25,63,52,25,75,191,202,215,27,63,136,10,73,191,241,124,30,63,10,243,70,191,36,27,33,63,209,210,68,191,70,178,35,63,247,169,66,191,58,66,38,63,147,120,64,191,227,202,40,63,189,62,62,191,37,76,43,63,143,252,59,191,227,197,45,63,34,178,57,191,1,56,48,63,144,95,55,191,101,162,50,63,243,4,53,191,243,4,53,63,101,162,50,191,144,95,55,63,1,56,48,191,34,178,57,63,227,197,45,191,143,252,59,63,37,76,43,191,189,62,62,63,227,202,40,191,147,120,64,63,58,66,38,191,247,169,66,63,70,178,35,191,209,210,68,63,36,27,33,191,10,243,70,63,241,124,30,191,136,10,73,63,202,215,27,191,52,25,75,63,205,43,25,191,248,30,77,63,24,121,22,191,189,27,79,63,202,191,19,191,108,15,81,63,0,0,17,191,239,249,82,63,218,57,14,191,49,219,84,63,119,109,11,191,29,179,86,63,246,154,8,191,158,129,88,63,119,194,5,191,160,70,90,63,27,228,2,191,15,2,92,63,0,0,0,191,215,179,93,63,144,44,250,190,230,91,95,63,39,78,244,190,40,250,96,63,7,101,238,190,141,142,98,63,113,113,232,190,1,25,100,63,170,115,226,190,116,153,101,63,243,107,220,190,212,15,103,63,146,90,214,190,18,124,104,63,201,63,208,190,30,222,105,63,222,27,202,190,231,53,107,63,21,239,195,190,94,131,108,63,180,185,189,190,118,198,109,63,1,124,183,190,33,255,110,63,65,54,177,190,79,45,112,63,188,232,170,190,244,80,113,63,183,147,164,190,3,106,114,63,122,55,158,190,113,120,115,63,76,212,151,190,48,124,116,63,117,106,145,190,54,117,117,63,62,250,138,190,119,99,118,63,238,131,132,190,234,70,119,63,156,15,124,190,132,31,120,63,77,12,111,190,60,237,120,63,130,254,97,190,9,176,121,63,205,230,84,190,226,103,122,63,194,197,71,190,190,20,123,63,243,155,58,190,152,182,123,63,245,105,45,190,103,77,124,63,92,48,32,190,37,217,124,63,187,239,18,190,203,89,125,63,168,168,5,190,85,207,125,63,115,183,240,189,188,57,126,63,4,19,214,189,253,152,126,63,51,101,187,189,18,237,126,63,42,175,160,189,249,53,127,63,19,242,133,189,175,115,127,63,58,94,86,189,47,166,127,63,231,206,32,189,121,205,127,63,10,113,214,188,139,233,127,63,191,117,86,188,99,250,127,63,0,200,83,165,0,0,128,63,191,117,86,60,99,250,127,63,10,113,214,60,139,233,127,63,231,206,32,61,121,205,127,63,58,94,86,61,47,166,127,63,19,242,133,61,175,115,127,63,42,175,160,61,249,53,127,63,51,101,187,61,18,237,126,63,4,19,214,61,253,152,126,63,115,183,240,61,188,57,126,63,168,168,5,62,85,207,125,63,187,239,18,62,203,89,125,63,92,48,32,62,37,217,124,63,245,105,45,62,103,77,124,63,243,155,58,62,152,182,123,63,194,197,71,62,190,20,123,63,205,230,84,62,226,103,122,63,130,254,97,62,9,176,121,63,77,12,111,62,60,237,120,63,156,15,124,62,132,31,120,63,238,131,132,62,234,70,119,63,62,250,138,62,119,99,118,63,117,106,145,62,54,117,117,63,76,212,151,62,48,124,116,63,122,55,158,62,113,120,115,63,183,147,164,62,3,106,114,63,188,232,170,62,244,80,113,63,65,54,177,62,79,45,112,63,1,124,183,62,33,255,110,63,180,185,189,62,118,198,109,63,21,239,195,62,94,131,108,63,222,27,202,62,231,53,107,63,201,63,208,62,30,222,105,63,146,90,214,62,18,124,104,63,243,107,220,62,212,15,103,63,170,115,226,62,116,153,101,63,113,113,232,62,1,25,100,63,7,101,238,62,141,142,98,63,39,78,244,62,40,250,96,63,144,44,250,62,230,91,95,63,0,0,0,63,215,179,93,63,27,228,2,63,15,2,92,63,119,194,5,63,160,70,90,63,246,154,8,63,158,129,88,63,119,109,11,63,29,179,86,63,218,57,14,63,49,219,84,63,0,0,17,63,239,249,82,63,202,191,19,63,108,15,81,63,24,121,22,63,189,27,79,63,205,43,25,63,248,30,77,63,202,215,27,63,52,25,75,63,241,124,30,63,136,10,73,63,36,27,33,63,10,243,70,63,70,178,35,63,209,210,68,63,58,66,38,63,247,169,66,63,227,202,40,63,147,120,64,63,37,76,43,63,189,62,62,63,227,197,45,63,143,252,59,63,1,56,48,63,34,178,57,63,101,162,50,63,144,95,55,63,243,4,53,63,243,4,53,63,144,95,55,63,101,162,50,63,34,178,57,63,1,56,48,63,143,252,59,63,227,197,45,63,189,62,62,63,37,76,43,63,147,120,64,63,227,202,40,63,247,169,66,63,58,66,38,63,209,210,68,63,70,178,35,63,10,243,70,63,36,27,33,63,136,10,73,63,241,124,30,63,52,25,75,63,202,215,27,63,248,30,77,63,205,43,25,63,189,27,79,63,24,121,22,63,108,15,81,63,202,191,19,63,239,249,82,63,0,0,17,63,49,219,84,63,218,57,14,63,29,179,86,63,119,109,11,63,158,129,88,63,246,154,8,63,160,70,90,63,119,194,5,63,15,2,92,63,27,228,2,63,215,179,93,63,0,0,0,63,230,91,95,63,144,44,250,62,40,250,96,63,39,78,244,62,141,142,98,63,7,101,238,62,1,25,100,63,113,113,232,62,116,153,101,63,170,115,226,62,212,15,103,63,243,107,220,62,18,124,104,63,146,90,214,62,30,222,105,63,201,63,208,62,231,53,107,63,222,27,202,62,94,131,108,63,21,239,195,62,118,198,109,63,180,185,189,62,33,255,110,63,1,124,183,62,79,45,112,63,65,54,177,62,244,80,113,63,188,232,170,62,3,106,114,63,183,147,164,62,113,120,115,63,122,55,158,62,48,124,116,63,76,212,151,62,54,117,117,63,117,106,145,62,119,99,118,63,62,250,138,62,234,70,119,63,238,131,132,62,132,31,120,63,156,15,124,62,60,237,120,63,77,12,111,62,9,176,121,63,130,254,97,62,226,103,122,63,205,230,84,62,190,20,123,63,194,197,71,62,152,182,123,63,243,155,58,62,103,77,124,63,245,105,45,62,37,217,124,63,92,48,32,62,203,89,125,63,187,239,18,62,85,207,125,63,168,168,5,62,188,57,126,63,115,183,240,61,253,152,126,63,4,19,214,61,18,237,126,63,51,101,187,61,249,53,127,63,42,175,160,61,175,115,127,63,19,242,133,61,47,166,127,63,58,94,86,61,121,205,127,63,231,206,32,61,139,233,127,63,10,113,214,60,99,250,127,63,191,117,86,60,0,0,24,0,48,0,72,0,96,0,8,0,32,0,56,0,80,0,104,0,16,0,40,0,64,0,88,0,112,0,4,0,28,0,52,0,76,0,100,0,12,0,36,0,60,0,84,0,108,0,20,0,44,0,68,0,92,0,116,0,1,0,25,0,49,0,73,0,97,0,9,0,33,0,57,0,81,0,105,0,17,0,41,0,65,0,89,0,113,0,5,0,29,0,53,0,77,0,101,0,13,0,37,0,61,0,85,0,109,0,21,0,45,0,69,0,93,0,117,0,2,0,26,0,50,0,74,0,98,0,10,0,34,0,58,0,82,0,106,0,18,0,42,0,66,0,90,0,114,0,6,0,30,0,54,0,78,0,102,0,14,0,38,0,62,0,86,0,110,0,22,0,46,0,70,0,94,0,118,0,3,0,27,0,51,0,75,0,99,0,11,0,35,0,59,0,83,0,107,0,19,0,43,0,67,0,91,0,115,0,7,0,31,0,55,0,79,0,103,0,15,0,39,0,63,0,87,0,111,0,23,0,47,0,71,0,95,0,119,0,0,0,48,0,96,0,144,0,192,0,16,0,64,0,112,0,160,0,208,0,32,0,80,0,128,0,176,0,224,0,4,0,52,0,100,0,148,0,196,0,20,0,68,0,116,0,164,0,212,0,36,0,84,0,132,0,180,0,228,0,8,0,56,0,104,0,152,0,200,0,24,0,72,0,120,0,168,0,216,0,40,0,88,0,136,0,184,0,232,0,12,0,60,0,108,0,156,0,204,0,28,0,76,0,124,0,172,0,220,0,44,0,92,0,140,0,188,0,236,0,1,0,49,0,97,0,145,0,193,0,17,0,65,0,113,0,161,0,209,0,33,0,81,0,129,0,177,0,225,0,5,0,53,0,101,0,149,0,197,0,21,0,69,0,117,0,165,0,213,0,37,0,85,0,133,0,181,0,229,0,9,0,57,0,105,0,153,0,201,0,25,0,73,0,121,0,169,0,217,0,41,0,89,0,137,0,185,0,233,0,13,0,61,0,109,0,157,0,205,0,29,0,77,0,125,0,173,0,221,0,45,0,93,0,141,0,189,0,237,0,2,0,50,0,98,0,146,0,194,0,18,0,66,0,114,0,162,0,210,0,34,0,82,0,130,0,178,0,226,0,6,0,54,0,102,0,150,0,198,0,22,0,70,0,118,0,166,0,214,0,38,0,86,0,134,0,182,0,230,0,10,0,58,0,106,0,154,0,202,0,26,0,74,0,122,0,170,0,218,0,42,0,90,0,138,0,186,0,234,0,14,0,62,0,110,0,158,0,206,0,30,0,78,0,126,0,174,0,222,0,46,0,94,0,142,0,190,0,238,0,3,0,51,0,99,0,147,0,195,0,19,0,67,0,115,0,163,0,211,0,35,0,83,0,131,0,179,0,227,0,7,0,55,0,103,0,151,0,199,0,23,0,71,0,119,0,167,0,215,0,39,0,87,0,135,0,183,0,231,0,11,0,59,0,107,0,155,0,203,0,27,0,75,0,123,0,171,0,219,0,43,0,91,0,139,0,187,0,235,0,15,0,63,0,111,0,159,0,207,0,31,0,79,0,127,0,175,0,223,0,47,0,95,0,143,0,191,0,239,0,0,0,96,0,192,0,32,1,128,1,32,0,128,0,224,0,64,1,160,1,64,0,160,0,0,1,96,1,192,1,8,0,104,0,200,0,40,1,136,1,40,0,136,0,232,0,72,1,168,1,72,0,168,0,8,1,104,1,200,1,16,0,112,0,208,0,48,1,144,1,48,0,144,0,240,0,80,1,176,1,80,0,176,0,16,1,112,1,208,1,24,0,120,0,216,0,56,1,152,1,56,0,152,0,248,0,88,1,184,1,88,0,184,0,24,1,120,1,216,1,4,0,100,0,196,0,36,1,132,1,36,0,132,0,228,0,68,1,164,1,68,0,164,0,4,1,100,1,196,1,12,0,108,0,204,0,44,1,140,1,44,0,140,0,236,0,76,1,172,1,76,0,172,0,12,1,108,1,204,1,20,0,116,0,212,0,52,1,148,1,52,0,148,0,244,0,84,1,180,1,84,0,180,0,20,1,116,1,212,1,28,0,124,0,220,0,60,1,156,1,60,0,156,0,252,0,92,1,188,1,92,0,188,0,28,1,124,1,220,1,1,0,97,0,193,0,33,1,129,1,33,0,129,0,225,0,65,1,161,1,65,0,161,0,1,1,97,1,193,1,9,0,105,0,201,0,41,1,137,1,41,0,137,0,233,0,73,1,169,1,73,0,169,0,9,1,105,1,201,1,17,0,113,0,209,0,49,1,145,1,49,0,145,0,241,0,81,1,177,1,81,0,177,0,17,1,113,1,209,1,25,0,121,0,217,0,57,1,153,1,57,0,153,0,249,0,89,1,185,1,89,0,185,0,25,1,121,1,217,1,5,0,101,0,197,0,37,1,133,1,37,0,133,0,229,0,69,1,165,1,69,0,165,0,5,1,101,1,197,1,13,0,109,0,205,0,45,1,141,1,45,0,141,0,237,0,77,1,173,1,77,0,173,0,13,1,109,1,205,1,21,0,117,0,213,0,53,1,149,1,53,0,149,0,245,0,85,1,181,1,85,0,181,0,21,1,117,1,213,1,29,0,125,0,221,0,61,1,157,1,61,0,157,0,253,0,93,1,189,1,93,0,189,0,29,1,125,1,221,1,2,0,98,0,194,0,34,1,130,1,34,0,130,0,226,0,66,1,162,1,66,0,162,0,2,1,98,1,194,1,10,0,106,0,202,0,42,1,138,1,42,0,138,0,234,0,74,1,170,1,74,0,170,0,10,1,106,1,202,1,18,0,114,0,210,0,50,1,146,1,50,0,146,0,242,0,82,1,178,1,82,0,178,0,18,1,114,1,210,1,26,0,122,0,218,0,58,1,154,1,58,0,154,0,250,0,90,1,186,1,90,0,186,0,26,1,122,1,218,1,6,0,102,0,198,0,38,1,134,1,38,0,134,0,230,0,70,1,166,1,70,0,166,0,6,1,102,1,198,1,14,0,110,0,206,0,46,1,142,1,46,0,142,0,238,0,78,1,174,1,78,0,174,0,14,1,110,1,206,1,22,0,118,0,214,0,54,1,150,1,54,0,150,0,246,0,86,1,182,1,86,0,182,0,22,1,118,1,214,1,30,0,126,0,222,0,62,1,158,1,62,0,158,0,254,0,94,1,190,1,94,0,190,0,30,1,126,1,222,1,3,0,99,0,195,0,35,1,131,1,35,0,131,0,227,0,67,1,163,1,67,0,163,0,3,1,99,1,195,1,11,0,107,0,203,0,43,1,139,1,43,0,139,0,235,0,75,1,171,1,75,0,171,0,11,1,107,1,203,1,19,0,115,0,211,0,51,1,147,1,51,0,147,0,243,0,83,1,179,1,83,0,179,0,19,1,115,1,211,1,27,0,123,0,219,0,59,1,155,1,59,0,155,0,251,0,91,1,187,1,91,0,187,0,27,1,123,1,219,1,7,0,103,0,199,0,39,1,135,1,39,0,135,0,231,0,71,1,167,1,71,0,167,0,7,1,103,1,199,1,15,0,111,0,207,0,47,1,143,1,47,0,143,0,239,0,79,1,175,1,79,0,175,0,15,1,111,1,207,1,23,0,119,0,215,0,55,1,151,1,55,0,151,0,247,0,87,1,183,1,87,0,183,0,23,1,119,1,215,1,31,0,127,0,223,0,63,1,159,1,63,0,159,0,255,0,95,1,191,1,95,0,191,0,31,1,127,1,223,1,1],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,9,0,0,0,11,0,0,0,13,0,0,0,15,0,0,0,17,0,0,0,19,0,0,0,21,0,0,0,23,0,0,0,25,0,0,0,27,0,0,0,29,0,0,0,31,0,0,0,33,0,0,0,35,0,0,0,37,0,0,0,39,0,0,0,41,0,0,0,43,0,0,0,45,0,0,0,47,0,0,0,49,0,0,0,51,0,0,0,53,0,0,0,55,0,0,0,57,0,0,0,59,0,0,0,61,0,0,0,63,0,0,0,65,0,0,0,67,0,0,0,69,0,0,0,71,0,0,0,73,0,0,0,75,0,0,0,77,0,0,0,79,0,0,0,81,0,0,0,83,0,0,0,85,0,0,0,87,0,0,0,89,0,0,0,91,0,0,0,93,0,0,0,95,0,0,0,97,0,0,0,99,0,0,0,101,0,0,0,103,0,0,0,105,0,0,0,107,0,0,0,109,0,0,0,111,0,0,0,113,0,0,0,115,0,0,0,117,0,0,0,119,0,0,0,121,0,0,0,123,0,0,0,125,0,0,0,127,0,0,0,129,0,0,0,131,0,0,0,133,0,0,0,135,0,0,0,137,0,0,0,139,0,0,0,141,0,0,0,143,0,0,0,145,0,0,0,147,0,0,0,149,0,0,0,151,0,0,0,153,0,0,0,155,0,0,0,157,0,0,0,159,0,0,0,161,0,0,0,163,0,0,0,165,0,0,0,167,0,0,0,169,0,0,0,171,0,0,0,173,0,0,0,175,0,0,0,177,0,0,0,179,0,0,0,181,0,0,0,183,0,0,0,185,0,0,0,187,0,0,0,189,0,0,0,191,0,0,0,193,0,0,0,195,0,0,0,197,0,0,0,199,0,0,0,201,0,0,0,203,0,0,0,205,0,0,0,207,0,0,0,209,0,0,0,211,0,0,0,213,0,0,0,215,0,0,0,217,0,0,0,219,0,0,0,221,0,0,0,223,0,0,0,225,0,0,0,227,0,0,0,229,0,0,0,231,0,0,0,233,0,0,0,235,0,0,0,237,0,0,0,239,0,0,0,241,0,0,0,243,0,0,0,245,0,0,0,247,0,0,0,249,0,0,0,251,0,0,0,253,0,0,0,255,0,0,0,1,1,0,0,3,1,0,0,5,1,0,0,7,1,0,0,9,1,0,0,11,1,0,0,13,1,0,0,15,1,0,0,17,1,0,0,19,1,0,0,21,1,0,0,23,1,0,0,25,1,0,0,27,1,0,0,29,1,0,0,31,1,0,0,33,1,0,0,35,1,0,0,37,1,0,0,39,1,0,0,41,1,0,0,43,1,0,0,45,1,0,0,47,1,0,0,49,1,0,0,51,1,0,0,53,1,0,0,55,1,0,0,57,1,0,0,59,1,0,0,61,1,0,0,63,1,0,0,65,1,0,0,67,1,0,0,69,1,0,0,71,1,0,0,73,1,0,0,75,1,0,0,77,1,0,0,79,1,0,0,81,1,0,0,83,1,0,0,85,1,0,0,87,1,0,0,89,1,0,0,91,1,0,0,93,1,0,0,95,1,0,0,13,0,0,0,25,0,0,0,41,0,0,0,61,0,0,0,85,0,0,0,113,0,0,0,145,0,0,0,181,0,0,0,221,0,0,0,9,1,0,0,57,1,0,0,109,1,0,0,165,1,0,0,225,1,0,0,33,2,0,0,101,2,0,0,173,2,0,0,249,2,0,0,73,3,0,0,157,3,0,0,245,3,0,0,81,4,0,0,177,4,0,0,21,5,0,0,125,5,0,0,233,5,0,0,89,6,0,0,205,6,0,0,69,7,0,0,193,7,0,0,65,8,0,0,197,8,0,0,77,9,0,0,217,9,0,0,105,10,0,0,253,10,0,0,149,11,0,0,49,12,0,0,209,12,0,0,117,13,0,0,29,14,0,0,201,14,0,0,121,15,0,0,45,16,0,0,229,16,0,0,161,17,0,0,97,18,0,0,37,19,0,0,237,19,0,0,185,20,0,0,137,21,0,0,93,22,0,0,53,23,0,0,17,24,0,0,241,24,0,0,213,25,0,0,189,26,0,0,169,27,0,0,153,28,0,0,141,29,0,0,133,30,0,0,129,31,0,0,129,32,0,0,133,33,0,0,141,34,0,0,153,35,0,0,169,36,0,0,189,37,0,0,213,38,0,0,241,39,0,0,17,41,0,0,53,42,0,0,93,43,0,0,137,44,0,0,185,45,0,0,237,46,0,0,37,48,0,0,97,49,0,0,161,50,0,0,229,51,0,0,45,53,0,0,121,54,0,0,201,55,0,0,29,57,0,0,117,58,0,0,209,59,0,0,49,61,0,0,149,62,0,0,253,63,0,0,105,65,0,0,217,66,0,0,77,68,0,0,197,69,0,0,65,71,0,0,193,72,0,0,69,74,0,0,205,75,0,0,89,77,0,0,233,78,0,0,125,80,0,0,21,82,0,0,177,83,0,0,81,85,0,0,245,86,0,0,157,88,0,0,73,90,0,0,249,91,0,0,173,93,0,0,101,95,0,0,33,97,0,0,225,98,0,0,165,100,0,0,109,102,0,0,57,104,0,0,9,106,0,0,221,107,0,0,181,109,0,0,145,111,0,0,113,113,0,0,85,115,0,0,61,117,0,0,41,119,0,0,25,121,0,0,13,123,0,0,5,125,0,0,1,127,0,0,1,129,0,0,5,131,0,0,13,133,0,0,25,135,0,0,41,137,0,0,61,139,0,0,85,141,0,0,113,143,0,0,145,145,0,0,181,147,0,0,221,149,0,0,9,152,0,0,57,154,0,0,109,156,0,0,165,158,0,0,225,160,0,0,33,163,0,0,101,165,0,0,173,167,0,0,249,169,0,0,73,172,0,0,157,174,0,0,245,176,0,0,81,179,0,0,177,181,0,0,21,184,0,0,125,186,0,0,233,188,0,0,89,191,0,0,205,193,0,0,69,196,0,0,193,198,0,0,65,201,0,0,197,203,0,0,77,206,0,0,217,208,0,0,105,211,0,0,253,213,0,0,149,216,0,0,49,219,0,0,209,221,0,0,117,224,0,0,29,227,0,0,201,229,0,0,121,232,0,0,45,235,0,0,229,237,0,0,161,240,0,0,63,0,0,0,129,0,0,0,231,0,0,0,121,1,0,0,63,2,0,0,65,3,0,0,135,4,0,0,25,6,0,0,255,7,0,0,65,10,0,0,231,12,0,0,249,15,0,0,127,19,0,0,129,23,0,0,7,28,0,0,25,33,0,0,191,38,0,0,1,45,0,0,231,51,0,0,121,59,0,0,191,67,0,0,193,76,0,0,135,86,0,0,25,97,0,0,127,108,0,0,193,120,0,0,231,133,0,0,249,147,0,0,255,162,0,0,1,179,0,0,7,196,0,0,25,214,0,0,63,233,0,0,129,253,0,0,231,18,1,0,121,41,1,0,63,65,1,0,65,90,1,0,135,116,1,0,25,144,1,0,255,172,1,0,65,203,1,0,231,234,1,0,249,11,2,0,127,46,2,0,129,82,2,0,7,120,2,0,25,159,2,0,191,199,2,0,1,242,2,0,231,29,3,0,121,75,3,0,191,122,3,0,193,171,3,0,135,222,3,0,25,19,4,0,127,73,4,0,193,129,4,0,231,187,4,0,249,247,4,0,255,53,5,0,1,118,5,0,7,184,5,0,25,252,5,0,63,66,6,0,129,138,6,0,231,212,6,0,121,33,7,0,63,112,7,0,65,193,7,0,135,20,8,0,25,106,8,0,255,193,8,0,65,28,9,0,231,120,9,0,249,215,9,0,127,57,10,0,129,157,10,0,7,4,11,0,25,109,11,0,191,216,11,0,1,71,12,0,231,183,12,0,121,43,13,0,191,161,13,0,193,26,14,0,135,150,14,0,25,21,15,0,127,150,15,0,193,26,16,0,231,161,16,0,249,43,17,0,255,184,17,0,1,73,18,0,7,220,18,0,25,114,19,0,63,11,20,0,129,167,20,0,231,70,21,0,121,233,21,0,63,143,22,0,65,56,23,0,135,228,23,0,25,148,24,0,255,70,25,0,65,253,25,0,231,182,26,0,249,115,27,0,127,52,28,0,129,248,28,0,7,192,29,0,25,139,30,0,191,89,31,0,1,44,32,0,231,1,33,0,121,219,33,0,191,184,34,0,193,153,35,0,135,126,36,0,25,103,37,0,127,83,38,0,193,67,39,0,231,55,40,0,249,47,41,0,255,43,42,0,1,44,43,0,7,48,44,0,25,56,45,0,63,68,46,0,129,84,47,0,231,104,48,0,121,129,49,0,63,158,50,0,65,191,51,0,135,228,52,0,25,14,54,0,255,59,55,0,65,110,56,0,231,164,57,0,249,223,58,0,127,31,60,0,129,99,61,0,7,172,62,0,25,249,63,0,191,74,65,0,1,161,66,0,231,251,67,0,121,91,69,0,191,191,70,0,193,40,72,0,135,150,73,0,25,9,75,0,127,128,76,0,193,252,77,0,231,125,79,0,249,3,81,0,255,142,82,0,1,31,84,0,7,180,85,0,25,78,87,0,63,237,88,0,129,145,90,0,231,58,92,0,121,233,93,0,63,157,95,0,65,86,97,0,135,20,99,0,25,216,100,0,255,160,102,0,65,111,104,0,231,66,106,0,249,27,108,0,127,250,109,0,65,1,0,0,169,2,0,0,9,5,0,0,193,8,0,0,65,14,0,0,9,22,0,0,169,32,0,0,193,46,0,0,1,65,0,0,41,88,0,0,9,117,0,0,129,152,0,0,129,195,0,0,9,247,0,0,41,52,1,0,1,124,1,0,193,207,1,0,169,48,2,0,9,160,2,0,65,31,3,0,193,175,3,0,9,83,4,0,169,10,5,0,65,216,5,0,129,189,6,0,41,188,7,0,9,214,8,0,1,13,10,0,1,99,11,0,9,218,12,0,41,116,14,0,129,51,16,0,65,26,18,0,169,42,20,0,9,103,22,0,193,209,24,0,65,109,27,0,9,60,30,0,169,64,33,0,193,125,36,0,1,246,39,0,41,172,43,0,9,163,47,0,129,221,51,0,129,94,56,0,9,41,61,0,41,64,66,0,1,167,71,0,193,96,77,0,169,112,83,0,9,218,89,0,65,160,96,0,193,198,103,0,9,81,111,0,169,66,119,0,65,159,127,0,129,106,136,0,41,168,145,0,9,92,155,0,1,138,165,0,1,54,176,0,9,100,187,0,41,24,199,0,129,86,211,0,65,35,224,0,169,130,237,0,9,121,251,0,193,10,10,1,65,60,25,1,9,18,41,1,169,144,57,1,193,188,74,1,1,155,92,1,41,48,111,1,9,129,130,1,129,146,150,1,129,105,171,1,9,11,193,1,41,124,215,1,1,194,238,1,193,225,6,2,169,224,31,2,9,196,57,2,65,145,84,2,193,77,112,2,9,255,140,2,169,170,170,2,65,86,201,2,129,7,233,2,41,196,9,3,9,146,43,3,1,119,78,3,1,121,114,3,9,158,151,3,41,236,189,3,129,105,229,3,65,28,14,4,169,10,56,4,9,59,99,4,193,179,143,4,65,123,189,4,9,152,236,4,169,16,29,5,193,235,78,5,1,48,130,5,41,228,182,5,9,15,237,5,129,183,36,6,129,228,93,6,9,157,152,6,41,232,212,6,1,205,18,7,193,82,82,7,169,128,147,7,9,94,214,7,65,242,26,8,193,68,97,8,9,93,169,8,169,66,243,8,65,253,62,9,129,148,140,9,41,16,220,9,9,120,45,10,1,212,128,10,1,44,214,10,9,136,45,11,41,240,134,11,129,108,226,11,65,5,64,12,169,194,159,12,9,173,1,13,193,204,101,13,65,42,204,13,9,206,52,14,169,192,159,14,193,10,13,15,1,181,124,15,41,200,238,15,9,77,99,16,129,76,218,16,129,207,83,17,9,223,207,17,41,132,78,18,1,200,207,18,193,179,83,19,169,80,218,19,9,168,99,20,65,195,239,20,193,171,126,21,9,107,16,22,169,10,165,22,65,148,60,23,129,17,215,23,41,140,116,24,9,14,21,25,1,161,184,25,1,79,95,26,9,34,9,27,41,36,182,27,129,95,102,28,65,222,25,29,169,170,208,29,9,207,138,30,193,85,72,31,65,73,9,32,9,180,205,32,169,160,149,33,193,25,97,34,1,42,48,35,41,220,2,36,9,59,217,36,129,81,179,37,147,6,0,0,69,14,0,0,15,28,0,0,17,51,0,0,91,87,0,0,13,142,0,0,119,221,0,0,57,77,1,0,99,230,1,0,149,179,2,0,31,193,3,0,33,29,5,0,171,215,6,0,221,2,9,0,7,179,11,0,201,254,14,0,51,255,18,0,229,207,23,0,47,143,29,0,49,94,36,0,251,96,44,0,173,190,53,0,151,161,64,0,89,55,77,0,3,177,91,0,53,67,108,0,63,38,127,0,65,150,148,0,75,211,172,0,125,33,200,0,39,201,230,0,233,22,9,1,211,91,47,1,133,237,89,1,79,38,137,1,81,101,189,1,155,14,247,1,77,139,54,2,183,73,124,2,121,189,200,2,163,95,28,3,213,174,119,3,95,47,219,3,97,107,71,4,235,242,188,4,29,92,60,5,71,67,198,5,9,75,91,6,115,28,252,6,37,103,169,7,111,225,99,8,113,72,44,9,59,96,3,10,237,243,233,10,215,213,224,11,153,223,232,12,67,242,2,14,117,246,47,15,127,220,112,16,129,156,198,17,139,54,50,19,189,178,180,20,103,33,79,22,41,155,2,24,19,65,208,25,197,60,185,27,143,192,190,29,145,7,226,31,219,85,36,34,141,248,134,36,247,69,11,39,185,157,178,41,227,104,126,44,21,26,112,47,159,45,137,50,161,41,203,53,43,158,55,57,93,37,208,60,135,99,150,64,73,7,140,68,179,201,178,72,101,110,12,77,175,195,154,81,177,162,95,86,123,239,92,91,45,153,148,96,23,154,8,102,217,247,186,107,131,195,173,113,181,25,227,119,191,34,93,126,29,35,0,0,113,77,0,0,145,156,0,0,253,38,1,0,101,12,2,0,233,119,3,0,153,162,5,0,53,214,8,0,45,112,13,0,225,228,19,0,33,195,28,0,237,183,40,0,117,146,56,0,89,72,77,0,41,250,103,0,37,248,137,0,61,199,180,0,81,38,234,0,177,19,44,1,221,210,124,1,133,242,222,1,201,82,85,2,185,43,227,2,21,20,140,3,77,8,84,4,193,113,63,5,65,46,83,6,205,151,148,7,149,140,9,9,57,119,184,10,73,87,168,12,5,202,224,14,93,19,106,17,49,39,77,20,209,178,147,23,189,38,72,27,165,192,117,31,169,149,40,36,217,156,109,41,245,185,82,47,109,200,230,53,161,166,57,61,97,65,92,69,173,159,96,78,181,238,89,88,25,142,92,99,105,28,126,111,229,131,213,124,255,189,0,0,1,168,1,0,143,107,3,0,241,158,6,0,63,35,12,0,193,61,21,0,143,182,35,0,241,252,57,0,255,81,91,0,1,250,139,0,15,117,209,0,113,191,50,1,63,154,184,1,193,220,109,2,15,207,95,3,113,142,158,4,255,123,61,6,1,182,83,8,143,156,252,10,241,97,88,14,63,167,140,18,193,37,197,23,143,101,52,30,241,129,20,38,255,251,167,47,1,156,58,59,15,98,34,73,113,134,192,89,63,138,130,109,193,88,227,132,1,14,4,0,145,33,9,0,17,44,19,0,65,238,37,0,65,79,71,0,145,67,128,0,17,247,221,0,1,70,115,1,1,146,90,2,17,1,184,3,145,53,188,5,65,143,167,8,65,6,206,12,17,178,155,18,145,15,154,26,1,26,118,37,1,76,7,52,145,158,87,71,17,157,172,96,65,166,145,129,35,81,22,0,197,158,50,0,23,185,107,0,153,246,216,0,107,137,160,1,13,196,254,2,31,1,80,5,33,217,29,9,51,108,48,15,213,162,164,24,167,103,8,39,41,253,125,60,123,181,231,91,29,119,29,137,175,160,45,201,173,142,123,0,137,230,25,1,57,150,94,2,61,22,216,4,181,99,119,9,225,40,198,17,33,3,52,32,117,72,130,56,125,87,87,96,191,91,175,2,129,216,39,6,247,132,94,13,233,254,173,27,127,139,235,54,129,183,229,104,23,3,156,193,193,12,255,14,57,106,133,34,25,238,145,75,129,120,43,158,51,225,9,84,0,64,202,69,27,76,255,82,130,90,179,98,162,107,96,117,0,1,1,1,2,3,3,3,2,3,3,3,2,3,3,3,0,3,12,15,48,51,60,63,192,195,204,207,240,243,252,255,1,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,1,0,0,0,5,0,0,0,2,0,0,0,15,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,12,0,0,0,3,0,0,0,11,0,0,0,4,0,0,0,14,0,0,0,1,0,0,0,9,0,0,0,6,0,0,0,13,0,0,0,2,0,0,0,10,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,112,117,115,32,100,101,99,111,100,105,110,103,32,101,114,114,111,114,44,32,99,111,100,101,32,37,100,10,0,0,0,79,112,117,115,72,101,97,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20692);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}Module["_bitshift64Ashr"]=_bitshift64Ashr;function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var ___errno_state=0;function ___setErrNo(value){HEAP32[___errno_state>>2]=value;return value}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:return totalMemory/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}var _llvm_ctlz_i32=true;function ___errno_location(){return ___errno_state}Module["_memset"]=_memset;function _ogvjs_callback_audio(buffers,channels,sampleCount){var HEAPU32=Module.HEAPU32;var HEAPF32=Module.HEAPF32;var outputBuffers=[];if(buffers!==0){var inPtr,inArray,outArray,i;for(var channel=0;channel<channels;channel++){inPtr=HEAPU32[buffers/4+channel];inArray=HEAPF32.subarray(inPtr/4,inPtr/4+sampleCount);outArray=new Float32Array(inArray);outputBuffers.push(outArray)}}Module.audioBuffer=outputBuffers}function _abort(){Module["abort"]()}var FS=undefined;var SOCKFS=undefined;function _send(fd,buf,len,flags){var sock=SOCKFS.getSocket(fd);if(!sock){___setErrNo(ERRNO_CODES.EBADF);return-1}return _write(fd,buf,len)}function _pwrite(fildes,buf,nbyte,offset){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.write(stream,slab,buf,nbyte,offset)}catch(e){FS.handleFSError(e);return-1}}function _write(fildes,buf,nbyte){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.write(stream,slab,buf,nbyte)}catch(e){FS.handleFSError(e);return-1}}function _fileno(stream){stream=FS.getStreamFromPtr(stream);if(!stream)return-1;return stream.fd}function _fwrite(ptr,size,nitems,stream){var bytesToWrite=nitems*size;if(bytesToWrite==0)return 0;var fd=_fileno(stream);var bytesWritten=_write(fd,ptr,bytesToWrite);if(bytesWritten==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return 0}else{return bytesWritten/size|0}}Module["_strlen"]=_strlen;function __reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function __formatString(format,varargs){assert((varargs&3)===0);var textIndex=format;var argIndex=0;function getNextArg(type){var ret;argIndex=Runtime.prepVararg(argIndex,type);if(type==="double"){ret=(HEAP32[tempDoublePtr>>2]=HEAP32[varargs+argIndex>>2],HEAP32[tempDoublePtr+4>>2]=HEAP32[varargs+(argIndex+4)>>2],+HEAPF64[tempDoublePtr>>3]);argIndex+=8}else if(type=="i64"){ret=[HEAP32[varargs+argIndex>>2],HEAP32[varargs+(argIndex+4)>>2]];argIndex+=8}else{assert((argIndex&3)===0);type="i32";ret=HEAP32[varargs+argIndex>>2];argIndex+=4}return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break};case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg("i32");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg("i32");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case"h":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case"l":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case"L":case"q":case"j":argSize=8;break;case"z":case"t":case"I":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":{var signed=next==100||next==105;argSize=argSize||4;var currArg=getNextArg("i"+argSize*8);var origArg=currArg;var argText;if(argSize==8){currArg=Runtime.makeBigInt(currArg[0],currArg[1],next==117)}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix="";if(next==100||next==105){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],null);else argText=reSign(currArg,8*argSize,1).toString(10)}else if(next==117){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],true);else argText=unSign(currArg,8*argSize,1).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?"0":"")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?"0x":"";if(argSize==8&&i64Math){if(origArg[1]){argText=(origArg[1]>>>0).toString(16);var lower=(origArg[0]>>>0).toString(16);while(lower.length<8)lower="0"+lower;argText+=lower}else{argText=(origArg[0]>>>0).toString(16)}}else if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i<argText.length;i++){buffer.push((15-parseInt(argText[i],16)).toString(16))}argText=buffer.join("");while(argText.length<argSize*2)argText="f"+argText}else{argText=currAbsArg.toString(16)}if(next==88){prefix=prefix.toUpperCase();argText=argText.toUpperCase()}}else if(next==112){if(currAbsArg===0){argText="(nil)"}else{prefix="0x";argText=currAbsArg.toString(16)}}if(precisionSet){while(argText.length<precision){argText="0"+argText}}if(currArg>=0){if(flagAlwaysSigned){prefix="+"+prefix}else if(flagPadSign){prefix=" "+prefix}}if(argText.charAt(0)=="-"){prefix="-"+prefix;argText=argText.substr(1)}while(prefix.length+argText.length<width){if(flagLeftAlign){argText+=" "}else{if(flagZeroPad){argText="0"+argText}else{prefix=" "+prefix}}}argText=prefix+argText;argText.split("").forEach((function(chr){ret.push(chr.charCodeAt(0))}));break};case"f":case"F":case"e":case"E":case"g":case"G":{var currArg=getNextArg("double");var argText;if(isNaN(currArg)){argText="nan";flagZeroPad=false}else if(!isFinite(currArg)){argText=(currArg<0?"-":"")+"inf";flagZeroPad=false}else{var isGeneral=false;var effectivePrecision=Math.min(precision,20);if(next==103||next==71){isGeneral=true;precision=precision||1;var exponent=parseInt(currArg.toExponential(effectivePrecision).split("e")[1],10);if(precision>exponent&&exponent>=-4){next=(next==103?"f":"F").charCodeAt(0);precision-=exponent+1}else{next=(next==103?"e":"E").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\d$/.test(argText)){argText=argText.slice(0,-1)+"0"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&__reallyNegative(currArg)){argText="-"+argText}}var parts=argText.split("e");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].indexOf(".")!=-1&&(parts[0].slice(-1)=="0"||parts[0].slice(-1)==".")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(".")==-1)parts[0]+=".";while(precision>effectivePrecision++)parts[0]+="0"}argText=parts[0]+(parts.length>1?"e"+parts[1]:"");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText="+"+argText}else if(flagPadSign){argText=" "+argText}}}while(argText.length<width){if(flagLeftAlign){argText+=" "}else{if(flagZeroPad&&(argText[0]=="-"||argText[0]=="+")){argText=argText[0]+"0"+argText.slice(1)}else{argText=(flagZeroPad?"0":" ")+argText}}}if(next<97)argText=argText.toUpperCase();argText.split("").forEach((function(chr){ret.push(chr.charCodeAt(0))}));break};case"s":{var arg=getNextArg("i8*");var argLength=arg?_strlen(arg):"(null)".length;if(precisionSet)argLength=Math.min(argLength,precision);if(!flagLeftAlign){while(argLength<width--){ret.push(32)}}if(arg){for(var i=0;i<argLength;i++){ret.push(HEAPU8[arg++>>0])}}else{ret=ret.concat(intArrayFromString("(null)".substr(0,argLength),true))}if(flagLeftAlign){while(argLength<width--){ret.push(32)}}break};case"c":{if(flagLeftAlign)ret.push(getNextArg("i8"));while(--width>0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg("i8"));break};case"n":{var ptr=getNextArg("i32*");HEAP32[ptr>>2]=ret.length;break};case"%":{ret.push(curr);break};default:{for(var i=startTextIndex;i<textIndex+2;i++){ret.push(HEAP8[i>>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function _fprintf(stream,format,varargs){var result=__formatString(format,varargs);var stack=Runtime.stackSave();var ret=_fwrite(allocate(result,"i8",ALLOC_STACK),1,result.length,stream);Runtime.stackRestore(stack);return ret}function _printf(format,varargs){var result=__formatString(format,varargs);var string=intArrayToString(result);if(string[string.length-1]==="\n")string=string.substr(0,string.length-1);Module.print(string);return result.length}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);Runtime.stackRestore(ret)}var _cos=Math_cos;Module["_i64Add"]=_i64Add;var _fabs=Math_abs;var _floor=Math_floor;function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(Runtime.stackSave());return self.LLVM_SAVEDSTACKS.length-1}function _ogvjs_callback_init_audio(channels,rate){Module.audioFormat={channels:channels,rate:rate};Module.loadedMetadata=true}var _sqrt=Math_sqrt;var _atan2=Math_atan2;var _abs=Math_abs;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}var _exp=Math_exp;var _llvm_pow_f64=Math_pow;Module["_memmove"]=_memmove;___errno_state=Runtime.staticAlloc(4);HEAP32[___errno_state>>2]=0;STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE<TOTAL_MEMORY,"TOTAL_MEMORY not big enough for stack");var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_DYNAMIC);function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity};Module.asmLibraryArg={"abort":abort,"assert":assert,"invoke_viiiiii":invoke_viiiiii,"_fabs":_fabs,"_exp":_exp,"_llvm_pow_f64":_llvm_pow_f64,"_send":_send,"_atan2":_atan2,"___setErrNo":___setErrNo,"_llvm_stackrestore":_llvm_stackrestore,"_floor":_floor,"_pwrite":_pwrite,"__reallyNegative":__reallyNegative,"_sbrk":_sbrk,"_ogvjs_callback_init_audio":_ogvjs_callback_init_audio,"_fileno":_fileno,"_sysconf":_sysconf,"_emscripten_memcpy_big":_emscripten_memcpy_big,"_cos":_cos,"_llvm_stacksave":_llvm_stacksave,"_printf":_printf,"_ogvjs_callback_audio":_ogvjs_callback_audio,"_write":_write,"___errno_location":___errno_location,"_abort":_abort,"_fwrite":_fwrite,"_time":_time,"_fprintf":_fprintf,"_abs":_abs,"__formatString":__formatString,"_sqrt":_sqrt,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"cttz_i8":cttz_i8};// EMSCRIPTEN_START_ASM
+var asm=(function(global,env,buffer) {
+"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=0;var o=0;var p=0;var q=0;var r=global.NaN,s=global.Infinity;var t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0.0;var C=0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=global.Math.floor;var N=global.Math.abs;var O=global.Math.sqrt;var P=global.Math.pow;var Q=global.Math.cos;var R=global.Math.sin;var S=global.Math.tan;var T=global.Math.acos;var U=global.Math.asin;var V=global.Math.atan;var W=global.Math.atan2;var X=global.Math.exp;var Y=global.Math.log;var Z=global.Math.ceil;var _=global.Math.imul;var $=global.Math.min;var aa=global.Math.clz32;var ba=env.abort;var ca=env.assert;var da=env.invoke_viiiiii;var ea=env._fabs;var fa=env._exp;var ga=env._llvm_pow_f64;var ha=env._send;var ia=env._atan2;var ja=env.___setErrNo;var ka=env._llvm_stackrestore;var la=env._floor;var ma=env._pwrite;var na=env.__reallyNegative;var oa=env._sbrk;var pa=env._ogvjs_callback_init_audio;var qa=env._fileno;var ra=env._sysconf;var sa=env._emscripten_memcpy_big;var ta=env._cos;var ua=env._llvm_stacksave;var va=env._printf;var wa=env._ogvjs_callback_audio;var xa=env._write;var ya=env.___errno_location;var za=env._abort;var Aa=env._fwrite;var Ba=env._time;var Ca=env._fprintf;var Da=env._abs;var Ea=env.__formatString;var Fa=env._sqrt;var Ga=0.0;
+// EMSCRIPTEN_START_FUNCS
+function kc(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=i;i=i+48|0;g=f+12|0;h=f+16|0;j=f+28|0;k=f+4|0;l=f+32|0;m=f+36|0;n=f+40|0;o=f+44|0;p=f+20|0;q=f+8|0;r=f;s=f+24|0;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;c[l>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=20)break;c[q>>2]=(b[c[g>>2]>>1]|0)-(b[c[h>>2]>>1]|0);c[l>>2]=0;c[k>>2]=1;while(1){if((c[k>>2]|0)>((c[j>>2]|0)-1|0))break;c[p>>2]=(b[(c[g>>2]|0)+(c[k>>2]<<1)>>1]|0)-((b[(c[g>>2]|0)+((c[k>>2]|0)-1<<1)>>1]|0)+(b[(c[h>>2]|0)+(c[k>>2]<<1)>>1]|0));if((c[p>>2]|0)<(c[q>>2]|0)){c[q>>2]=c[p>>2];c[l>>2]=c[k>>2]}c[k>>2]=(c[k>>2]|0)+1}c[p>>2]=32768-((b[(c[g>>2]|0)+((c[j>>2]|0)-1<<1)>>1]|0)+(b[(c[h>>2]|0)+(c[j>>2]<<1)>>1]|0));if((c[p>>2]|0)<(c[q>>2]|0)){c[q>>2]=c[p>>2];c[l>>2]=c[j>>2]}if((c[q>>2]|0)>=0){t=41;break}do if(!(c[l>>2]|0))b[c[g>>2]>>1]=b[c[h>>2]>>1]|0;else{if((c[l>>2]|0)==(c[j>>2]|0)){b[(c[g>>2]|0)+((c[j>>2]|0)-1<<1)>>1]=32768-(b[(c[h>>2]|0)+(c[j>>2]<<1)>>1]|0);break}c[r>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[l>>2]|0))break;c[r>>2]=(c[r>>2]|0)+(b[(c[h>>2]|0)+(c[m>>2]<<1)>>1]|0);c[m>>2]=(c[m>>2]|0)+1}c[r>>2]=(c[r>>2]|0)+(b[(c[h>>2]|0)+(c[l>>2]<<1)>>1]>>1);c[s>>2]=32768;c[m>>2]=c[j>>2];while(1){if((c[m>>2]|0)<=(c[l>>2]|0))break;c[s>>2]=(c[s>>2]|0)-(b[(c[h>>2]|0)+(c[m>>2]<<1)>>1]|0);c[m>>2]=(c[m>>2]|0)+-1}c[s>>2]=(c[s>>2]|0)-(b[(c[h>>2]|0)+(c[l>>2]<<1)>>1]>>1);e=((b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]|0)+(b[(c[g>>2]|0)+(c[l>>2]<<1)>>1]|0)>>1)+((b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]|0)+(b[(c[g>>2]|0)+(c[l>>2]<<1)>>1]|0)&1)|0;do if((c[r>>2]|0)>(c[s>>2]|0)){if((e|0)>(c[r>>2]|0)){u=c[r>>2]|0;break}if((((b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]|0)+(b[(c[g>>2]|0)+(c[l>>2]<<1)>>1]|0)>>1)+((b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]|0)+(b[(c[g>>2]|0)+(c[l>>2]<<1)>>1]|0)&1)|0)<(c[s>>2]|0)){u=c[s>>2]|0;break}else{u=((b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]|0)+(b[(c[g>>2]|0)+(c[l>>2]<<1)>>1]|0)>>1)+((b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]|0)+(b[(c[g>>2]|0)+(c[l>>2]<<1)>>1]|0)&1)|0;break}}else{if((e|0)>(c[s>>2]|0)){u=c[s>>2]|0;break}if((((b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]|0)+(b[(c[g>>2]|0)+(c[l>>2]<<1)>>1]|0)>>1)+((b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]|0)+(b[(c[g>>2]|0)+(c[l>>2]<<1)>>1]|0)&1)|0)<(c[r>>2]|0)){u=c[r>>2]|0;break}else{u=((b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]|0)+(b[(c[g>>2]|0)+(c[l>>2]<<1)>>1]|0)>>1)+((b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]|0)+(b[(c[g>>2]|0)+(c[l>>2]<<1)>>1]|0)&1)|0;break}}while(0);b[o>>1]=u;b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]=(b[o>>1]|0)-(b[(c[h>>2]|0)+(c[l>>2]<<1)>>1]>>1);b[(c[g>>2]|0)+(c[l>>2]<<1)>>1]=(b[(c[g>>2]|0)+((c[l>>2]|0)-1<<1)>>1]|0)+(b[(c[h>>2]|0)+(c[l>>2]<<1)>>1]|0)}while(0);c[n>>2]=(c[n>>2]|0)+1}if((t|0)==41){i=f;return}if((c[n>>2]|0)!=20){i=f;return}tc(c[g>>2]|0,c[j>>2]|0);n=(Rd(b[c[g>>2]>>1]|0,b[c[h>>2]>>1]|0)|0)&65535;b[c[g>>2]>>1]=n;c[k>>2]=1;while(1){if((c[k>>2]|0)>=(c[j>>2]|0))break;n=(Rd(b[(c[g>>2]|0)+(c[k>>2]<<1)>>1]|0,(b[(c[g>>2]|0)+((c[k>>2]|0)-1<<1)>>1]|0)+(b[(c[h>>2]|0)+(c[k>>2]<<1)>>1]|0)|0)|0)&65535;b[(c[g>>2]|0)+(c[k>>2]<<1)>>1]=n;c[k>>2]=(c[k>>2]|0)+1}n=(Sd(b[(c[g>>2]|0)+((c[j>>2]|0)-1<<1)>>1]|0,32768-(b[(c[h>>2]|0)+(c[j>>2]<<1)>>1]|0)|0)|0)&65535;b[(c[g>>2]|0)+((c[j>>2]|0)-1<<1)>>1]=n;c[k>>2]=(c[j>>2]|0)-2;while(1){if((c[k>>2]|0)<0)break;j=(Sd(b[(c[g>>2]|0)+(c[k>>2]<<1)>>1]|0,(b[(c[g>>2]|0)+((c[k>>2]|0)+1<<1)>>1]|0)-(b[(c[h>>2]|0)+((c[k>>2]|0)+1<<1)>>1]|0)|0)|0)&65535;b[(c[g>>2]|0)+(c[k>>2]<<1)>>1]=j;c[k>>2]=(c[k>>2]|0)+-1}i=f;return}function lc(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;g=f+20|0;h=f+16|0;j=f+12|0;k=f+8|0;l=f+4|0;m=f;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;c[l>>2]=Td(b[c[h>>2]>>1]|0,1)|0;c[l>>2]=131072/(c[l>>2]|0)|0;c[m>>2]=Td((b[(c[h>>2]|0)+2>>1]|0)-(b[c[h>>2]>>1]|0)|0,1)|0;c[m>>2]=131072/(c[m>>2]|0)|0;e=(Ud((c[l>>2]|0)+(c[m>>2]|0)|0,32767)|0)&65535;b[c[g>>2]>>1]=e;c[k>>2]=1;while(1){if((c[k>>2]|0)>=((c[j>>2]|0)-1|0))break;c[l>>2]=Td((b[(c[h>>2]|0)+((c[k>>2]|0)+1<<1)>>1]|0)-(b[(c[h>>2]|0)+(c[k>>2]<<1)>>1]|0)|0,1)|0;c[l>>2]=131072/(c[l>>2]|0)|0;e=(Ud((c[l>>2]|0)+(c[m>>2]|0)|0,32767)|0)&65535;b[(c[g>>2]|0)+(c[k>>2]<<1)>>1]=e;c[m>>2]=Td((b[(c[h>>2]|0)+((c[k>>2]|0)+2<<1)>>1]|0)-(b[(c[h>>2]|0)+((c[k>>2]|0)+1<<1)>>1]|0)|0,1)|0;c[m>>2]=131072/(c[m>>2]|0)|0;e=(Ud((c[l>>2]|0)+(c[m>>2]|0)|0,32767)|0)&65535;b[(c[g>>2]|0)+((c[k>>2]|0)+1<<1)>>1]=e;c[k>>2]=(c[k>>2]|0)+2}c[l>>2]=Td(32768-(b[(c[h>>2]|0)+((c[j>>2]|0)-1<<1)>>1]|0)|0,1)|0;c[l>>2]=131072/(c[l>>2]|0)|0;h=(Ud((c[l>>2]|0)+(c[m>>2]|0)|0,32767)|0)&65535;b[(c[g>>2]|0)+((c[j>>2]|0)-1<<1)>>1]=h;i=f;return}function mc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+32|0;h=g+20|0;j=g+16|0;k=g+12|0;l=g+8|0;m=g+4|0;n=g;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;bf(c[j>>2]|0,0,300)|0;f=(c[k>>2]|0)!=8e3&(c[k>>2]|0)!=12e3&(c[k>>2]|0)!=16e3;do if(c[m>>2]|0){if(!(f&(c[k>>2]|0)!=24e3&(c[k>>2]|0)!=48e3)?!((c[l>>2]|0)!=8e3&(c[l>>2]|0)!=12e3&(c[l>>2]|0)!=16e3):0){c[(c[j>>2]|0)+292>>2]=a[3e3+((((c[k>>2]>>12)-((c[k>>2]|0)>16e3&1)>>((c[k>>2]|0)>24e3&1))-1|0)*3|0)+(((c[l>>2]>>12)-((c[l>>2]|0)>16e3&1)>>((c[l>>2]|0)>24e3&1))-1)>>0];break}c[h>>2]=-1;o=c[h>>2]|0;i=g;return o|0}else{if(!f?!((c[l>>2]|0)!=8e3&(c[l>>2]|0)!=12e3&(c[l>>2]|0)!=16e3&(c[l>>2]|0)!=24e3&(c[l>>2]|0)!=48e3):0){c[(c[j>>2]|0)+292>>2]=a[3016+((((c[k>>2]>>12)-((c[k>>2]|0)>16e3&1)>>((c[k>>2]|0)>24e3&1))-1|0)*5|0)+(((c[l>>2]>>12)-((c[l>>2]|0)>16e3&1)>>((c[l>>2]|0)>24e3&1))-1)>>0];break}c[h>>2]=-1;o=c[h>>2]|0;i=g;return o|0}while(0);c[(c[j>>2]|0)+284>>2]=(c[k>>2]|0)/1e3|0;c[(c[j>>2]|0)+288>>2]=(c[l>>2]|0)/1e3|0;c[(c[j>>2]|0)+268>>2]=(c[(c[j>>2]|0)+284>>2]|0)*10;c[n>>2]=0;f=c[l>>2]|0;m=c[k>>2]|0;do if((c[l>>2]|0)>(c[k>>2]|0)){e=(c[j>>2]|0)+264|0;if((f|0)==(m<<1|0)){c[e>>2]=1;break}else{c[e>>2]=2;c[n>>2]=1;break}}else{e=(c[j>>2]|0)+264|0;if((f|0)>=(m|0)){c[e>>2]=0;break}c[e>>2]=3;if((c[l>>2]<<2|0)==((c[k>>2]|0)*3|0)){c[(c[j>>2]|0)+280>>2]=3;c[(c[j>>2]|0)+276>>2]=18;c[(c[j>>2]|0)+296>>2]=2024;break}if(((c[l>>2]|0)*3|0)==(c[k>>2]<<1|0)){c[(c[j>>2]|0)+280>>2]=2;c[(c[j>>2]|0)+276>>2]=18;c[(c[j>>2]|0)+296>>2]=2088;break}if((c[l>>2]<<1|0)==(c[k>>2]|0)){c[(c[j>>2]|0)+280>>2]=1;c[(c[j>>2]|0)+276>>2]=24;c[(c[j>>2]|0)+296>>2]=2128;break}if(((c[l>>2]|0)*3|0)==(c[k>>2]|0)){c[(c[j>>2]|0)+280>>2]=1;c[(c[j>>2]|0)+276>>2]=36;c[(c[j>>2]|0)+296>>2]=2160;break}if((c[l>>2]<<2|0)==(c[k>>2]|0)){c[(c[j>>2]|0)+280>>2]=1;c[(c[j>>2]|0)+276>>2]=36;c[(c[j>>2]|0)+296>>2]=2200;break}if(((c[l>>2]|0)*6|0)==(c[k>>2]|0)){c[(c[j>>2]|0)+280>>2]=1;c[(c[j>>2]|0)+276>>2]=36;c[(c[j>>2]|0)+296>>2]=2240;break}c[h>>2]=-1;o=c[h>>2]|0;i=g;return o|0}while(0);c[(c[j>>2]|0)+272>>2]=((c[k>>2]<<14+(c[n>>2]|0)|0)/(c[l>>2]|0)|0)<<2;while(1){m=_(c[(c[j>>2]|0)+272>>2]>>16,(c[l>>2]&65535)<<16>>16)|0;f=m+((_(c[(c[j>>2]|0)+272>>2]&65535,(c[l>>2]&65535)<<16>>16)|0)>>16)|0;m=f+(_(c[(c[j>>2]|0)+272>>2]|0,(c[l>>2]>>15)+1>>1)|0)|0;if((m|0)>=(c[k>>2]<<c[n>>2]|0))break;m=(c[j>>2]|0)+272|0;c[m>>2]=(c[m>>2]|0)+1}c[h>>2]=0;o=c[h>>2]|0;i=g;return o|0}function nc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;l=f;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=(c[(c[g>>2]|0)+284>>2]|0)-(c[(c[g>>2]|0)+292>>2]|0);df((c[g>>2]|0)+168+(c[(c[g>>2]|0)+292>>2]<<1)|0,c[j>>2]|0,c[l>>2]<<1|0)|0;e=c[(c[g>>2]|0)+264>>2]|0;if((e|0)==1){sc(c[g>>2]|0,c[h>>2]|0,(c[g>>2]|0)+168|0,c[(c[g>>2]|0)+284>>2]|0);sc(c[g>>2]|0,(c[h>>2]|0)+(c[(c[g>>2]|0)+288>>2]<<1)|0,(c[j>>2]|0)+(c[l>>2]<<1)|0,(c[k>>2]|0)-(c[(c[g>>2]|0)+284>>2]|0)|0)}else if((e|0)==2){qc(c[g>>2]|0,c[h>>2]|0,(c[g>>2]|0)+168|0,c[(c[g>>2]|0)+284>>2]|0);qc(c[g>>2]|0,(c[h>>2]|0)+(c[(c[g>>2]|0)+288>>2]<<1)|0,(c[j>>2]|0)+(c[l>>2]<<1)|0,(c[k>>2]|0)-(c[(c[g>>2]|0)+284>>2]|0)|0)}else if((e|0)==3){pc(c[g>>2]|0,c[h>>2]|0,(c[g>>2]|0)+168|0,c[(c[g>>2]|0)+284>>2]|0);pc(c[g>>2]|0,(c[h>>2]|0)+(c[(c[g>>2]|0)+288>>2]<<1)|0,(c[j>>2]|0)+(c[l>>2]<<1)|0,(c[k>>2]|0)-(c[(c[g>>2]|0)+284>>2]|0)|0)}else{df(c[h>>2]|0,(c[g>>2]|0)+168|0,c[(c[g>>2]|0)+284>>2]<<1|0)|0;df((c[h>>2]|0)+(c[(c[g>>2]|0)+288>>2]<<1)|0,(c[j>>2]|0)+(c[l>>2]<<1)|0,(c[k>>2]|0)-(c[(c[g>>2]|0)+284>>2]|0)<<1|0)|0}df((c[g>>2]|0)+168|0,(c[j>>2]|0)+((c[k>>2]|0)-(c[(c[g>>2]|0)+292>>2]|0)<<1)|0,c[(c[g>>2]|0)+292>>2]<<1|0)|0;i=f;return 0}function oc(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=i;i=i+32|0;j=h+8|0;k=h+16|0;l=h+20|0;m=h+24|0;n=h+4|0;o=h;p=h+12|0;c[j>>2]=a;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[n>>2]|0))break;c[p>>2]=(c[c[j>>2]>>2]|0)+(b[(c[l>>2]|0)+(c[o>>2]<<1)>>1]<<8);c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]=c[p>>2];c[p>>2]=c[p>>2]<<2;g=_(c[p>>2]>>16,b[c[m>>2]>>1]|0)|0;f=(c[(c[j>>2]|0)+4>>2]|0)+(g+((_(c[p>>2]&65535,b[c[m>>2]>>1]|0)|0)>>16))|0;c[c[j>>2]>>2]=f;f=_(c[p>>2]>>16,b[(c[m>>2]|0)+2>>1]|0)|0;g=f+((_(c[p>>2]&65535,b[(c[m>>2]|0)+2>>1]|0)|0)>>16)|0;c[(c[j>>2]|0)+4>>2]=g;c[o>>2]=(c[o>>2]|0)+1}i=h;return}function pc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+48|0;g=f;h=f+16|0;j=f+28|0;k=f+4|0;l=f+32|0;m=f+36|0;n=f+12|0;o=f+24|0;p=f+20|0;q=f+8|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=c[g>>2];g=(c[(c[l>>2]|0)+268>>2]|0)+(c[(c[l>>2]|0)+276>>2]|0)|0;c[q>>2]=ua()|0;e=i;i=i+((1*(g<<2)|0)+15&-16)|0;df(e|0,(c[l>>2]|0)+24|0,c[(c[l>>2]|0)+276>>2]<<2|0)|0;c[p>>2]=(c[(c[l>>2]|0)+296>>2]|0)+4;c[o>>2]=c[(c[l>>2]|0)+272>>2];while(1){if((c[k>>2]|0)<(c[(c[l>>2]|0)+268>>2]|0))r=c[k>>2]|0;else r=c[(c[l>>2]|0)+268>>2]|0;c[m>>2]=r;oc(c[l>>2]|0,e+(c[(c[l>>2]|0)+276>>2]<<2)|0,c[j>>2]|0,c[(c[l>>2]|0)+296>>2]|0,c[m>>2]|0);c[n>>2]=c[m>>2]<<16;c[h>>2]=Vd(c[h>>2]|0,e,c[p>>2]|0,c[(c[l>>2]|0)+276>>2]|0,c[(c[l>>2]|0)+280>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+(c[m>>2]<<1);c[k>>2]=(c[k>>2]|0)-(c[m>>2]|0);if((c[k>>2]|0)<=1)break;df(e|0,e+(c[m>>2]<<2)|0,c[(c[l>>2]|0)+276>>2]<<2|0)|0}df((c[l>>2]|0)+24|0,e+(c[m>>2]<<2)|0,c[(c[l>>2]|0)+276>>2]<<2|0)|0;ka(c[q>>2]|0);i=f;return}function qc(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=i;i=i+48|0;h=g+28|0;j=g+16|0;k=g+4|0;l=g+8|0;m=g+32|0;n=g;o=g+12|0;p=g+24|0;q=g+20|0;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=c[h>>2];h=(c[(c[m>>2]|0)+268>>2]<<1)+8|0;c[q>>2]=ua()|0;f=i;i=i+((1*(h<<1)|0)+15&-16)|0;h=(c[m>>2]|0)+24|0;b[f>>1]=b[h>>1]|0;b[f+2>>1]=b[h+2>>1]|0;b[f+4>>1]=b[h+4>>1]|0;b[f+6>>1]=b[h+6>>1]|0;b[f+8>>1]=b[h+8>>1]|0;b[f+10>>1]=b[h+10>>1]|0;b[f+12>>1]=b[h+12>>1]|0;b[f+14>>1]=b[h+14>>1]|0;c[p>>2]=c[(c[m>>2]|0)+272>>2];while(1){if((c[l>>2]|0)<(c[(c[m>>2]|0)+268>>2]|0))r=c[l>>2]|0;else r=c[(c[m>>2]|0)+268>>2]|0;c[n>>2]=r;rc(c[m>>2]|0,f+16|0,c[k>>2]|0,c[n>>2]|0);c[o>>2]=c[n>>2]<<17;c[j>>2]=Wd(c[j>>2]|0,f,c[o>>2]|0,c[p>>2]|0)|0;c[k>>2]=(c[k>>2]|0)+(c[n>>2]<<1);c[l>>2]=(c[l>>2]|0)-(c[n>>2]|0);if((c[l>>2]|0)<=0)break;h=f+(c[n>>2]<<1<<1)|0;b[f>>1]=b[h>>1]|0;b[f+2>>1]=b[h+2>>1]|0;b[f+4>>1]=b[h+4>>1]|0;b[f+6>>1]=b[h+6>>1]|0;b[f+8>>1]=b[h+8>>1]|0;b[f+10>>1]=b[h+10>>1]|0;b[f+12>>1]=b[h+12>>1]|0;b[f+14>>1]=b[h+14>>1]|0}l=(c[m>>2]|0)+24|0;m=f+(c[n>>2]<<1<<1)|0;b[l>>1]=b[m>>1]|0;b[l+2>>1]=b[m+2>>1]|0;b[l+4>>1]=b[m+4>>1]|0;b[l+6>>1]=b[m+6>>1]|0;b[l+8>>1]=b[m+8>>1]|0;b[l+10>>1]=b[m+10>>1]|0;b[l+12>>1]=b[m+12>>1]|0;b[l+14>>1]=b[m+14>>1]|0;ka(c[q>>2]|0);i=g;return}function rc(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=i;i=i+48|0;h=g;j=g+16|0;k=g+28|0;l=g+4|0;m=g+32|0;n=g+36|0;o=g+12|0;p=g+24|0;q=g+20|0;r=g+8|0;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[l>>2]|0))break;c[n>>2]=b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]<<10;c[q>>2]=(c[n>>2]|0)-(c[c[h>>2]>>2]|0);f=_(c[q>>2]>>16,b[1516]|0)|0;c[r>>2]=f+((_(c[q>>2]&65535,b[1516]|0)|0)>>16);c[o>>2]=(c[c[h>>2]>>2]|0)+(c[r>>2]|0);c[c[h>>2]>>2]=(c[n>>2]|0)+(c[r>>2]|0);c[q>>2]=(c[o>>2]|0)-(c[(c[h>>2]|0)+4>>2]|0);f=_(c[q>>2]>>16,b[1517]|0)|0;c[r>>2]=f+((_(c[q>>2]&65535,b[1517]|0)|0)>>16);c[p>>2]=(c[(c[h>>2]|0)+4>>2]|0)+(c[r>>2]|0);c[(c[h>>2]|0)+4>>2]=(c[o>>2]|0)+(c[r>>2]|0);c[q>>2]=(c[p>>2]|0)-(c[(c[h>>2]|0)+8>>2]|0);f=_(c[q>>2]>>16,b[1518]|0)|0;c[r>>2]=(c[q>>2]|0)+(f+((_(c[q>>2]&65535,b[1518]|0)|0)>>16));c[o>>2]=(c[(c[h>>2]|0)+8>>2]|0)+(c[r>>2]|0);c[(c[h>>2]|0)+8>>2]=(c[p>>2]|0)+(c[r>>2]|0);if(((c[o>>2]>>9)+1>>1|0)<=32767)if(((c[o>>2]>>9)+1>>1|0)<-32768)s=-32768;else s=(c[o>>2]>>9)+1>>1;else s=32767;b[(c[j>>2]|0)+(c[m>>2]<<1<<1)>>1]=s;c[q>>2]=(c[n>>2]|0)-(c[(c[h>>2]|0)+12>>2]|0);f=_(c[q>>2]>>16,b[1520]|0)|0;c[r>>2]=f+((_(c[q>>2]&65535,b[1520]|0)|0)>>16);c[o>>2]=(c[(c[h>>2]|0)+12>>2]|0)+(c[r>>2]|0);c[(c[h>>2]|0)+12>>2]=(c[n>>2]|0)+(c[r>>2]|0);c[q>>2]=(c[o>>2]|0)-(c[(c[h>>2]|0)+16>>2]|0);f=_(c[q>>2]>>16,b[1521]|0)|0;c[r>>2]=f+((_(c[q>>2]&65535,b[1521]|0)|0)>>16);c[p>>2]=(c[(c[h>>2]|0)+16>>2]|0)+(c[r>>2]|0);c[(c[h>>2]|0)+16>>2]=(c[o>>2]|0)+(c[r>>2]|0);c[q>>2]=(c[p>>2]|0)-(c[(c[h>>2]|0)+20>>2]|0);f=_(c[q>>2]>>16,b[1522]|0)|0;c[r>>2]=(c[q>>2]|0)+(f+((_(c[q>>2]&65535,b[1522]|0)|0)>>16));c[o>>2]=(c[(c[h>>2]|0)+20>>2]|0)+(c[r>>2]|0);c[(c[h>>2]|0)+20>>2]=(c[p>>2]|0)+(c[r>>2]|0);if(((c[o>>2]>>9)+1>>1|0)<=32767)if(((c[o>>2]>>9)+1>>1|0)<-32768)t=-32768;else t=(c[o>>2]>>9)+1>>1;else t=32767;b[(c[j>>2]|0)+((c[m>>2]<<1)+1<<1)>>1]=t;c[m>>2]=(c[m>>2]|0)+1}i=g;return}function sc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;l=f;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=c[g>>2];rc(c[l>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0);i=f;return}function tc(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e+16|0;g=e+12|0;h=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=d;c[j>>2]=1;while(1){if((c[j>>2]|0)>=(c[g>>2]|0))break;c[h>>2]=b[(c[f>>2]|0)+(c[j>>2]<<1)>>1];c[k>>2]=(c[j>>2]|0)-1;while(1){if((c[k>>2]|0)<0)break;if((c[h>>2]|0)>=(b[(c[f>>2]|0)+(c[k>>2]<<1)>>1]|0))break;b[(c[f>>2]|0)+((c[k>>2]|0)+1<<1)>>1]=b[(c[f>>2]|0)+(c[k>>2]<<1)>>1]|0;c[k>>2]=(c[k>>2]|0)+-1}b[(c[f>>2]|0)+((c[k>>2]|0)+1<<1)>>1]=c[h>>2];c[j>>2]=(c[j>>2]|0)+1}i=e;return}function uc(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;g=i;i=i+32|0;h=g+4|0;j=g+16|0;k=g+8|0;l=g+20|0;m=g+28|0;n=g;o=g+12|0;p=g+24|0;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[p>>2]=0;c[n>>2]=0;c[l>>2]=(c[l>>2]|0)+-1;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[l>>2]|0))break;c[p>>2]=(c[p>>2]|0)+(_(b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]|0,b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]|0)|0);c[p>>2]=(c[p>>2]|0)+(_(b[(c[k>>2]|0)+((c[m>>2]|0)+1<<1)>>1]|0,b[(c[k>>2]|0)+((c[m>>2]|0)+1<<1)>>1]|0)|0);if((c[p>>2]|0)<0){q=4;break}c[m>>2]=(c[m>>2]|0)+2}if((q|0)==4){c[p>>2]=(c[p>>2]|0)>>>2;c[n>>2]=2}while(1){r=c[m>>2]|0;if((c[m>>2]|0)>=(c[l>>2]|0))break;c[o>>2]=_(b[(c[k>>2]|0)+(r<<1)>>1]|0,b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(_(b[(c[k>>2]|0)+((c[m>>2]|0)+1<<1)>>1]|0,b[(c[k>>2]|0)+((c[m>>2]|0)+1<<1)>>1]|0)|0);c[p>>2]=(c[p>>2]|0)+((c[o>>2]|0)>>>(c[n>>2]|0));if((c[p>>2]|0)<0){c[p>>2]=(c[p>>2]|0)>>>2;c[n>>2]=(c[n>>2]|0)+2}c[m>>2]=(c[m>>2]|0)+2}if((r|0)==(c[l>>2]|0)){c[o>>2]=_(b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]|0,b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]|0)|0;c[p>>2]=(c[p>>2]|0)+(c[o>>2]>>c[n>>2])}if(!(c[p>>2]&-1073741824)){s=c[n>>2]|0;t=c[j>>2]|0;c[t>>2]=s;u=c[p>>2]|0;v=c[h>>2]|0;c[v>>2]=u;i=g;return}c[p>>2]=(c[p>>2]|0)>>>2;c[n>>2]=(c[n>>2]|0)+2;s=c[n>>2]|0;t=c[j>>2]|0;c[t>>2]=s;u=c[p>>2]|0;v=c[h>>2]|0;c[v>>2]=u;i=g;return}function vc(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+48|0;f=e+40|0;g=e+36|0;h=e+32|0;j=e+8|0;k=e+4|0;l=e;c[f>>2]=a;c[g>>2]=d;c[h>>2]=jb(c[f>>2]|0,368,8)|0;c[j+8>>2]=(c[h>>2]|0)/5|0;c[j+12+8>>2]=(c[h>>2]|0)-((c[j+8>>2]|0)*5|0);c[h>>2]=0;while(1){if((c[h>>2]|0)>=2)break;d=jb(c[f>>2]|0,472,8)|0;c[j+((c[h>>2]|0)*12|0)>>2]=d;d=jb(c[f>>2]|0,488,8)|0;c[j+((c[h>>2]|0)*12|0)+4>>2]=d;c[h>>2]=(c[h>>2]|0)+1}c[h>>2]=0;while(1){if((c[h>>2]|0)>=2)break;f=j+((c[h>>2]|0)*12|0)|0;c[f>>2]=(c[f>>2]|0)+((c[j+((c[h>>2]|0)*12|0)+8>>2]|0)*3|0);c[k>>2]=b[336+(c[j+((c[h>>2]|0)*12|0)>>2]<<1)>>1];c[l>>2]=(((b[336+((c[j+((c[h>>2]|0)*12|0)>>2]|0)+1<<1)>>1]|0)-(c[k>>2]|0)>>16)*6554|0)+(((b[336+((c[j+((c[h>>2]|0)*12|0)>>2]|0)+1<<1)>>1]|0)-(c[k>>2]|0)&65535)*6554>>16);f=(c[k>>2]|0)+(_((c[l>>2]&65535)<<16>>16,((c[j+((c[h>>2]|0)*12|0)+4>>2]<<1)+1&65535)<<16>>16)|0)|0;c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]=f;c[h>>2]=(c[h>>2]|0)+1}h=c[g>>2]|0;c[h>>2]=(c[h>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0);i=e;return}function wc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=jb(c[e>>2]|0,400,8)|0;c[c[f>>2]>>2]=b;i=d;return}function xc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0,C=0,D=0.0,E=0.0;f=i;i=i+80|0;h=f+60|0;j=f+44|0;k=f+24|0;l=f+28|0;m=f+12|0;n=f+40|0;o=f+48|0;p=f+56|0;q=f+64|0;r=f+8|0;s=f+4|0;t=f+32|0;u=f;v=f+16|0;w=f+36|0;x=f+20|0;y=f+52|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;if(!((((c[k>>2]|0)<1|(c[j>>2]|0)<1)^1)&(c[h>>2]|0)!=0&(c[l>>2]|0)!=0)){i=f;return}c[n>>2]=0;while(1){if((c[n>>2]|0)>=(_(c[j>>2]|0,c[k>>2]|0)|0))break;if(2.0<+g[(c[h>>2]|0)+(c[n>>2]<<2)>>2])z=2.0;else z=+g[(c[h>>2]|0)+(c[n>>2]<<2)>>2];if(!(-2.0>z))if(2.0<+g[(c[h>>2]|0)+(c[n>>2]<<2)>>2])A=2.0;else A=+g[(c[h>>2]|0)+(c[n>>2]<<2)>>2];else A=-2.0;g[(c[h>>2]|0)+(c[n>>2]<<2)>>2]=A;c[n>>2]=(c[n>>2]|0)+1}c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;c[o>>2]=(c[h>>2]|0)+(c[m>>2]<<2);g[p>>2]=+g[(c[l>>2]|0)+(c[m>>2]<<2)>>2];c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[j>>2]|0))break;e=_(c[n>>2]|0,c[k>>2]|0)|0;if(+g[(c[o>>2]|0)+(e<<2)>>2]*+g[p>>2]>=0.0)break;e=_(c[n>>2]|0,c[k>>2]|0)|0;d=_(c[n>>2]|0,c[k>>2]|0)|0;b=_(c[n>>2]|0,c[k>>2]|0)|0;a=_(c[n>>2]|0,c[k>>2]|0)|0;g[(c[o>>2]|0)+(a<<2)>>2]=+g[(c[o>>2]|0)+(e<<2)>>2]+ +g[p>>2]*+g[(c[o>>2]|0)+(d<<2)>>2]*+g[(c[o>>2]|0)+(b<<2)>>2];c[n>>2]=(c[n>>2]|0)+1}c[r>>2]=0;g[q>>2]=+g[c[o>>2]>>2];do{c[v>>2]=0;c[n>>2]=c[r>>2];while(1){if((c[n>>2]|0)>=(c[j>>2]|0))break;b=_(c[n>>2]|0,c[k>>2]|0)|0;if(+g[(c[o>>2]|0)+(b<<2)>>2]>1.0)break;b=_(c[n>>2]|0,c[k>>2]|0)|0;if(+g[(c[o>>2]|0)+(b<<2)>>2]<-1.0)break;c[n>>2]=(c[n>>2]|0)+1}if((c[n>>2]|0)==(c[j>>2]|0)){B=23;break}c[w>>2]=c[n>>2];b=c[n>>2]|0;c[t>>2]=b;c[s>>2]=b;b=_(c[n>>2]|0,c[k>>2]|0)|0;g[u>>2]=+N(+(+g[(c[o>>2]|0)+(b<<2)>>2]));while(1){if((c[s>>2]|0)<=0)break;b=_(c[n>>2]|0,c[k>>2]|0)|0;d=_((c[s>>2]|0)-1|0,c[k>>2]|0)|0;if(!(+g[(c[o>>2]|0)+(b<<2)>>2]*+g[(c[o>>2]|0)+(d<<2)>>2]>=0.0))break;c[s>>2]=(c[s>>2]|0)+-1}while(1){if((c[t>>2]|0)>=(c[j>>2]|0))break;d=_(c[n>>2]|0,c[k>>2]|0)|0;b=_(c[t>>2]|0,c[k>>2]|0)|0;if(!(+g[(c[o>>2]|0)+(d<<2)>>2]*+g[(c[o>>2]|0)+(b<<2)>>2]>=0.0))break;b=_(c[t>>2]|0,c[k>>2]|0)|0;A=+N(+(+g[(c[o>>2]|0)+(b<<2)>>2]));if(A>+g[u>>2]){b=_(c[t>>2]|0,c[k>>2]|0)|0;g[u>>2]=+N(+(+g[(c[o>>2]|0)+(b<<2)>>2]));c[w>>2]=c[t>>2]}c[t>>2]=(c[t>>2]|0)+1}if(!(c[s>>2]|0)){b=_(c[n>>2]|0,c[k>>2]|0)|0;C=+g[(c[o>>2]|0)+(b<<2)>>2]*+g[c[o>>2]>>2]>=0.0}else C=0;c[v>>2]=C&1;g[p>>2]=(+g[u>>2]-1.0)/(+g[u>>2]*+g[u>>2]);b=_(c[n>>2]|0,c[k>>2]|0)|0;if(+g[(c[o>>2]|0)+(b<<2)>>2]>0.0)g[p>>2]=-+g[p>>2];c[n>>2]=c[s>>2];while(1){if((c[n>>2]|0)>=(c[t>>2]|0))break;b=_(c[n>>2]|0,c[k>>2]|0)|0;d=_(c[n>>2]|0,c[k>>2]|0)|0;e=_(c[n>>2]|0,c[k>>2]|0)|0;a=_(c[n>>2]|0,c[k>>2]|0)|0;g[(c[o>>2]|0)+(a<<2)>>2]=+g[(c[o>>2]|0)+(b<<2)>>2]+ +g[p>>2]*+g[(c[o>>2]|0)+(d<<2)>>2]*+g[(c[o>>2]|0)+(e<<2)>>2];c[n>>2]=(c[n>>2]|0)+1}a:do if((c[v>>2]|0)!=0&(c[w>>2]|0)>=2){g[y>>2]=+g[q>>2]-+g[c[o>>2]>>2];g[x>>2]=+g[y>>2]/+(c[w>>2]|0);c[n>>2]=c[r>>2];while(1){if((c[n>>2]|0)>=(c[w>>2]|0))break a;g[y>>2]=+g[y>>2]-+g[x>>2];e=_(c[n>>2]|0,c[k>>2]|0)|0;d=(c[o>>2]|0)+(e<<2)|0;g[d>>2]=+g[d>>2]+ +g[y>>2];d=_(c[n>>2]|0,c[k>>2]|0)|0;if(1.0<+g[(c[o>>2]|0)+(d<<2)>>2])D=1.0;else{d=_(c[n>>2]|0,c[k>>2]|0)|0;D=+g[(c[o>>2]|0)+(d<<2)>>2]}if(!(-1.0>D)){d=_(c[n>>2]|0,c[k>>2]|0)|0;if(1.0<+g[(c[o>>2]|0)+(d<<2)>>2])E=1.0;else{d=_(c[n>>2]|0,c[k>>2]|0)|0;E=+g[(c[o>>2]|0)+(d<<2)>>2]}}else E=-1.0;d=_(c[n>>2]|0,c[k>>2]|0)|0;g[(c[o>>2]|0)+(d<<2)>>2]=E;c[n>>2]=(c[n>>2]|0)+1}}while(0);c[r>>2]=c[t>>2]}while((c[r>>2]|0)!=(c[j>>2]|0));if((B|0)==23){B=0;g[p>>2]=0.0}g[(c[l>>2]|0)+(c[m>>2]<<2)>>2]=+g[p>>2];c[m>>2]=(c[m>>2]|0)+1}i=f;return}function yc(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;b=d[c[f>>2]>>0]|0;if((d[c[f>>2]>>0]|0)&128){c[h>>2]=b>>3&3;c[h>>2]=(c[g>>2]<<c[h>>2]|0)/400|0;j=c[h>>2]|0;i=e;return j|0}a=d[c[f>>2]>>0]|0;if((b&96|0)==96){b=c[g>>2]|0;c[h>>2]=(a&8|0)!=0?(b|0)/50|0:(b|0)/100|0;j=c[h>>2]|0;i=e;return j|0}c[h>>2]=a>>3&3;a=c[g>>2]|0;if((c[h>>2]|0)==3){c[h>>2]=(a*60|0)/1e3|0;j=c[h>>2]|0;i=e;return j|0}else{c[h>>2]=(a<<c[h>>2]|0)/100|0;j=c[h>>2]|0;i=e;return j|0}return 0}function zc(e,f,g,h,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;n=i;i=i+80|0;o=n+36|0;p=n+24|0;q=n+44|0;r=n+60|0;s=n+12|0;t=n+16|0;u=n+48|0;v=n+56|0;w=n+64|0;x=n+68|0;y=n+72|0;z=n+8|0;A=n;B=n+76|0;C=n+77|0;D=n+20|0;E=n+52|0;F=n+28|0;G=n+32|0;H=n+40|0;I=n+4|0;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=j;c[u>>2]=k;c[v>>2]=l;c[w>>2]=m;c[F>>2]=0;c[G>>2]=c[p>>2];if(!(c[u>>2]|0)){c[o>>2]=-1;J=c[o>>2]|0;i=n;return J|0}c[D>>2]=yc(c[p>>2]|0,48e3)|0;c[A>>2]=0;m=c[p>>2]|0;c[p>>2]=m+1;a[C>>0]=a[m>>0]|0;c[q>>2]=(c[q>>2]|0)+-1;c[E>>2]=c[q>>2];m=d[C>>0]&3;a:do if(!m)c[z>>2]=1;else if((m|0)==1){c[z>>2]=2;c[A>>2]=1;if(!(c[r>>2]|0)){if(!(c[q>>2]&1)){c[E>>2]=(c[q>>2]|0)/2|0;b[c[u>>2]>>1]=c[E>>2];break}c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}}else if((m|0)==2){c[z>>2]=2;c[y>>2]=Xd(c[p>>2]|0,c[q>>2]|0,c[u>>2]|0)|0;c[q>>2]=(c[q>>2]|0)-(c[y>>2]|0);if((b[c[u>>2]>>1]|0)>=0?(b[c[u>>2]>>1]|0)<=(c[q>>2]|0):0){c[p>>2]=(c[p>>2]|0)+(c[y>>2]|0);c[E>>2]=(c[q>>2]|0)-(b[c[u>>2]>>1]|0);break}c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}else{if((c[q>>2]|0)<1){c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}l=c[p>>2]|0;c[p>>2]=l+1;a[B>>0]=a[l>>0]|0;c[z>>2]=d[B>>0]&63;if((c[z>>2]|0)>0?(_(c[D>>2]|0,c[z>>2]|0)|0)<=5760:0){c[q>>2]=(c[q>>2]|0)+-1;b:do if(d[B>>0]&64){while(1){if((c[q>>2]|0)<=0)break;l=c[p>>2]|0;c[p>>2]=l+1;c[H>>2]=d[l>>0];c[q>>2]=(c[q>>2]|0)+-1;c[I>>2]=(c[H>>2]|0)==255?254:c[H>>2]|0;c[q>>2]=(c[q>>2]|0)-(c[I>>2]|0);c[F>>2]=(c[F>>2]|0)+(c[I>>2]|0);if((c[H>>2]|0)!=255)break b}c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}while(0);if((c[q>>2]|0)<0){c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}c[A>>2]=((d[B>>0]&128|0)!=0^1)&1;if(c[A>>2]|0){if(c[r>>2]|0)break;c[E>>2]=(c[q>>2]|0)/(c[z>>2]|0)|0;l=_(c[E>>2]|0,c[z>>2]|0)|0;if((l|0)!=(c[q>>2]|0)){c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}c[x>>2]=0;while(1){if((c[x>>2]|0)>=((c[z>>2]|0)-1|0))break a;b[(c[u>>2]|0)+(c[x>>2]<<1)>>1]=c[E>>2];c[x>>2]=(c[x>>2]|0)+1}}c[E>>2]=c[q>>2];c[x>>2]=0;while(1){if((c[x>>2]|0)>=((c[z>>2]|0)-1|0))break;c[y>>2]=Xd(c[p>>2]|0,c[q>>2]|0,(c[u>>2]|0)+(c[x>>2]<<1)|0)|0;c[q>>2]=(c[q>>2]|0)-(c[y>>2]|0);if((b[(c[u>>2]|0)+(c[x>>2]<<1)>>1]|0)<0){K=29;break}if((b[(c[u>>2]|0)+(c[x>>2]<<1)>>1]|0)>(c[q>>2]|0)){K=29;break}c[p>>2]=(c[p>>2]|0)+(c[y>>2]|0);c[E>>2]=(c[E>>2]|0)-((c[y>>2]|0)+(b[(c[u>>2]|0)+(c[x>>2]<<1)>>1]|0));c[x>>2]=(c[x>>2]|0)+1}if((K|0)==29){c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}if((c[E>>2]|0)>=0)break;c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}while(0);c:do if(c[r>>2]|0){c[y>>2]=Xd(c[p>>2]|0,c[q>>2]|0,(c[u>>2]|0)+(c[z>>2]<<1)+-2|0)|0;c[q>>2]=(c[q>>2]|0)-(c[y>>2]|0);if((b[(c[u>>2]|0)+((c[z>>2]|0)-1<<1)>>1]|0)>=0?(b[(c[u>>2]|0)+((c[z>>2]|0)-1<<1)>>1]|0)<=(c[q>>2]|0):0){c[p>>2]=(c[p>>2]|0)+(c[y>>2]|0);if(!(c[A>>2]|0)){if(((c[y>>2]|0)+(b[(c[u>>2]|0)+((c[z>>2]|0)-1<<1)>>1]|0)|0)<=(c[E>>2]|0))break;c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}K=_(b[(c[u>>2]|0)+((c[z>>2]|0)-1<<1)>>1]|0,c[z>>2]|0)|0;if((K|0)>(c[q>>2]|0)){c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}c[x>>2]=0;while(1){if((c[x>>2]|0)>=((c[z>>2]|0)-1|0))break c;b[(c[u>>2]|0)+(c[x>>2]<<1)>>1]=b[(c[u>>2]|0)+((c[z>>2]|0)-1<<1)>>1]|0;c[x>>2]=(c[x>>2]|0)+1}}c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}else{if((c[E>>2]|0)<=1275){b[(c[u>>2]|0)+((c[z>>2]|0)-1<<1)>>1]=c[E>>2];break}c[o>>2]=-4;J=c[o>>2]|0;i=n;return J|0}while(0);if(c[v>>2]|0)c[c[v>>2]>>2]=(c[p>>2]|0)-(c[G>>2]|0);c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[z>>2]|0))break;if(c[t>>2]|0)c[(c[t>>2]|0)+(c[x>>2]<<2)>>2]=c[p>>2];c[p>>2]=(c[p>>2]|0)+(b[(c[u>>2]|0)+(c[x>>2]<<1)>>1]|0);c[x>>2]=(c[x>>2]|0)+1}if(c[w>>2]|0)c[c[w>>2]>>2]=(c[F>>2]|0)+((c[p>>2]|0)-(c[G>>2]|0));if(c[s>>2]|0)a[c[s>>2]>>0]=a[C>>0]|0;c[o>>2]=c[z>>2];J=c[o>>2]|0;i=n;return J|0}function Ac(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+32|0;d=b+16|0;e=b+12|0;f=b+8|0;g=b+4|0;h=b;c[e>>2]=a;if((c[e>>2]|0)<1|(c[e>>2]|0)>2){c[d>>2]=0;j=c[d>>2]|0;i=b;return j|0}c[h>>2]=Ub(f)|0;if(c[h>>2]|0){c[d>>2]=0;j=c[d>>2]|0;i=b;return j|0}else{c[f>>2]=Yd(c[f>>2]|0)|0;c[g>>2]=Za(c[e>>2]|0)|0;e=Yd(84)|0;c[d>>2]=e+(c[f>>2]|0)+(c[g>>2]|0);j=c[d>>2]|0;i=b;return j|0}return 0}function Bc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;i=i+48|0;f=e;g=e+24|0;h=e+20|0;j=e+8|0;k=e+16|0;l=e+4|0;m=e+12|0;n=e+28|0;o=e+32|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;if(!((c[j>>2]|0)!=48e3&(c[j>>2]|0)!=24e3&(c[j>>2]|0)!=16e3&(c[j>>2]|0)!=12e3&(c[j>>2]|0)!=8e3)?!((c[k>>2]|0)!=1&(c[k>>2]|0)!=2):0){d=c[h>>2]|0;bf(d|0,0,Ac(c[k>>2]|0)|0)|0;c[n>>2]=Ub(o)|0;if(c[n>>2]|0){c[g>>2]=-3;p=c[g>>2]|0;i=e;return p|0}c[o>>2]=Yd(c[o>>2]|0)|0;d=Yd(84)|0;c[(c[h>>2]|0)+4>>2]=d;c[c[h>>2]>>2]=(c[(c[h>>2]|0)+4>>2]|0)+(c[o>>2]|0);c[l>>2]=(c[h>>2]|0)+(c[(c[h>>2]|0)+4>>2]|0);c[m>>2]=(c[h>>2]|0)+(c[c[h>>2]>>2]|0);o=c[k>>2]|0;c[(c[h>>2]|0)+8>>2]=o;c[(c[h>>2]|0)+44>>2]=o;c[(c[h>>2]|0)+12>>2]=c[j>>2];c[(c[h>>2]|0)+16+8>>2]=c[(c[h>>2]|0)+12>>2];c[(c[h>>2]|0)+16>>2]=c[(c[h>>2]|0)+8>>2];c[n>>2]=Vb(c[l>>2]|0)|0;if(c[n>>2]|0){c[g>>2]=-3;p=c[g>>2]|0;i=e;return p|0}c[n>>2]=_a(c[m>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;if(c[n>>2]|0){c[g>>2]=-3;p=c[g>>2]|0;i=e;return p|0}else{n=c[m>>2]|0;c[f>>2]=0;ab(n,10016,f)|0;c[(c[h>>2]|0)+56>>2]=0;c[(c[h>>2]|0)+60>>2]=(c[j>>2]|0)/400|0;c[g>>2]=0;p=c[g>>2]|0;i=e;return p|0}}c[g>>2]=-1;p=c[g>>2]|0;i=e;return p|0}function Cc(a,d,e,f,h,j,k,l,m){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;n=i;i=i+208|0;o=n+44|0;p=n+4|0;q=n;r=n+76|0;s=n+36|0;t=n+16|0;u=n+20|0;v=n+24|0;w=n+64|0;x=n+72|0;y=n+80|0;z=n+84|0;A=n+88|0;B=n+48|0;C=n+192|0;D=n+8|0;E=n+56|0;F=n+28|0;G=n+60|0;H=n+96|0;I=n+32|0;J=n+68|0;K=n+40|0;L=n+12|0;M=n+52|0;c[p>>2]=a;c[q>>2]=d;c[r>>2]=e;c[s>>2]=f;c[t>>2]=h;c[u>>2]=j;c[v>>2]=k;c[w>>2]=l;c[x>>2]=m;if((c[u>>2]|0)<0|(c[u>>2]|0)>1){c[o>>2]=-1;N=c[o>>2]|0;i=n;return N|0}if((c[u>>2]|0)!=0|(c[r>>2]|0)==0|(c[q>>2]|0)==0?((c[t>>2]|0)%((c[(c[p>>2]|0)+12>>2]|0)/400|0|0)|0|0)!=0:0){c[o>>2]=-1;N=c[o>>2]|0;i=n;return N|0}if((c[r>>2]|0)==0|(c[q>>2]|0)==0){c[I>>2]=0;while(1){m=(c[s>>2]|0)+((_(c[I>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0)<<2)|0;c[J>>2]=Zd(c[p>>2]|0,0,0,m,(c[t>>2]|0)-(c[I>>2]|0)|0,0)|0;O=c[J>>2]|0;if((c[J>>2]|0)<0){P=9;break}c[I>>2]=(c[I>>2]|0)+O;if((c[I>>2]|0)>=(c[t>>2]|0)){P=11;break}}if((P|0)==9){c[o>>2]=O;N=c[o>>2]|0;i=n;return N|0}else if((P|0)==11){_d()|0;c[(c[p>>2]|0)+68>>2]=c[I>>2];c[o>>2]=c[I>>2];N=c[o>>2]|0;i=n;return N|0}}if((c[r>>2]|0)<0){c[o>>2]=-1;N=c[o>>2]|0;i=n;return N|0}c[F>>2]=$d(c[q>>2]|0)|0;c[E>>2]=Dc(c[q>>2]|0)|0;c[D>>2]=yc(c[q>>2]|0,c[(c[p>>2]|0)+12>>2]|0)|0;c[G>>2]=Ec(c[q>>2]|0)|0;c[A>>2]=zc(c[q>>2]|0,c[r>>2]|0,c[v>>2]|0,C,0,H,B,c[w>>2]|0)|0;if((c[A>>2]|0)<0){c[o>>2]=c[A>>2];N=c[o>>2]|0;i=n;return N|0}c[q>>2]=(c[q>>2]|0)+(c[B>>2]|0);if(c[u>>2]|0){if(!((c[F>>2]|0)==1002?1:(c[t>>2]|0)<(c[D>>2]|0))?(c[(c[p>>2]|0)+52>>2]|0)!=1002:0){c[K>>2]=c[(c[p>>2]|0)+68>>2];if(((c[t>>2]|0)-(c[D>>2]|0)|0)!=0?(c[L>>2]=Cc(c[p>>2]|0,0,0,c[s>>2]|0,(c[t>>2]|0)-(c[D>>2]|0)|0,0,0,0,c[x>>2]|0)|0,(c[L>>2]|0)<0):0){c[(c[p>>2]|0)+68>>2]=c[K>>2];c[o>>2]=c[L>>2];N=c[o>>2]|0;i=n;return N|0}c[(c[p>>2]|0)+52>>2]=c[F>>2];c[(c[p>>2]|0)+48>>2]=c[E>>2];c[(c[p>>2]|0)+60>>2]=c[D>>2];c[(c[p>>2]|0)+44>>2]=c[G>>2];K=(c[s>>2]|0)+((_(c[(c[p>>2]|0)+8>>2]|0,(c[t>>2]|0)-(c[D>>2]|0)|0)|0)<<2)|0;c[L>>2]=Zd(c[p>>2]|0,c[q>>2]|0,b[H>>1]|0,K,c[D>>2]|0,1)|0;if((c[L>>2]|0)<0){c[o>>2]=c[L>>2];N=c[o>>2]|0;i=n;return N|0}else{_d()|0;c[(c[p>>2]|0)+68>>2]=c[t>>2];c[o>>2]=c[t>>2];N=c[o>>2]|0;i=n;return N|0}}c[o>>2]=Cc(c[p>>2]|0,0,0,c[s>>2]|0,c[t>>2]|0,0,0,0,c[x>>2]|0)|0;N=c[o>>2]|0;i=n;return N|0}L=_(c[A>>2]|0,c[D>>2]|0)|0;if((L|0)>(c[t>>2]|0)){c[o>>2]=-2;N=c[o>>2]|0;i=n;return N|0}c[(c[p>>2]|0)+52>>2]=c[F>>2];c[(c[p>>2]|0)+48>>2]=c[E>>2];c[(c[p>>2]|0)+60>>2]=c[D>>2];c[(c[p>>2]|0)+44>>2]=c[G>>2];c[z>>2]=0;c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[A>>2]|0))break;G=(c[s>>2]|0)+((_(c[z>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0)<<2)|0;c[M>>2]=Zd(c[p>>2]|0,c[q>>2]|0,b[H+(c[y>>2]<<1)>>1]|0,G,(c[t>>2]|0)-(c[z>>2]|0)|0,0)|0;if((c[M>>2]|0)<0){P=31;break}c[q>>2]=(c[q>>2]|0)+(b[H+(c[y>>2]<<1)>>1]|0);c[z>>2]=(c[z>>2]|0)+(c[M>>2]|0);c[y>>2]=(c[y>>2]|0)+1}if((P|0)==31){c[o>>2]=c[M>>2];N=c[o>>2]|0;i=n;return N|0}c[(c[p>>2]|0)+68>>2]=c[z>>2];_d()|0;if(c[x>>2]|0)xc(c[s>>2]|0,c[z>>2]|0,c[(c[p>>2]|0)+8>>2]|0,(c[p>>2]|0)+72|0);else{g[(c[p>>2]|0)+72+4>>2]=0.0;g[(c[p>>2]|0)+72>>2]=0.0}c[o>>2]=c[z>>2];N=c[o>>2]|0;i=n;return N|0}function Dc(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;b=i;i=i+16|0;e=b+4|0;f=b;c[e>>2]=a;a=d[c[e>>2]>>0]|0;if((d[c[e>>2]>>0]|0)&128){g=1102+(a>>5&3)|0;c[f>>2]=g;c[f>>2]=(c[f>>2]|0)==1102?1101:g;h=c[f>>2]|0;i=b;return h|0}g=d[c[e>>2]>>0]|0;if((a&96|0)==96){c[f>>2]=(g&16|0)!=0?1105:1104;h=c[f>>2]|0;i=b;return h|0}else{c[f>>2]=1101+(g>>5&3);h=c[f>>2]|0;i=b;return h|0}return 0}function Ec(a){a=a|0;var b=0,e=0;b=i;i=i+16|0;e=b;c[e>>2]=a;i=b;return (((d[c[e>>2]>>0]|0)&4|0)!=0?2:1)|0}function Fc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;e=i;i=i+80|0;f=e+8|0;g=e;h=e+12|0;j=e+16|0;k=e+20|0;l=e+44|0;m=e+24|0;n=e+40|0;o=e+48|0;p=e+52|0;q=e+56|0;r=e+60|0;s=e+64|0;t=e+68|0;u=e+72|0;v=e+76|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=0;c[n>>2]=(c[j>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0);c[o>>2]=(c[j>>2]|0)+(c[c[j>>2]>>2]|0);c[m>>2]=d;a:do switch(c[k>>2]|0){case 4029:{d=(c[m>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[m>>2]=d+4;c[r>>2]=b;if(c[r>>2]|0){c[c[r>>2]>>2]=c[(c[j>>2]|0)+12>>2];w=20}else w=21;break}case 4033:{b=(c[m>>2]|0)+(4-1)&~(4-1);d=c[b>>2]|0;c[m>>2]=b+4;c[s>>2]=d;if(c[s>>2]|0)if((c[(c[j>>2]|0)+56>>2]|0)==1002){d=c[o>>2]|0;c[f>>2]=(c[s>>2]|0)+((((c[s>>2]|0)-(c[s>>2]|0)|0)/4|0)<<2);ab(d,4033,f)|0;w=20;break a}else{c[c[s>>2]>>2]=c[(c[j>>2]|0)+16+20>>2];w=20;break a}else w=21;break}case 4045:{d=(c[m>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[m>>2]=d+4;c[t>>2]=b;if(c[t>>2]|0){c[c[t>>2]>>2]=c[(c[j>>2]|0)+40>>2];w=20}else w=21;break}case 4034:{b=(c[m>>2]|0)+(4-1)&~(4-1);d=c[b>>2]|0;c[m>>2]=b+4;c[u>>2]=d;if((c[u>>2]|0)<-32768|(c[u>>2]|0)>32767)w=21;else{c[(c[j>>2]|0)+40>>2]=c[u>>2];w=20}break}case 4039:{d=(c[m>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[m>>2]=d+4;c[v>>2]=b;if(c[v>>2]|0){c[c[v>>2]>>2]=c[(c[j>>2]|0)+68>>2];w=20}else w=21;break}case 4009:{b=(c[m>>2]|0)+(4-1)&~(4-1);d=c[b>>2]|0;c[m>>2]=b+4;c[p>>2]=d;if(c[p>>2]|0){c[c[p>>2]>>2]=c[(c[j>>2]|0)+48>>2];w=20}else w=21;break}case 4031:{d=(c[m>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[m>>2]=d+4;c[q>>2]=b;if(c[q>>2]|0){c[c[q>>2]>>2]=c[(c[j>>2]|0)+80>>2];w=20}else w=21;break}case 4028:{bf((c[j>>2]|0)+44|0,0,84-((c[j>>2]|0)+44-(c[j>>2]|0))|0)|0;ab(c[o>>2]|0,4028,g)|0;Vb(c[n>>2]|0)|0;c[(c[j>>2]|0)+44>>2]=c[(c[j>>2]|0)+8>>2];c[(c[j>>2]|0)+60>>2]=(c[(c[j>>2]|0)+12>>2]|0)/400|0;w=20;break}default:{c[l>>2]=-5;w=20}}while(0);if((w|0)==20){c[h>>2]=c[l>>2];x=c[h>>2]|0;i=e;return x|0}else if((w|0)==21){c[h>>2]=-1;x=c[h>>2]|0;i=e;return x|0}return 0}function Gc(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+12|0;g=e+8|0;h=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;do if((c[h>>2]|0)>=1){c[j>>2]=(d[c[g>>2]>>0]|0)&3;if(!(c[j>>2]|0)){c[f>>2]=1;break}if((c[j>>2]|0)!=3){c[f>>2]=2;break}if((c[h>>2]|0)<2){c[f>>2]=-4;break}else{c[f>>2]=(d[(c[g>>2]|0)+1>>0]|0)&63;break}}else c[f>>2]=-1;while(0);i=e;return c[f>>2]|0}function Hc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;f=e+20|0;g=e+16|0;h=e+12|0;j=e+8|0;k=e+4|0;l=e;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[l>>2]=Gc(c[g>>2]|0,c[h>>2]|0)|0;h=c[l>>2]|0;if((c[l>>2]|0)<0){c[f>>2]=h;m=c[f>>2]|0;i=e;return m|0}c[k>>2]=_(h,yc(c[g>>2]|0,c[j>>2]|0)|0)|0;if(((c[k>>2]|0)*25|0)>((c[j>>2]|0)*3|0)){c[f>>2]=-4;m=c[f>>2]|0;i=e;return m|0}else{c[f>>2]=c[k>>2];m=c[f>>2]|0;i=e;return m|0}return 0}function Ic(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;i=i+16|0;e=b+12|0;f=b+8|0;g=b+4|0;h=b;c[f>>2]=a;c[h>>2]=(c[(c[f>>2]|0)+4>>2]|0)+(c[(c[f>>2]|0)+8>>2]|0);if((c[h>>2]|0)>255){c[e>>2]=0;j=c[e>>2]|0;i=b;return j|0}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[c[f>>2]>>2]|0)){k=9;break}if((d[(c[f>>2]|0)+12+(c[g>>2]|0)>>0]|0|0)>=(c[h>>2]|0)?(d[(c[f>>2]|0)+12+(c[g>>2]|0)>>0]|0|0)!=255:0){k=7;break}c[g>>2]=(c[g>>2]|0)+1}if((k|0)==7){c[e>>2]=0;j=c[e>>2]|0;i=b;return j|0}else if((k|0)==9){c[e>>2]=1;j=c[e>>2]|0;i=b;return j|0}return 0}function Jc(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;l=f;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=(c[k>>2]|0)<0?0:(c[k>>2]|0)+1|0;while(1){if((c[l>>2]|0)>=(c[c[h>>2]>>2]|0)){m=6;break}n=c[l>>2]|0;if((d[(c[h>>2]|0)+12+(c[l>>2]|0)>>0]|0|0)==(c[j>>2]<<1|0)){m=4;break}c[l>>2]=n+1}if((m|0)==4){c[g>>2]=n;o=c[g>>2]|0;i=f;return o|0}else if((m|0)==6){c[g>>2]=-1;o=c[g>>2]|0;i=f;return o|0}return 0}function Kc(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;l=f;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=(c[k>>2]|0)<0?0:(c[k>>2]|0)+1|0;while(1){if((c[l>>2]|0)>=(c[c[h>>2]>>2]|0)){m=6;break}n=c[l>>2]|0;if((d[(c[h>>2]|0)+12+(c[l>>2]|0)>>0]|0|0)==((c[j>>2]<<1)+1|0)){m=4;break}c[l>>2]=n+1}if((m|0)==4){c[g>>2]=n;o=c[g>>2]|0;i=f;return o|0}else if((m|0)==6){c[g>>2]=-1;o=c[g>>2]|0;i=f;return o|0}return 0}function Lc(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;l=f;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=(c[k>>2]|0)<0?0:(c[k>>2]|0)+1|0;while(1){if((c[l>>2]|0)>=(c[c[h>>2]>>2]|0)){m=6;break}n=c[l>>2]|0;if((d[(c[h>>2]|0)+12+(c[l>>2]|0)>>0]|0|0)==((c[j>>2]|0)+(c[(c[h>>2]|0)+8>>2]|0)|0)){m=4;break}c[l>>2]=n+1}if((m|0)==4){c[g>>2]=n;o=c[g>>2]|0;i=f;return o|0}else if((m|0)==6){c[g>>2]=-1;o=c[g>>2]|0;i=f;return o|0}return 0}function Mc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;j=d;c[f>>2]=a;c[g>>2]=b;if((c[f>>2]|0)>=1?!((c[g>>2]|0)<0?1:(c[g>>2]|0)>(c[f>>2]|0)):0){c[h>>2]=Ac(2)|0;c[j>>2]=Ac(1)|0;b=ae(268)|0;a=c[g>>2]|0;k=b+(_(a,ae(c[h>>2]|0)|0)|0)|0;h=(c[f>>2]|0)-(c[g>>2]|0)|0;c[e>>2]=k+(_(h,ae(c[j>>2]|0)|0)|0);l=c[e>>2]|0;i=d;return l|0}c[e>>2]=0;l=c[e>>2]|0;i=d;return l|0}function Nc(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;j=i;i=i+48|0;k=j+4|0;l=j+16|0;m=j+36|0;n=j;o=j+32|0;p=j+40|0;q=j+44|0;r=j+24|0;s=j+20|0;t=j+8|0;u=j+12|0;v=j+28|0;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;if((!((c[n>>2]|0)>255|(c[n>>2]|0)<1)?(c[p>>2]|0)<=(c[o>>2]|0):0)?!(((c[o>>2]|0)<1?1:((c[p>>2]|0)+(c[o>>2]|0)|0)>255)|(c[p>>2]|0)<0):0){c[c[l>>2]>>2]=c[n>>2];c[(c[l>>2]|0)+4>>2]=c[o>>2];c[(c[l>>2]|0)+8>>2]=c[p>>2];c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[c[l>>2]>>2]|0))break;a[(c[l>>2]|0)+12+(c[t>>2]|0)>>0]=a[(c[q>>2]|0)+(c[t>>2]|0)>>0]|0;c[t>>2]=(c[t>>2]|0)+1}if(!(Ic(c[l>>2]|0)|0)){c[k>>2]=-1;w=c[k>>2]|0;i=j;return w|0}q=c[l>>2]|0;c[v>>2]=q+(ae(268)|0);c[r>>2]=Ac(2)|0;c[s>>2]=Ac(1)|0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[(c[l>>2]|0)+8>>2]|0))break;c[u>>2]=Bc(c[v>>2]|0,c[m>>2]|0,2)|0;if(c[u>>2]|0){x=13;break}q=ae(c[r>>2]|0)|0;c[v>>2]=(c[v>>2]|0)+q;c[t>>2]=(c[t>>2]|0)+1}if((x|0)==13){c[k>>2]=c[u>>2];w=c[k>>2]|0;i=j;return w|0}while(1){if((c[t>>2]|0)>=(c[(c[l>>2]|0)+4>>2]|0)){x=19;break}c[u>>2]=Bc(c[v>>2]|0,c[m>>2]|0,1)|0;if(c[u>>2]|0){x=17;break}r=ae(c[s>>2]|0)|0;c[v>>2]=(c[v>>2]|0)+r;c[t>>2]=(c[t>>2]|0)+1}if((x|0)==17){c[k>>2]=c[u>>2];w=c[k>>2]|0;i=j;return w|0}else if((x|0)==19){c[k>>2]=0;w=c[k>>2]|0;i=j;return w|0}}c[k>>2]=-1;w=c[k>>2]|0;i=j;return w|0}function Oc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;i=i+48|0;j=h+28|0;k=h+16|0;l=h+4|0;m=h+8|0;n=h+32|0;o=h;p=h+12|0;q=h+24|0;r=h+20|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;if((!((c[l>>2]|0)>255|(c[l>>2]|0)<1)?(c[n>>2]|0)<=(c[m>>2]|0):0)?!(((c[m>>2]|0)<1?1:((c[n>>2]|0)+(c[m>>2]|0)|0)>255)|(c[n>>2]|0)<0):0){c[r>>2]=be(Mc(c[m>>2]|0,c[n>>2]|0)|0)|0;if(!(c[r>>2]|0)){if(c[p>>2]|0)c[c[p>>2]>>2]=-7;c[j>>2]=0;s=c[j>>2]|0;i=h;return s|0}c[q>>2]=Nc(c[r>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;if(c[p>>2]|0)c[c[p>>2]>>2]=c[q>>2];if(c[q>>2]|0){ce(c[r>>2]|0);c[r>>2]=0}c[j>>2]=c[r>>2];s=c[j>>2]|0;i=h;return s|0}if(c[p>>2]|0)c[c[p>>2]>>2]=-1;c[j>>2]=0;s=c[j>>2]|0;i=h;return s|0}function Pc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;j=h+20|0;k=h+16|0;l=h+12|0;m=h+8|0;n=h+4|0;o=h;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;g=de(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,1,c[n>>2]|0,c[o>>2]|0,0)|0;i=h;return g|0}function Qc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;e=i;i=i+128|0;f=e+8|0;g=e;h=e+24|0;j=e+16|0;k=e+44|0;l=e+36|0;m=e+32|0;n=e+80|0;o=e+52|0;p=e+40|0;q=e+48|0;r=e+28|0;s=e+56|0;t=e+60|0;u=e+64|0;v=e+72|0;w=e+68|0;x=e+76|0;y=e+96|0;z=e+100|0;A=e+104|0;B=e+108|0;C=e+112|0;D=e+116|0;E=e+120|0;F=e+124|0;c[l>>2]=a;c[m>>2]=b;c[r>>2]=0;c[n>>2]=d;c[o>>2]=Ac(2)|0;c[p>>2]=Ac(1)|0;d=c[l>>2]|0;c[q>>2]=d+(ae(268)|0);a:do switch(c[m>>2]|0){case 4031:{d=(c[n>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[n>>2]=d+4;c[v>>2]=b;if(c[v>>2]|0){c[c[v>>2]>>2]=0;c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[(c[l>>2]|0)+4>>2]|0)){G=37;break a}c[x>>2]=c[q>>2];if((c[u>>2]|0)<(c[(c[l>>2]|0)+8>>2]|0)){b=ae(c[o>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+b}else{b=ae(c[p>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+b}b=c[x>>2]|0;d=c[m>>2]|0;c[h>>2]=w;c[r>>2]=Fc(b,d,h)|0;if(c[r>>2]|0){G=37;break a}d=c[v>>2]|0;c[d>>2]=c[d>>2]^c[w>>2];c[u>>2]=(c[u>>2]|0)+1}}else G=38;break}case 4028:{c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[(c[l>>2]|0)+4>>2]|0)){G=37;break a}c[z>>2]=c[q>>2];if((c[y>>2]|0)<(c[(c[l>>2]|0)+8>>2]|0)){d=ae(c[o>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+d}else{d=ae(c[p>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+d}c[r>>2]=Fc(c[z>>2]|0,4028,g)|0;if(c[r>>2]|0){G=37;break a}c[y>>2]=(c[y>>2]|0)+1}break}case 5122:{d=(c[n>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[n>>2]=d+4;c[B>>2]=b;if(!((c[B>>2]|0)>=0?(c[B>>2]|0)<(c[(c[l>>2]|0)+4>>2]|0):0))c[r>>2]=-1;b=(c[n>>2]|0)+(4-1)&~(4-1);d=c[b>>2]|0;c[n>>2]=b+4;c[C>>2]=d;if(c[C>>2]|0){c[A>>2]=0;while(1){if((c[A>>2]|0)>=(c[B>>2]|0))break;if((c[A>>2]|0)<(c[(c[l>>2]|0)+8>>2]|0)){d=ae(c[o>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+d}else{d=ae(c[p>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+d}c[A>>2]=(c[A>>2]|0)+1}c[c[C>>2]>>2]=c[q>>2];G=37}else G=38;break}case 4034:{d=(c[n>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[n>>2]=d+4;c[E>>2]=b;c[D>>2]=0;while(1){if((c[D>>2]|0)>=(c[(c[l>>2]|0)+4>>2]|0)){G=37;break a}c[F>>2]=c[q>>2];if((c[D>>2]|0)<(c[(c[l>>2]|0)+8>>2]|0)){b=ae(c[o>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+b}else{b=ae(c[p>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+b}b=c[F>>2]|0;d=c[m>>2]|0;c[f>>2]=c[E>>2];c[r>>2]=Fc(b,d,f)|0;if(c[r>>2]|0){G=37;break a}c[D>>2]=(c[D>>2]|0)+1}break}case 4039:case 4045:case 4029:case 4009:{d=(c[n>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[n>>2]=d+4;c[t>>2]=b;c[s>>2]=c[q>>2];b=c[s>>2]|0;d=c[m>>2]|0;c[j>>2]=c[t>>2];c[r>>2]=Fc(b,d,j)|0;G=37;break}default:{c[r>>2]=-5;G=37}}while(0);if((G|0)==37){c[k>>2]=c[r>>2];H=c[k>>2]|0;i=e;return H|0}else if((G|0)==38){c[k>>2]=-1;H=c[k>>2]|0;i=e;return H|0}return 0}function Rc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)>>>0)/((c[f>>2]|0)>>>0)|0|0}function Sc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return (c[e>>2]|0)/(c[f>>2]|0)|0|0}function Tc(a,b,e,f,h,j,k,l,m,n,o){a=a|0;b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=+m;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0;p=i;i=i+112|0;q=p+48|0;r=p+44|0;s=p+84|0;t=p+92|0;u=p+40|0;v=p+16|0;w=p+20|0;x=p+24|0;y=p+28|0;z=p+72|0;A=p+80|0;B=p+88|0;C=p+96|0;D=p+100|0;E=p+52|0;F=p+56|0;G=p+60|0;H=p+64|0;I=p+8|0;J=p+12|0;K=p+68|0;L=p+32|0;M=p+36|0;N=p+76|0;P=p;Q=p+4|0;c[r>>2]=a;c[s>>2]=b;c[t>>2]=e;c[u>>2]=f;c[v>>2]=h;c[w>>2]=j;c[x>>2]=k;c[y>>2]=l;g[z>>2]=m;c[A>>2]=n;c[B>>2]=o;c[C>>2]=c[t>>2];c[D>>2]=c[t>>2];c[F>>2]=c[v>>2];c[G>>2]=0;c[H>>2]=0;c[J>>2]=0;c[K>>2]=((c[c[r>>2]>>2]|0)!=0^1)&1;c[M>>2]=c[c[r>>2]>>2];c[N>>2]=c[(c[r>>2]|0)+20>>2];c[I>>2]=(c[F>>2]|0)==1&1;c[D>>2]=Rc(c[D>>2]|0,c[v>>2]|0)|0;if((c[t>>2]|0)==1){c[q>>2]=Ce(c[r>>2]|0,c[s>>2]|0,0,c[u>>2]|0,c[y>>2]|0)|0;R=c[q>>2]|0;i=p;return R|0}if((c[N>>2]|0)>0)c[H>>2]=c[N>>2];do if((c[A>>2]|0)!=0&(c[w>>2]|0)!=0){if((c[H>>2]|0)==0?!((c[D>>2]&1|0)==0&(c[N>>2]|0)<0|(c[F>>2]|0)>1):0)break;df(c[A>>2]|0,c[w>>2]|0,(c[t>>2]<<2)+0|0)|0;c[w>>2]=c[A>>2]}while(0);c[L>>2]=0;while(1){if((c[L>>2]|0)>=(c[H>>2]|0))break;if(c[M>>2]|0)Ua(c[s>>2]|0,c[t>>2]>>c[L>>2],1<<c[L>>2]);if(c[w>>2]|0)Ua(c[w>>2]|0,c[t>>2]>>c[L>>2],1<<c[L>>2]);c[B>>2]=d[25096+(c[B>>2]&15)>>0]|0|(d[25096+(c[B>>2]>>4)>>0]|0)<<2;c[L>>2]=(c[L>>2]|0)+1}c[v>>2]=c[v>>2]>>c[H>>2];c[D>>2]=c[D>>2]<<c[H>>2];while(1){if(!((c[D>>2]&1|0)==0?(c[N>>2]|0)<0:0))break;if(c[M>>2]|0)Ua(c[s>>2]|0,c[D>>2]|0,c[v>>2]|0);if(c[w>>2]|0)Ua(c[w>>2]|0,c[D>>2]|0,c[v>>2]|0);c[B>>2]=c[B>>2]|c[B>>2]<<c[v>>2];c[v>>2]=c[v>>2]<<1;c[D>>2]=c[D>>2]>>1;c[G>>2]=(c[G>>2]|0)+1;c[N>>2]=(c[N>>2]|0)+1}c[F>>2]=c[v>>2];c[E>>2]=c[D>>2];if((c[F>>2]|0)>1){if(c[M>>2]|0)Le(c[s>>2]|0,c[D>>2]>>c[H>>2],c[F>>2]<<c[H>>2],c[I>>2]|0);if(c[w>>2]|0)Le(c[w>>2]|0,c[D>>2]>>c[H>>2],c[F>>2]<<c[H>>2],c[I>>2]|0)}c[J>>2]=Me(c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,+g[z>>2],c[B>>2]|0)|0;if(c[K>>2]|0){if((c[F>>2]|0)>1)Ne(c[s>>2]|0,c[D>>2]>>c[H>>2],c[F>>2]<<c[H>>2],c[I>>2]|0);c[D>>2]=c[E>>2];c[v>>2]=c[F>>2];c[L>>2]=0;while(1){if((c[L>>2]|0)>=(c[G>>2]|0))break;c[v>>2]=c[v>>2]>>1;c[D>>2]=c[D>>2]<<1;c[J>>2]=c[J>>2]|(c[J>>2]|0)>>>(c[v>>2]|0);Ua(c[s>>2]|0,c[D>>2]|0,c[v>>2]|0);c[L>>2]=(c[L>>2]|0)+1}c[L>>2]=0;while(1){if((c[L>>2]|0)>=(c[H>>2]|0))break;c[J>>2]=d[25112+(c[J>>2]|0)>>0];Ua(c[s>>2]|0,c[C>>2]>>c[L>>2],1<<c[L>>2]);c[L>>2]=(c[L>>2]|0)+1}c[v>>2]=c[v>>2]<<c[H>>2];a:do if(c[y>>2]|0){g[Q>>2]=+O(+(+(c[C>>2]|0)));c[P>>2]=0;while(1){if((c[P>>2]|0)>=(c[C>>2]|0))break a;g[(c[y>>2]|0)+(c[P>>2]<<2)>>2]=+g[Q>>2]*+g[(c[s>>2]|0)+(c[P>>2]<<2)>>2];c[P>>2]=(c[P>>2]|0)+1}}while(0);c[J>>2]=c[J>>2]&(1<<c[v>>2])-1}c[q>>2]=c[J>>2];R=c[q>>2]|0;i=p;return R|0}function Uc(a,b,d,e,f,h,j,k,l,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;o=i;i=i+176|0;p=o+156|0;q=o+132|0;r=o+8|0;s=o+56|0;t=o+64|0;u=o+16|0;v=o+20|0;w=o+24|0;x=o+28|0;y=o+32|0;z=o+36|0;A=o+40|0;B=o+44|0;C=o+128|0;D=o+136|0;E=o+144|0;F=o+152|0;G=o+160|0;H=o+68|0;I=o+72|0;J=o+76|0;K=o+80|0;L=o+84|0;M=o+88|0;N=o+96|0;O=o+12|0;P=o+4|0;Q=o;R=o+120|0;S=o+48|0;T=o+124|0;U=o+52|0;V=o+140|0;W=o+60|0;X=o+148|0;c[q>>2]=a;c[r>>2]=b;c[s>>2]=d;c[t>>2]=e;c[u>>2]=f;c[v>>2]=h;c[w>>2]=j;c[x>>2]=k;c[y>>2]=l;c[z>>2]=m;c[A>>2]=n;c[B>>2]=0;c[C>>2]=0;c[D>>2]=0;g[E>>2]=0.0;g[F>>2]=0.0;c[G>>2]=0;c[H>>2]=((c[c[q>>2]>>2]|0)!=0^1)&1;c[P>>2]=c[c[q>>2]>>2];c[Q>>2]=c[(c[q>>2]|0)+24>>2];if((c[t>>2]|0)==1){c[p>>2]=Ce(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[u>>2]|0,c[y>>2]|0)|0;Y=c[p>>2]|0;i=o;return Y|0}c[O>>2]=c[A>>2];De(c[q>>2]|0,N,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,u,c[v>>2]|0,c[v>>2]|0,c[x>>2]|0,1,A);c[D>>2]=c[N>>2];c[B>>2]=c[N+4>>2];c[C>>2]=c[N+8>>2];c[K>>2]=c[N+12>>2];c[L>>2]=c[N+16>>2];c[M>>2]=c[N+20>>2];g[E>>2]=+(c[B>>2]|0)*.000030517578125;g[F>>2]=+(c[C>>2]|0)*.000030517578125;do if((c[t>>2]|0)==2){c[S>>2]=0;c[I>>2]=c[u>>2];c[J>>2]=0;c[J>>2]=(c[L>>2]|0)!=0&(c[L>>2]|0)!=16384?8:0;c[I>>2]=(c[I>>2]|0)-(c[J>>2]|0);c[R>>2]=(c[L>>2]|0)>8192&1;C=(c[q>>2]|0)+28|0;c[C>>2]=(c[C>>2]|0)-((c[M>>2]|0)+(c[J>>2]|0));c[T>>2]=(c[R>>2]|0)!=0?c[s>>2]|0:c[r>>2]|0;c[U>>2]=(c[R>>2]|0)!=0?c[r>>2]|0:c[s>>2]|0;do if(c[J>>2]|0)if(c[P>>2]|0){c[S>>2]=+g[c[T>>2]>>2]*+g[(c[U>>2]|0)+4>>2]-+g[(c[T>>2]|0)+4>>2]*+g[c[U>>2]>>2]<0.0&1;pb(c[Q>>2]|0,c[S>>2]|0,1);break}else{c[S>>2]=lb(c[Q>>2]|0,1)|0;break}while(0);c[S>>2]=1-(c[S>>2]<<1);c[G>>2]=Tc(c[q>>2]|0,c[T>>2]|0,c[t>>2]|0,c[I>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,1.0,c[z>>2]|0,c[O>>2]|0)|0;g[c[U>>2]>>2]=+(0-(c[S>>2]|0)|0)*+g[(c[T>>2]|0)+4>>2];g[(c[U>>2]|0)+4>>2]=+(c[S>>2]|0)*+g[c[T>>2]>>2];if(c[H>>2]|0){g[c[r>>2]>>2]=+g[E>>2]*+g[c[r>>2]>>2];g[(c[r>>2]|0)+4>>2]=+g[E>>2]*+g[(c[r>>2]|0)+4>>2];g[c[s>>2]>>2]=+g[F>>2]*+g[c[s>>2]>>2];g[(c[s>>2]|0)+4>>2]=+g[F>>2]*+g[(c[s>>2]|0)+4>>2];g[V>>2]=+g[c[r>>2]>>2];g[c[r>>2]>>2]=+g[V>>2]-+g[c[s>>2]>>2];g[c[s>>2]>>2]=+g[V>>2]+ +g[c[s>>2]>>2];g[V>>2]=+g[(c[r>>2]|0)+4>>2];g[(c[r>>2]|0)+4>>2]=+g[V>>2]-+g[(c[s>>2]|0)+4>>2];g[(c[s>>2]|0)+4>>2]=+g[V>>2]+ +g[(c[s>>2]|0)+4>>2]}}else{C=c[u>>2]|0;if((c[u>>2]|0)<(((c[u>>2]|0)-(c[K>>2]|0)|0)/2|0|0))Z=C;else Z=(C-(c[K>>2]|0)|0)/2|0;if(0<=(Z|0)){C=c[u>>2]|0;if((c[u>>2]|0)<(((c[u>>2]|0)-(c[K>>2]|0)|0)/2|0|0))_=C;else _=(C-(c[K>>2]|0)|0)/2|0}else _=0;c[I>>2]=_;c[J>>2]=(c[u>>2]|0)-(c[I>>2]|0);C=(c[q>>2]|0)+28|0;c[C>>2]=(c[C>>2]|0)-(c[M>>2]|0);c[W>>2]=c[(c[q>>2]|0)+28>>2];C=c[q>>2]|0;if((c[I>>2]|0)>=(c[J>>2]|0)){c[G>>2]=Tc(C,c[r>>2]|0,c[t>>2]|0,c[I>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,1.0,c[z>>2]|0,c[A>>2]|0)|0;c[W>>2]=(c[I>>2]|0)-((c[W>>2]|0)-(c[(c[q>>2]|0)+28>>2]|0));if((c[W>>2]|0)>24&(c[L>>2]|0)!=0)c[J>>2]=(c[J>>2]|0)+((c[W>>2]|0)-24);B=Tc(c[q>>2]|0,c[s>>2]|0,c[t>>2]|0,c[J>>2]|0,c[v>>2]|0,0,c[x>>2]|0,0,+g[F>>2],0,c[A>>2]>>c[v>>2])|0;c[G>>2]=c[G>>2]|B;break}else{c[G>>2]=Tc(C,c[s>>2]|0,c[t>>2]|0,c[J>>2]|0,c[v>>2]|0,0,c[x>>2]|0,0,+g[F>>2],0,c[A>>2]>>c[v>>2])|0;c[W>>2]=(c[J>>2]|0)-((c[W>>2]|0)-(c[(c[q>>2]|0)+28>>2]|0));if((c[W>>2]|0)>24&(c[L>>2]|0)!=16384)c[I>>2]=(c[I>>2]|0)+((c[W>>2]|0)-24);C=Tc(c[q>>2]|0,c[r>>2]|0,c[t>>2]|0,c[I>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,1.0,c[z>>2]|0,c[A>>2]|0)|0;c[G>>2]=c[G>>2]|C;break}}while(0);a:do if(c[H>>2]|0){if((c[t>>2]|0)!=2)Ee(c[r>>2]|0,c[s>>2]|0,+g[E>>2],c[t>>2]|0);if(c[D>>2]|0){c[X>>2]=0;while(1){if((c[X>>2]|0)>=(c[t>>2]|0))break a;g[(c[s>>2]|0)+(c[X>>2]<<2)>>2]=-+g[(c[s>>2]|0)+(c[X>>2]<<2)>>2];c[X>>2]=(c[X>>2]|0)+1}}}while(0);c[p>>2]=c[G>>2];Y=c[p>>2]|0;i=o;return Y|0}function Vc(a,b,d,e,f,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;k=i;i=i+64|0;l=k+44|0;m=k+36|0;n=k+20|0;o=k+16|0;p=k+32|0;q=k+40|0;r=k+48|0;s=k+8|0;t=k+4|0;u=k+24|0;v=k+12|0;w=k+28|0;x=k;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;g[p>>2]=f;g[q>>2]=h;g[r>>2]=j;g[w>>2]=+g[(c[m>>2]|0)+(0-(c[n>>2]|0)-2<<2)>>2];g[v>>2]=+g[(c[m>>2]|0)+(0-(c[n>>2]|0)-1<<2)>>2];g[u>>2]=+g[(c[m>>2]|0)+(0-(c[n>>2]|0)<<2)>>2];g[t>>2]=+g[(c[m>>2]|0)+(0-(c[n>>2]|0)+1<<2)>>2];c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[o>>2]|0))break;g[s>>2]=+g[(c[m>>2]|0)+((c[x>>2]|0)-(c[n>>2]|0)+2<<2)>>2];g[(c[l>>2]|0)+(c[x>>2]<<2)>>2]=+g[(c[m>>2]|0)+(c[x>>2]<<2)>>2]+ +g[p>>2]*+g[u>>2]+ +g[q>>2]*(+g[t>>2]+ +g[v>>2])+ +g[r>>2]*(+g[s>>2]+ +g[w>>2]);g[w>>2]=+g[v>>2];g[v>>2]=+g[u>>2];g[u>>2]=+g[t>>2];g[t>>2]=+g[s>>2];c[x>>2]=(c[x>>2]|0)+1}i=k;return}function Wc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;b=88+((_(c[f>>2]|0,2048+(c[(c[e>>2]|0)+4>>2]|0)|0)|0)-1<<2)|0;c[g>>2]=b+((c[f>>2]|0)*24<<2)+(c[(c[e>>2]|0)+8>>2]<<3<<2);i=d;return c[g>>2]|0}function Xc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e+16|0;g=e+12|0;h=e+8|0;j=e+4|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;if((c[j>>2]|0)<0|(c[j>>2]|0)>2){c[f>>2]=-1;k=c[f>>2]|0;i=e;return k|0}if(!(c[g>>2]|0)){c[f>>2]=-7;k=c[f>>2]|0;i=e;return k|0}else{d=c[g>>2]|0;bf(d|0,0,Wc(c[h>>2]|0,c[j>>2]|0)|0)|0;c[c[g>>2]>>2]=c[h>>2];c[(c[g>>2]|0)+4>>2]=c[(c[h>>2]|0)+4>>2];h=c[j>>2]|0;c[(c[g>>2]|0)+8>>2]=h;c[(c[g>>2]|0)+12>>2]=h;c[(c[g>>2]|0)+16>>2]=1;c[(c[g>>2]|0)+20>>2]=0;c[(c[g>>2]|0)+24>>2]=c[(c[c[g>>2]>>2]|0)+12>>2];c[(c[g>>2]|0)+28>>2]=1;h=Be()|0;c[(c[g>>2]|0)+32>>2]=h;c[(c[g>>2]|0)+48>>2]=0;ab(c[g>>2]|0,4028,e)|0;c[f>>2]=0;k=c[f>>2]|0;i=e;return k|0}return 0}function Yc(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0;f=i;i=i+4624|0;h=f+212|0;j=f+204|0;k=f+4568|0;l=f+12|0;m=f+4584|0;n=f+4600|0;o=f+24|0;p=f+32|0;q=f+40|0;r=f+44|0;s=f+48|0;t=f+52|0;u=f+56|0;v=f+60|0;w=f+64|0;x=f+68|0;y=f+72|0;z=f+76|0;A=f+80|0;B=f+84|0;C=f+88|0;D=f+92|0;E=f+4572|0;F=f+4580|0;G=f+4588|0;H=f+4596|0;I=f+4604|0;J=f+4608|0;K=f+216|0;L=f+220|0;M=f+224|0;N=f+228|0;P=f+232|0;Q=f+240|0;R=f+4336|0;S=f+4340|0;T=f+4344|0;U=f+4348|0;V=f+4352|0;W=f+4356|0;X=f+4360|0;Y=f+4364|0;Z=f+4368|0;$=f+4472|0;aa=f+16|0;ba=f+4|0;ca=f+8|0;da=f;ea=f+96|0;fa=f+104|0;ga=f+4576|0;ha=f+200|0;ia=f+4592|0;ja=f+208|0;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[n>>2]=c[(c[h>>2]|0)+8>>2];c[v>>2]=c[c[h>>2]>>2];c[w>>2]=c[(c[v>>2]|0)+8>>2];c[x>>2]=c[(c[v>>2]|0)+4>>2];c[B>>2]=c[(c[v>>2]|0)+32>>2];c[l>>2]=0;do{e=(c[h>>2]|0)+84+((_(c[l>>2]|0,2048+(c[x>>2]|0)|0)|0)<<2)|0;c[o+(c[l>>2]<<2)>>2]=e;c[p+(c[l>>2]<<2)>>2]=(c[o+(c[l>>2]<<2)>>2]|0)+8192+(0-(c[j>>2]|0)<<2);e=(c[l>>2]|0)+1|0;c[l>>2]=e}while((e|0)<(c[n>>2]|0));c[q>>2]=(c[h>>2]|0)+84+((_(2048+(c[x>>2]|0)|0,c[n>>2]|0)|0)<<2);c[r>>2]=(c[q>>2]|0)+((c[n>>2]|0)*24<<2);c[s>>2]=(c[r>>2]|0)+(c[w>>2]<<1<<2);c[t>>2]=(c[s>>2]|0)+(c[w>>2]<<1<<2);c[u>>2]=(c[t>>2]|0)+(c[w>>2]<<1<<2);c[z>>2]=c[(c[h>>2]|0)+48>>2];c[y>>2]=c[(c[h>>2]|0)+20>>2];c[A>>2]=((c[z>>2]|0)>=5?1:(c[y>>2]|0)!=0)&1;if(c[A>>2]|0){c[E>>2]=c[(c[h>>2]|0)+24>>2];if((c[E>>2]|0)<(c[(c[v>>2]|0)+12>>2]|0))la=c[E>>2]|0;else la=c[(c[v>>2]|0)+12>>2]|0;do if((c[y>>2]|0)<=(la|0))if((c[E>>2]|0)<(c[(c[v>>2]|0)+12>>2]|0)){ma=c[E>>2]|0;break}else{ma=c[(c[v>>2]|0)+12>>2]|0;break}else ma=c[y>>2]|0;while(0);c[F>>2]=ma;ma=_(c[n>>2]|0,c[j>>2]|0)|0;c[G>>2]=ua()|0;la=i;i=i+((1*(ma<<2)|0)+15&-16)|0;if((c[z>>2]|0)>=5)c[D>>2]=c[u>>2];else{g[H>>2]=(c[z>>2]|0)==0?1.5:.5;c[l>>2]=0;do{c[m>>2]=c[y>>2];while(1){if((c[m>>2]|0)>=(c[E>>2]|0))break;u=_(c[l>>2]|0,c[w>>2]|0)|0;ma=(c[r>>2]|0)+(u+(c[m>>2]|0)<<2)|0;g[ma>>2]=+g[ma>>2]-+g[H>>2];c[m>>2]=(c[m>>2]|0)+1}ma=(c[l>>2]|0)+1|0;c[l>>2]=ma}while((ma|0)<(c[n>>2]|0));c[D>>2]=c[r>>2]}c[C>>2]=c[(c[h>>2]|0)+36>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[n>>2]|0))break;c[m>>2]=c[y>>2];while(1){if((c[m>>2]|0)>=(c[F>>2]|0))break;r=_(c[j>>2]|0,c[l>>2]|0)|0;c[J>>2]=r+(b[(c[B>>2]|0)+(c[m>>2]<<1)>>1]<<c[k>>2]);c[K>>2]=(b[(c[B>>2]|0)+((c[m>>2]|0)+1<<1)>>1]|0)-(b[(c[B>>2]|0)+(c[m>>2]<<1)>>1]|0)<<c[k>>2];c[I>>2]=0;while(1){if((c[I>>2]|0)>=(c[K>>2]|0))break;c[C>>2]=Ra(c[C>>2]|0)|0;g[la+((c[J>>2]|0)+(c[I>>2]|0)<<2)>>2]=+(c[C>>2]>>20|0);c[I>>2]=(c[I>>2]|0)+1}Ib(la+(c[J>>2]<<2)|0,c[K>>2]|0,1.0);c[m>>2]=(c[m>>2]|0)+1}c[l>>2]=(c[l>>2]|0)+1}c[(c[h>>2]|0)+36>>2]=c[C>>2];c[l>>2]=0;do{ff(c[o+(c[l>>2]<<2)>>2]|0,(c[o+(c[l>>2]<<2)>>2]|0)+(c[j>>2]<<2)|0,(2048-(c[j>>2]|0)+(c[x>>2]>>1)<<2)+0|0)|0;C=(c[l>>2]|0)+1|0;c[l>>2]=C}while((C|0)<(c[n>>2]|0));ad(c[v>>2]|0,la,p,c[D>>2]|0,c[y>>2]|0,c[F>>2]|0,c[n>>2]|0,c[n>>2]|0,0,c[k>>2]|0,c[(c[h>>2]|0)+16>>2]|0,0);ka(c[G>>2]|0);na=c[z>>2]|0;oa=na+1|0;pa=c[h>>2]|0;qa=pa+48|0;c[qa>>2]=oa;i=f;return}g[M>>2]=1.0;if(!(c[z>>2]|0)){G=Ae(o,c[n>>2]|0,c[(c[h>>2]|0)+32>>2]|0)|0;c[N>>2]=G;c[(c[h>>2]|0)+44>>2]=G}else{c[N>>2]=c[(c[h>>2]|0)+44>>2];g[M>>2]=.800000011920929}G=c[x>>2]|0;c[P>>2]=ua()|0;k=i;i=i+((1*(G<<2)|0)+15&-16)|0;c[L>>2]=c[(c[v>>2]|0)+60>>2];c[l>>2]=0;do{g[T>>2]=0.0;c[U>>2]=c[o+(c[l>>2]<<2)>>2];c[m>>2]=0;while(1){if((c[m>>2]|0)>=1024)break;g[Q+(c[m>>2]<<2)>>2]=+g[(c[U>>2]|0)+(1024+(c[m>>2]|0)<<2)>>2];c[m>>2]=(c[m>>2]|0)+1}if(!(c[z>>2]|0)){Bb(Q,Z,c[L>>2]|0,c[x>>2]|0,24,1024,c[(c[h>>2]|0)+32>>2]|0)|0;g[Z>>2]=+g[Z>>2]*1.000100016593933;c[m>>2]=1;while(1){if((c[m>>2]|0)>24)break;v=Z+(c[m>>2]<<2)|0;g[v>>2]=+g[v>>2]-+g[Z+(c[m>>2]<<2)>>2]*6.400000711437315e-05*+(c[m>>2]|0)*+(c[m>>2]|0);c[m>>2]=(c[m>>2]|0)+1}yb((c[q>>2]|0)+((c[l>>2]|0)*24<<2)|0,Z,24)}c[X>>2]=(c[N>>2]<<1|0)<1024?c[N>>2]<<1:1024;c[m>>2]=0;while(1){if((c[m>>2]|0)>=24)break;g[$+(c[m>>2]<<2)>>2]=+g[(c[U>>2]|0)+(2048-(c[X>>2]|0)-1-(c[m>>2]|0)<<2)>>2];c[m>>2]=(c[m>>2]|0)+1}zb(Q+4096+(0-(c[X>>2]|0)<<2)|0,(c[q>>2]|0)+((c[l>>2]|0)*24<<2)|0,Q+4096+(0-(c[X>>2]|0)<<2)|0,c[X>>2]|0,24,$);g[aa>>2]=1.0;g[ba>>2]=1.0;c[ca>>2]=c[X>>2]>>1;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[ca>>2]|0))break;g[da>>2]=+g[Q+(1024-(c[ca>>2]|0)+(c[m>>2]|0)<<2)>>2];g[aa>>2]=+g[aa>>2]+ +g[da>>2]*+g[da>>2];g[da>>2]=+g[Q+(1024-(c[ca>>2]<<1)+(c[m>>2]|0)<<2)>>2];g[ba>>2]=+g[ba>>2]+ +g[da>>2]*+g[da>>2];c[m>>2]=(c[m>>2]|0)+1}g[aa>>2]=+g[aa>>2]<+g[ba>>2]?+g[aa>>2]:+g[ba>>2];g[R>>2]=+O(+(+g[aa>>2]/+g[ba>>2]));ff(c[U>>2]|0,(c[U>>2]|0)+(c[j>>2]<<2)|0,(2048-(c[j>>2]|0)<<2)+0|0)|0;c[V>>2]=1024-(c[N>>2]|0);c[W>>2]=(c[j>>2]|0)+(c[x>>2]|0);g[S>>2]=+g[M>>2]*+g[R>>2];c[Y>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[W>>2]|0))break;if((c[Y>>2]|0)>=(c[N>>2]|0)){c[Y>>2]=(c[Y>>2]|0)-(c[N>>2]|0);g[S>>2]=+g[S>>2]*+g[R>>2]}g[(c[U>>2]|0)+(2048-(c[j>>2]|0)+(c[m>>2]|0)<<2)>>2]=+g[S>>2]*+g[Q+((c[V>>2]|0)+(c[Y>>2]|0)<<2)>>2];g[ea>>2]=+g[(c[U>>2]|0)+(1024-(c[j>>2]|0)+(c[V>>2]|0)+(c[Y>>2]|0)<<2)>>2];g[T>>2]=+g[T>>2]+ +g[ea>>2]*+g[ea>>2];c[m>>2]=(c[m>>2]|0)+1;c[Y>>2]=(c[Y>>2]|0)+1}c[m>>2]=0;while(1){if((c[m>>2]|0)>=24)break;g[fa+(c[m>>2]<<2)>>2]=+g[(c[U>>2]|0)+(2048-(c[j>>2]|0)-1-(c[m>>2]|0)<<2)>>2];c[m>>2]=(c[m>>2]|0)+1}Ab((c[U>>2]|0)+8192+(0-(c[j>>2]|0)<<2)|0,(c[q>>2]|0)+((c[l>>2]|0)*24<<2)|0,(c[U>>2]|0)+8192+(0-(c[j>>2]|0)<<2)|0,c[W>>2]|0,24,fa);g[ga>>2]=0.0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[W>>2]|0))break;g[ha>>2]=+g[(c[U>>2]|0)+(2048-(c[j>>2]|0)+(c[m>>2]|0)<<2)>>2];g[ga>>2]=+g[ga>>2]+ +g[ha>>2]*+g[ha>>2];c[m>>2]=(c[m>>2]|0)+1}a:do if(+g[T>>2]>+g[ga>>2]*.20000000298023224){if(+g[T>>2]<+g[ga>>2]){g[ia>>2]=+O(+((+g[T>>2]+1.0)/(+g[ga>>2]+1.0)));c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[x>>2]|0))break;g[ja>>2]=1.0-+g[(c[L>>2]|0)+(c[m>>2]<<2)>>2]*(1.0-+g[ia>>2]);g[(c[U>>2]|0)+(2048-(c[j>>2]|0)+(c[m>>2]|0)<<2)>>2]=+g[ja>>2]*+g[(c[U>>2]|0)+(2048-(c[j>>2]|0)+(c[m>>2]|0)<<2)>>2];c[m>>2]=(c[m>>2]|0)+1}c[m>>2]=c[x>>2];while(1){if((c[m>>2]|0)>=(c[W>>2]|0))break a;g[(c[U>>2]|0)+(2048-(c[j>>2]|0)+(c[m>>2]|0)<<2)>>2]=+g[ia>>2]*+g[(c[U>>2]|0)+(2048-(c[j>>2]|0)+(c[m>>2]|0)<<2)>>2];c[m>>2]=(c[m>>2]|0)+1}}}else{c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[W>>2]|0))break a;g[(c[U>>2]|0)+(2048-(c[j>>2]|0)+(c[m>>2]|0)<<2)>>2]=0.0;c[m>>2]=(c[m>>2]|0)+1}}while(0);Xa(k,(c[U>>2]|0)+8192|0,c[(c[h>>2]|0)+52>>2]|0,c[(c[h>>2]|0)+52>>2]|0,c[x>>2]|0,-+g[(c[h>>2]|0)+60>>2],-+g[(c[h>>2]|0)+60>>2],c[(c[h>>2]|0)+68>>2]|0,c[(c[h>>2]|0)+68>>2]|0,0,0);c[m>>2]=0;while(1){if((c[m>>2]|0)>=((c[x>>2]|0)/2|0|0))break;g[(c[U>>2]|0)+(2048+(c[m>>2]|0)<<2)>>2]=+g[(c[L>>2]|0)+(c[m>>2]<<2)>>2]*+g[k+((c[x>>2]|0)-1-(c[m>>2]|0)<<2)>>2]+ +g[(c[L>>2]|0)+((c[x>>2]|0)-(c[m>>2]|0)-1<<2)>>2]*+g[k+(c[m>>2]<<2)>>2];c[m>>2]=(c[m>>2]|0)+1}v=(c[l>>2]|0)+1|0;c[l>>2]=v}while((v|0)<(c[n>>2]|0));ka(c[P>>2]|0);na=c[z>>2]|0;oa=na+1|0;pa=c[h>>2]|0;qa=pa+48|0;c[qa>>2]=oa;i=f;return}function Zc(a,b,d,e,f,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0;l=i;i=i+80|0;m=l+68|0;n=l+44|0;o=l+24|0;p=l+32|0;q=l+12|0;r=l+16|0;s=l+48|0;t=l+64|0;u=l+72|0;v=l+36|0;w=l+8|0;x=l;y=l+4|0;z=l+40|0;A=l+20|0;B=l+52|0;C=l+28|0;D=l+60|0;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=h;c[s>>2]=j;c[l+56>>2]=k;c[v>>2]=0;k=c[o>>2]|0;c[x>>2]=ua()|0;j=i;i=i+((1*(k<<2)|0)+15&-16)|0;g[w>>2]=+g[c[r>>2]>>2];c[u>>2]=(c[o>>2]|0)/(c[q>>2]|0)|0;c[t>>2]=0;do{g[B>>2]=+g[(c[s>>2]|0)+(c[t>>2]<<2)>>2];c[z>>2]=c[(c[m>>2]|0)+(c[t>>2]<<2)>>2];c[A>>2]=(c[n>>2]|0)+(c[t>>2]<<2);r=(c[q>>2]|0)>1;c[y>>2]=0;a:do if(r){while(1){if((c[y>>2]|0)>=(c[o>>2]|0))break;g[C>>2]=+g[(c[z>>2]|0)+(c[y>>2]<<2)>>2]+ +g[B>>2]+1.0000000031710769e-30;g[B>>2]=+g[w>>2]*+g[C>>2];g[j+(c[y>>2]<<2)>>2]=+g[C>>2];c[y>>2]=(c[y>>2]|0)+1}c[v>>2]=1}else while(1){if((c[y>>2]|0)>=(c[o>>2]|0))break a;g[D>>2]=+g[(c[z>>2]|0)+(c[y>>2]<<2)>>2]+ +g[B>>2]+1.0000000031710769e-30;g[B>>2]=+g[w>>2]*+g[D>>2];k=_(c[y>>2]|0,c[p>>2]|0)|0;g[(c[A>>2]|0)+(k<<2)>>2]=+g[D>>2]*.000030517578125;c[y>>2]=(c[y>>2]|0)+1}while(0);g[(c[s>>2]|0)+(c[t>>2]<<2)>>2]=+g[B>>2];b:do if(c[v>>2]|0){c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[u>>2]|0))break b;E=+g[j+((_(c[y>>2]|0,c[q>>2]|0)|0)<<2)>>2]*.000030517578125;r=_(c[y>>2]|0,c[p>>2]|0)|0;g[(c[A>>2]|0)+(r<<2)>>2]=E;c[y>>2]=(c[y>>2]|0)+1}}while(0);r=(c[t>>2]|0)+1|0;c[t>>2]=r}while((r|0)<(c[p>>2]|0));ka(c[x>>2]|0);i=l;return}function _c(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[(c[d>>2]|0)+20>>2]|0)-(32-(aa(c[(c[d>>2]|0)+28>>2]|0)|0))|0;i=b;return a|0}function $c(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;j=i;i=i+64|0;k=j+24|0;l=j+20|0;m=j+44|0;n=j+36|0;o=j+32|0;p=j+40|0;q=j+48|0;r=j+52|0;s=j+8|0;t=j+4|0;u=j+28|0;v=j+12|0;w=j;x=j+16|0;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[w>>2]=c[(c[p>>2]|0)+4>>2]<<3;c[x>>2]=_c(c[p>>2]|0)|0;c[v>>2]=(c[m>>2]|0)!=0?2:4;if((c[o>>2]|0)>0)y=((c[x>>2]|0)+(c[v>>2]|0)+1|0)>>>0<=(c[w>>2]|0)>>>0;else y=0;c[t>>2]=y&1;c[w>>2]=(c[w>>2]|0)-(c[t>>2]|0);c[r>>2]=0;c[u>>2]=0;c[q>>2]=c[k>>2];while(1){if((c[q>>2]|0)>=(c[l>>2]|0))break;if(((c[x>>2]|0)+(c[v>>2]|0)|0)>>>0<=(c[w>>2]|0)>>>0){y=ib(c[p>>2]|0,c[v>>2]|0)|0;c[r>>2]=c[r>>2]^y;c[x>>2]=_c(c[p>>2]|0)|0;c[u>>2]=c[u>>2]|c[r>>2]}c[(c[n>>2]|0)+(c[q>>2]<<2)>>2]=c[r>>2];c[v>>2]=(c[m>>2]|0)!=0?4:5;c[q>>2]=(c[q>>2]|0)+1}c[s>>2]=0;if((c[t>>2]|0)!=0?(a[8+(c[o>>2]<<3)+((c[m>>2]<<2)+0+(c[u>>2]|0))>>0]|0)!=(a[8+(c[o>>2]<<3)+((c[m>>2]<<2)+2+(c[u>>2]|0))>>0]|0):0)c[s>>2]=ib(c[p>>2]|0,1)|0;c[q>>2]=c[k>>2];while(1){if((c[q>>2]|0)>=(c[l>>2]|0))break;c[(c[n>>2]|0)+(c[q>>2]<<2)>>2]=a[8+(c[o>>2]<<3)+((c[m>>2]<<2)+(c[s>>2]<<1)+(c[(c[n>>2]|0)+(c[q>>2]<<2)>>2]|0))>>0];c[q>>2]=(c[q>>2]|0)+1}i=j;return}function ad(a,b,d,e,f,h,j,k,l,m,n,o){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;p=i;i=i+112|0;q=p+92|0;r=p+84|0;s=p+40|0;t=p+44|0;u=p;v=p+16|0;w=p+20|0;x=p+24|0;y=p+28|0;z=p+72|0;A=p+80|0;B=p+88|0;C=p+96|0;D=p+48|0;E=p+52|0;F=p+56|0;G=p+60|0;H=p+8|0;I=p+64|0;J=p+12|0;K=p+32|0;L=p+68|0;M=p+36|0;N=p+76|0;O=p+4|0;c[q>>2]=a;c[r>>2]=b;c[s>>2]=d;c[t>>2]=e;c[u>>2]=f;c[v>>2]=h;c[w>>2]=j;c[x>>2]=k;c[y>>2]=l;c[z>>2]=m;c[A>>2]=n;c[B>>2]=o;c[L>>2]=c[(c[q>>2]|0)+4>>2];c[K>>2]=c[(c[q>>2]|0)+8>>2];c[H>>2]=c[(c[q>>2]|0)+44>>2]<<c[z>>2];o=c[H>>2]|0;c[M>>2]=ua()|0;n=i;i=i+((1*(o<<2)|0)+15&-16)|0;c[E>>2]=1<<c[z>>2];if(c[y>>2]|0){c[G>>2]=c[E>>2];c[I>>2]=c[(c[q>>2]|0)+44>>2];c[J>>2]=c[(c[q>>2]|0)+36>>2]}else{c[G>>2]=1;c[I>>2]=c[(c[q>>2]|0)+44>>2]<<c[z>>2];c[J>>2]=(c[(c[q>>2]|0)+36>>2]|0)-(c[z>>2]|0)}if((c[x>>2]|0)==2&(c[w>>2]|0)==1){Sa(c[q>>2]|0,c[r>>2]|0,n,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[E>>2]|0,c[A>>2]|0,c[B>>2]|0);c[N>>2]=(c[(c[s>>2]|0)+4>>2]|0)+(((c[L>>2]|0)/2|0)<<2);df(c[N>>2]|0,n|0,(c[H>>2]<<2)+0|0)|0;c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[G>>2]|0))break;z=(c[c[s>>2]>>2]|0)+((_(c[I>>2]|0,c[F>>2]|0)|0)<<2)|0;tb((c[q>>2]|0)+64|0,(c[N>>2]|0)+(c[F>>2]<<2)|0,z,c[(c[q>>2]|0)+60>>2]|0,c[L>>2]|0,c[J>>2]|0,c[G>>2]|0);c[F>>2]=(c[F>>2]|0)+1}c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[G>>2]|0))break;N=(c[(c[s>>2]|0)+4>>2]|0)+((_(c[I>>2]|0,c[F>>2]|0)|0)<<2)|0;tb((c[q>>2]|0)+64|0,n+(c[F>>2]<<2)|0,N,c[(c[q>>2]|0)+60>>2]|0,c[L>>2]|0,c[J>>2]|0,c[G>>2]|0);c[F>>2]=(c[F>>2]|0)+1}P=c[M>>2]|0;ka(P|0);i=p;return}if(!((c[x>>2]|0)==1&(c[w>>2]|0)==2)){c[C>>2]=0;do{w=(c[r>>2]|0)+((_(c[C>>2]|0,c[H>>2]|0)|0)<<2)|0;N=(c[t>>2]|0)+((_(c[C>>2]|0,c[K>>2]|0)|0)<<2)|0;Sa(c[q>>2]|0,w,n,N,c[u>>2]|0,c[v>>2]|0,c[E>>2]|0,c[A>>2]|0,c[B>>2]|0);c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[G>>2]|0))break;N=(c[(c[s>>2]|0)+(c[C>>2]<<2)>>2]|0)+((_(c[I>>2]|0,c[F>>2]|0)|0)<<2)|0;tb((c[q>>2]|0)+64|0,n+(c[F>>2]<<2)|0,N,c[(c[q>>2]|0)+60>>2]|0,c[L>>2]|0,c[J>>2]|0,c[G>>2]|0);c[F>>2]=(c[F>>2]|0)+1}N=(c[C>>2]|0)+1|0;c[C>>2]=N}while((N|0)<(c[x>>2]|0));P=c[M>>2]|0;ka(P|0);i=p;return}c[O>>2]=(c[c[s>>2]>>2]|0)+(((c[L>>2]|0)/2|0)<<2);Sa(c[q>>2]|0,c[r>>2]|0,n,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[E>>2]|0,c[A>>2]|0,c[B>>2]|0);Sa(c[q>>2]|0,(c[r>>2]|0)+(c[H>>2]<<2)|0,c[O>>2]|0,(c[t>>2]|0)+(c[K>>2]<<2)|0,c[u>>2]|0,c[v>>2]|0,c[E>>2]|0,c[A>>2]|0,c[B>>2]|0);c[D>>2]=0;while(1){if((c[D>>2]|0)>=(c[H>>2]|0))break;g[n+(c[D>>2]<<2)>>2]=(+g[n+(c[D>>2]<<2)>>2]+ +g[(c[O>>2]|0)+(c[D>>2]<<2)>>2])*.5;c[D>>2]=(c[D>>2]|0)+1}c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[G>>2]|0))break;D=(c[c[s>>2]>>2]|0)+((_(c[I>>2]|0,c[F>>2]|0)|0)<<2)|0;tb((c[q>>2]|0)+64|0,n+(c[F>>2]<<2)|0,D,c[(c[q>>2]|0)+60>>2]|0,c[L>>2]|0,c[J>>2]|0,c[G>>2]|0);c[F>>2]=(c[F>>2]|0)+1}P=c[M>>2]|0;ka(P|0);i=p;return}function bd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;i=b;return c[(c[d>>2]|0)+44>>2]|0}function cd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;i=i+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;j=d;c[e>>2]=a;c[f>>2]=b;c[h>>2]=(c[e>>2]|0)-1;c[g>>2]=(c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0)<0&1;c[j>>2]=N(c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0)|0;do{c[h>>2]=(c[h>>2]|0)+-1;if(((c[e>>2]|0)-(c[h>>2]|0)|0)>(c[j>>2]|0))k=(c[e>>2]|0)-(c[h>>2]|0)|0;else k=c[j>>2]|0;if(((c[e>>2]|0)-(c[h>>2]|0)|0)<(c[j>>2]|0))l=(c[e>>2]|0)-(c[h>>2]|0)|0;else l=c[j>>2]|0;c[g>>2]=(c[g>>2]|0)+(c[(c[2448+(l<<2)>>2]|0)+(k<<2)>>2]|0);b=N(c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+b;if((c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0)<0){if(((c[e>>2]|0)-(c[h>>2]|0)|0)>((c[j>>2]|0)+1|0))m=(c[e>>2]|0)-(c[h>>2]|0)|0;else m=(c[j>>2]|0)+1|0;if(((c[e>>2]|0)-(c[h>>2]|0)|0)<((c[j>>2]|0)+1|0))n=(c[e>>2]|0)-(c[h>>2]|0)|0;else n=(c[j>>2]|0)+1|0;c[g>>2]=(c[g>>2]|0)+(c[(c[2448+(n<<2)>>2]|0)+(m<<2)>>2]|0)}}while((c[h>>2]|0)>0);i=d;return c[g>>2]|0}function dd(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0,J=0.0,K=0,L=0.0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0,_=0,$=0.0,aa=0,ba=0.0,ca=0.0,da=0.0,ea=0.0;h=i;i=i+48|0;j=h;k=h+16|0;l=h+4|0;m=h+8|0;n=h+32|0;o=h+36|0;p=h+12|0;q=h+40|0;r=h+20|0;s=h+28|0;t=h+24|0;c[j>>2]=a;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;g[r>>2]=0.0;while(1){u=c[k>>2]|0;if((c[j>>2]|0)<=2)break;f=c[j>>2]|0;do if((u|0)>=(c[j>>2]|0)){c[t>>2]=c[2448+(f<<2)>>2];c[n>>2]=c[(c[t>>2]|0)+((c[k>>2]|0)+1<<2)>>2];c[o>>2]=0-((c[l>>2]|0)>>>0>=(c[n>>2]|0)>>>0&1);c[l>>2]=(c[l>>2]|0)-(c[n>>2]&c[o>>2]);c[p>>2]=c[k>>2];c[s>>2]=c[(c[t>>2]|0)+(c[j>>2]<<2)>>2];a:do if((c[s>>2]|0)>>>0>(c[l>>2]|0)>>>0){c[k>>2]=c[j>>2];do{e=c[j>>2]|0;d=(c[k>>2]|0)+-1|0;c[k>>2]=d;c[n>>2]=c[(c[2448+(d<<2)>>2]|0)+(e<<2)>>2]}while((c[n>>2]|0)>>>0>(c[l>>2]|0)>>>0)}else{c[n>>2]=c[(c[t>>2]|0)+(c[k>>2]<<2)>>2];while(1){if((c[n>>2]|0)>>>0<=(c[l>>2]|0)>>>0)break a;c[k>>2]=(c[k>>2]|0)+-1;c[n>>2]=c[(c[t>>2]|0)+(c[k>>2]<<2)>>2]}}while(0);c[l>>2]=(c[l>>2]|0)-(c[n>>2]|0);b[q>>1]=(c[p>>2]|0)-(c[k>>2]|0)+(c[o>>2]|0)^c[o>>2];e=b[q>>1]|0;d=c[m>>2]|0;c[m>>2]=d+4;c[d>>2]=e;g[r>>2]=+g[r>>2]+ +(b[q>>1]|0)*+(b[q>>1]|0)}else{c[n>>2]=c[(c[2448+(c[k>>2]<<2)>>2]|0)+(f<<2)>>2];c[s>>2]=c[(c[2448+((c[k>>2]|0)+1<<2)>>2]|0)+(c[j>>2]<<2)>>2];if((c[n>>2]|0)>>>0<=(c[l>>2]|0)>>>0?(c[l>>2]|0)>>>0<(c[s>>2]|0)>>>0:0){c[l>>2]=(c[l>>2]|0)-(c[n>>2]|0);e=c[m>>2]|0;c[m>>2]=e+4;c[e>>2]=0;break}c[o>>2]=0-((c[l>>2]|0)>>>0>=(c[s>>2]|0)>>>0&1);c[l>>2]=(c[l>>2]|0)-(c[s>>2]&c[o>>2]);c[p>>2]=c[k>>2];do{e=c[j>>2]|0;d=(c[k>>2]|0)+-1|0;c[k>>2]=d;c[n>>2]=c[(c[2448+(d<<2)>>2]|0)+(e<<2)>>2]}while((c[n>>2]|0)>>>0>(c[l>>2]|0)>>>0);c[l>>2]=(c[l>>2]|0)-(c[n>>2]|0);b[q>>1]=(c[p>>2]|0)-(c[k>>2]|0)+(c[o>>2]|0)^c[o>>2];e=b[q>>1]|0;d=c[m>>2]|0;c[m>>2]=d+4;c[d>>2]=e;g[r>>2]=+g[r>>2]+ +(b[q>>1]|0)*+(b[q>>1]|0)}while(0);c[j>>2]=(c[j>>2]|0)+-1}c[n>>2]=(u<<1)+1;c[o>>2]=0-((c[l>>2]|0)>>>0>=(c[n>>2]|0)>>>0&1);c[l>>2]=(c[l>>2]|0)-(c[n>>2]&c[o>>2]);c[p>>2]=c[k>>2];c[k>>2]=((c[l>>2]|0)+1|0)>>>1;if(!(c[k>>2]|0)){v=c[p>>2]|0;w=c[k>>2]|0;x=v-w|0;y=c[o>>2]|0;z=x+y|0;A=c[o>>2]|0;B=z^A;C=B&65535;b[q>>1]=C;D=b[q>>1]|0;E=D<<16>>16;F=c[m>>2]|0;G=F+4|0;c[m>>2]=G;c[F>>2]=E;H=+g[r>>2];I=b[q>>1]|0;J=+(I<<16>>16);K=b[q>>1]|0;L=+(K<<16>>16);M=J*L;N=H+M;g[r>>2]=N;O=c[l>>2]|0;P=0-O|0;c[o>>2]=P;Q=c[k>>2]|0;R=c[o>>2]|0;S=Q+R|0;T=c[o>>2]|0;U=S^T;V=U&65535;b[q>>1]=V;W=b[q>>1]|0;X=W<<16>>16;Y=c[m>>2]|0;c[Y>>2]=X;Z=+g[r>>2];_=b[q>>1]|0;$=+(_<<16>>16);aa=b[q>>1]|0;ba=+(aa<<16>>16);ca=$*ba;da=Z+ca;g[r>>2]=da;ea=+g[r>>2];i=h;return +ea}c[l>>2]=(c[l>>2]|0)-((c[k>>2]<<1)-1);v=c[p>>2]|0;w=c[k>>2]|0;x=v-w|0;y=c[o>>2]|0;z=x+y|0;A=c[o>>2]|0;B=z^A;C=B&65535;b[q>>1]=C;D=b[q>>1]|0;E=D<<16>>16;F=c[m>>2]|0;G=F+4|0;c[m>>2]=G;c[F>>2]=E;H=+g[r>>2];I=b[q>>1]|0;J=+(I<<16>>16);K=b[q>>1]|0;L=+(K<<16>>16);M=J*L;N=H+M;g[r>>2]=N;O=c[l>>2]|0;P=0-O|0;c[o>>2]=P;Q=c[k>>2]|0;R=c[o>>2]|0;S=Q+R|0;T=c[o>>2]|0;U=S^T;V=U&65535;b[q>>1]=V;W=b[q>>1]|0;X=W<<16>>16;Y=c[m>>2]|0;c[Y>>2]=X;Z=+g[r>>2];_=b[q>>1]|0;$=+(_<<16>>16);aa=b[q>>1]|0;ba=+(aa<<16>>16);ca=$*ba;da=Z+ca;g[r>>2]=da;ea=+g[r>>2];i=h;return +ea}function ed(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;i=i+16|0;e=b;c[e>>2]=a;if((c[(c[e>>2]|0)+24>>2]|0)>>>0>=(c[(c[e>>2]|0)+4>>2]|0)>>>0){f=0;i=b;return f|0}a=(c[e>>2]|0)+24|0;g=c[a>>2]|0;c[a>>2]=g+1;f=d[(c[c[e>>2]>>2]|0)+g>>0]|0;i=b;return f|0}function fd(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;while(1){if((c[(c[d>>2]|0)+28>>2]|0)>>>0>8388608)break;a=(c[d>>2]|0)+20|0;c[a>>2]=(c[a>>2]|0)+8;a=(c[d>>2]|0)+28|0;c[a>>2]=c[a>>2]<<8;c[e>>2]=c[(c[d>>2]|0)+40>>2];a=ed(c[d>>2]|0)|0;c[(c[d>>2]|0)+40>>2]=a;c[e>>2]=(c[e>>2]<<8|c[(c[d>>2]|0)+40>>2])>>1;c[(c[d>>2]|0)+32>>2]=(c[(c[d>>2]|0)+32>>2]<<8)+(255&~c[e>>2])&2147483647}i=b;return}function gd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)>>>0)/((c[f>>2]|0)>>>0)|0|0}function hd(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;b=i;i=i+16|0;e=b;c[e>>2]=a;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=(c[(c[e>>2]|0)+4>>2]|0)>>>0){f=0;i=b;return f|0}a=c[(c[e>>2]|0)+4>>2]|0;g=(c[e>>2]|0)+8|0;h=(c[g>>2]|0)+1|0;c[g>>2]=h;f=d[(c[c[e>>2]>>2]|0)+(a-h)>>0]|0;i=b;return f|0}function id(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)>>>0)/((c[f>>2]|0)>>>0)|0|0}function jd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;while(1){if((c[(c[d>>2]|0)+28>>2]|0)>>>0>8388608)break;ld(c[d>>2]|0,(c[(c[d>>2]|0)+32>>2]|0)>>>23);c[(c[d>>2]|0)+32>>2]=c[(c[d>>2]|0)+32>>2]<<8&2147483647;a=(c[d>>2]|0)+28|0;c[a>>2]=c[a>>2]<<8;a=(c[d>>2]|0)+20|0;c[a>>2]=(c[a>>2]|0)+8}i=b;return}function kd(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=b;c[h>>2]=d;if(((c[(c[g>>2]|0)+24>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)|0)>>>0>=(c[(c[g>>2]|0)+4>>2]|0)>>>0){c[f>>2]=-1;j=c[f>>2]|0;i=e;return j|0}else{d=c[h>>2]&255;h=c[(c[g>>2]|0)+4>>2]|0;b=(c[g>>2]|0)+8|0;k=(c[b>>2]|0)+1|0;c[b>>2]=k;a[(c[c[g>>2]>>2]|0)+(h-k)>>0]=d;c[f>>2]=0;j=c[f>>2]|0;i=e;return j|0}return 0}function ld(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)==255){b=(c[e>>2]|0)+36|0;c[b>>2]=(c[b>>2]|0)+1;i=d;return}c[g>>2]=c[f>>2]>>8;if((c[(c[e>>2]|0)+40>>2]|0)>=0){b=ze(c[e>>2]|0,(c[(c[e>>2]|0)+40>>2]|0)+(c[g>>2]|0)|0)|0;a=(c[e>>2]|0)+44|0;c[a>>2]=c[a>>2]|b}if((c[(c[e>>2]|0)+36>>2]|0)>>>0>0){c[h>>2]=255+(c[g>>2]|0)&255;do{g=ze(c[e>>2]|0,c[h>>2]|0)|0;b=(c[e>>2]|0)+44|0;c[b>>2]=c[b>>2]|g;g=(c[e>>2]|0)+36|0;b=(c[g>>2]|0)+-1|0;c[g>>2]=b}while(b>>>0>0)}c[(c[e>>2]|0)+40>>2]=c[f>>2]&255;i=d;return}function md(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+48|0;f=e+8|0;h=e+28|0;j=e+32|0;k=e+4|0;l=e;m=e+16|0;c[f>>2]=a;c[e+24>>2]=b;c[h>>2]=d;g[l>>2]=.7071067690849304;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[h>>2]|0))break;c[j>>2]=(c[f>>2]|0)+32;d=c[j>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];g[c[j>>2]>>2]=+g[c[f>>2]>>2]-+g[m>>2];g[(c[j>>2]|0)+4>>2]=+g[(c[f>>2]|0)+4>>2]-+g[m+4>>2];d=c[f>>2]|0;g[d>>2]=+g[d>>2]+ +g[m>>2];d=(c[f>>2]|0)+4|0;g[d>>2]=+g[d>>2]+ +g[m+4>>2];g[m>>2]=(+g[(c[j>>2]|0)+8>>2]+ +g[(c[j>>2]|0)+8+4>>2])*+g[l>>2];g[m+4>>2]=(+g[(c[j>>2]|0)+8+4>>2]-+g[(c[j>>2]|0)+8>>2])*+g[l>>2];g[(c[j>>2]|0)+8>>2]=+g[(c[f>>2]|0)+8>>2]-+g[m>>2];g[(c[j>>2]|0)+8+4>>2]=+g[(c[f>>2]|0)+8+4>>2]-+g[m+4>>2];d=(c[f>>2]|0)+8|0;g[d>>2]=+g[d>>2]+ +g[m>>2];d=(c[f>>2]|0)+8+4|0;g[d>>2]=+g[d>>2]+ +g[m+4>>2];g[m>>2]=+g[(c[j>>2]|0)+16+4>>2];g[m+4>>2]=-+g[(c[j>>2]|0)+16>>2];g[(c[j>>2]|0)+16>>2]=+g[(c[f>>2]|0)+16>>2]-+g[m>>2];g[(c[j>>2]|0)+16+4>>2]=+g[(c[f>>2]|0)+16+4>>2]-+g[m+4>>2];d=(c[f>>2]|0)+16|0;g[d>>2]=+g[d>>2]+ +g[m>>2];d=(c[f>>2]|0)+16+4|0;g[d>>2]=+g[d>>2]+ +g[m+4>>2];g[m>>2]=(+g[(c[j>>2]|0)+24+4>>2]-+g[(c[j>>2]|0)+24>>2])*+g[l>>2];g[m+4>>2]=(-+g[(c[j>>2]|0)+24+4>>2]-+g[(c[j>>2]|0)+24>>2])*+g[l>>2];g[(c[j>>2]|0)+24>>2]=+g[(c[f>>2]|0)+24>>2]-+g[m>>2];g[(c[j>>2]|0)+24+4>>2]=+g[(c[f>>2]|0)+24+4>>2]-+g[m+4>>2];d=(c[f>>2]|0)+24|0;g[d>>2]=+g[d>>2]+ +g[m>>2];d=(c[f>>2]|0)+24+4|0;g[d>>2]=+g[d>>2]+ +g[m+4>>2];c[f>>2]=(c[f>>2]|0)+64;c[k>>2]=(c[k>>2]|0)+1}i=e;return}function nd(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;j=i;i=i+128|0;k=j+112|0;l=j+88|0;m=j+64|0;n=j+60|0;o=j+48|0;p=j+84|0;q=j+92|0;r=j+104|0;s=j+120|0;t=j+68|0;u=j;v=j+76|0;w=j+72|0;x=j+52|0;y=j+80|0;z=j+56|0;A=j+96|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=h;if((c[n>>2]|0)==1){c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[o>>2]|0))break;g[r>>2]=+g[c[k>>2]>>2]-+g[(c[k>>2]|0)+16>>2];g[r+4>>2]=+g[(c[k>>2]|0)+4>>2]-+g[(c[k>>2]|0)+16+4>>2];h=c[k>>2]|0;g[h>>2]=+g[h>>2]+ +g[(c[k>>2]|0)+16>>2];h=(c[k>>2]|0)+4|0;g[h>>2]=+g[h>>2]+ +g[(c[k>>2]|0)+16+4>>2];g[s>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[(c[k>>2]|0)+24>>2];g[s+4>>2]=+g[(c[k>>2]|0)+8+4>>2]+ +g[(c[k>>2]|0)+24+4>>2];g[(c[k>>2]|0)+16>>2]=+g[c[k>>2]>>2]-+g[s>>2];g[(c[k>>2]|0)+16+4>>2]=+g[(c[k>>2]|0)+4>>2]-+g[s+4>>2];h=c[k>>2]|0;g[h>>2]=+g[h>>2]+ +g[s>>2];h=(c[k>>2]|0)+4|0;g[h>>2]=+g[h>>2]+ +g[s+4>>2];g[s>>2]=+g[(c[k>>2]|0)+8>>2]-+g[(c[k>>2]|0)+24>>2];g[s+4>>2]=+g[(c[k>>2]|0)+8+4>>2]-+g[(c[k>>2]|0)+24+4>>2];g[(c[k>>2]|0)+8>>2]=+g[r>>2]+ +g[s+4>>2];g[(c[k>>2]|0)+8+4>>2]=+g[r+4>>2]-+g[s>>2];g[(c[k>>2]|0)+24>>2]=+g[r>>2]-+g[s+4>>2];g[(c[k>>2]|0)+24+4>>2]=+g[r+4>>2]+ +g[s>>2];c[k>>2]=(c[k>>2]|0)+32;c[q>>2]=(c[q>>2]|0)+1}i=j;return}c[y>>2]=c[n>>2]<<1;c[z>>2]=(c[n>>2]|0)*3;c[A>>2]=c[k>>2];c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[o>>2]|0))break;c[k>>2]=(c[A>>2]|0)+((_(c[q>>2]|0,c[p>>2]|0)|0)<<3);s=c[(c[m>>2]|0)+48>>2]|0;c[v>>2]=s;c[w>>2]=s;c[x>>2]=s;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[n>>2]|0))break;g[u>>2]=+g[(c[k>>2]|0)+(c[n>>2]<<3)>>2]*+g[c[v>>2]>>2]-+g[(c[k>>2]|0)+(c[n>>2]<<3)+4>>2]*+g[(c[v>>2]|0)+4>>2];g[u+4>>2]=+g[(c[k>>2]|0)+(c[n>>2]<<3)>>2]*+g[(c[v>>2]|0)+4>>2]+ +g[(c[k>>2]|0)+(c[n>>2]<<3)+4>>2]*+g[c[v>>2]>>2];g[u+8>>2]=+g[(c[k>>2]|0)+(c[y>>2]<<3)>>2]*+g[c[w>>2]>>2]-+g[(c[k>>2]|0)+(c[y>>2]<<3)+4>>2]*+g[(c[w>>2]|0)+4>>2];g[u+8+4>>2]=+g[(c[k>>2]|0)+(c[y>>2]<<3)>>2]*+g[(c[w>>2]|0)+4>>2]+ +g[(c[k>>2]|0)+(c[y>>2]<<3)+4>>2]*+g[c[w>>2]>>2];g[u+16>>2]=+g[(c[k>>2]|0)+(c[z>>2]<<3)>>2]*+g[c[x>>2]>>2]-+g[(c[k>>2]|0)+(c[z>>2]<<3)+4>>2]*+g[(c[x>>2]|0)+4>>2];g[u+16+4>>2]=+g[(c[k>>2]|0)+(c[z>>2]<<3)>>2]*+g[(c[x>>2]|0)+4>>2]+ +g[(c[k>>2]|0)+(c[z>>2]<<3)+4>>2]*+g[c[x>>2]>>2];g[u+40>>2]=+g[c[k>>2]>>2]-+g[u+8>>2];g[u+40+4>>2]=+g[(c[k>>2]|0)+4>>2]-+g[u+8+4>>2];s=c[k>>2]|0;g[s>>2]=+g[s>>2]+ +g[u+8>>2];s=(c[k>>2]|0)+4|0;g[s>>2]=+g[s>>2]+ +g[u+8+4>>2];g[u+24>>2]=+g[u>>2]+ +g[u+16>>2];g[u+24+4>>2]=+g[u+4>>2]+ +g[u+16+4>>2];g[u+32>>2]=+g[u>>2]-+g[u+16>>2];g[u+32+4>>2]=+g[u+4>>2]-+g[u+16+4>>2];g[(c[k>>2]|0)+(c[y>>2]<<3)>>2]=+g[c[k>>2]>>2]-+g[u+24>>2];g[(c[k>>2]|0)+(c[y>>2]<<3)+4>>2]=+g[(c[k>>2]|0)+4>>2]-+g[u+24+4>>2];c[v>>2]=(c[v>>2]|0)+(c[l>>2]<<3);c[w>>2]=(c[w>>2]|0)+(c[l>>2]<<1<<3);c[x>>2]=(c[x>>2]|0)+((c[l>>2]|0)*3<<3);s=c[k>>2]|0;g[s>>2]=+g[s>>2]+ +g[u+24>>2];s=(c[k>>2]|0)+4|0;g[s>>2]=+g[s>>2]+ +g[u+24+4>>2];g[(c[k>>2]|0)+(c[n>>2]<<3)>>2]=+g[u+40>>2]+ +g[u+32+4>>2];g[(c[k>>2]|0)+(c[n>>2]<<3)+4>>2]=+g[u+40+4>>2]-+g[u+32>>2];g[(c[k>>2]|0)+(c[z>>2]<<3)>>2]=+g[u+40>>2]-+g[u+32+4>>2];g[(c[k>>2]|0)+(c[z>>2]<<3)+4>>2]=+g[u+40+4>>2]+ +g[u+32>>2];c[k>>2]=(c[k>>2]|0)+8;c[t>>2]=(c[t>>2]|0)+1}c[q>>2]=(c[q>>2]|0)+1}i=j;return}function od(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;j=i;i=i+112|0;k=j+56|0;l=j+52|0;m=j+88|0;n=j+80|0;o=j+76|0;p=j+84|0;q=j+92|0;r=j+96|0;s=j+60|0;t=j;u=j+72|0;v=j+8|0;w=j+64|0;x=j+48|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=h;c[s>>2]=c[n>>2]<<1;c[x>>2]=c[k>>2];h=_(c[l>>2]|0,c[n>>2]|0)|0;f=(c[(c[m>>2]|0)+48>>2]|0)+(h<<3)|0;c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[o>>2]|0))break;c[k>>2]=(c[x>>2]|0)+((_(c[q>>2]|0,c[p>>2]|0)|0)<<3);f=c[(c[m>>2]|0)+48>>2]|0;c[u>>2]=f;c[t>>2]=f;c[r>>2]=c[n>>2];do{g[v+8>>2]=+g[(c[k>>2]|0)+(c[n>>2]<<3)>>2]*+g[c[t>>2]>>2]-+g[(c[k>>2]|0)+(c[n>>2]<<3)+4>>2]*+g[(c[t>>2]|0)+4>>2];g[v+8+4>>2]=+g[(c[k>>2]|0)+(c[n>>2]<<3)>>2]*+g[(c[t>>2]|0)+4>>2]+ +g[(c[k>>2]|0)+(c[n>>2]<<3)+4>>2]*+g[c[t>>2]>>2];g[v+16>>2]=+g[(c[k>>2]|0)+(c[s>>2]<<3)>>2]*+g[c[u>>2]>>2]-+g[(c[k>>2]|0)+(c[s>>2]<<3)+4>>2]*+g[(c[u>>2]|0)+4>>2];g[v+16+4>>2]=+g[(c[k>>2]|0)+(c[s>>2]<<3)>>2]*+g[(c[u>>2]|0)+4>>2]+ +g[(c[k>>2]|0)+(c[s>>2]<<3)+4>>2]*+g[c[u>>2]>>2];g[v+24>>2]=+g[v+8>>2]+ +g[v+16>>2];g[v+24+4>>2]=+g[v+8+4>>2]+ +g[v+16+4>>2];g[v>>2]=+g[v+8>>2]-+g[v+16>>2];g[v+4>>2]=+g[v+8+4>>2]-+g[v+16+4>>2];c[t>>2]=(c[t>>2]|0)+(c[l>>2]<<3);c[u>>2]=(c[u>>2]|0)+(c[l>>2]<<1<<3);g[(c[k>>2]|0)+(c[n>>2]<<3)>>2]=+g[c[k>>2]>>2]-+g[v+24>>2]*.5;g[(c[k>>2]|0)+(c[n>>2]<<3)+4>>2]=+g[(c[k>>2]|0)+4>>2]-+g[v+24+4>>2]*.5;g[v>>2]=+g[v>>2]*+g[w+4>>2];f=v+4|0;g[f>>2]=+g[f>>2]*+g[w+4>>2];f=c[k>>2]|0;g[f>>2]=+g[f>>2]+ +g[v+24>>2];f=(c[k>>2]|0)+4|0;g[f>>2]=+g[f>>2]+ +g[v+24+4>>2];g[(c[k>>2]|0)+(c[s>>2]<<3)>>2]=+g[(c[k>>2]|0)+(c[n>>2]<<3)>>2]+ +g[v+4>>2];g[(c[k>>2]|0)+(c[s>>2]<<3)+4>>2]=+g[(c[k>>2]|0)+(c[n>>2]<<3)+4>>2]-+g[v>>2];f=(c[k>>2]|0)+(c[n>>2]<<3)|0;g[f>>2]=+g[f>>2]-+g[v+4>>2];f=(c[k>>2]|0)+(c[n>>2]<<3)+4|0;g[f>>2]=+g[f>>2]+ +g[v>>2];c[k>>2]=(c[k>>2]|0)+8;f=(c[r>>2]|0)+-1|0;c[r>>2]=f}while((f|0)!=0);c[q>>2]=(c[q>>2]|0)+1}i=j;return}function pd(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;j=i;i=i+192|0;k=j+28|0;l=j+32|0;m=j+156|0;n=j+180|0;o=j+4|0;p=j+152|0;q=j+160|0;r=j+176|0;s=j+184|0;t=j+188|0;u=j+36|0;v=j;w=j+40|0;x=j+48|0;y=j+8|0;z=j+16|0;A=j+168|0;B=j+24|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=h;c[B>>2]=c[k>>2];h=_(c[l>>2]|0,c[n>>2]|0)|0;f=(c[(c[m>>2]|0)+48>>2]|0)+(h<<3)|0;c[z>>2]=c[f>>2];c[z+4>>2]=c[f+4>>2];f=_(c[l>>2]<<1,c[n>>2]|0)|0;h=(c[(c[m>>2]|0)+48>>2]|0)+(f<<3)|0;c[A>>2]=c[h>>2];c[A+4>>2]=c[h+4>>2];c[y>>2]=c[(c[m>>2]|0)+48>>2];c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[o>>2]|0))break;c[k>>2]=(c[B>>2]|0)+((_(c[v>>2]|0,c[p>>2]|0)|0)<<3);c[q>>2]=c[k>>2];c[r>>2]=(c[q>>2]|0)+(c[n>>2]<<3);c[s>>2]=(c[q>>2]|0)+(c[n>>2]<<1<<3);c[t>>2]=(c[q>>2]|0)+((c[n>>2]|0)*3<<3);c[u>>2]=(c[q>>2]|0)+(c[n>>2]<<2<<3);c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[n>>2]|0))break;m=c[q>>2]|0;c[x>>2]=c[m>>2];c[x+4>>2]=c[m+4>>2];m=_(c[w>>2]|0,c[l>>2]|0)|0;h=_(c[w>>2]|0,c[l>>2]|0)|0;g[x+8>>2]=+g[c[r>>2]>>2]*+g[(c[y>>2]|0)+(m<<3)>>2]-+g[(c[r>>2]|0)+4>>2]*+g[(c[y>>2]|0)+(h<<3)+4>>2];h=_(c[w>>2]|0,c[l>>2]|0)|0;m=_(c[w>>2]|0,c[l>>2]|0)|0;g[x+8+4>>2]=+g[c[r>>2]>>2]*+g[(c[y>>2]|0)+(h<<3)+4>>2]+ +g[(c[r>>2]|0)+4>>2]*+g[(c[y>>2]|0)+(m<<3)>>2];m=_(c[w>>2]<<1,c[l>>2]|0)|0;h=_(c[w>>2]<<1,c[l>>2]|0)|0;g[x+16>>2]=+g[c[s>>2]>>2]*+g[(c[y>>2]|0)+(m<<3)>>2]-+g[(c[s>>2]|0)+4>>2]*+g[(c[y>>2]|0)+(h<<3)+4>>2];h=_(c[w>>2]<<1,c[l>>2]|0)|0;m=_(c[w>>2]<<1,c[l>>2]|0)|0;g[x+16+4>>2]=+g[c[s>>2]>>2]*+g[(c[y>>2]|0)+(h<<3)+4>>2]+ +g[(c[s>>2]|0)+4>>2]*+g[(c[y>>2]|0)+(m<<3)>>2];m=_((c[w>>2]|0)*3|0,c[l>>2]|0)|0;h=_((c[w>>2]|0)*3|0,c[l>>2]|0)|0;g[x+24>>2]=+g[c[t>>2]>>2]*+g[(c[y>>2]|0)+(m<<3)>>2]-+g[(c[t>>2]|0)+4>>2]*+g[(c[y>>2]|0)+(h<<3)+4>>2];h=_((c[w>>2]|0)*3|0,c[l>>2]|0)|0;m=_((c[w>>2]|0)*3|0,c[l>>2]|0)|0;g[x+24+4>>2]=+g[c[t>>2]>>2]*+g[(c[y>>2]|0)+(h<<3)+4>>2]+ +g[(c[t>>2]|0)+4>>2]*+g[(c[y>>2]|0)+(m<<3)>>2];m=_(c[w>>2]<<2,c[l>>2]|0)|0;h=_(c[w>>2]<<2,c[l>>2]|0)|0;g[x+32>>2]=+g[c[u>>2]>>2]*+g[(c[y>>2]|0)+(m<<3)>>2]-+g[(c[u>>2]|0)+4>>2]*+g[(c[y>>2]|0)+(h<<3)+4>>2];h=_(c[w>>2]<<2,c[l>>2]|0)|0;m=_(c[w>>2]<<2,c[l>>2]|0)|0;g[x+32+4>>2]=+g[c[u>>2]>>2]*+g[(c[y>>2]|0)+(h<<3)+4>>2]+ +g[(c[u>>2]|0)+4>>2]*+g[(c[y>>2]|0)+(m<<3)>>2];g[x+56>>2]=+g[x+8>>2]+ +g[x+32>>2];g[x+56+4>>2]=+g[x+8+4>>2]+ +g[x+32+4>>2];g[x+80>>2]=+g[x+8>>2]-+g[x+32>>2];g[x+80+4>>2]=+g[x+8+4>>2]-+g[x+32+4>>2];g[x+64>>2]=+g[x+16>>2]+ +g[x+24>>2];g[x+64+4>>2]=+g[x+16+4>>2]+ +g[x+24+4>>2];g[x+72>>2]=+g[x+16>>2]-+g[x+24>>2];g[x+72+4>>2]=+g[x+16+4>>2]-+g[x+24+4>>2];m=c[q>>2]|0;g[m>>2]=+g[m>>2]+(+g[x+56>>2]+ +g[x+64>>2]);m=(c[q>>2]|0)+4|0;g[m>>2]=+g[m>>2]+(+g[x+56+4>>2]+ +g[x+64+4>>2]);g[x+40>>2]=+g[x>>2]+ +g[x+56>>2]*+g[z>>2]+ +g[x+64>>2]*+g[A>>2];g[x+40+4>>2]=+g[x+4>>2]+ +g[x+56+4>>2]*+g[z>>2]+ +g[x+64+4>>2]*+g[A>>2];g[x+48>>2]=+g[x+80+4>>2]*+g[z+4>>2]+ +g[x+72+4>>2]*+g[A+4>>2];g[x+48+4>>2]=-(+g[x+80>>2]*+g[z+4>>2])-+g[x+72>>2]*+g[A+4>>2];g[c[r>>2]>>2]=+g[x+40>>2]-+g[x+48>>2];g[(c[r>>2]|0)+4>>2]=+g[x+40+4>>2]-+g[x+48+4>>2];g[c[u>>2]>>2]=+g[x+40>>2]+ +g[x+48>>2];g[(c[u>>2]|0)+4>>2]=+g[x+40+4>>2]+ +g[x+48+4>>2];g[x+88>>2]=+g[x>>2]+ +g[x+56>>2]*+g[A>>2]+ +g[x+64>>2]*+g[z>>2];g[x+88+4>>2]=+g[x+4>>2]+ +g[x+56+4>>2]*+g[A>>2]+ +g[x+64+4>>2]*+g[z>>2];g[x+96>>2]=-(+g[x+80+4>>2]*+g[A+4>>2])+ +g[x+72+4>>2]*+g[z+4>>2];g[x+96+4>>2]=+g[x+80>>2]*+g[A+4>>2]-+g[x+72>>2]*+g[z+4>>2];g[c[s>>2]>>2]=+g[x+88>>2]+ +g[x+96>>2];g[(c[s>>2]|0)+4>>2]=+g[x+88+4>>2]+ +g[x+96+4>>2];g[c[t>>2]>>2]=+g[x+88>>2]-+g[x+96>>2];g[(c[t>>2]|0)+4>>2]=+g[x+88+4>>2]-+g[x+96+4>>2];c[q>>2]=(c[q>>2]|0)+8;c[r>>2]=(c[r>>2]|0)+8;c[s>>2]=(c[s>>2]|0)+8;c[t>>2]=(c[t>>2]|0)+8;c[u>>2]=(c[u>>2]|0)+8;c[w>>2]=(c[w>>2]|0)+1}c[v>>2]=(c[v>>2]|0)+1}i=j;return}function qd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=32736-(c[e>>2]|0);e=(_(c[g>>2]|0,16384-(c[f>>2]|0)|0)|0)>>>15;i=d;return e|0}function rd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;h=i;i=i+80|0;j=h+60|0;k=h+44|0;l=h+20|0;m=h+16|0;n=h+4|0;o=h+40|0;p=h+48|0;q=h+56|0;r=h+64|0;s=h+24|0;t=h;u=h+32|0;v=h+28|0;w=h+8|0;x=h+36|0;y=h+12|0;z=h+52|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;g[p>>2]=+g[c[k>>2]>>2];g[q>>2]=+g[(c[k>>2]|0)+4>>2];g[r>>2]=+g[(c[k>>2]|0)+8>>2];g[s>>2]=+g[(c[k>>2]|0)+12>>2];g[t>>2]=+g[(c[k>>2]|0)+16>>2];g[u>>2]=+g[c[n>>2]>>2];g[v>>2]=+g[(c[n>>2]|0)+4>>2];g[w>>2]=+g[(c[n>>2]|0)+8>>2];g[x>>2]=+g[(c[n>>2]|0)+12>>2];g[y>>2]=+g[(c[n>>2]|0)+16>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[m>>2]|0))break;g[z>>2]=+g[(c[j>>2]|0)+(c[o>>2]<<2)>>2];g[z>>2]=+g[z>>2]+ +g[p>>2]*+g[u>>2];g[z>>2]=+g[z>>2]+ +g[q>>2]*+g[v>>2];g[z>>2]=+g[z>>2]+ +g[r>>2]*+g[w>>2];g[z>>2]=+g[z>>2]+ +g[s>>2]*+g[x>>2];g[z>>2]=+g[z>>2]+ +g[t>>2]*+g[y>>2];g[y>>2]=+g[x>>2];g[x>>2]=+g[w>>2];g[w>>2]=+g[v>>2];g[v>>2]=+g[u>>2];g[u>>2]=+g[(c[j>>2]|0)+(c[o>>2]<<2)>>2];g[(c[l>>2]|0)+(c[o>>2]<<2)>>2]=+g[z>>2];c[o>>2]=(c[o>>2]|0)+1}g[c[n>>2]>>2]=+g[u>>2];g[(c[n>>2]|0)+4>>2]=+g[v>>2];g[(c[n>>2]|0)+8>>2]=+g[w>>2];g[(c[n>>2]|0)+12>>2]=+g[x>>2];g[(c[n>>2]|0)+16>>2]=+g[y>>2];i=h;return}function sd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=i;i=i+64|0;h=f+44|0;j=f+36|0;k=f+12|0;l=f+8|0;m=f+32|0;n=f+40|0;o=f+48|0;p=f+16|0;q=f;r=f+24|0;s=f+4|0;t=f+28|0;u=f+20|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;g[q>>2]=0.0;e=c[j>>2]|0;c[j>>2]=e+4;g[n>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[o>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[p>>2]=+g[e>>2];c[m>>2]=0;while(1){if((c[m>>2]|0)>=((c[l>>2]|0)-3|0))break;e=c[h>>2]|0;c[h>>2]=e+4;g[r>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[q>>2]=+g[e>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[r>>2]*+g[n>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[r>>2]*+g[o>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[r>>2]*+g[p>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[r>>2]*+g[q>>2];e=c[h>>2]|0;c[h>>2]=e+4;g[r>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[n>>2]=+g[e>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[r>>2]*+g[o>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[r>>2]*+g[p>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[r>>2]*+g[q>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[r>>2]*+g[n>>2];e=c[h>>2]|0;c[h>>2]=e+4;g[r>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[o>>2]=+g[e>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[r>>2]*+g[p>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[r>>2]*+g[q>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[r>>2]*+g[n>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[r>>2]*+g[o>>2];e=c[h>>2]|0;c[h>>2]=e+4;g[r>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[p>>2]=+g[e>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[r>>2]*+g[q>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[r>>2]*+g[n>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[r>>2]*+g[o>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[r>>2]*+g[p>>2];c[m>>2]=(c[m>>2]|0)+4}r=c[m>>2]|0;c[m>>2]=r+1;if((r|0)<(c[l>>2]|0)){r=c[h>>2]|0;c[h>>2]=r+4;g[s>>2]=+g[r>>2];r=c[j>>2]|0;c[j>>2]=r+4;g[q>>2]=+g[r>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[s>>2]*+g[n>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[s>>2]*+g[o>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[s>>2]*+g[p>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[s>>2]*+g[q>>2]}s=c[m>>2]|0;c[m>>2]=s+1;if((s|0)<(c[l>>2]|0)){s=c[h>>2]|0;c[h>>2]=s+4;g[t>>2]=+g[s>>2];s=c[j>>2]|0;c[j>>2]=s+4;g[n>>2]=+g[s>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[t>>2]*+g[o>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[t>>2]*+g[p>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[t>>2]*+g[q>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[t>>2]*+g[n>>2]}if((c[m>>2]|0)>=(c[l>>2]|0)){i=f;return}l=c[h>>2]|0;c[h>>2]=l+4;g[u>>2]=+g[l>>2];l=c[j>>2]|0;c[j>>2]=l+4;g[o>>2]=+g[l>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[u>>2]*+g[p>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[u>>2]*+g[q>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[u>>2]*+g[n>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[u>>2]*+g[o>>2];i=f;return}function td(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0.0;e=i;i=i+32|0;f=e+16|0;h=e+12|0;j=e+8|0;k=e+4|0;l=e;c[f>>2]=a;c[h>>2]=b;c[j>>2]=d;g[l>>2]=0.0;c[k>>2]=0;while(1){m=+g[l>>2];if((c[k>>2]|0)>=(c[j>>2]|0))break;g[l>>2]=m+ +g[(c[f>>2]|0)+(c[k>>2]<<2)>>2]*+g[(c[h>>2]|0)+(c[k>>2]<<2)>>2];c[k>>2]=(c[k>>2]|0)+1}i=e;return +m}function ud(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=i;i=i+64|0;j=h;k=h+8|0;l=h+52|0;m=h+24|0;n=h+48|0;o=h+56|0;p=h+60|0;q=h+40|0;r=h+32|0;s=h+16|0;t=h+4|0;u=h+44|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;g[q>>2]=1.0;g[r>>2]=-1.0;g[r+4>>2]=-1.0;g[s>>2]=0.0;g[s+4>>2]=0.0;c[c[n>>2]>>2]=0;c[(c[n>>2]|0)+4>>2]=1;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[l>>2]|0))break;g[q>>2]=+g[q>>2]+ +g[(c[k>>2]|0)+(c[p>>2]<<2)>>2]*+g[(c[k>>2]|0)+(c[p>>2]<<2)>>2];c[p>>2]=(c[p>>2]|0)+1}c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[m>>2]|0))break;do if(+g[(c[j>>2]|0)+(c[o>>2]<<2)>>2]>0.0?(g[u>>2]=+g[(c[j>>2]|0)+(c[o>>2]<<2)>>2],g[u>>2]=+g[u>>2]*9.999999960041972e-13,g[t>>2]=+g[u>>2]*+g[u>>2],+g[t>>2]*+g[s+4>>2]>+g[r+4>>2]*+g[q>>2]):0)if(+g[t>>2]*+g[s>>2]>+g[r>>2]*+g[q>>2]){g[r+4>>2]=+g[r>>2];g[s+4>>2]=+g[s>>2];c[(c[n>>2]|0)+4>>2]=c[c[n>>2]>>2];g[r>>2]=+g[t>>2];g[s>>2]=+g[q>>2];c[c[n>>2]>>2]=c[o>>2];break}else{g[r+4>>2]=+g[t>>2];g[s+4>>2]=+g[q>>2];c[(c[n>>2]|0)+4>>2]=c[o>>2];break}while(0);g[q>>2]=+g[q>>2]+(+g[(c[k>>2]|0)+((c[o>>2]|0)+(c[l>>2]|0)<<2)>>2]*+g[(c[k>>2]|0)+((c[o>>2]|0)+(c[l>>2]|0)<<2)>>2]-+g[(c[k>>2]|0)+(c[o>>2]<<2)>>2]*+g[(c[k>>2]|0)+(c[o>>2]<<2)>>2]);g[q>>2]=1.0>+g[q>>2]?1.0:+g[q>>2];c[o>>2]=(c[o>>2]|0)+1}i=h;return}function vd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=i;i=i+64|0;h=f+44|0;j=f+36|0;k=f+12|0;l=f+8|0;m=f+32|0;n=f+40|0;o=f+48|0;p=f+16|0;q=f;r=f+24|0;s=f+4|0;t=f+28|0;u=f+20|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;g[q>>2]=0.0;e=c[j>>2]|0;c[j>>2]=e+4;g[n>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[o>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[p>>2]=+g[e>>2];c[m>>2]=0;while(1){if((c[m>>2]|0)>=((c[l>>2]|0)-3|0))break;e=c[h>>2]|0;c[h>>2]=e+4;g[r>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[q>>2]=+g[e>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[r>>2]*+g[n>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[r>>2]*+g[o>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[r>>2]*+g[p>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[r>>2]*+g[q>>2];e=c[h>>2]|0;c[h>>2]=e+4;g[r>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[n>>2]=+g[e>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[r>>2]*+g[o>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[r>>2]*+g[p>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[r>>2]*+g[q>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[r>>2]*+g[n>>2];e=c[h>>2]|0;c[h>>2]=e+4;g[r>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[o>>2]=+g[e>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[r>>2]*+g[p>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[r>>2]*+g[q>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[r>>2]*+g[n>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[r>>2]*+g[o>>2];e=c[h>>2]|0;c[h>>2]=e+4;g[r>>2]=+g[e>>2];e=c[j>>2]|0;c[j>>2]=e+4;g[p>>2]=+g[e>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[r>>2]*+g[q>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[r>>2]*+g[n>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[r>>2]*+g[o>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[r>>2]*+g[p>>2];c[m>>2]=(c[m>>2]|0)+4}r=c[m>>2]|0;c[m>>2]=r+1;if((r|0)<(c[l>>2]|0)){r=c[h>>2]|0;c[h>>2]=r+4;g[s>>2]=+g[r>>2];r=c[j>>2]|0;c[j>>2]=r+4;g[q>>2]=+g[r>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[s>>2]*+g[n>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[s>>2]*+g[o>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[s>>2]*+g[p>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[s>>2]*+g[q>>2]}s=c[m>>2]|0;c[m>>2]=s+1;if((s|0)<(c[l>>2]|0)){s=c[h>>2]|0;c[h>>2]=s+4;g[t>>2]=+g[s>>2];s=c[j>>2]|0;c[j>>2]=s+4;g[n>>2]=+g[s>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[t>>2]*+g[o>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[t>>2]*+g[p>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[t>>2]*+g[q>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[t>>2]*+g[n>>2]}if((c[m>>2]|0)>=(c[l>>2]|0)){i=f;return}l=c[h>>2]|0;c[h>>2]=l+4;g[u>>2]=+g[l>>2];l=c[j>>2]|0;c[j>>2]=l+4;g[o>>2]=+g[l>>2];g[c[k>>2]>>2]=+g[c[k>>2]>>2]+ +g[u>>2]*+g[p>>2];g[(c[k>>2]|0)+4>>2]=+g[(c[k>>2]|0)+4>>2]+ +g[u>>2]*+g[q>>2];g[(c[k>>2]|0)+8>>2]=+g[(c[k>>2]|0)+8>>2]+ +g[u>>2]*+g[n>>2];g[(c[k>>2]|0)+12>>2]=+g[(c[k>>2]|0)+12>>2]+ +g[u>>2]*+g[o>>2];i=f;return}function wd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[(c[d>>2]|0)+20>>2]|0)-(32-(aa(c[(c[d>>2]|0)+28>>2]|0)|0))|0;i=b;return a|0}function xd(a,e,f,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;w=w|0;x=x|0;y=y|0;z=z|0;A=A|0;B=B|0;var C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0;C=i;i=i+224|0;D=C+204|0;E=C+188|0;F=C+168|0;G=C+68|0;H=C+80|0;I=C+84|0;J=C+12|0;K=C+156|0;L=C+16|0;M=C+20|0;N=C+24|0;O=C+28|0;P=C+32|0;Q=C+36|0;R=C+40|0;S=C+152|0;T=C+44|0;U=C+48|0;V=C+52|0;W=C+56|0;X=C+60|0;Y=C+64|0;Z=C+176|0;$=C+184|0;aa=C+192|0;ba=C+200|0;ca=C+208|0;da=C+88|0;ea=C+92|0;fa=C+96|0;ga=C+100|0;ha=C+148|0;ia=C+104|0;ja=C+108|0;ka=C+112|0;la=C+116|0;ma=C+120|0;na=C+124|0;oa=C+128|0;pa=C+132|0;qa=C+136|0;ra=C+140|0;sa=C+144|0;ta=C+8|0;ua=C;va=C+160|0;wa=C+164|0;xa=C+4|0;ya=C+172|0;za=C+72|0;Aa=C+180|0;Ba=C+76|0;Ca=C+196|0;c[D>>2]=a;c[E>>2]=e;c[F>>2]=f;c[G>>2]=g;c[H>>2]=h;c[I>>2]=j;c[J>>2]=k;c[K>>2]=l;c[L>>2]=m;c[M>>2]=n;c[N>>2]=o;c[O>>2]=p;c[P>>2]=q;c[Q>>2]=r;c[R>>2]=s;c[S>>2]=t;c[T>>2]=u;c[U>>2]=v;c[V>>2]=w;c[W>>2]=x;c[X>>2]=y;c[Y>>2]=z;c[Z>>2]=A;c[$>>2]=B;c[ha>>2]=-1;c[ia>>2]=c[V>>2]<<3;c[ga>>2]=(c[V>>2]|0)>1&1;c[fa>>2]=c[W>>2]<<3;c[ba>>2]=0;c[ca>>2]=64;c[da>>2]=0;while(1){if((c[da>>2]|0)>=6)break;c[na>>2]=(c[ba>>2]|0)+(c[ca>>2]|0)>>1;c[aa>>2]=0;c[la>>2]=0;c[ea>>2]=c[F>>2];while(1){B=c[ea>>2]|0;c[ea>>2]=B+-1;if((B|0)<=(c[E>>2]|0))break;c[oa>>2]=(c[(c[H>>2]|0)+(c[ea>>2]<<2)>>2]|0)+((_(c[na>>2]|0,c[(c[I>>2]|0)+(c[ea>>2]<<2)>>2]|0)|0)>>6);if(!((c[la>>2]|0)!=0?1:(c[oa>>2]|0)>=(c[(c[J>>2]|0)+(c[ea>>2]<<2)>>2]|0))){if((c[oa>>2]|0)<(c[ia>>2]|0))continue;c[aa>>2]=(c[aa>>2]|0)+(c[ia>>2]|0);continue}c[la>>2]=1;if((c[oa>>2]|0)<(c[(c[K>>2]|0)+(c[ea>>2]<<2)>>2]|0))Da=c[oa>>2]|0;else Da=c[(c[K>>2]|0)+(c[ea>>2]<<2)>>2]|0;c[aa>>2]=(c[aa>>2]|0)+Da}B=c[na>>2]|0;if((c[aa>>2]|0)>(c[L>>2]|0))c[ca>>2]=B;else c[ba>>2]=B;c[da>>2]=(c[da>>2]|0)+1}c[aa>>2]=0;c[la>>2]=0;c[ea>>2]=c[F>>2];while(1){da=c[ea>>2]|0;c[ea>>2]=da+-1;if((da|0)<=(c[E>>2]|0))break;c[pa>>2]=(c[(c[H>>2]|0)+(c[ea>>2]<<2)>>2]|0)+((_(c[ba>>2]|0,c[(c[I>>2]|0)+(c[ea>>2]<<2)>>2]|0)|0)>>6);do if(!((c[la>>2]|0)!=0?1:(c[pa>>2]|0)>=(c[(c[J>>2]|0)+(c[ea>>2]<<2)>>2]|0)))if((c[pa>>2]|0)>=(c[ia>>2]|0)){c[pa>>2]=c[ia>>2];break}else{c[pa>>2]=0;break}else c[la>>2]=1;while(0);if((c[pa>>2]|0)<(c[(c[K>>2]|0)+(c[ea>>2]<<2)>>2]|0))Ea=c[pa>>2]|0;else Ea=c[(c[K>>2]|0)+(c[ea>>2]<<2)>>2]|0;c[pa>>2]=Ea;c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]=c[pa>>2];c[aa>>2]=(c[aa>>2]|0)+(c[pa>>2]|0)}c[ha>>2]=c[F>>2];while(1){c[ea>>2]=(c[ha>>2]|0)-1;if((c[ea>>2]|0)<=(c[G>>2]|0)){Fa=29;break}c[ja>>2]=(c[L>>2]|0)-(c[aa>>2]|0);c[ka>>2]=ye(c[ja>>2]|0,(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ha>>2]<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[E>>2]<<1)>>1]|0)|0)|0;pa=_((b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ha>>2]<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[E>>2]<<1)>>1]|0)|0,c[ka>>2]|0)|0;c[ja>>2]=(c[ja>>2]|0)-pa;if(((c[ja>>2]|0)-((b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ea>>2]<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[E>>2]<<1)>>1]|0))|0)>0)Ga=(c[ja>>2]|0)-((b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ea>>2]<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[E>>2]<<1)>>1]|0))|0;else Ga=0;c[sa>>2]=Ga;c[qa>>2]=(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ha>>2]<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ea>>2]<<1)>>1]|0);pa=(c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]|0)+(_(c[ka>>2]|0,c[qa>>2]|0)|0)|0;c[ra>>2]=pa+(c[sa>>2]|0);if((c[(c[J>>2]|0)+(c[ea>>2]<<2)>>2]|0)>((c[ia>>2]|0)+8|0))Ha=c[(c[J>>2]|0)+(c[ea>>2]<<2)>>2]|0;else Ha=(c[ia>>2]|0)+8|0;if((c[ra>>2]|0)>=(Ha|0)){if(!(c[Y>>2]|0)){if(ib(c[X>>2]|0,1)|0)break}else{if((c[ha>>2]|0)<=((c[E>>2]|0)+2|0)){Fa=40;break}pa=_((c[ea>>2]|0)<(c[Z>>2]|0)?7:9,c[qa>>2]|0)|0;if((c[ra>>2]|0)>(pa<<c[W>>2]<<3>>4|0)?(c[ea>>2]|0)<=(c[$>>2]|0):0){Fa=40;break}nb(c[X>>2]|0,0,1)}c[aa>>2]=(c[aa>>2]|0)+8;c[ra>>2]=(c[ra>>2]|0)-8}c[aa>>2]=(c[aa>>2]|0)-((c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]|0)+(c[P>>2]|0));if((c[P>>2]|0)>0)c[P>>2]=d[2928+((c[ea>>2]|0)-(c[E>>2]|0))>>0];c[aa>>2]=(c[aa>>2]|0)+(c[P>>2]|0);if((c[ra>>2]|0)>=(c[ia>>2]|0)){c[aa>>2]=(c[aa>>2]|0)+(c[ia>>2]|0);c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]=c[ia>>2]}else c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]=0;c[ha>>2]=(c[ha>>2]|0)+-1}if((Fa|0)==29)c[L>>2]=(c[L>>2]|0)+(c[N>>2]|0);else if((Fa|0)==40)nb(c[X>>2]|0,1,1);do if((c[P>>2]|0)>0){if(!(c[Y>>2]|0)){Fa=c[E>>2]|0;N=Fa+(kb(c[X>>2]|0,(c[ha>>2]|0)+1-(c[E>>2]|0)|0)|0)|0;c[c[O>>2]>>2]=N;break}if((c[c[O>>2]>>2]|0)<(c[ha>>2]|0))Ia=c[c[O>>2]>>2]|0;else Ia=c[ha>>2]|0;c[c[O>>2]>>2]=Ia;ob(c[X>>2]|0,(c[c[O>>2]>>2]|0)-(c[E>>2]|0)|0,(c[ha>>2]|0)+1-(c[E>>2]|0)|0)}else c[c[O>>2]>>2]=0;while(0);if((c[c[O>>2]>>2]|0)<=(c[E>>2]|0)){c[L>>2]=(c[L>>2]|0)+(c[R>>2]|0);c[R>>2]=0}do if((c[R>>2]|0)>0){Ia=c[X>>2]|0;if(c[Y>>2]|0){nb(Ia,c[c[Q>>2]>>2]|0,1);break}else{P=ib(Ia,1)|0;c[c[Q>>2]>>2]=P;break}}else c[c[Q>>2]>>2]=0;while(0);c[ja>>2]=(c[L>>2]|0)-(c[aa>>2]|0);c[ka>>2]=ye(c[ja>>2]|0,(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ha>>2]<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[E>>2]<<1)>>1]|0)|0)|0;aa=_((b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ha>>2]<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[E>>2]<<1)>>1]|0)|0,c[ka>>2]|0)|0;c[ja>>2]=(c[ja>>2]|0)-aa;c[ea>>2]=c[E>>2];while(1){if((c[ea>>2]|0)>=(c[ha>>2]|0))break;aa=_(c[ka>>2]|0,(b[(c[(c[D>>2]|0)+32>>2]|0)+((c[ea>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ea>>2]<<1)>>1]|0)|0)|0;L=(c[S>>2]|0)+(c[ea>>2]<<2)|0;c[L>>2]=(c[L>>2]|0)+aa;c[ea>>2]=(c[ea>>2]|0)+1}c[ea>>2]=c[E>>2];while(1){if((c[ea>>2]|0)>=(c[ha>>2]|0))break;if((c[ja>>2]|0)<((b[(c[(c[D>>2]|0)+32>>2]|0)+((c[ea>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ea>>2]<<1)>>1]|0)|0))Ja=c[ja>>2]|0;else Ja=(b[(c[(c[D>>2]|0)+32>>2]|0)+((c[ea>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ea>>2]<<1)>>1]|0)|0;c[ta>>2]=Ja;ka=(c[S>>2]|0)+(c[ea>>2]<<2)|0;c[ka>>2]=(c[ka>>2]|0)+(c[ta>>2]|0);c[ja>>2]=(c[ja>>2]|0)-(c[ta>>2]|0);c[ea>>2]=(c[ea>>2]|0)+1}c[ma>>2]=0;c[ea>>2]=c[E>>2];while(1){if((c[ea>>2]|0)>=(c[ha>>2]|0))break;c[ua>>2]=(b[(c[(c[D>>2]|0)+32>>2]|0)+((c[ea>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+32>>2]|0)+(c[ea>>2]<<1)>>1]|0);c[va>>2]=c[ua>>2]<<c[W>>2];c[Aa>>2]=(c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]|0)+(c[ma>>2]|0);E=c[Aa>>2]|0;if((c[va>>2]|0)>1){if((E-(c[(c[K>>2]|0)+(c[ea>>2]<<2)>>2]|0)|0)>0)Ka=(c[Aa>>2]|0)-(c[(c[K>>2]|0)+(c[ea>>2]<<2)>>2]|0)|0;else Ka=0;c[za>>2]=Ka;c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]=(c[Aa>>2]|0)-(c[za>>2]|0);ta=_(c[V>>2]|0,c[va>>2]|0)|0;if((c[V>>2]|0)==2&(c[va>>2]|0)>2?(c[c[Q>>2]>>2]|0)==0:0)La=(c[ea>>2]|0)<(c[c[O>>2]>>2]|0);else La=0;c[wa>>2]=ta+(La?1:0);c[ya>>2]=_(c[wa>>2]|0,(b[(c[(c[D>>2]|0)+56>>2]|0)+(c[ea>>2]<<1)>>1]|0)+(c[fa>>2]|0)|0)|0;c[xa>>2]=(c[ya>>2]>>1)-((c[wa>>2]|0)*21|0);if((c[va>>2]|0)==2)c[xa>>2]=(c[xa>>2]|0)+(c[wa>>2]<<3>>2);if(((c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]|0)+(c[xa>>2]|0)|0)>=(c[wa>>2]<<1<<3|0)){if(((c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]|0)+(c[xa>>2]|0)|0)<((c[wa>>2]|0)*3<<3|0))c[xa>>2]=(c[xa>>2]|0)+(c[ya>>2]>>3)}else c[xa>>2]=(c[xa>>2]|0)+(c[ya>>2]>>2);if(0>((c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]|0)+(c[xa>>2]|0)+(c[wa>>2]<<2)|0))Ma=0;else Ma=(c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]|0)+(c[xa>>2]|0)+(c[wa>>2]<<2)|0;c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]=Ma;ta=(ye(c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]|0,c[wa>>2]|0)|0)>>>3;c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]=ta;ta=_(c[V>>2]|0,c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]|0)|0;if((ta|0)>(c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]>>3|0))c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]=c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]>>c[ga>>2]>>3;if((c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]|0)<8)Na=c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]|0;else Na=8;c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]=Na;ta=_(c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]|0,c[wa>>2]<<3)|0;c[(c[U>>2]|0)+(c[ea>>2]<<2)>>2]=(ta|0)>=((c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]|0)+(c[xa>>2]|0)|0)&1;ta=(_(c[V>>2]|0,c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]|0)|0)<<3;ja=(c[S>>2]|0)+(c[ea>>2]<<2)|0;c[ja>>2]=(c[ja>>2]|0)-ta}else{if(0>(E-(c[V>>2]<<3)|0))Oa=0;else Oa=(c[Aa>>2]|0)-(c[V>>2]<<3)|0;c[za>>2]=Oa;c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]=(c[Aa>>2]|0)-(c[za>>2]|0);c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]=0;c[(c[U>>2]|0)+(c[ea>>2]<<2)>>2]=1}if((c[za>>2]|0)>0){if((c[za>>2]>>(c[ga>>2]|0)+3|0)<(8-(c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]|0)|0))Pa=c[za>>2]>>(c[ga>>2]|0)+3;else Pa=8-(c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]|0)|0;c[Ba>>2]=Pa;E=(c[T>>2]|0)+(c[ea>>2]<<2)|0;c[E>>2]=(c[E>>2]|0)+(c[Ba>>2]|0);c[Ca>>2]=(_(c[Ba>>2]|0,c[V>>2]|0)|0)<<3;c[(c[U>>2]|0)+(c[ea>>2]<<2)>>2]=(c[Ca>>2]|0)>=((c[za>>2]|0)-(c[ma>>2]|0)|0)&1;c[za>>2]=(c[za>>2]|0)-(c[Ca>>2]|0)}c[ma>>2]=c[za>>2];c[ea>>2]=(c[ea>>2]|0)+1}c[c[M>>2]>>2]=c[ma>>2];while(1){if((c[ea>>2]|0)>=(c[F>>2]|0))break;c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]=c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]>>c[ga>>2]>>3;c[(c[S>>2]|0)+(c[ea>>2]<<2)>>2]=0;c[(c[U>>2]|0)+(c[ea>>2]<<2)>>2]=(c[(c[T>>2]|0)+(c[ea>>2]<<2)>>2]|0)<1&1;c[ea>>2]=(c[ea>>2]|0)+1}i=C;return c[ha>>2]|0}function yd(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=i;i=i+64|0;k=j+44|0;l=j+36|0;m=j+12|0;n=j+8|0;o=j+32|0;p=j+40|0;q=j+48|0;r=j+16|0;s=j;t=j+24|0;u=j+4|0;v=j+28|0;w=j+20|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=h;c[v>>2]=0;if((c[p>>2]|0)==0?1:(c[o>>2]<<1|0)>=(c[l>>2]|0)){i=j;return}c[w>>2]=c[5216+((c[p>>2]|0)-1<<2)>>2];g[t>>2]=+(c[l>>2]|0)*1.0/+((c[l>>2]|0)+(_(c[w>>2]|0,c[o>>2]|0)|0)|0);g[u>>2]=+g[t>>2]*+g[t>>2]*.5;g[r>>2]=+Q(+(+g[u>>2]*1.5707963705062866));g[s>>2]=+Q(+((1.0-+g[u>>2])*1.5707963705062866));a:do if((c[l>>2]|0)>=(c[n>>2]<<3|0)){c[v>>2]=1;while(1){u=_(c[v>>2]|0,c[v>>2]|0)|0;t=_(u+(c[v>>2]|0)|0,c[n>>2]|0)|0;if((t+(c[n>>2]>>2)|0)>=(c[l>>2]|0))break a;c[v>>2]=(c[v>>2]|0)+1}}while(0);c[l>>2]=we(c[l>>2]|0,c[n>>2]|0)|0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[n>>2]|0))break;if((c[m>>2]|0)>=0){t=(c[k>>2]|0)+((_(c[q>>2]|0,c[l>>2]|0)|0)<<2)|0;xe(t,c[l>>2]|0,1,+g[r>>2],-+g[s>>2]);if(c[v>>2]|0){t=(c[k>>2]|0)+((_(c[q>>2]|0,c[l>>2]|0)|0)<<2)|0;xe(t,c[l>>2]|0,c[v>>2]|0,+g[s>>2],-+g[r>>2])}}else{if(c[v>>2]|0){t=(c[k>>2]|0)+((_(c[q>>2]|0,c[l>>2]|0)|0)<<2)|0;xe(t,c[l>>2]|0,c[v>>2]|0,+g[s>>2],+g[r>>2])}t=(c[k>>2]|0)+((_(c[q>>2]|0,c[l>>2]|0)|0)<<2)|0;xe(t,c[l>>2]|0,1,+g[r>>2],+g[s>>2])}c[q>>2]=(c[q>>2]|0)+1}i=j;return}function zd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;i=i+48|0;f=e+28|0;g=e+16|0;h=e+4|0;j=e+8|0;k=e+32|0;l=e;m=e+12|0;n=e+24|0;o=e+20|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;if((c[j>>2]|0)<=1){c[f>>2]=1;p=c[f>>2]|0;i=e;return p|0}c[l>>2]=we(c[h>>2]|0,c[j>>2]|0)|0;c[k>>2]=0;c[m>>2]=0;do{c[o>>2]=0;c[n>>2]=0;do{h=_(c[m>>2]|0,c[l>>2]|0)|0;c[o>>2]=c[o>>2]|c[(c[g>>2]|0)+(h+(c[n>>2]|0)<<2)>>2];h=(c[n>>2]|0)+1|0;c[n>>2]=h}while((h|0)<(c[l>>2]|0));c[k>>2]=c[k>>2]|((c[o>>2]|0)!=0&1)<<c[m>>2];h=(c[m>>2]|0)+1|0;c[m>>2]=h}while((h|0)<(c[j>>2]|0));c[f>>2]=c[k>>2];p=c[f>>2]|0;i=e;return p|0}function Ad(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;i=i+32|0;j=h+4|0;k=h+16|0;l=h+8|0;m=h+20|0;n=h+28|0;o=h;p=h+12|0;q=h+24|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;g[m>>2]=e;g[n>>2]=f;g[p>>2]=+g[m>>2];f=1.0/+O(+(+g[p>>2]));g[q>>2]=f*+g[n>>2];c[o>>2]=0;do{g[(c[k>>2]|0)+(c[o>>2]<<2)>>2]=+g[q>>2]*+(c[(c[j>>2]|0)+(c[o>>2]<<2)>>2]|0);n=(c[o>>2]|0)+1|0;c[o>>2]=n}while((n|0)<(c[l>>2]|0));i=h;return}function Bd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0.0;e=i;i=i+32|0;f=e+16|0;h=e+12|0;j=e+8|0;k=e+4|0;l=e;c[f>>2]=a;c[h>>2]=b;c[j>>2]=d;g[l>>2]=0.0;c[k>>2]=0;while(1){m=+g[l>>2];if((c[k>>2]|0)>=(c[j>>2]|0))break;g[l>>2]=m+ +g[(c[f>>2]|0)+(c[k>>2]<<2)>>2]*+g[(c[h>>2]|0)+(c[k>>2]<<2)>>2];c[k>>2]=(c[k>>2]|0)+1}i=e;return +m}function Cd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;i=i+48|0;h=g+28|0;j=g+16|0;k=g+4|0;l=g+8|0;m=g+32|0;n=g;o=g+12|0;p=g+24|0;q=g+20|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[q>>2]=255;while(1){if((c[q>>2]|0)<=(c[l>>2]|0))break;c[q>>2]=c[q>>2]>>1}c[n>>2]=c[c[m>>2]>>2];c[o>>2]=0;while(1){r=c[n>>2]|0;if((c[o>>2]|0)>=(c[l>>2]|0))break;c[n>>2]=907633515+(_(r,196314165)|0);c[p>>2]=c[n>>2]>>24&c[q>>2];f=_(c[(c[j>>2]|0)+(c[p>>2]<<2)>>2]>>16,(c[k>>2]>>4&65535)<<16>>16)|0;e=f+((_(c[(c[j>>2]|0)+(c[p>>2]<<2)>>2]&65535,(c[k>>2]>>4&65535)<<16>>16)|0)>>16)|0;if((e+(_(c[(c[j>>2]|0)+(c[p>>2]<<2)>>2]|0,(c[k>>2]>>4>>15)+1>>1)|0)|0)<=32767){e=_(c[(c[j>>2]|0)+(c[p>>2]<<2)>>2]>>16,(c[k>>2]>>4&65535)<<16>>16)|0;f=e+((_(c[(c[j>>2]|0)+(c[p>>2]<<2)>>2]&65535,(c[k>>2]>>4&65535)<<16>>16)|0)>>16)|0;if((f+(_(c[(c[j>>2]|0)+(c[p>>2]<<2)>>2]|0,(c[k>>2]>>4>>15)+1>>1)|0)|0)<-32768)s=-32768;else{f=_(c[(c[j>>2]|0)+(c[p>>2]<<2)>>2]>>16,(c[k>>2]>>4&65535)<<16>>16)|0;e=f+((_(c[(c[j>>2]|0)+(c[p>>2]<<2)>>2]&65535,(c[k>>2]>>4&65535)<<16>>16)|0)>>16)|0;s=e+(_(c[(c[j>>2]|0)+(c[p>>2]<<2)>>2]|0,(c[k>>2]>>4>>15)+1>>1)|0)|0}}else s=32767;c[(c[h>>2]|0)+(c[o>>2]<<2)>>2]=(s&65535)<<16>>16;c[o>>2]=(c[o>>2]|0)+1}c[c[m>>2]>>2]=r;i=g;return}function Dd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;i=i+48|0;e=d+28|0;f=d+16|0;g=d+4|0;h=d+8|0;j=d+32|0;k=d;l=d+12|0;m=d+24|0;n=d+20|0;c[f>>2]=a;c[g>>2]=b;b=c[f>>2]|0;c[h>>2]=(ve((c[f>>2]|0)>0?b:0-b|0)|0)-1;c[l>>2]=c[f>>2]<<c[h>>2];c[k>>2]=536870911/(c[l>>2]>>16|0)|0;c[n>>2]=c[k>>2]<<16;f=_(c[l>>2]>>16,(c[k>>2]&65535)<<16>>16)|0;c[m>>2]=536870912-(f+((_(c[l>>2]&65535,(c[k>>2]&65535)<<16>>16)|0)>>16))<<3;l=_(c[m>>2]>>16,(c[k>>2]&65535)<<16>>16)|0;f=(c[n>>2]|0)+(l+((_(c[m>>2]&65535,(c[k>>2]&65535)<<16>>16)|0)>>16))|0;c[n>>2]=f+(_(c[m>>2]|0,(c[k>>2]>>15)+1>>1)|0);c[j>>2]=61-(c[h>>2]|0)-(c[g>>2]|0);g=c[j>>2]|0;if((c[j>>2]|0)>0)if((g|0)<32){c[e>>2]=c[n>>2]>>c[j>>2];o=c[e>>2]|0;i=d;return o|0}else{c[e>>2]=0;o=c[e>>2]|0;i=d;return o|0}h=c[n>>2]|0;k=0-(c[j>>2]|0)|0;do if((-2147483648>>0-g|0)>(2147483647>>0-(c[j>>2]|0)|0)){if((h|0)>(-2147483648>>k|0)){p=-2147483648>>0-(c[j>>2]|0);break}if((c[n>>2]|0)<(2147483647>>0-(c[j>>2]|0)|0)){p=2147483647>>0-(c[j>>2]|0);break}else{p=c[n>>2]|0;break}}else{if((h|0)>(2147483647>>k|0)){p=2147483647>>0-(c[j>>2]|0);break}if((c[n>>2]|0)<(-2147483648>>0-(c[j>>2]|0)|0)){p=-2147483648>>0-(c[j>>2]|0);break}else{p=c[n>>2]|0;break}}while(0);c[e>>2]=p<<0-(c[j>>2]|0);o=c[e>>2]|0;i=d;return o|0}function Ed(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;i=i+48|0;f=e+36|0;g=e+16|0;h=e;j=e+28|0;k=e+32|0;l=e+40|0;m=e+12|0;n=e+24|0;o=e+20|0;p=e+8|0;q=e+4|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;d=c[g>>2]|0;c[k>>2]=(ve((c[g>>2]|0)>0?d:0-d|0)|0)-1;c[o>>2]=c[g>>2]<<c[k>>2];g=c[h>>2]|0;c[l>>2]=(ve((c[h>>2]|0)>0?g:0-g|0)|0)-1;c[p>>2]=c[h>>2]<<c[l>>2];c[n>>2]=536870911/(c[p>>2]>>16|0)|0;h=_(c[o>>2]>>16,(c[n>>2]&65535)<<16>>16)|0;c[q>>2]=h+((_(c[o>>2]&65535,(c[n>>2]&65535)<<16>>16)|0)>>16);h=c[o>>2]|0;g=c[p>>2]|0;p=c[q>>2]|0;d=of(g|0,((g|0)<0)<<31>>31|0,p|0,((p|0)<0)<<31>>31|0)|0;p=af(d|0,C|0,32)|0;c[o>>2]=h-(p<<3);p=_(c[o>>2]>>16,(c[n>>2]&65535)<<16>>16)|0;c[q>>2]=(c[q>>2]|0)+(p+((_(c[o>>2]&65535,(c[n>>2]&65535)<<16>>16)|0)>>16));c[m>>2]=29+(c[k>>2]|0)-(c[l>>2]|0)-(c[j>>2]|0);j=c[m>>2]|0;if((c[m>>2]|0)>=0)if((j|0)<32){c[f>>2]=c[q>>2]>>c[m>>2];r=c[f>>2]|0;i=e;return r|0}else{c[f>>2]=0;r=c[f>>2]|0;i=e;return r|0}l=c[q>>2]|0;k=0-(c[m>>2]|0)|0;do if((-2147483648>>0-j|0)>(2147483647>>0-(c[m>>2]|0)|0)){if((l|0)>(-2147483648>>k|0)){s=-2147483648>>0-(c[m>>2]|0);break}if((c[q>>2]|0)<(2147483647>>0-(c[m>>2]|0)|0)){s=2147483647>>0-(c[m>>2]|0);break}else{s=c[q>>2]|0;break}}else{if((l|0)>(2147483647>>k|0)){s=2147483647>>0-(c[m>>2]|0);break}if((c[q>>2]|0)<(-2147483648>>0-(c[m>>2]|0)|0)){s=-2147483648>>0-(c[m>>2]|0);break}else{s=c[q>>2]|0;break}}while(0);c[f>>2]=s<<0-(c[m>>2]|0);r=c[f>>2]|0;i=e;return r|0}function Fd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)<(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0)|0}function Gd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)>(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0)|0}function Hd(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;k=i;i=i+32|0;l=k+24|0;m=k+16|0;n=k+12|0;o=k+8|0;p=k+28|0;q=k;r=k+20|0;s=k+4|0;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;b[p>>1]=j;c[r>>2]=0;c[q>>2]=(b[p>>1]|0)-1;while(1){if((c[q>>2]|0)<0)break;c[s>>2]=(_((c[r>>2]&65535)<<16>>16,d[(c[n>>2]|0)+(c[q>>2]|0)>>0]|0)|0)>>8;c[r>>2]=a[(c[m>>2]|0)+(c[q>>2]|0)>>0]<<10;p=c[r>>2]|0;if((c[r>>2]|0)<=0){if((p|0)<0)c[r>>2]=(c[r>>2]|0)+102}else c[r>>2]=p-102;p=_(c[r>>2]>>16,(c[o>>2]&65535)<<16>>16)|0;c[r>>2]=(c[s>>2]|0)+(p+((_(c[r>>2]&65535,(c[o>>2]&65535)<<16>>16)|0)>>16));b[(c[l>>2]|0)+(c[q>>2]<<1)>>1]=c[r>>2];c[q>>2]=(c[q>>2]|0)+-1}i=k;return}function Id(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+32|0;d=b+16|0;e=b+12|0;f=b+8|0;g=b+4|0;h=b;c[e>>2]=a;if((c[e>>2]|0)<=0){c[d>>2]=0;j=c[d>>2]|0;i=b;return j|0}se(c[e>>2]|0,g,h);if(c[g>>2]&1)c[f>>2]=32768;else c[f>>2]=46214;c[f>>2]=c[f>>2]>>(c[g>>2]>>1);g=_(c[f>>2]>>16,(((c[h>>2]&65535)<<16>>16)*213&65535)<<16>>16)|0;c[f>>2]=(c[f>>2]|0)+(g+((_(c[f>>2]&65535,(((c[h>>2]&65535)<<16>>16)*213&65535)<<16>>16)|0)>>16));c[d>>2]=c[f>>2];j=c[d>>2]|0;i=b;return j|0}function Jd(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;f=i;i=i+160|0;g=f+68|0;h=f+100|0;j=f+40|0;k=f+44|0;l=f+92|0;m=f+8|0;n=f+12|0;o=f+72|0;p=f+16|0;q=f+20|0;r=f+88|0;s=f+96|0;t=f+104|0;u=f+112|0;v=f+48|0;w=f+116|0;x=f+52|0;y=f+56|0;z=f+60|0;A=f+64|0;B=f+4|0;C=f+120|0;D=f+84|0;E=f+24|0;F=f+128|0;G=f;H=f+32|0;I=f+108|0;J=f+80|0;K=f+76|0;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;c[G>>2]=(c[g>>2]|0)+4168;e=(c[(c[g>>2]|0)+2336>>2]|0)+(c[(c[g>>2]|0)+2328>>2]|0)|0;c[I>>2]=ua()|0;d=i;i=i+((1*(e<<2)|0)+15&-16)|0;e=i;i=i+((1*(c[(c[g>>2]|0)+2336>>2]<<1)|0)+15&-16)|0;c[H>>2]=c[(c[G>>2]|0)+72>>2]>>6;c[H+4>>2]=c[(c[G>>2]|0)+72+4>>2]>>6;if(c[(c[g>>2]|0)+2376>>2]|0){L=(c[G>>2]|0)+14|0;M=L+32|0;do{b[L>>1]=0;L=L+2|0}while((L|0)<(M|0))}me(w,q,x,r,(c[g>>2]|0)+4|0,H,c[(c[g>>2]|0)+2332>>2]|0,c[(c[g>>2]|0)+2324>>2]|0);a=c[(c[G>>2]|0)+84>>2]|0;if((c[w>>2]>>c[r>>2]|0)<(c[x>>2]>>c[q>>2]|0)){q=ne(0,(_(a-1|0,c[(c[G>>2]|0)+88>>2]|0)|0)-128|0)|0;c[y>>2]=(c[g>>2]|0)+4+(q<<2)}else{q=ne(0,(_(a,c[(c[G>>2]|0)+88>>2]|0)|0)-128|0)|0;c[y>>2]=(c[g>>2]|0)+4+(q<<2)}c[D>>2]=(c[G>>2]|0)+4;b[C>>1]=b[(c[G>>2]|0)+56>>1]|0;c[t>>2]=b[5192+((oe(1,c[(c[g>>2]|0)+4160>>2]|0)|0)<<1)>>1];q=(c[(c[g>>2]|0)+4164>>2]|0)==2;a=oe(1,c[(c[g>>2]|0)+4160>>2]|0)|0;if(q)c[u>>2]=b[5200+(a<<1)>>1];else c[u>>2]=b[5208+(a<<1)>>1];ec((c[G>>2]|0)+14|0,c[(c[g>>2]|0)+2340>>2]|0,64881);df(F|0,(c[G>>2]|0)+14|0,c[(c[g>>2]|0)+2340>>2]<<1|0)|0;do if(!(c[(c[g>>2]|0)+4160>>2]|0)){b[C>>1]=16384;if((c[(c[g>>2]|0)+4164>>2]|0)!=2){c[J>>2]=ic((c[G>>2]|0)+14|0,c[(c[g>>2]|0)+2340>>2]|0)|0;c[K>>2]=qe(134217728,c[J>>2]|0)|0;c[K>>2]=Md(4194304,c[K>>2]|0)|0;c[K>>2]=c[K>>2]<<3;a=_(c[K>>2]>>16,(c[u>>2]&65535)<<16>>16)|0;c[u>>2]=a+((_(c[K>>2]&65535,(c[u>>2]&65535)<<16>>16)|0)>>16)>>14;break}c[k>>2]=0;while(1){if((c[k>>2]|0)>=5)break;b[C>>1]=(b[C>>1]|0)-(b[(c[D>>2]|0)+(c[k>>2]<<1)>>1]|0);c[k>>2]=(c[k>>2]|0)+1}b[C>>1]=pe(3277,b[C>>1]|0)|0;b[C>>1]=(_(b[C>>1]|0,b[(c[G>>2]|0)+68>>1]|0)|0)>>14}while(0);c[s>>2]=c[(c[G>>2]|0)+52>>2];c[n>>2]=(c[c[G>>2]>>2]>>7)+1>>1;c[p>>2]=c[(c[g>>2]|0)+2336>>2];c[o>>2]=(c[(c[g>>2]|0)+2336>>2]|0)-(c[n>>2]|0)-(c[(c[g>>2]|0)+2340>>2]|0)-2;hc(e+(c[o>>2]<<1)|0,(c[g>>2]|0)+1348+(c[o>>2]<<1)|0,F,(c[(c[g>>2]|0)+2336>>2]|0)-(c[o>>2]|0)|0,c[(c[g>>2]|0)+2340>>2]|0);c[v>>2]=re(c[(c[G>>2]|0)+72+4>>2]|0,46)|0;c[v>>2]=(c[v>>2]|0)<1073741823?c[v>>2]|0:1073741823;c[k>>2]=(c[o>>2]|0)+(c[(c[g>>2]|0)+2340>>2]|0);while(1){if((c[k>>2]|0)>=(c[(c[g>>2]|0)+2336>>2]|0))break;K=_(c[v>>2]>>16,b[e+(c[k>>2]<<1)>>1]|0)|0;J=K+((_(c[v>>2]&65535,b[e+(c[k>>2]<<1)>>1]|0)|0)>>16)|0;c[d+(c[k>>2]<<2)>>2]=J;c[k>>2]=(c[k>>2]|0)+1}c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[g>>2]|0)+2324>>2]|0))break;c[z>>2]=d+((c[p>>2]|0)-(c[n>>2]|0)+2<<2);c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[(c[g>>2]|0)+2332>>2]|0))break;c[B>>2]=2;e=_(c[c[z>>2]>>2]>>16,b[c[D>>2]>>1]|0)|0;c[B>>2]=(c[B>>2]|0)+(e+((_(c[c[z>>2]>>2]&65535,b[c[D>>2]>>1]|0)|0)>>16));e=_(c[(c[z>>2]|0)+-4>>2]>>16,b[(c[D>>2]|0)+2>>1]|0)|0;c[B>>2]=(c[B>>2]|0)+(e+((_(c[(c[z>>2]|0)+-4>>2]&65535,b[(c[D>>2]|0)+2>>1]|0)|0)>>16));e=_(c[(c[z>>2]|0)+-8>>2]>>16,b[(c[D>>2]|0)+4>>1]|0)|0;c[B>>2]=(c[B>>2]|0)+(e+((_(c[(c[z>>2]|0)+-8>>2]&65535,b[(c[D>>2]|0)+4>>1]|0)|0)>>16));e=_(c[(c[z>>2]|0)+-12>>2]>>16,b[(c[D>>2]|0)+6>>1]|0)|0;c[B>>2]=(c[B>>2]|0)+(e+((_(c[(c[z>>2]|0)+-12>>2]&65535,b[(c[D>>2]|0)+6>>1]|0)|0)>>16));e=_(c[(c[z>>2]|0)+-16>>2]>>16,b[(c[D>>2]|0)+8>>1]|0)|0;c[B>>2]=(c[B>>2]|0)+(e+((_(c[(c[z>>2]|0)+-16>>2]&65535,b[(c[D>>2]|0)+8>>1]|0)|0)>>16));c[z>>2]=(c[z>>2]|0)+4;c[s>>2]=907633515+(_(c[s>>2]|0,196314165)|0);c[o>>2]=c[s>>2]>>25&127;e=_(c[(c[y>>2]|0)+(c[o>>2]<<2)>>2]>>16,b[C>>1]|0)|0;v=(c[B>>2]|0)+(e+((_(c[(c[y>>2]|0)+(c[o>>2]<<2)>>2]&65535,b[C>>1]|0)|0)>>16))<<2;c[d+(c[p>>2]<<2)>>2]=v;c[p>>2]=(c[p>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+1}c[l>>2]=0;while(1){if((c[l>>2]|0)>=5)break;v=(_((c[t>>2]&65535)<<16>>16,b[(c[D>>2]|0)+(c[l>>2]<<1)>>1]|0)|0)>>15&65535;b[(c[D>>2]|0)+(c[l>>2]<<1)>>1]=v;c[l>>2]=(c[l>>2]|0)+1}b[C>>1]=(_(b[C>>1]|0,(c[u>>2]&65535)<<16>>16)|0)>>15;c[c[G>>2]>>2]=(c[c[G>>2]>>2]|0)+(((c[c[G>>2]>>2]>>16)*655|0)+((c[c[G>>2]>>2]&65535)*655>>16));v=qe(c[c[G>>2]>>2]|0,((c[(c[g>>2]|0)+2316>>2]&65535)<<16>>16)*18<<8)|0;c[c[G>>2]>>2]=v;c[n>>2]=(c[c[G>>2]>>2]>>7)+1>>1;c[m>>2]=(c[m>>2]|0)+1}c[E>>2]=d+((c[(c[g>>2]|0)+2336>>2]|0)-16<<2);L=c[E>>2]|0;d=(c[g>>2]|0)+1284|0;M=L+64|0;do{c[L>>2]=c[d>>2];L=L+4|0;d=d+4|0}while((L|0)<(M|0));c[k>>2]=0;while(1){N=c[g>>2]|0;if((c[k>>2]|0)>=(c[(c[g>>2]|0)+2328>>2]|0))break;c[A>>2]=c[N+2340>>2]>>1;m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-1<<2)>>2]>>16,b[F>>1]|0)|0;c[A>>2]=(c[A>>2]|0)+(m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-1<<2)>>2]&65535,b[F>>1]|0)|0)>>16));m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-2<<2)>>2]>>16,b[F+2>>1]|0)|0;c[A>>2]=(c[A>>2]|0)+(m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-2<<2)>>2]&65535,b[F+2>>1]|0)|0)>>16));m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-3<<2)>>2]>>16,b[F+4>>1]|0)|0;c[A>>2]=(c[A>>2]|0)+(m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-3<<2)>>2]&65535,b[F+4>>1]|0)|0)>>16));m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-4<<2)>>2]>>16,b[F+6>>1]|0)|0;c[A>>2]=(c[A>>2]|0)+(m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-4<<2)>>2]&65535,b[F+6>>1]|0)|0)>>16));m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-5<<2)>>2]>>16,b[F+8>>1]|0)|0;c[A>>2]=(c[A>>2]|0)+(m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-5<<2)>>2]&65535,b[F+8>>1]|0)|0)>>16));m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-6<<2)>>2]>>16,b[F+10>>1]|0)|0;c[A>>2]=(c[A>>2]|0)+(m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-6<<2)>>2]&65535,b[F+10>>1]|0)|0)>>16));m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-7<<2)>>2]>>16,b[F+12>>1]|0)|0;c[A>>2]=(c[A>>2]|0)+(m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-7<<2)>>2]&65535,b[F+12>>1]|0)|0)>>16));m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-8<<2)>>2]>>16,b[F+14>>1]|0)|0;c[A>>2]=(c[A>>2]|0)+(m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-8<<2)>>2]&65535,b[F+14>>1]|0)|0)>>16));m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-9<<2)>>2]>>16,b[F+16>>1]|0)|0;c[A>>2]=(c[A>>2]|0)+(m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-9<<2)>>2]&65535,b[F+16>>1]|0)|0)>>16));m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-10<<2)>>2]>>16,b[F+18>>1]|0)|0;c[A>>2]=(c[A>>2]|0)+(m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-10<<2)>>2]&65535,b[F+18>>1]|0)|0)>>16));c[l>>2]=10;while(1){if((c[l>>2]|0)>=(c[(c[g>>2]|0)+2340>>2]|0))break;m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-(c[l>>2]|0)-1<<2)>>2]>>16,b[F+(c[l>>2]<<1)>>1]|0)|0;c[A>>2]=(c[A>>2]|0)+(m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)-(c[l>>2]|0)-1<<2)>>2]&65535,b[F+(c[l>>2]<<1)>>1]|0)|0)>>16));c[l>>2]=(c[l>>2]|0)+1}c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]=(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]|0)+(c[A>>2]<<4);m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]>>16,(c[H+4>>2]&65535)<<16>>16)|0;u=m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]&65535,(c[H+4>>2]&65535)<<16>>16)|0)>>16)|0;if(((u+(_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]|0,(c[H+4>>2]>>15)+1>>1)|0)>>7)+1>>1|0)<=32767){u=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]>>16,(c[H+4>>2]&65535)<<16>>16)|0;m=u+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]&65535,(c[H+4>>2]&65535)<<16>>16)|0)>>16)|0;if(((m+(_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]|0,(c[H+4>>2]>>15)+1>>1)|0)>>7)+1>>1|0)<-32768)O=-32768;else{m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]>>16,(c[H+4>>2]&65535)<<16>>16)|0;u=m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]&65535,(c[H+4>>2]&65535)<<16>>16)|0)>>16)|0;O=(u+(_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]|0,(c[H+4>>2]>>15)+1>>1)|0)>>7)+1>>1}}else O=32767;if((O|0)<=32767){u=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]>>16,(c[H+4>>2]&65535)<<16>>16)|0;m=u+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]&65535,(c[H+4>>2]&65535)<<16>>16)|0)>>16)|0;if(((m+(_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]|0,(c[H+4>>2]>>15)+1>>1)|0)>>7)+1>>1|0)<=32767){m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]>>16,(c[H+4>>2]&65535)<<16>>16)|0;u=m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]&65535,(c[H+4>>2]&65535)<<16>>16)|0)>>16)|0;if(((u+(_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]|0,(c[H+4>>2]>>15)+1>>1)|0)>>7)+1>>1|0)<-32768)P=-32768;else{u=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]>>16,(c[H+4>>2]&65535)<<16>>16)|0;m=u+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]&65535,(c[H+4>>2]&65535)<<16>>16)|0)>>16)|0;P=(m+(_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]|0,(c[H+4>>2]>>15)+1>>1)|0)>>7)+1>>1}}else P=32767;if((P|0)>=-32768){m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]>>16,(c[H+4>>2]&65535)<<16>>16)|0;u=m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]&65535,(c[H+4>>2]&65535)<<16>>16)|0)>>16)|0;if(((u+(_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]|0,(c[H+4>>2]>>15)+1>>1)|0)>>7)+1>>1|0)<=32767){u=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]>>16,(c[H+4>>2]&65535)<<16>>16)|0;m=u+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]&65535,(c[H+4>>2]&65535)<<16>>16)|0)>>16)|0;if(((m+(_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]|0,(c[H+4>>2]>>15)+1>>1)|0)>>7)+1>>1|0)<-32768)Q=-32768;else{m=_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]>>16,(c[H+4>>2]&65535)<<16>>16)|0;u=m+((_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]&65535,(c[H+4>>2]&65535)<<16>>16)|0)>>16)|0;Q=(u+(_(c[(c[E>>2]|0)+(16+(c[k>>2]|0)<<2)>>2]|0,(c[H+4>>2]>>15)+1>>1)|0)>>7)+1>>1}}else Q=32767}else Q=-32768}else Q=32767;b[(c[j>>2]|0)+(c[k>>2]<<1)>>1]=Q;c[k>>2]=(c[k>>2]|0)+1}L=N+1284|0;d=(c[E>>2]|0)+(c[(c[g>>2]|0)+2328>>2]<<2)|0;M=L+64|0;do{c[L>>2]=c[d>>2];L=L+4|0;d=d+4|0}while((L|0)<(M|0));c[(c[G>>2]|0)+52>>2]=c[s>>2];b[(c[G>>2]|0)+56>>1]=b[C>>1]|0;c[k>>2]=0;while(1){if((c[k>>2]|0)>=4)break;c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]=c[n>>2];c[k>>2]=(c[k>>2]|0)+1}ka(c[I>>2]|0);i=f;return}function Kd(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+48|0;g=f+36|0;h=f+16|0;j=f;k=f+28|0;l=f+32|0;m=f+40|0;n=f+12|0;o=f+24|0;p=f+20|0;q=f+8|0;r=f+4|0;c[g>>2]=d;c[h>>2]=e;c[n>>2]=(c[g>>2]|0)+4168;c[(c[g>>2]|0)+4164>>2]=a[(c[g>>2]|0)+2736+29>>0];c[j>>2]=0;a:do if((a[(c[g>>2]|0)+2736+29>>0]|0)==2){c[m>>2]=0;while(1){e=_(c[m>>2]|0,c[(c[g>>2]|0)+2332>>2]|0)|0;if((e|0)>=(c[(c[h>>2]|0)+((c[(c[g>>2]|0)+2324>>2]|0)-1<<2)>>2]|0))break;if((c[m>>2]|0)==(c[(c[g>>2]|0)+2324>>2]|0))break;c[k>>2]=0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=5)break;c[k>>2]=(c[k>>2]|0)+(b[(c[h>>2]|0)+96+((((c[(c[g>>2]|0)+2324>>2]|0)-1-(c[m>>2]|0)|0)*5|0)+(c[l>>2]|0)<<1)>>1]|0);c[l>>2]=(c[l>>2]|0)+1}if((c[k>>2]|0)>(c[j>>2]|0)){c[j>>2]=c[k>>2];e=(c[n>>2]|0)+4|0;d=(c[h>>2]|0)+96+((((c[(c[g>>2]|0)+2324>>2]|0)-1-(c[m>>2]|0)&65535)<<16>>16)*5<<1)|0;b[e>>1]=b[d>>1]|0;b[e+2>>1]=b[d+2>>1]|0;b[e+4>>1]=b[d+4>>1]|0;b[e+6>>1]=b[d+6>>1]|0;b[e+8>>1]=b[d+8>>1]|0;c[c[n>>2]>>2]=c[(c[h>>2]|0)+((c[(c[g>>2]|0)+2324>>2]|0)-1-(c[m>>2]|0)<<2)>>2]<<8}c[m>>2]=(c[m>>2]|0)+1}d=(c[n>>2]|0)+4|0;b[d>>1]=0;b[d+2>>1]=0;b[d+4>>1]=0;b[d+6>>1]=0;b[d+8>>1]=0;b[(c[n>>2]|0)+4+4>>1]=c[j>>2];if((c[j>>2]|0)<11469){c[p>>2]=11744256;c[o>>2]=(c[p>>2]|0)/(((c[j>>2]|0)>1?c[j>>2]|0:1)|0)|0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=5)break a;d=(_(b[(c[n>>2]|0)+4+(c[l>>2]<<1)>>1]|0,(c[o>>2]&65535)<<16>>16)|0)>>10&65535;b[(c[n>>2]|0)+4+(c[l>>2]<<1)>>1]=d;c[l>>2]=(c[l>>2]|0)+1}}if((c[j>>2]|0)>15565){c[r>>2]=255016960;c[q>>2]=(c[r>>2]|0)/(((c[j>>2]|0)>1?c[j>>2]|0:1)|0)|0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=5)break a;d=(_(b[(c[n>>2]|0)+4+(c[l>>2]<<1)>>1]|0,(c[q>>2]&65535)<<16>>16)|0)>>14&65535;b[(c[n>>2]|0)+4+(c[l>>2]<<1)>>1]=d;c[l>>2]=(c[l>>2]|0)+1}}}else{c[c[n>>2]>>2]=((c[(c[g>>2]|0)+2316>>2]&65535)<<16>>16)*18<<8;d=(c[n>>2]|0)+4|0;b[d>>1]=0;b[d+2>>1]=0;b[d+4>>1]=0;b[d+6>>1]=0;b[d+8>>1]=0}while(0);df((c[n>>2]|0)+14|0,(c[h>>2]|0)+32+32|0,c[(c[g>>2]|0)+2340>>2]<<1|0)|0;b[(c[n>>2]|0)+68>>1]=c[(c[h>>2]|0)+136>>2];l=(c[n>>2]|0)+72|0;q=(c[h>>2]|0)+16+((c[(c[g>>2]|0)+2324>>2]|0)-2<<2)|0;c[l>>2]=c[q>>2];c[l+4>>2]=c[q+4>>2];c[(c[n>>2]|0)+88>>2]=c[(c[g>>2]|0)+2332>>2];c[(c[n>>2]|0)+84>>2]=c[(c[g>>2]|0)+2324>>2];i=f;return}function Ld(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[d>>2]|0)){e=32;i=b;return e|0}e=32-(32-(aa(c[d>>2]|0)|0))|0;i=b;return e|0}function Md(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)>(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0)|0}function Nd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+32|0;d=b+16|0;e=b+12|0;f=b+8|0;g=b+4|0;h=b;c[e>>2]=a;if((c[e>>2]|0)<=0){c[d>>2]=0;j=c[d>>2]|0;i=b;return j|0}ke(c[e>>2]|0,g,h);if(c[g>>2]&1)c[f>>2]=32768;else c[f>>2]=46214;c[f>>2]=c[f>>2]>>(c[g>>2]>>1);g=_(c[f>>2]>>16,(((c[h>>2]&65535)<<16>>16)*213&65535)<<16>>16)|0;c[f>>2]=(c[f>>2]|0)+(g+((_(c[f>>2]&65535,(((c[h>>2]&65535)<<16>>16)*213&65535)<<16>>16)|0)>>16));c[d>>2]=c[f>>2];j=c[d>>2]|0;i=b;return j|0}function Od(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;j=i;i=i+32|0;k=j+16|0;l=j+12|0;m=j+8|0;n=j+4|0;o=j;c[k>>2]=a;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;if((c[n>>2]|0)>0){h=(jb(c[m>>2]|0,(c[o>>2]|0)+(d[1472+(c[n>>2]|0)>>0]|0)|0,8)|0)&65535;b[c[k>>2]>>1]=h;b[c[l>>2]>>1]=(c[n>>2]|0)-(b[c[k>>2]>>1]|0);i=j;return}else{b[c[k>>2]>>1]=0;b[c[l>>2]>>1]=0;i=j;return}}function Pd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;d=i;i=i+64|0;e=d+44|0;f=d+36|0;g=d+12|0;h=d+8|0;j=d+32|0;k=d+40|0;l=d+48|0;m=d+16|0;n=d;o=d+24|0;p=d+4|0;q=d+28|0;r=d+20|0;c[f>>2]=a;c[g>>2]=b;c[r>>2]=(c[f>>2]|0)+((c[g>>2]&1)<<6);c[l>>2]=1073741824;c[h>>2]=(c[g>>2]|0)-1;while(1){if((c[h>>2]|0)<=0)break;if((c[(c[r>>2]|0)+(c[h>>2]<<2)>>2]|0)>16773022){s=5;break}if((c[(c[r>>2]|0)+(c[h>>2]<<2)>>2]|0)<-16773022){s=5;break}c[m>>2]=0-(c[(c[r>>2]|0)+(c[h>>2]<<2)>>2]<<7);g=c[m>>2]|0;b=c[m>>2]|0;a=of(g|0,((g|0)<0)<<31>>31|0,b|0,((b|0)<0)<<31>>31|0)|0;b=af(a|0,C|0,32)|0;c[n>>2]=1073741824-b;b=c[n>>2]|0;c[k>>2]=32-(ie((c[n>>2]|0)>0?b:0-b|0)|0);c[o>>2]=je(c[n>>2]|0,(c[k>>2]|0)+30|0)|0;b=c[l>>2]|0;a=c[n>>2]|0;g=of(b|0,((b|0)<0)<<31>>31|0,a|0,((a|0)<0)<<31>>31|0)|0;a=af(g|0,C|0,32)|0;c[l>>2]=a<<2;c[q>>2]=c[r>>2];c[r>>2]=(c[f>>2]|0)+((c[h>>2]&1)<<6);c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[h>>2]|0))break;a=c[(c[q>>2]|0)+(c[j>>2]<<2)>>2]|0;g=c[(c[q>>2]|0)+((c[h>>2]|0)-(c[j>>2]|0)-1<<2)>>2]|0;b=c[m>>2]|0;t=of(g|0,((g|0)<0)<<31>>31|0,b|0,((b|0)<0)<<31>>31|0)|0;b=af(t|0,C|0,30)|0;t=ef(b|0,C|0,1,0)|0;b=af(t|0,C|0,1)|0;c[p>>2]=a-b;b=(c[k>>2]|0)==1;a=c[p>>2]|0;t=c[o>>2]|0;g=of(a|0,((a|0)<0)<<31>>31|0,t|0,((t|0)<0)<<31>>31|0)|0;t=C;if(b){b=af(g|0,t|0,1)|0;a=C;u=c[p>>2]|0;v=c[o>>2]|0;w=of(u|0,((u|0)<0)<<31>>31|0,v|0,((v|0)<0)<<31>>31|0)|0;v=ef(b|0,a|0,w&1|0,0)|0;x=v;y=C}else{v=af(g|0,t|0,(c[k>>2]|0)-1|0)|0;t=ef(v|0,C|0,1,0)|0;v=af(t|0,C|0,1)|0;x=v;y=C}c[(c[r>>2]|0)+(c[j>>2]<<2)>>2]=x;c[j>>2]=(c[j>>2]|0)+1}c[h>>2]=(c[h>>2]|0)+-1}if((s|0)==5){c[e>>2]=0;z=c[e>>2]|0;i=d;return z|0}if((c[c[r>>2]>>2]|0)<=16773022?(c[c[r>>2]>>2]|0)>=-16773022:0){c[m>>2]=0-(c[c[r>>2]>>2]<<7);r=c[m>>2]|0;s=c[m>>2]|0;m=of(r|0,((r|0)<0)<<31>>31|0,s|0,((s|0)<0)<<31>>31|0)|0;s=af(m|0,C|0,32)|0;c[n>>2]=1073741824-s;s=c[l>>2]|0;m=c[n>>2]|0;n=of(s|0,((s|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;m=af(n|0,C|0,32)|0;c[l>>2]=m<<2;c[e>>2]=c[l>>2];z=c[e>>2]|0;i=d;return z|0}c[e>>2]=0;z=c[e>>2]|0;i=d;return z|0}function Qd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;f=e+20|0;g=e+16|0;h=e+12|0;j=e+8|0;k=e+4|0;l=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[c[f>>2]>>2]=65536;c[(c[f>>2]|0)+4>>2]=0-(c[c[g>>2]>>2]|0);c[j>>2]=1;while(1){if((c[j>>2]|0)>=(c[h>>2]|0))break;c[l>>2]=c[(c[g>>2]|0)+(c[j>>2]<<1<<2)>>2];d=c[(c[f>>2]|0)+((c[j>>2]|0)-1<<2)>>2]<<1;b=c[l>>2]|0;a=c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]|0;m=of(b|0,((b|0)<0)<<31>>31|0,a|0,((a|0)<0)<<31>>31|0)|0;a=af(m|0,C|0,15)|0;m=ef(a|0,C|0,1,0)|0;a=af(m|0,C|0,1)|0;c[(c[f>>2]|0)+((c[j>>2]|0)+1<<2)>>2]=d-a;c[k>>2]=c[j>>2];while(1){if((c[k>>2]|0)<=1)break;a=c[(c[f>>2]|0)+((c[k>>2]|0)-2<<2)>>2]|0;d=c[l>>2]|0;m=c[(c[f>>2]|0)+((c[k>>2]|0)-1<<2)>>2]|0;b=of(d|0,((d|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;m=af(b|0,C|0,15)|0;b=ef(m|0,C|0,1,0)|0;m=af(b|0,C|0,1)|0;b=(c[f>>2]|0)+(c[k>>2]<<2)|0;c[b>>2]=(c[b>>2]|0)+(a-m);c[k>>2]=(c[k>>2]|0)+-1}m=(c[f>>2]|0)+4|0;c[m>>2]=(c[m>>2]|0)-(c[l>>2]|0);c[j>>2]=(c[j>>2]|0)+1}i=e;return}function Rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)>(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0)|0}function Sd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)<(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0)|0}
+function Ia(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function Ja(){return i|0}function Ka(a){a=a|0;i=a}function La(a,b){a=a|0;b=b|0;i=a;j=b}function Ma(a,b){a=a|0;b=b|0;if(!n){n=a;o=b}}function Na(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function Oa(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Pa(a){a=a|0;C=a}function Qa(){return C|0}function Ra(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(_(1664525,c[d>>2]|0)|0)+1013904223|0;i=b;return a|0}function Sa(a,d,e,f,h,j,k,l,m){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;n=i;i=i+80|0;o=n+68|0;p=n+44|0;q=n+24|0;r=n+32|0;s=n+12|0;t=n+16|0;u=n+48|0;v=n+56|0;w=n+64|0;x=n+72|0;y=n+36|0;z=n+8|0;A=n;B=n+4|0;C=n+40|0;D=n+20|0;E=n+52|0;F=n+28|0;G=n+60|0;c[o>>2]=a;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;c[s>>2]=h;c[t>>2]=j;c[u>>2]=k;c[v>>2]=l;c[w>>2]=m;c[C>>2]=c[(c[o>>2]|0)+32>>2];c[y>>2]=_(c[u>>2]|0,c[(c[o>>2]|0)+44>>2]|0)|0;c[z>>2]=_(c[u>>2]|0,b[(c[C>>2]|0)+(c[t>>2]<<1)>>1]|0)|0;if((c[v>>2]|0)!=1){if((c[z>>2]|0)<((c[y>>2]|0)/(c[v>>2]|0)|0|0))H=c[z>>2]|0;else H=(c[y>>2]|0)/(c[v>>2]|0)|0;c[z>>2]=H}if(c[w>>2]|0){c[z>>2]=0;c[t>>2]=0;c[s>>2]=0}c[A>>2]=c[q>>2];c[B>>2]=(c[p>>2]|0)+((_(c[u>>2]|0,b[(c[C>>2]|0)+(c[s>>2]<<1)>>1]|0)|0)<<2);c[x>>2]=0;while(1){if((c[x>>2]|0)>=(_(c[u>>2]|0,b[(c[C>>2]|0)+(c[s>>2]<<1)>>1]|0)|0))break;p=c[A>>2]|0;c[A>>2]=p+4;g[p>>2]=0.0;c[x>>2]=(c[x>>2]|0)+1}c[x>>2]=c[s>>2];while(1){if((c[x>>2]|0)>=(c[t>>2]|0))break;c[D>>2]=_(c[u>>2]|0,b[(c[C>>2]|0)+(c[x>>2]<<1)>>1]|0)|0;c[E>>2]=_(c[u>>2]|0,b[(c[C>>2]|0)+((c[x>>2]|0)+1<<1)>>1]|0)|0;g[G>>2]=+g[(c[r>>2]|0)+(c[x>>2]<<2)>>2]+ +g[40+(c[x>>2]<<2)>>2];g[F>>2]=+X(+(+g[G>>2]*.6931471805599453));do{s=c[B>>2]|0;c[B>>2]=s+4;I=+g[s>>2]*+g[F>>2];s=c[A>>2]|0;c[A>>2]=s+4;g[s>>2]=I;s=(c[D>>2]|0)+1|0;c[D>>2]=s}while((s|0)<(c[E>>2]|0));c[x>>2]=(c[x>>2]|0)+1}bf((c[q>>2]|0)+(c[z>>2]<<2)|0,0,(c[y>>2]|0)-(c[z>>2]|0)<<2|0)|0;i=n;return}function Ta(a,e,f,h,j,k,l,m,n,o,p,q,r){a=a|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0,Y=0.0;s=i;i=i+112|0;t=s+100|0;u=s+92|0;v=s+44|0;w=s+48|0;x=s+84|0;y=s+16|0;z=s+20|0;A=s+24|0;B=s+28|0;C=s+32|0;D=s+80|0;E=s+88|0;F=s+96|0;G=s+104|0;H=s+52|0;I=s+56|0;J=s+60|0;K=s+64|0;L=s+68|0;M=s+12|0;N=s+8|0;P=s+72|0;Q=s+36|0;R=s+76|0;S=s+4|0;T=s;U=s+40|0;c[t>>2]=a;c[u>>2]=e;c[v>>2]=f;c[w>>2]=h;c[x>>2]=j;c[y>>2]=k;c[z>>2]=l;c[A>>2]=m;c[B>>2]=n;c[C>>2]=o;c[D>>2]=p;c[E>>2]=q;c[F>>2]=r;c[H>>2]=c[z>>2];while(1){if((c[H>>2]|0)>=(c[A>>2]|0))break;c[K>>2]=(b[(c[(c[t>>2]|0)+32>>2]|0)+((c[H>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[t>>2]|0)+32>>2]|0)+(c[H>>2]<<1)>>1]|0);z=Rc(1+(c[(c[E>>2]|0)+(c[H>>2]<<2)>>2]|0)|0,(b[(c[(c[t>>2]|0)+32>>2]|0)+((c[H>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[t>>2]|0)+32>>2]|0)+(c[H>>2]<<1)>>1]|0)|0)|0;c[N>>2]=z>>>(c[w>>2]|0);g[L>>2]=+X(+(+(c[N>>2]|0)*-.125*.6931471805599453))*.5;g[M>>2]=1.0/+O(+(+(c[K>>2]<<c[w>>2]|0)));c[G>>2]=0;do{c[U>>2]=0;z=_(c[G>>2]|0,c[(c[t>>2]|0)+8>>2]|0)|0;g[Q>>2]=+g[(c[C>>2]|0)+(z+(c[H>>2]|0)<<2)>>2];z=_(c[G>>2]|0,c[(c[t>>2]|0)+8>>2]|0)|0;g[R>>2]=+g[(c[D>>2]|0)+(z+(c[H>>2]|0)<<2)>>2];if((c[x>>2]|0)==1){if(+g[Q>>2]>+g[(c[C>>2]|0)+((c[(c[t>>2]|0)+8>>2]|0)+(c[H>>2]|0)<<2)>>2])V=+g[Q>>2];else V=+g[(c[C>>2]|0)+((c[(c[t>>2]|0)+8>>2]|0)+(c[H>>2]|0)<<2)>>2];g[Q>>2]=V;if(+g[R>>2]>+g[(c[D>>2]|0)+((c[(c[t>>2]|0)+8>>2]|0)+(c[H>>2]|0)<<2)>>2])W=+g[R>>2];else W=+g[(c[D>>2]|0)+((c[(c[t>>2]|0)+8>>2]|0)+(c[H>>2]|0)<<2)>>2];g[R>>2]=W}z=_(c[G>>2]|0,c[(c[t>>2]|0)+8>>2]|0)|0;g[S>>2]=+g[(c[B>>2]|0)+(z+(c[H>>2]|0)<<2)>>2]-(+g[Q>>2]<+g[R>>2]?+g[Q>>2]:+g[R>>2]);g[S>>2]=0.0>+g[S>>2]?0.0:+g[S>>2];g[T>>2]=+X(+(-+g[S>>2]*.6931471805599453))*2.0;if((c[w>>2]|0)==3)g[T>>2]=+g[T>>2]*1.4142135381698608;g[T>>2]=+g[L>>2]<+g[T>>2]?+g[L>>2]:+g[T>>2];g[T>>2]=+g[T>>2]*+g[M>>2];z=(c[u>>2]|0)+((_(c[G>>2]|0,c[y>>2]|0)|0)<<2)|0;c[P>>2]=z+(b[(c[(c[t>>2]|0)+32>>2]|0)+(c[H>>2]<<1)>>1]<<c[w>>2]<<2);c[J>>2]=0;while(1){if((c[J>>2]|0)>=(1<<c[w>>2]|0))break;z=_(c[H>>2]|0,c[x>>2]|0)|0;if(!(d[(c[v>>2]|0)+(z+(c[G>>2]|0))>>0]&1<<c[J>>2])){c[I>>2]=0;while(1){if((c[I>>2]|0)>=(c[K>>2]|0))break;c[F>>2]=Ra(c[F>>2]|0)|0;Y=+g[T>>2];g[(c[P>>2]|0)+((c[I>>2]<<c[w>>2])+(c[J>>2]|0)<<2)>>2]=(c[F>>2]&32768|0)!=0?Y:-Y;c[I>>2]=(c[I>>2]|0)+1}c[U>>2]=1}c[J>>2]=(c[J>>2]|0)+1}if(c[U>>2]|0)Ib(c[P>>2]|0,c[K>>2]<<c[w>>2],1.0);z=(c[G>>2]|0)+1|0;c[G>>2]=z}while((z|0)<(c[x>>2]|0));c[H>>2]=(c[H>>2]|0)+1}i=s;return}function Ua(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+32|0;f=e+8|0;h=e+16|0;j=e+20|0;k=e+24|0;l=e+4|0;m=e;n=e+12|0;c[f>>2]=a;c[h>>2]=b;c[j>>2]=d;c[h>>2]=c[h>>2]>>1;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[j>>2]|0))break;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[h>>2]|0))break;d=_(c[j>>2]<<1,c[l>>2]|0)|0;g[m>>2]=+g[(c[f>>2]|0)+(d+(c[k>>2]|0)<<2)>>2]*.7071067690849304;d=_(c[j>>2]|0,(c[l>>2]<<1)+1|0)|0;g[n>>2]=+g[(c[f>>2]|0)+(d+(c[k>>2]|0)<<2)>>2]*.7071067690849304;d=_(c[j>>2]<<1,c[l>>2]|0)|0;g[(c[f>>2]|0)+(d+(c[k>>2]|0)<<2)>>2]=+g[m>>2]+ +g[n>>2];d=_(c[j>>2]|0,(c[l>>2]<<1)+1|0)|0;g[(c[f>>2]|0)+(d+(c[k>>2]|0)<<2)>>2]=+g[m>>2]-+g[n>>2];c[l>>2]=(c[l>>2]|0)+1}c[k>>2]=(c[k>>2]|0)+1}i=e;return}function Va(e,f,h,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z){e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;w=w|0;x=x|0;y=y|0;z=z|0;var A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0;A=i;i=i+240|0;B=A+96|0;C=A+92|0;D=A+84|0;E=A+200|0;F=A+224|0;G=A+216|0;H=A+20|0;I=A+24|0;J=A+28|0;K=A+32|0;L=A+36|0;M=A+40|0;N=A+44|0;O=A+48|0;P=A+52|0;Q=A+56|0;R=A+60|0;S=A+64|0;T=A+68|0;U=A+72|0;V=A+196|0;W=A+204|0;X=A+212|0;Y=A+220|0;Z=A+228|0;$=A+232|0;aa=A+100|0;ba=A+104|0;ca=A+108|0;da=A+112|0;ea=A+116|0;fa=A+120|0;ga=A+124|0;ha=A+128|0;ia=A+168|0;ja=A+172|0;la=A+176|0;ma=A+180|0;na=A+184|0;oa=A+188|0;pa=A+16|0;qa=A+8|0;ra=A;sa=A+12|0;ta=A+4|0;va=A+192|0;wa=A+76|0;xa=A+80|0;ya=A+208|0;za=A+88|0;c[B>>2]=e;c[C>>2]=f;c[D>>2]=h;c[E>>2]=j;c[F>>2]=k;c[G>>2]=l;c[H>>2]=m;c[I>>2]=n;c[J>>2]=o;c[K>>2]=p;c[L>>2]=q;c[M>>2]=r;c[N>>2]=s;c[O>>2]=t;c[P>>2]=u;c[Q>>2]=v;c[R>>2]=w;c[S>>2]=x;c[T>>2]=y;c[U>>2]=z;c[X>>2]=c[(c[C>>2]|0)+32>>2];c[da>>2]=1;c[ea>>2]=(c[G>>2]|0)!=0?2:1;c[ga>>2]=((c[B>>2]|0)!=0^1)&1;c[ba>>2]=1<<c[S>>2];c[aa>>2]=(c[K>>2]|0)!=0?c[ba>>2]|0:1;c[fa>>2]=_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[D>>2]<<1)>>1]|0)|0;K=_(c[ba>>2]|0,b[(c[X>>2]|0)+((c[(c[C>>2]|0)+8>>2]|0)-1<<1)>>1]|0)|0;z=_(c[ea>>2]|0,K-(c[fa>>2]|0)|0)|0;c[ia>>2]=ua()|0;K=i;i=i+((1*(z<<2)|0)+15&-16)|0;c[Y>>2]=K;K=(c[Y>>2]|0)+((_(c[ba>>2]|0,b[(c[X>>2]|0)+((c[(c[C>>2]|0)+8>>2]|0)-1<<1)>>1]|0)|0)<<2)|0;c[Z>>2]=K+(0-(c[fa>>2]|0)<<2);c[$>>2]=(c[F>>2]|0)+((_(c[ba>>2]|0,b[(c[X>>2]|0)+((c[(c[C>>2]|0)+8>>2]|0)-1<<1)>>1]|0)|0)<<2);c[ca>>2]=0;c[ha+32>>2]=c[I>>2];c[ha+24>>2]=c[R>>2];c[ha>>2]=c[B>>2];c[ha+12>>2]=c[N>>2];c[ha+4>>2]=c[C>>2];c[ha+36>>2]=c[c[U>>2]>>2];c[ha+16>>2]=c[L>>2];c[V>>2]=c[D>>2];while(1){if((c[V>>2]|0)>=(c[E>>2]|0))break;c[oa>>2]=-1;c[ra>>2]=0;c[ha+8>>2]=c[V>>2];c[va>>2]=(c[V>>2]|0)==((c[E>>2]|0)-1|0)&1;c[pa>>2]=(c[F>>2]|0)+((_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[V>>2]<<1)>>1]|0)|0)<<2);if(c[G>>2]|0)c[qa>>2]=(c[G>>2]|0)+((_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[V>>2]<<1)>>1]|0)|0)<<2);else c[qa>>2]=0;B=_(c[ba>>2]|0,b[(c[X>>2]|0)+((c[V>>2]|0)+1<<1)>>1]|0)|0;c[ma>>2]=B-(_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[V>>2]<<1)>>1]|0)|0);c[ja>>2]=db(c[R>>2]|0)|0;if((c[V>>2]|0)!=(c[D>>2]|0))c[Q>>2]=(c[Q>>2]|0)-(c[ja>>2]|0);c[W>>2]=(c[P>>2]|0)-(c[ja>>2]|0)-1;c[ha+28>>2]=c[W>>2];if((c[V>>2]|0)<=((c[T>>2]|0)-1|0)){if(3<((c[T>>2]|0)-(c[V>>2]|0)|0))Aa=3;else Aa=(c[T>>2]|0)-(c[V>>2]|0)|0;c[na>>2]=Sc(c[Q>>2]|0,Aa)|0;if(((c[W>>2]|0)+1|0)<((c[(c[J>>2]|0)+(c[V>>2]<<2)>>2]|0)+(c[na>>2]|0)|0))Ba=(c[W>>2]|0)+1|0;else Ba=(c[(c[J>>2]|0)+(c[V>>2]<<2)>>2]|0)+(c[na>>2]|0)|0;do if(16383>=(Ba|0))if(((c[W>>2]|0)+1|0)<((c[(c[J>>2]|0)+(c[V>>2]<<2)>>2]|0)+(c[na>>2]|0)|0)){Ca=(c[W>>2]|0)+1|0;break}else{Ca=(c[(c[J>>2]|0)+(c[V>>2]<<2)>>2]|0)+(c[na>>2]|0)|0;break}else Ca=16383;while(0);do if(0<=(Ca|0)){if(((c[W>>2]|0)+1|0)<((c[(c[J>>2]|0)+(c[V>>2]<<2)>>2]|0)+(c[na>>2]|0)|0))Da=(c[W>>2]|0)+1|0;else Da=(c[(c[J>>2]|0)+(c[V>>2]<<2)>>2]|0)+(c[na>>2]|0)|0;if(16383>=(Da|0))if(((c[W>>2]|0)+1|0)<((c[(c[J>>2]|0)+(c[V>>2]<<2)>>2]|0)+(c[na>>2]|0)|0)){Ea=(c[W>>2]|0)+1|0;break}else{Ea=(c[(c[J>>2]|0)+(c[V>>2]<<2)>>2]|0)+(c[na>>2]|0)|0;break}else Ea=16383}else Ea=0;while(0);c[la>>2]=Ea}else c[la>>2]=0;if(((c[ga>>2]|0)!=0?(B=_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[V>>2]<<1)>>1]|0)|0,(B-(c[ma>>2]|0)|0)>=(_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[D>>2]<<1)>>1]|0)|0)):0)?(c[da>>2]|0)!=0|(c[ca>>2]|0)==0:0)c[ca>>2]=c[V>>2];c[ra>>2]=c[(c[O>>2]|0)+(c[V>>2]<<2)>>2];c[ha+20>>2]=c[ra>>2];if((c[V>>2]|0)>=(c[(c[C>>2]|0)+12>>2]|0)){c[pa>>2]=c[Y>>2];if(c[G>>2]|0)c[qa>>2]=c[Y>>2];c[$>>2]=0}if((c[V>>2]|0)==((c[E>>2]|0)-1|0))c[$>>2]=0;if((c[ca>>2]|0)!=0?(c[L>>2]|0)!=3|(c[aa>>2]|0)>1|(c[ra>>2]|0)<0:0){B=_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[ca>>2]<<1)>>1]|0)|0;if(0>(B-(c[fa>>2]|0)-(c[ma>>2]|0)|0))Fa=0;else{B=_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[ca>>2]<<1)>>1]|0)|0;Fa=B-(c[fa>>2]|0)-(c[ma>>2]|0)|0}c[oa>>2]=Fa;c[wa>>2]=c[ca>>2];do{B=c[ba>>2]|0;I=(c[wa>>2]|0)+-1|0;c[wa>>2]=I;K=_(B,b[(c[X>>2]|0)+(I<<1)>>1]|0)|0}while((K|0)>((c[oa>>2]|0)+(c[fa>>2]|0)|0));c[xa>>2]=(c[ca>>2]|0)-1;do{K=c[ba>>2]|0;I=(c[xa>>2]|0)+1|0;c[xa>>2]=I;B=_(K,b[(c[X>>2]|0)+(I<<1)>>1]|0)|0}while((B|0)<((c[oa>>2]|0)+(c[fa>>2]|0)+(c[ma>>2]|0)|0));c[ta>>2]=0;c[sa>>2]=0;c[ya>>2]=c[wa>>2];do{B=(_(c[ya>>2]|0,c[ea>>2]|0)|0)+0|0;c[sa>>2]=c[sa>>2]|d[(c[H>>2]|0)+B>>0];B=_(c[ya>>2]|0,c[ea>>2]|0)|0;c[ta>>2]=c[ta>>2]|d[(c[H>>2]|0)+(B+(c[ea>>2]|0)-1)>>0];B=(c[ya>>2]|0)+1|0;c[ya>>2]=B}while((B|0)<(c[xa>>2]|0))}else{B=(1<<c[aa>>2])-1|0;c[ta>>2]=B;c[sa>>2]=B}a:do if(((c[M>>2]|0)!=0?(c[V>>2]|0)==(c[N>>2]|0):0)?(c[M>>2]=0,(c[ga>>2]|0)!=0):0){c[za>>2]=0;while(1){B=_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[V>>2]<<1)>>1]|0)|0;if((c[za>>2]|0)>=(B-(c[fa>>2]|0)|0))break a;g[(c[Y>>2]|0)+(c[za>>2]<<2)>>2]=(+g[(c[Y>>2]|0)+(c[za>>2]<<2)>>2]+ +g[(c[Z>>2]|0)+(c[za>>2]<<2)>>2])*.5;c[za>>2]=(c[za>>2]|0)+1}}while(0);if(c[M>>2]|0){if((c[oa>>2]|0)!=-1)Ga=(c[Y>>2]|0)+(c[oa>>2]<<2)|0;else Ga=0;if(c[va>>2]|0)Ha=0;else{B=(c[Y>>2]|0)+((_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[V>>2]<<1)>>1]|0)|0)<<2)|0;Ha=B+(0-(c[fa>>2]|0)<<2)|0}c[sa>>2]=Tc(ha,c[pa>>2]|0,c[ma>>2]|0,(c[la>>2]|0)/2|0,c[aa>>2]|0,Ga,c[S>>2]|0,Ha,1.0,c[$>>2]|0,c[sa>>2]|0)|0;if((c[oa>>2]|0)!=-1)Ia=(c[Z>>2]|0)+(c[oa>>2]<<2)|0;else Ia=0;if(c[va>>2]|0)Ja=0;else{B=(c[Z>>2]|0)+((_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[V>>2]<<1)>>1]|0)|0)<<2)|0;Ja=B+(0-(c[fa>>2]|0)<<2)|0}c[ta>>2]=Tc(ha,c[qa>>2]|0,c[ma>>2]|0,(c[la>>2]|0)/2|0,c[aa>>2]|0,Ia,c[S>>2]|0,Ja,1.0,c[$>>2]|0,c[ta>>2]|0)|0}else{B=c[pa>>2]|0;if(c[qa>>2]|0){if((c[oa>>2]|0)!=-1)Ka=(c[Y>>2]|0)+(c[oa>>2]<<2)|0;else Ka=0;if(c[va>>2]|0)La=0;else{I=(c[Y>>2]|0)+((_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[V>>2]<<1)>>1]|0)|0)<<2)|0;La=I+(0-(c[fa>>2]|0)<<2)|0}c[sa>>2]=Uc(ha,B,c[qa>>2]|0,c[ma>>2]|0,c[la>>2]|0,c[aa>>2]|0,Ka,c[S>>2]|0,La,c[$>>2]|0,c[sa>>2]|c[ta>>2])|0}else{if((c[oa>>2]|0)!=-1)Ma=(c[Y>>2]|0)+(c[oa>>2]<<2)|0;else Ma=0;if(c[va>>2]|0)Na=0;else{I=(c[Y>>2]|0)+((_(c[ba>>2]|0,b[(c[X>>2]|0)+(c[V>>2]<<1)>>1]|0)|0)<<2)|0;Na=I+(0-(c[fa>>2]|0)<<2)|0}c[sa>>2]=Tc(ha,B,c[ma>>2]|0,c[la>>2]|0,c[aa>>2]|0,Ma,c[S>>2]|0,Na,1.0,c[$>>2]|0,c[sa>>2]|c[ta>>2])|0}c[ta>>2]=c[sa>>2]}B=(_(c[V>>2]|0,c[ea>>2]|0)|0)+0|0;a[(c[H>>2]|0)+B>>0]=c[sa>>2];B=_(c[V>>2]|0,c[ea>>2]|0)|0;a[(c[H>>2]|0)+(B+(c[ea>>2]|0)-1)>>0]=c[ta>>2];c[Q>>2]=(c[Q>>2]|0)+((c[(c[J>>2]|0)+(c[V>>2]<<2)>>2]|0)+(c[ja>>2]|0));c[da>>2]=(c[la>>2]|0)>(c[ma>>2]<<3|0)&1;c[V>>2]=(c[V>>2]|0)+1}c[c[U>>2]>>2]=c[ha+36>>2];ka(c[ia>>2]|0);i=A;return}function Wa(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;a=c[d>>2]|0;if((a|0)==8e3)c[e>>2]=6;else if((a|0)==48e3)c[e>>2]=1;else if((a|0)==24e3)c[e>>2]=2;else if((a|0)==16e3)c[e>>2]=3;else if((a|0)==12e3)c[e>>2]=4;else c[e>>2]=0;i=b;return c[e>>2]|0}function Xa(a,b,d,e,f,h,j,k,l,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;j=+j;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;o=i;i=i+96|0;p=o+44|0;q=o+40|0;r=o+4|0;s=o+84|0;t=o;u=o+16|0;v=o+20|0;w=o+24|0;x=o+64|0;y=o+72|0;z=o+80|0;A=o+88|0;B=o+92|0;C=o+48|0;D=o+52|0;E=o+56|0;F=o+8|0;G=o+60|0;H=o+28|0;I=o+12|0;J=o+32|0;K=o+68|0;L=o+36|0;M=o+76|0;c[p>>2]=a;c[q>>2]=b;c[r>>2]=d;c[s>>2]=e;c[t>>2]=f;g[u>>2]=h;g[v>>2]=j;c[w>>2]=k;c[x>>2]=l;c[y>>2]=m;c[z>>2]=n;if(+g[u>>2]==0.0&+g[v>>2]==0.0){if((c[q>>2]|0)==(c[p>>2]|0)){i=o;return}ff(c[p>>2]|0,c[q>>2]|0,(c[t>>2]<<2)+0|0)|0;i=o;return}g[B>>2]=+g[u>>2]*+g[2376+((c[w>>2]|0)*12|0)>>2];g[C>>2]=+g[u>>2]*+g[2376+((c[w>>2]|0)*12|0)+4>>2];g[D>>2]=+g[u>>2]*+g[2376+((c[w>>2]|0)*12|0)+8>>2];g[E>>2]=+g[v>>2]*+g[2376+((c[x>>2]|0)*12|0)>>2];g[F>>2]=+g[v>>2]*+g[2376+((c[x>>2]|0)*12|0)+4>>2];g[G>>2]=+g[v>>2]*+g[2376+((c[x>>2]|0)*12|0)+8>>2];g[I>>2]=+g[(c[q>>2]|0)+(0-(c[s>>2]|0)+1<<2)>>2];g[J>>2]=+g[(c[q>>2]|0)+(0-(c[s>>2]|0)<<2)>>2];g[K>>2]=+g[(c[q>>2]|0)+(0-(c[s>>2]|0)-1<<2)>>2];g[L>>2]=+g[(c[q>>2]|0)+(0-(c[s>>2]|0)-2<<2)>>2];if((+g[u>>2]==+g[v>>2]?(c[r>>2]|0)==(c[s>>2]|0):0)?(c[w>>2]|0)==(c[x>>2]|0):0)c[z>>2]=0;c[A>>2]=0;while(1){if((c[A>>2]|0)>=(c[z>>2]|0))break;g[H>>2]=+g[(c[q>>2]|0)+((c[A>>2]|0)-(c[s>>2]|0)+2<<2)>>2];g[M>>2]=+g[(c[y>>2]|0)+(c[A>>2]<<2)>>2]*+g[(c[y>>2]|0)+(c[A>>2]<<2)>>2];g[(c[p>>2]|0)+(c[A>>2]<<2)>>2]=+g[(c[q>>2]|0)+(c[A>>2]<<2)>>2]+(1.0-+g[M>>2])*+g[B>>2]*+g[(c[q>>2]|0)+((c[A>>2]|0)-(c[r>>2]|0)<<2)>>2]+(1.0-+g[M>>2])*+g[C>>2]*(+g[(c[q>>2]|0)+((c[A>>2]|0)-(c[r>>2]|0)+1<<2)>>2]+ +g[(c[q>>2]|0)+((c[A>>2]|0)-(c[r>>2]|0)-1<<2)>>2])+(1.0-+g[M>>2])*+g[D>>2]*(+g[(c[q>>2]|0)+((c[A>>2]|0)-(c[r>>2]|0)+2<<2)>>2]+ +g[(c[q>>2]|0)+((c[A>>2]|0)-(c[r>>2]|0)-2<<2)>>2])+ +g[M>>2]*+g[E>>2]*+g[J>>2]+ +g[M>>2]*+g[F>>2]*(+g[I>>2]+ +g[K>>2])+ +g[M>>2]*+g[G>>2]*(+g[H>>2]+ +g[L>>2]);g[L>>2]=+g[K>>2];g[K>>2]=+g[J>>2];g[J>>2]=+g[I>>2];g[I>>2]=+g[H>>2];c[A>>2]=(c[A>>2]|0)+1}if(!(+g[v>>2]==0.0)){Vc((c[p>>2]|0)+(c[A>>2]<<2)|0,(c[q>>2]|0)+(c[A>>2]<<2)|0,c[s>>2]|0,(c[t>>2]|0)-(c[A>>2]|0)|0,+g[E>>2],+g[F>>2],+g[G>>2]);i=o;return}if((c[q>>2]|0)==(c[p>>2]|0)){i=o;return}ff((c[p>>2]|0)+(c[z>>2]<<2)|0,(c[q>>2]|0)+(c[z>>2]<<2)|0,((c[t>>2]|0)-(c[z>>2]|0)<<2)+0|0)|0;i=o;return}function Ya(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;j=h+20|0;k=h+16|0;l=h+12|0;m=h+8|0;n=h+4|0;o=h;c[j>>2]=a;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[(c[j>>2]|0)+8>>2]|0))break;c[o>>2]=(b[(c[(c[j>>2]|0)+32>>2]|0)+((c[n>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[j>>2]|0)+32>>2]|0)+(c[n>>2]<<1)>>1]|0)<<c[l>>2];g=_(c[(c[j>>2]|0)+8>>2]|0,(c[l>>2]<<1)+(c[m>>2]|0)-1|0)|0;f=_((d[(c[(c[j>>2]|0)+92+12>>2]|0)+(g+(c[n>>2]|0))>>0]|0)+64|0,c[m>>2]|0)|0;g=(_(f,c[o>>2]|0)|0)>>2;c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]=g;c[n>>2]=(c[n>>2]|0)+1}i=h;return}function Za(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=ub(48e3,960,0)|0;a=Wc(c[e>>2]|0,c[d>>2]|0)|0;i=b;return a|0}function _a(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+16|0;g=e+12|0;h=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;d=c[g>>2]|0;b=ub(48e3,960,0)|0;c[k>>2]=Xc(d,b,c[j>>2]|0)|0;if(c[k>>2]|0){c[f>>2]=c[k>>2];l=c[f>>2]|0;i=e;return l|0}k=Wa(c[h>>2]|0)|0;c[(c[g>>2]|0)+16>>2]=k;if(!(c[(c[g>>2]|0)+16>>2]|0)){c[f>>2]=-1;l=c[f>>2]|0;i=e;return l|0}else{c[f>>2]=0;l=c[f>>2]|0;i=e;return l|0}return 0}function $a(a,d,e,f,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0.0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0.0,Ca=0.0,Da=0;l=i;i=i+288|0;m=l+164|0;n=l+148|0;o=l+4|0;p=l+8|0;q=l+144|0;r=l+272|0;s=l+160|0;t=l+24|0;u=l+28|0;v=l+32|0;w=l+36|0;x=l+40|0;y=l+44|0;z=l+48|0;A=l+96|0;B=l+104|0;C=l+112|0;D=l+116|0;E=l+120|0;F=l+124|0;G=l+128|0;H=l+132|0;I=l+136|0;J=l+140|0;K=l+244|0;L=l+252|0;M=l+260|0;N=l+268|0;O=l+276|0;P=l+280|0;Q=l+168|0;R=l+172|0;S=l+176|0;T=l+180|0;U=l+184|0;V=l+188|0;W=l+192|0;X=l+196|0;Y=l+200|0;Z=l+204|0;$=l+208|0;aa=l+212|0;ba=l+216|0;ca=l+220|0;da=l+224|0;ea=l+228|0;fa=l+232|0;ga=l+236|0;ha=l+16|0;ia=l;ja=l+12|0;la=l+240|0;ma=l+248|0;na=l+152|0;oa=l+256|0;pa=l+20|0;qa=l+156|0;ra=l+264|0;c[n>>2]=a;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[K>>2]=c[(c[n>>2]|0)+8>>2];c[U>>2]=0;c[V>>2]=0;c[ba>>2]=0;c[da>>2]=c[(c[n>>2]|0)+12>>2];c[ea>>2]=c[c[n>>2]>>2];c[fa>>2]=c[(c[ea>>2]|0)+8>>2];c[ga>>2]=c[(c[ea>>2]|0)+4>>2];c[ha>>2]=c[(c[ea>>2]|0)+32>>2];c[N>>2]=c[(c[n>>2]|0)+20>>2];c[O>>2]=c[(c[n>>2]|0)+24>>2];c[r>>2]=_(c[r>>2]|0,c[(c[n>>2]|0)+16>>2]|0)|0;c[C>>2]=(c[n>>2]|0)+84+((_(2048+(c[ga>>2]|0)|0,c[K>>2]|0)|0)<<2);c[D>>2]=(c[C>>2]|0)+((c[K>>2]|0)*24<<2);c[E>>2]=(c[D>>2]|0)+(c[fa>>2]<<1<<2);c[F>>2]=(c[E>>2]|0)+(c[fa>>2]<<1<<2);c[G>>2]=(c[F>>2]|0)+(c[fa>>2]<<1<<2);c[L>>2]=0;while(1){if((c[L>>2]|0)>(c[(c[ea>>2]|0)+36>>2]|0))break;if((c[(c[ea>>2]|0)+44>>2]<<c[L>>2]|0)==(c[r>>2]|0))break;c[L>>2]=(c[L>>2]|0)+1}if((c[L>>2]|0)>(c[(c[ea>>2]|0)+36>>2]|0)){c[m>>2]=-1;sa=c[m>>2]|0;i=l;return sa|0}c[M>>2]=1<<c[L>>2];if((c[p>>2]|0)<0|(c[p>>2]|0)>1275|(c[q>>2]|0)==0){c[m>>2]=-1;sa=c[m>>2]|0;i=l;return sa|0}c[w>>2]=_(c[M>>2]|0,c[(c[ea>>2]|0)+44>>2]|0)|0;c[u>>2]=0;do{C=(c[n>>2]|0)+84+((_(c[u>>2]|0,2048+(c[ga>>2]|0)|0)|0)<<2)|0;c[A+(c[u>>2]<<2)>>2]=C;c[B+(c[u>>2]<<2)>>2]=(c[A+(c[u>>2]<<2)>>2]|0)+8192+(0-(c[w>>2]|0)<<2);C=(c[u>>2]|0)+1|0;c[u>>2]=C}while((C|0)<(c[K>>2]|0));c[P>>2]=c[O>>2];if((c[P>>2]|0)>(c[(c[ea>>2]|0)+12>>2]|0))c[P>>2]=c[(c[ea>>2]|0)+12>>2];if((c[o>>2]|0)==0|(c[p>>2]|0)<=1){Yc(c[n>>2]|0,c[w>>2]|0,c[L>>2]|0);Zc(B,c[q>>2]|0,c[w>>2]|0,c[K>>2]|0,c[(c[n>>2]|0)+16>>2]|0,(c[ea>>2]|0)+16|0,(c[n>>2]|0)+76|0,c[t>>2]|0);c[m>>2]=(c[r>>2]|0)/(c[(c[n>>2]|0)+16>>2]|0)|0;sa=c[m>>2]|0;i=l;return sa|0}if(!(c[s>>2]|0)){eb(z,c[o>>2]|0,c[p>>2]|0);c[s>>2]=z}a:do if((c[da>>2]|0)==1){c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[fa>>2]|0))break a;if(+g[(c[D>>2]|0)+(c[v>>2]<<2)>>2]>+g[(c[D>>2]|0)+((c[fa>>2]|0)+(c[v>>2]|0)<<2)>>2])ta=+g[(c[D>>2]|0)+(c[v>>2]<<2)>>2];else ta=+g[(c[D>>2]|0)+((c[fa>>2]|0)+(c[v>>2]|0)<<2)>>2];g[(c[D>>2]|0)+(c[v>>2]<<2)>>2]=ta;c[v>>2]=(c[v>>2]|0)+1}}while(0);c[W>>2]=c[p>>2]<<3;c[Y>>2]=_c(c[s>>2]|0)|0;do if((c[Y>>2]|0)<(c[W>>2]|0))if((c[Y>>2]|0)==1){c[ca>>2]=ib(c[s>>2]|0,15)|0;break}else{c[ca>>2]=0;break}else c[ca>>2]=1;while(0);if(c[ca>>2]|0){c[Y>>2]=c[p>>2]<<3;z=c[Y>>2]|0;o=z-(_c(c[s>>2]|0)|0)|0;z=(c[s>>2]|0)+20|0;c[z>>2]=(c[z>>2]|0)+o}g[T>>2]=0.0;c[S>>2]=0;c[$>>2]=0;if((c[N>>2]|0)==0?((c[Y>>2]|0)+16|0)<=(c[W>>2]|0):0){if(ib(c[s>>2]|0,1)|0){c[ja>>2]=kb(c[s>>2]|0,6)|0;o=16<<c[ja>>2];c[S>>2]=o+(lb(c[s>>2]|0,4+(c[ja>>2]|0)|0)|0)-1;c[ia>>2]=lb(c[s>>2]|0,3)|0;ja=(_c(c[s>>2]|0)|0)+2|0;if((ja|0)<=(c[W>>2]|0))c[$>>2]=jb(c[s>>2]|0,2416,2)|0;g[T>>2]=+((c[ia>>2]|0)+1|0)*.09375}c[Y>>2]=_c(c[s>>2]|0)|0}if((c[L>>2]|0)>0?((c[Y>>2]|0)+3|0)<=(c[W>>2]|0):0){c[I>>2]=ib(c[s>>2]|0,3)|0;c[Y>>2]=_c(c[s>>2]|0)|0}else c[I>>2]=0;if(c[I>>2]|0)c[H>>2]=c[M>>2];else c[H>>2]=0;if(((c[Y>>2]|0)+3|0)<=(c[W>>2]|0))va=ib(c[s>>2]|0,3)|0;else va=0;c[J>>2]=va;Cb(c[ea>>2]|0,c[N>>2]|0,c[O>>2]|0,c[D>>2]|0,c[J>>2]|0,c[s>>2]|0,c[da>>2]|0,c[L>>2]|0);J=c[fa>>2]|0;c[la>>2]=ua()|0;va=i;i=i+((1*(J<<2)|0)+15&-16)|0;$c(c[N>>2]|0,c[O>>2]|0,c[I>>2]|0,va,c[L>>2]|0,c[s>>2]|0);c[Y>>2]=_c(c[s>>2]|0)|0;c[x>>2]=2;if(((c[Y>>2]|0)+4|0)<=(c[W>>2]|0))c[x>>2]=jb(c[s>>2]|0,2424,5)|0;J=i;i=i+((1*(c[fa>>2]<<2)|0)+15&-16)|0;Ya(c[ea>>2]|0,J,c[L>>2]|0,c[da>>2]|0);ia=i;i=i+((1*(c[fa>>2]<<2)|0)+15&-16)|0;c[Z>>2]=6;c[W>>2]=c[W>>2]<<3;c[Y>>2]=db(c[s>>2]|0)|0;c[v>>2]=c[N>>2];while(1){if((c[v>>2]|0)>=(c[O>>2]|0))break;ja=_(c[da>>2]|0,(b[(c[ha>>2]|0)+((c[v>>2]|0)+1<<1)>>1]|0)-(b[(c[ha>>2]|0)+(c[v>>2]<<1)>>1]|0)|0)|0;c[ma>>2]=ja<<c[L>>2];ja=c[ma>>2]|0;if((c[ma>>2]<<3|0)<((48>(c[ma>>2]|0)?48:c[ma>>2]|0)|0))wa=ja<<3;else wa=48>(ja|0)?48:c[ma>>2]|0;c[na>>2]=wa;c[oa>>2]=c[Z>>2];c[pa>>2]=0;while(1){if(((c[Y>>2]|0)+(c[oa>>2]<<3)|0)>=(c[W>>2]|0))break;if((c[pa>>2]|0)>=(c[J+(c[v>>2]<<2)>>2]|0))break;c[qa>>2]=ib(c[s>>2]|0,c[oa>>2]|0)|0;c[Y>>2]=db(c[s>>2]|0)|0;if(!(c[qa>>2]|0))break;c[pa>>2]=(c[pa>>2]|0)+(c[na>>2]|0);c[W>>2]=(c[W>>2]|0)-(c[na>>2]|0);c[oa>>2]=1}c[ia+(c[v>>2]<<2)>>2]=c[pa>>2];if((c[pa>>2]|0)>0)c[Z>>2]=2>((c[Z>>2]|0)-1|0)?2:(c[Z>>2]|0)-1|0;c[v>>2]=(c[v>>2]|0)+1}Z=i;i=i+((1*(c[fa>>2]<<2)|0)+15&-16)|0;if(((c[Y>>2]|0)+48|0)<=(c[W>>2]|0))xa=jb(c[s>>2]|0,2432,7)|0;else xa=5;c[R>>2]=xa;xa=c[p>>2]<<3<<3;c[y>>2]=xa-(db(c[s>>2]|0)|0)-1;if((c[I>>2]|0)!=0&(c[L>>2]|0)>=2)ya=(c[y>>2]|0)>=((c[L>>2]|0)+2<<3|0);else ya=0;c[aa>>2]=ya?8:0;c[y>>2]=(c[y>>2]|0)-(c[aa>>2]|0);ya=i;i=i+((1*(c[fa>>2]<<2)|0)+15&-16)|0;xa=i;i=i+((1*(c[fa>>2]<<2)|0)+15&-16)|0;c[Q>>2]=Fb(c[ea>>2]|0,c[N>>2]|0,c[O>>2]|0,ia,J,c[R>>2]|0,U,V,c[y>>2]|0,X,ya,Z,xa,c[da>>2]|0,c[L>>2]|0,c[s>>2]|0,0,0,0)|0;Db(c[ea>>2]|0,c[N>>2]|0,c[O>>2]|0,c[D>>2]|0,Z,c[s>>2]|0,c[da>>2]|0);c[u>>2]=0;do{ff(c[A+(c[u>>2]<<2)>>2]|0,(c[A+(c[u>>2]<<2)>>2]|0)+(c[w>>2]<<2)|0,(2048-(c[w>>2]|0)+((c[ga>>2]|0)/2|0)<<2)+0|0)|0;y=(c[u>>2]|0)+1|0;c[u>>2]=y}while((y|0)<(c[K>>2]|0));A=_(c[da>>2]|0,c[fa>>2]|0)|0;y=i;i=i+((1*A|0)+15&-16)|0;A=(_(c[da>>2]|0,c[w>>2]|0)|0)<<2;R=i;i=i+((1*A|0)+15&-16)|0;Va(0,c[ea>>2]|0,c[N>>2]|0,c[O>>2]|0,R,(c[da>>2]|0)==2?R+(c[w>>2]<<2)|0:0,y,0,ya,c[H>>2]|0,c[x>>2]|0,c[V>>2]|0,c[U>>2]|0,va,(c[p>>2]<<6)-(c[aa>>2]|0)|0,c[X>>2]|0,c[s>>2]|0,c[L>>2]|0,c[Q>>2]|0,(c[n>>2]|0)+36|0);if((c[aa>>2]|0)>0)c[ba>>2]=lb(c[s>>2]|0,1)|0;aa=c[ea>>2]|0;Q=c[N>>2]|0;X=c[O>>2]|0;va=c[D>>2]|0;U=c[p>>2]<<3;V=U-(_c(c[s>>2]|0)|0)|0;Eb(aa,Q,X,va,Z,xa,V,c[s>>2]|0,c[da>>2]|0);if(c[ba>>2]|0)Ta(c[ea>>2]|0,R,y,c[L>>2]|0,c[da>>2]|0,c[w>>2]|0,c[N>>2]|0,c[O>>2]|0,c[D>>2]|0,c[E>>2]|0,c[F>>2]|0,ya,c[(c[n>>2]|0)+36>>2]|0);b:do if(c[ca>>2]|0){c[v>>2]=0;while(1){if((c[v>>2]|0)>=(_(c[da>>2]|0,c[fa>>2]|0)|0))break b;g[(c[D>>2]|0)+(c[v>>2]<<2)>>2]=-28.0;c[v>>2]=(c[v>>2]|0)+1}}while(0);ad(c[ea>>2]|0,R,B,c[D>>2]|0,c[N>>2]|0,c[P>>2]|0,c[da>>2]|0,c[K>>2]|0,c[I>>2]|0,c[L>>2]|0,c[(c[n>>2]|0)+16>>2]|0,c[ca>>2]|0);c[u>>2]=0;do{if((c[(c[n>>2]|0)+52>>2]|0)>15)za=c[(c[n>>2]|0)+52>>2]|0;else za=15;c[(c[n>>2]|0)+52>>2]=za;if((c[(c[n>>2]|0)+56>>2]|0)>15)Aa=c[(c[n>>2]|0)+56>>2]|0;else Aa=15;c[(c[n>>2]|0)+56>>2]=Aa;Xa(c[B+(c[u>>2]<<2)>>2]|0,c[B+(c[u>>2]<<2)>>2]|0,c[(c[n>>2]|0)+56>>2]|0,c[(c[n>>2]|0)+52>>2]|0,c[(c[ea>>2]|0)+44>>2]|0,+g[(c[n>>2]|0)+64>>2],+g[(c[n>>2]|0)+60>>2],c[(c[n>>2]|0)+72>>2]|0,c[(c[n>>2]|0)+68>>2]|0,c[(c[ea>>2]|0)+60>>2]|0,c[ga>>2]|0);if(c[L>>2]|0)Xa((c[B+(c[u>>2]<<2)>>2]|0)+(c[(c[ea>>2]|0)+44>>2]<<2)|0,(c[B+(c[u>>2]<<2)>>2]|0)+(c[(c[ea>>2]|0)+44>>2]<<2)|0,c[(c[n>>2]|0)+52>>2]|0,c[S>>2]|0,(c[w>>2]|0)-(c[(c[ea>>2]|0)+44>>2]|0)|0,+g[(c[n>>2]|0)+60>>2],+g[T>>2],c[(c[n>>2]|0)+68>>2]|0,c[$>>2]|0,c[(c[ea>>2]|0)+60>>2]|0,c[ga>>2]|0);ca=(c[u>>2]|0)+1|0;c[u>>2]=ca}while((ca|0)<(c[K>>2]|0));c[(c[n>>2]|0)+56>>2]=c[(c[n>>2]|0)+52>>2];g[(c[n>>2]|0)+64>>2]=+g[(c[n>>2]|0)+60>>2];c[(c[n>>2]|0)+72>>2]=c[(c[n>>2]|0)+68>>2];c[(c[n>>2]|0)+52>>2]=c[S>>2];g[(c[n>>2]|0)+60>>2]=+g[T>>2];c[(c[n>>2]|0)+68>>2]=c[$>>2];if(c[L>>2]|0){c[(c[n>>2]|0)+56>>2]=c[(c[n>>2]|0)+52>>2];g[(c[n>>2]|0)+64>>2]=+g[(c[n>>2]|0)+60>>2];c[(c[n>>2]|0)+72>>2]=c[(c[n>>2]|0)+68>>2]}if((c[da>>2]|0)==1)df((c[D>>2]|0)+(c[fa>>2]<<2)|0,c[D>>2]|0,(c[fa>>2]<<2)+0|0)|0;c:do if(c[I>>2]|0){c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[fa>>2]<<1|0))break c;da=c[v>>2]|0;if(+g[(c[E>>2]|0)+(c[v>>2]<<2)>>2]<+g[(c[D>>2]|0)+(c[v>>2]<<2)>>2])Ba=+g[(c[E>>2]|0)+(da<<2)>>2];else Ba=+g[(c[D>>2]|0)+(da<<2)>>2];g[(c[E>>2]|0)+(c[v>>2]<<2)>>2]=Ba;c[v>>2]=(c[v>>2]|0)+1}}else{df(c[F>>2]|0,c[E>>2]|0,(c[fa>>2]<<1<<2)+0|0)|0;df(c[E>>2]|0,c[D>>2]|0,(c[fa>>2]<<1<<2)+0|0)|0;c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[fa>>2]<<1|0))break c;da=c[v>>2]|0;if(+g[(c[G>>2]|0)+(c[v>>2]<<2)>>2]+ +(c[M>>2]|0)*1.0000000474974513e-03<+g[(c[D>>2]|0)+(c[v>>2]<<2)>>2])Ca=+g[(c[G>>2]|0)+(da<<2)>>2]+ +(c[M>>2]|0)*1.0000000474974513e-03;else Ca=+g[(c[D>>2]|0)+(da<<2)>>2];g[(c[G>>2]|0)+(c[v>>2]<<2)>>2]=Ca;c[v>>2]=(c[v>>2]|0)+1}}while(0);c[u>>2]=0;do{c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[N>>2]|0))break;G=_(c[u>>2]|0,c[fa>>2]|0)|0;g[(c[D>>2]|0)+(G+(c[v>>2]|0)<<2)>>2]=0.0;G=_(c[u>>2]|0,c[fa>>2]|0)|0;g[(c[F>>2]|0)+(G+(c[v>>2]|0)<<2)>>2]=-28.0;G=_(c[u>>2]|0,c[fa>>2]|0)|0;g[(c[E>>2]|0)+(G+(c[v>>2]|0)<<2)>>2]=-28.0;c[v>>2]=(c[v>>2]|0)+1}c[v>>2]=c[O>>2];while(1){Da=c[u>>2]|0;if((c[v>>2]|0)>=(c[fa>>2]|0))break;G=_(Da,c[fa>>2]|0)|0;g[(c[D>>2]|0)+(G+(c[v>>2]|0)<<2)>>2]=0.0;G=_(c[u>>2]|0,c[fa>>2]|0)|0;g[(c[F>>2]|0)+(G+(c[v>>2]|0)<<2)>>2]=-28.0;G=_(c[u>>2]|0,c[fa>>2]|0)|0;g[(c[E>>2]|0)+(G+(c[v>>2]|0)<<2)>>2]=-28.0;c[v>>2]=(c[v>>2]|0)+1}G=Da+1|0;c[u>>2]=G}while((G|0)<2);c[(c[n>>2]|0)+36>>2]=c[(c[s>>2]|0)+28>>2];Zc(B,c[q>>2]|0,c[w>>2]|0,c[K>>2]|0,c[(c[n>>2]|0)+16>>2]|0,(c[ea>>2]|0)+16|0,(c[n>>2]|0)+76|0,c[t>>2]|0);c[(c[n>>2]|0)+48>>2]=0;t=_c(c[s>>2]|0)|0;if((t|0)>(c[p>>2]<<3|0)){c[m>>2]=-3;c[ra>>2]=1}else{if(bd(c[s>>2]|0)|0)c[(c[n>>2]|0)+40>>2]=1;c[m>>2]=(c[r>>2]|0)/(c[(c[n>>2]|0)+16>>2]|0)|0;c[ra>>2]=1}ka(c[la>>2]|0);sa=c[m>>2]|0;i=l;return sa|0}function ab(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;e=i;i=i+96|0;f=e+32|0;h=e+24|0;j=e+44|0;k=e+64|0;l=e+12|0;m=e+40|0;n=e+48|0;o=e+56|0;p=e+80|0;q=e+84|0;r=e+8|0;s=e+4|0;t=e;u=e+36|0;v=e+16|0;w=e+20|0;x=e+52|0;y=e+28|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;a:do switch(c[j>>2]|0){case 10010:{d=(c[k>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[k>>2]=d+4;c[l>>2]=b;if((c[l>>2]|0)>=0?(c[l>>2]|0)<(c[(c[c[h>>2]>>2]|0)+8>>2]|0):0){c[(c[h>>2]|0)+20>>2]=c[l>>2];z=24}else z=25;break}case 10012:{b=(c[k>>2]|0)+(4-1)&~(4-1);d=c[b>>2]|0;c[k>>2]=b+4;c[m>>2]=d;if((c[m>>2]|0)>=1?(c[m>>2]|0)<=(c[(c[c[h>>2]>>2]|0)+8>>2]|0):0){c[(c[h>>2]|0)+24>>2]=c[m>>2];z=24}else z=25;break}case 4028:{c[r>>2]=(c[h>>2]|0)+84+((_(2048+(c[(c[h>>2]|0)+4>>2]|0)|0,c[(c[h>>2]|0)+8>>2]|0)|0)<<2);c[s>>2]=(c[r>>2]|0)+((c[(c[h>>2]|0)+8>>2]|0)*24<<2);c[t>>2]=(c[s>>2]|0)+(c[(c[c[h>>2]>>2]|0)+8>>2]<<1<<2);c[u>>2]=(c[t>>2]|0)+(c[(c[c[h>>2]>>2]|0)+8>>2]<<1<<2);bf((c[h>>2]|0)+36|0,0,(Wc(c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+8>>2]|0)|0)-((c[h>>2]|0)+36-(c[h>>2]|0))|0)|0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[c[h>>2]>>2]|0)+8>>2]<<1|0)){z=24;break a}g[(c[u>>2]|0)+(c[q>>2]<<2)>>2]=-28.0;g[(c[t>>2]|0)+(c[q>>2]<<2)>>2]=-28.0;c[q>>2]=(c[q>>2]|0)+1}break}case 4033:{d=(c[k>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[k>>2]=d+4;c[v>>2]=b;if(!(c[v>>2]|0))z=25;else{c[c[v>>2]>>2]=c[(c[h>>2]|0)+52>>2];z=24}break}case 10015:{b=(c[k>>2]|0)+(4-1)&~(4-1);d=c[b>>2]|0;c[k>>2]=b+4;c[w>>2]=d;if(!(c[w>>2]|0))z=25;else{c[c[w>>2]>>2]=c[c[h>>2]>>2];z=24}break}case 10016:{d=(c[k>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[k>>2]=d+4;c[x>>2]=b;c[(c[h>>2]|0)+28>>2]=c[x>>2];z=24;break}case 4031:{b=(c[k>>2]|0)+(4-1)&~(4-1);d=c[b>>2]|0;c[k>>2]=b+4;c[y>>2]=d;if(!(c[y>>2]|0))z=25;else{c[c[y>>2]>>2]=c[(c[h>>2]|0)+36>>2];z=24}break}case 10008:{d=(c[k>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[k>>2]=d+4;c[n>>2]=b;if((c[n>>2]|0)<1|(c[n>>2]|0)>2)z=25;else{c[(c[h>>2]|0)+12>>2]=c[n>>2];z=24}break}case 10007:{b=(c[k>>2]|0)+(4-1)&~(4-1);d=c[b>>2]|0;c[k>>2]=b+4;c[o>>2]=d;if(!(c[o>>2]|0))z=25;else{c[c[o>>2]>>2]=c[(c[h>>2]|0)+40>>2];c[(c[h>>2]|0)+40>>2]=0;z=24}break}case 4027:{d=(c[k>>2]|0)+(4-1)&~(4-1);b=c[d>>2]|0;c[k>>2]=d+4;c[p>>2]=b;if(!(c[p>>2]|0))z=25;else{c[c[p>>2]>>2]=(c[(c[h>>2]|0)+4>>2]|0)/(c[(c[h>>2]|0)+16>>2]|0)|0;z=24}break}default:{c[f>>2]=-5;A=c[f>>2]|0;i=e;return A|0}}while(0);if((z|0)==24){c[f>>2]=0;A=c[f>>2]|0;i=e;return A|0}else if((z|0)==25){c[f>>2]=-1;A=c[f>>2]|0;i=e;return A|0}return 0}function bb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;e=c[k>>2]|0;k=cd(c[h>>2]|0,c[g>>2]|0)|0;ob(e,k,(c[(c[2448+(((c[h>>2]|0)<(c[j>>2]|0)?c[h>>2]|0:c[j>>2]|0)<<2)>>2]|0)+(((c[h>>2]|0)>(c[j>>2]|0)?c[h>>2]|0:c[j>>2]|0)<<2)>>2]|0)+(c[(c[2448+(((c[h>>2]|0)<((c[j>>2]|0)+1|0)?c[h>>2]|0:(c[j>>2]|0)+1|0)<<2)>>2]|0)+(((c[h>>2]|0)>((c[j>>2]|0)+1|0)?c[h>>2]|0:(c[j>>2]|0)+1|0)<<2)>>2]|0)|0);i=f;return}function cb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0.0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;e=c[h>>2]|0;d=c[j>>2]|0;b=kb(c[k>>2]|0,(c[(c[2448+(((c[h>>2]|0)<(c[j>>2]|0)?c[h>>2]|0:c[j>>2]|0)<<2)>>2]|0)+(((c[h>>2]|0)>(c[j>>2]|0)?c[h>>2]|0:c[j>>2]|0)<<2)>>2]|0)+(c[(c[2448+(((c[h>>2]|0)<((c[j>>2]|0)+1|0)?c[h>>2]|0:(c[j>>2]|0)+1|0)<<2)>>2]|0)+(((c[h>>2]|0)>((c[j>>2]|0)+1|0)?c[h>>2]|0:(c[j>>2]|0)+1|0)<<2)>>2]|0)|0)|0;l=+dd(e,d,b,c[g>>2]|0);i=f;return +l}function db(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;i=i+32|0;d=b+16|0;e=b+12|0;f=b+8|0;g=b+4|0;h=b;c[d>>2]=a;c[e>>2]=c[(c[d>>2]|0)+20>>2]<<3;c[g>>2]=32-(aa(c[(c[d>>2]|0)+28>>2]|0)|0);c[f>>2]=(c[(c[d>>2]|0)+28>>2]|0)>>>((c[g>>2]|0)-16|0);c[h>>2]=((c[f>>2]|0)>>>12)-8;c[h>>2]=(c[h>>2]|0)+((c[f>>2]|0)>>>0>(c[2512+(c[h>>2]<<2)>>2]|0)>>>0&1);c[g>>2]=(c[g>>2]<<3)+(c[h>>2]|0);i=b;return (c[e>>2]|0)-(c[g>>2]|0)|0}function eb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[c[f>>2]>>2]=c[g>>2];c[(c[f>>2]|0)+4>>2]=c[h>>2];c[(c[f>>2]|0)+8>>2]=0;c[(c[f>>2]|0)+12>>2]=0;c[(c[f>>2]|0)+16>>2]=0;c[(c[f>>2]|0)+20>>2]=9;c[(c[f>>2]|0)+24>>2]=0;c[(c[f>>2]|0)+28>>2]=128;h=ed(c[f>>2]|0)|0;c[(c[f>>2]|0)+40>>2]=h;c[(c[f>>2]|0)+32>>2]=(c[(c[f>>2]|0)+28>>2]|0)-1-(c[(c[f>>2]|0)+40>>2]>>1);c[(c[f>>2]|0)+44>>2]=0;fd(c[f>>2]|0);i=e;return}function fb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;b=gd(c[(c[e>>2]|0)+28>>2]|0,c[f>>2]|0)|0;c[(c[e>>2]|0)+36>>2]=b;c[g>>2]=((c[(c[e>>2]|0)+32>>2]|0)>>>0)/((c[(c[e>>2]|0)+36>>2]|0)>>>0)|0;i=d;return (c[f>>2]|0)-((c[g>>2]|0)+1+((c[f>>2]|0)-((c[g>>2]|0)+1)&0-((c[f>>2]|0)>>>0<((c[g>>2]|0)+1|0)>>>0&1)))|0}function gb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[(c[e>>2]|0)+36>>2]=(c[(c[e>>2]|0)+28>>2]|0)>>>(c[f>>2]|0);c[g>>2]=((c[(c[e>>2]|0)+32>>2]|0)>>>0)/((c[(c[e>>2]|0)+36>>2]|0)>>>0)|0;i=d;return (1<<c[f>>2])-((c[g>>2]|0)+1+((1<<c[f>>2])-((c[g>>2]|0)+1)&0-(1<<c[f>>2]>>>0<((c[g>>2]|0)+1|0)>>>0&1)))|0}function hb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;l=f;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=_(c[(c[g>>2]|0)+36>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;k=(c[g>>2]|0)+32|0;c[k>>2]=(c[k>>2]|0)-(c[l>>2]|0);k=c[g>>2]|0;if((c[h>>2]|0)>>>0>0){m=_(c[k+36>>2]|0,(c[j>>2]|0)-(c[h>>2]|0)|0)|0;n=c[g>>2]|0;o=n+28|0;c[o>>2]=m;p=c[g>>2]|0;fd(p);i=f;return}else{m=(c[k+28>>2]|0)-(c[l>>2]|0)|0;n=c[g>>2]|0;o=n+28|0;c[o>>2]=m;p=c[g>>2]|0;fd(p);i=f;return}}function ib(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;i=i+32|0;e=d+20|0;f=d+16|0;g=d+12|0;h=d+8|0;j=d+4|0;k=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[(c[e>>2]|0)+28>>2];c[h>>2]=c[(c[e>>2]|0)+32>>2];c[j>>2]=(c[g>>2]|0)>>>(c[f>>2]|0);c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0&1;if(!(c[k>>2]|0))c[(c[e>>2]|0)+32>>2]=(c[h>>2]|0)-(c[j>>2]|0);if(c[k>>2]|0){l=c[j>>2]|0;m=c[e>>2]|0;n=m+28|0;c[n>>2]=l;o=c[e>>2]|0;fd(o);p=c[k>>2]|0;i=d;return p|0}else{l=(c[g>>2]|0)-(c[j>>2]|0)|0;m=c[e>>2]|0;n=m+28|0;c[n>>2]=l;o=c[e>>2]|0;fd(o);p=c[k>>2]|0;i=d;return p|0}return 0}function jb(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+32|0;g=f+4|0;h=f+16|0;j=f+8|0;k=f+20|0;l=f+28|0;m=f;n=f+12|0;o=f+24|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[m>>2]=c[(c[g>>2]|0)+28>>2];c[l>>2]=c[(c[g>>2]|0)+32>>2];c[k>>2]=(c[m>>2]|0)>>>(c[j>>2]|0);c[o>>2]=-1;do{c[n>>2]=c[m>>2];j=c[k>>2]|0;e=(c[o>>2]|0)+1|0;c[o>>2]=e;c[m>>2]=_(j,d[(c[h>>2]|0)+e>>0]|0)|0}while((c[l>>2]|0)>>>0<(c[m>>2]|0)>>>0);c[(c[g>>2]|0)+32>>2]=(c[l>>2]|0)-(c[m>>2]|0);c[(c[g>>2]|0)+28>>2]=(c[n>>2]|0)-(c[m>>2]|0);fd(c[g>>2]|0);i=f;return c[o>>2]|0}function kb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+32|0;e=d+8|0;f=d+16|0;g=d+20|0;h=d+24|0;j=d+4|0;k=d;l=d+12|0;c[f>>2]=a;c[g>>2]=b;c[g>>2]=(c[g>>2]|0)+-1;c[k>>2]=32-(aa(c[g>>2]|0)|0);if((c[k>>2]|0)<=8){c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=fb(c[f>>2]|0,c[g>>2]|0)|0;hb(c[f>>2]|0,c[j>>2]|0,(c[j>>2]|0)+1|0,c[g>>2]|0);c[e>>2]=c[j>>2];m=c[e>>2]|0;i=d;return m|0}c[k>>2]=(c[k>>2]|0)-8;c[h>>2]=((c[g>>2]|0)>>>(c[k>>2]|0))+1;c[j>>2]=fb(c[f>>2]|0,c[h>>2]|0)|0;hb(c[f>>2]|0,c[j>>2]|0,(c[j>>2]|0)+1|0,c[h>>2]|0);h=c[j>>2]<<c[k>>2];c[l>>2]=h|(lb(c[f>>2]|0,c[k>>2]|0)|0);if((c[l>>2]|0)>>>0<=(c[g>>2]|0)>>>0){c[e>>2]=c[l>>2];m=c[e>>2]|0;i=d;return m|0}else{c[(c[f>>2]|0)+44>>2]=1;c[e>>2]=c[g>>2];m=c[e>>2]|0;i=d;return m|0}return 0}function lb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;j=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[(c[e>>2]|0)+12>>2];c[h>>2]=c[(c[e>>2]|0)+16>>2];if((c[h>>2]|0)>>>0<(c[f>>2]|0)>>>0)do{b=hd(c[e>>2]|0)|0;c[g>>2]=c[g>>2]|b<<c[h>>2];c[h>>2]=(c[h>>2]|0)+8}while((c[h>>2]|0)<=24);c[j>>2]=c[g>>2]&(1<<c[f>>2])-1;c[g>>2]=(c[g>>2]|0)>>>(c[f>>2]|0);c[h>>2]=(c[h>>2]|0)-(c[f>>2]|0);c[(c[e>>2]|0)+12>>2]=c[g>>2];c[(c[e>>2]|0)+16>>2]=c[h>>2];h=(c[e>>2]|0)+20|0;c[h>>2]=(c[h>>2]|0)+(c[f>>2]|0);i=d;return c[j>>2]|0}function mb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;l=f;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=id(c[(c[g>>2]|0)+28>>2]|0,c[k>>2]|0)|0;if((c[h>>2]|0)>>>0>0){e=(c[(c[g>>2]|0)+28>>2]|0)-(_(c[l>>2]|0,(c[k>>2]|0)-(c[h>>2]|0)|0)|0)|0;d=(c[g>>2]|0)+32|0;c[d>>2]=(c[d>>2]|0)+e;e=_(c[l>>2]|0,(c[j>>2]|0)-(c[h>>2]|0)|0)|0;c[(c[g>>2]|0)+28>>2]=e;m=c[g>>2]|0;jd(m);i=f;return}else{e=_(c[l>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;j=(c[g>>2]|0)+28|0;c[j>>2]=(c[j>>2]|0)-e;m=c[g>>2]|0;jd(m);i=f;return}}function nb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+20|0;g=e+16|0;h=e+12|0;j=e+8|0;k=e+4|0;l=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=c[(c[f>>2]|0)+28>>2];c[l>>2]=c[(c[f>>2]|0)+32>>2];c[k>>2]=(c[j>>2]|0)>>>(c[h>>2]|0);c[j>>2]=(c[j>>2]|0)-(c[k>>2]|0);if(c[g>>2]|0)c[(c[f>>2]|0)+32>>2]=(c[l>>2]|0)+(c[j>>2]|0);c[(c[f>>2]|0)+28>>2]=(c[g>>2]|0)!=0?c[k>>2]|0:c[j>>2]|0;jd(c[f>>2]|0);i=e;return}function ob(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+20|0;g=e+16|0;h=e+12|0;j=e+8|0;k=e+4|0;l=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[h>>2]=(c[h>>2]|0)+-1;c[l>>2]=32-(aa(c[h>>2]|0)|0);if((c[l>>2]|0)>8){c[l>>2]=(c[l>>2]|0)-8;c[j>>2]=((c[h>>2]|0)>>>(c[l>>2]|0))+1;c[k>>2]=(c[g>>2]|0)>>>(c[l>>2]|0);mb(c[f>>2]|0,c[k>>2]|0,(c[k>>2]|0)+1|0,c[j>>2]|0);pb(c[f>>2]|0,c[g>>2]&(1<<c[l>>2])-1,c[l>>2]|0);i=e;return}else{mb(c[f>>2]|0,c[g>>2]|0,(c[g>>2]|0)+1|0,(c[h>>2]|0)+1|0);i=e;return}}function pb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e+16|0;g=e+12|0;h=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=c[(c[f>>2]|0)+12>>2];c[k>>2]=c[(c[f>>2]|0)+16>>2];if(((c[k>>2]|0)+(c[h>>2]|0)|0)>>>0>32)do{d=kd(c[f>>2]|0,c[j>>2]&255)|0;b=(c[f>>2]|0)+44|0;c[b>>2]=c[b>>2]|d;c[j>>2]=(c[j>>2]|0)>>>8;c[k>>2]=(c[k>>2]|0)-8}while((c[k>>2]|0)>=8);c[j>>2]=c[j>>2]|c[g>>2]<<c[k>>2];c[k>>2]=(c[k>>2]|0)+(c[h>>2]|0);c[(c[f>>2]|0)+12>>2]=c[j>>2];c[(c[f>>2]|0)+16>>2]=c[k>>2];k=(c[f>>2]|0)+20|0;c[k>>2]=(c[k>>2]|0)+(c[h>>2]|0);i=e;return}function qb(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;i=i+80|0;f=e+60|0;g=e+48|0;h=e+4|0;j=e+8|0;k=e+64|0;l=e;m=e+16|0;n=e+56|0;o=e+52|0;c[f>>2]=a;c[g>>2]=d;if((c[(c[f>>2]|0)+8>>2]|0)>0)p=c[(c[f>>2]|0)+8>>2]|0;else p=0;c[o>>2]=p;c[m>>2]=1;c[l>>2]=0;do{c[k>>2]=b[(c[f>>2]|0)+12+(c[l>>2]<<1<<1)>>1];c[j>>2]=b[(c[f>>2]|0)+12+((c[l>>2]<<1)+1<<1)>>1];p=_(c[m+(c[l>>2]<<2)>>2]|0,c[k>>2]|0)|0;c[m+((c[l>>2]|0)+1<<2)>>2]=p;c[l>>2]=(c[l>>2]|0)+1}while((c[j>>2]|0)!=1);c[j>>2]=b[(c[f>>2]|0)+12+((c[l>>2]<<1)-1<<1)>>1];c[n>>2]=(c[l>>2]|0)-1;while(1){if((c[n>>2]|0)<0)break;if(c[n>>2]|0)c[h>>2]=b[(c[f>>2]|0)+12+((c[n>>2]<<1)-1<<1)>>1];else c[h>>2]=1;l=b[(c[f>>2]|0)+12+(c[n>>2]<<1<<1)>>1]|0;if((l|0)==2)md(c[g>>2]|0,c[j>>2]|0,c[m+(c[n>>2]<<2)>>2]|0);else if((l|0)==4)nd(c[g>>2]|0,c[m+(c[n>>2]<<2)>>2]<<c[o>>2],c[f>>2]|0,c[j>>2]|0,c[m+(c[n>>2]<<2)>>2]|0,c[h>>2]|0);else if((l|0)==3)od(c[g>>2]|0,c[m+(c[n>>2]<<2)>>2]<<c[o>>2],c[f>>2]|0,c[j>>2]|0,c[m+(c[n>>2]<<2)>>2]|0,c[h>>2]|0);else if((l|0)==5)pd(c[g>>2]|0,c[m+(c[n>>2]<<2)>>2]<<c[o>>2],c[f>>2]|0,c[j>>2]|0,c[m+(c[n>>2]<<2)>>2]|0,c[h>>2]|0);c[j>>2]=c[h>>2];c[n>>2]=(c[n>>2]|0)+-1}i=e;return}function rb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;i=i+32|0;f=e+8|0;g=e+16|0;h=e+20|0;j=e+24|0;k=e+4|0;l=e;m=e+12|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=0;c[l>>2]=gb(c[f>>2]|0,15)|0;c[k>>2]=0;do if((c[l>>2]|0)>>>0>=(c[g>>2]|0)>>>0){c[j>>2]=(c[j>>2]|0)+1;c[k>>2]=c[g>>2];c[g>>2]=(qd(c[g>>2]|0,c[h>>2]|0)|0)+1;while(1){if((c[g>>2]|0)>>>0>1)n=(c[l>>2]|0)>>>0>=((c[k>>2]|0)+(c[g>>2]<<1)|0)>>>0;else n=0;o=c[g>>2]|0;if(!n)break;c[g>>2]=o<<1;c[k>>2]=(c[k>>2]|0)+(c[g>>2]|0);c[g>>2]=(_((c[g>>2]|0)-2|0,c[h>>2]|0)|0)>>>15;c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+1}if(o>>>0<=1){c[m>>2]=((c[l>>2]|0)-(c[k>>2]|0)|0)>>>1;c[j>>2]=(c[j>>2]|0)+(c[m>>2]|0);c[k>>2]=(c[k>>2]|0)+(c[m>>2]<<1)}if((c[l>>2]|0)>>>0<((c[k>>2]|0)+(c[g>>2]|0)|0)>>>0){c[j>>2]=0-(c[j>>2]|0);break}else{c[k>>2]=(c[k>>2]|0)+(c[g>>2]|0);break}}while(0);l=c[f>>2]|0;f=c[k>>2]|0;if(((c[k>>2]|0)+(c[g>>2]|0)|0)>>>0>=32768){p=32768;hb(l,f,p,32768);q=c[j>>2]|0;i=e;return q|0}p=(c[k>>2]|0)+(c[g>>2]|0)|0;hb(l,f,p,32768);q=c[j>>2]|0;i=e;return q|0}function sb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;i=i+32|0;d=b+16|0;e=b+12|0;f=b+8|0;g=b+4|0;h=b;c[d>>2]=a;c[f>>2]=0;c[g>>2]=32-(aa(c[d>>2]|0)|0)-1>>1;c[e>>2]=1<<c[g>>2];do{c[h>>2]=(c[f>>2]<<1)+(c[e>>2]|0)<<c[g>>2];if((c[h>>2]|0)>>>0<=(c[d>>2]|0)>>>0){c[f>>2]=(c[f>>2]|0)+(c[e>>2]|0);c[d>>2]=(c[d>>2]|0)-(c[h>>2]|0)}c[e>>2]=(c[e>>2]|0)>>>1;c[g>>2]=(c[g>>2]|0)+-1}while((c[g>>2]|0)>=0);i=b;return c[f>>2]|0}function tb(a,d,e,f,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0;l=i;i=i+144|0;m=l+132|0;n=l+108|0;o=l+8|0;p=l+56|0;q=l+64|0;r=l+16|0;s=l+20|0;t=l+24|0;u=l+28|0;v=l+32|0;w=l+36|0;x=l+40|0;y=l+44|0;z=l+104|0;A=l+112|0;B=l+120|0;C=l+128|0;D=l+136|0;E=l+68|0;F=l+72|0;G=l+76|0;H=l+80|0;I=l+84|0;J=l+88|0;K=l+92|0;L=l+12|0;M=l+4|0;N=l;O=l+96|0;P=l+48|0;Q=l+100|0;R=l+52|0;S=l+116|0;T=l+60|0;U=l+124|0;c[m>>2]=a;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=h;c[r>>2]=j;c[s>>2]=k;c[u>>2]=c[c[m>>2]>>2];c[x>>2]=c[(c[m>>2]|0)+24>>2];c[t>>2]=0;while(1){V=c[u>>2]>>1;if((c[t>>2]|0)>=(c[r>>2]|0))break;c[u>>2]=V;c[x>>2]=(c[x>>2]|0)+(c[u>>2]<<2);c[t>>2]=(c[t>>2]|0)+1}c[v>>2]=V;c[w>>2]=c[u>>2]>>2;c[y>>2]=c[n>>2];c[z>>2]=(c[n>>2]|0)+((_(c[s>>2]|0,(c[v>>2]|0)-1|0)|0)<<2);c[A>>2]=(c[o>>2]|0)+(c[q>>2]>>1<<2);c[B>>2]=c[x>>2];c[C>>2]=c[(c[(c[m>>2]|0)+8+(c[r>>2]<<2)>>2]|0)+44>>2];c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[w>>2]|0))break;n=c[C>>2]|0;c[C>>2]=n+2;c[D>>2]=b[n>>1];g[E>>2]=+g[c[z>>2]>>2]*+g[(c[B>>2]|0)+(c[t>>2]<<2)>>2]+ +g[c[y>>2]>>2]*+g[(c[B>>2]|0)+((c[w>>2]|0)+(c[t>>2]|0)<<2)>>2];g[F>>2]=+g[c[y>>2]>>2]*+g[(c[B>>2]|0)+(c[t>>2]<<2)>>2]-+g[c[z>>2]>>2]*+g[(c[B>>2]|0)+((c[w>>2]|0)+(c[t>>2]|0)<<2)>>2];g[(c[A>>2]|0)+((c[D>>2]<<1)+1<<2)>>2]=+g[E>>2];g[(c[A>>2]|0)+(c[D>>2]<<1<<2)>>2]=+g[F>>2];c[y>>2]=(c[y>>2]|0)+(c[s>>2]<<1<<2);c[z>>2]=(c[z>>2]|0)+(0-(c[s>>2]<<1)<<2);c[t>>2]=(c[t>>2]|0)+1}qb(c[(c[m>>2]|0)+8+(c[r>>2]<<2)>>2]|0,(c[o>>2]|0)+(c[q>>2]>>1<<2)|0);c[G>>2]=(c[o>>2]|0)+(c[q>>2]>>1<<2);c[H>>2]=(c[o>>2]|0)+(c[q>>2]>>1<<2)+(c[v>>2]<<2)+-8;c[I>>2]=c[x>>2];c[t>>2]=0;while(1){if((c[t>>2]|0)>=((c[w>>2]|0)+1>>1|0))break;g[J>>2]=+g[(c[G>>2]|0)+4>>2];g[K>>2]=+g[c[G>>2]>>2];g[N>>2]=+g[(c[I>>2]|0)+(c[t>>2]<<2)>>2];g[O>>2]=+g[(c[I>>2]|0)+((c[w>>2]|0)+(c[t>>2]|0)<<2)>>2];g[L>>2]=+g[J>>2]*+g[N>>2]+ +g[K>>2]*+g[O>>2];g[M>>2]=+g[J>>2]*+g[O>>2]-+g[K>>2]*+g[N>>2];g[J>>2]=+g[(c[H>>2]|0)+4>>2];g[K>>2]=+g[c[H>>2]>>2];g[c[G>>2]>>2]=+g[L>>2];g[(c[H>>2]|0)+4>>2]=+g[M>>2];g[N>>2]=+g[(c[I>>2]|0)+((c[w>>2]|0)-(c[t>>2]|0)-1<<2)>>2];g[O>>2]=+g[(c[I>>2]|0)+((c[v>>2]|0)-(c[t>>2]|0)-1<<2)>>2];g[L>>2]=+g[J>>2]*+g[N>>2]+ +g[K>>2]*+g[O>>2];g[M>>2]=+g[J>>2]*+g[O>>2]-+g[K>>2]*+g[N>>2];g[c[H>>2]>>2]=+g[L>>2];g[(c[G>>2]|0)+4>>2]=+g[M>>2];c[G>>2]=(c[G>>2]|0)+8;c[H>>2]=(c[H>>2]|0)+-8;c[t>>2]=(c[t>>2]|0)+1}c[P>>2]=(c[o>>2]|0)+(c[q>>2]<<2)+-4;c[Q>>2]=c[o>>2];c[R>>2]=c[p>>2];c[S>>2]=(c[p>>2]|0)+(c[q>>2]<<2)+-4;c[t>>2]=0;while(1){if((c[t>>2]|0)>=((c[q>>2]|0)/2|0|0))break;g[T>>2]=+g[c[P>>2]>>2];g[U>>2]=+g[c[Q>>2]>>2];W=+g[c[S>>2]>>2]*+g[U>>2]-+g[c[R>>2]>>2]*+g[T>>2];p=c[Q>>2]|0;c[Q>>2]=p+4;g[p>>2]=W;W=+g[c[R>>2]>>2]*+g[U>>2]+ +g[c[S>>2]>>2]*+g[T>>2];p=c[P>>2]|0;c[P>>2]=p+-4;g[p>>2]=W;c[R>>2]=(c[R>>2]|0)+4;c[S>>2]=(c[S>>2]|0)+-4;c[t>>2]=(c[t>>2]|0)+1}i=l;return}function ub(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+32|0;f=e+20|0;g=e+16|0;h=e+12|0;j=e+8|0;k=e+4|0;l=e;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=0;a:while(1){if((c[k>>2]|0)>=1){m=12;break}c[l>>2]=0;while(1){if((c[l>>2]|0)>=4)break;if((c[g>>2]|0)==(c[c[2544+(c[k>>2]<<2)>>2]>>2]|0)?(c[h>>2]<<c[l>>2]|0)==(_(c[(c[2544+(c[k>>2]<<2)>>2]|0)+44>>2]|0,c[(c[2544+(c[k>>2]<<2)>>2]|0)+40>>2]|0)|0):0){m=7;break a}c[l>>2]=(c[l>>2]|0)+1}c[k>>2]=(c[k>>2]|0)+1}if((m|0)==7){if(c[j>>2]|0)c[c[j>>2]>>2]=0;c[f>>2]=c[2544+(c[k>>2]<<2)>>2];n=c[f>>2]|0;i=e;return n|0}else if((m|0)==12){if(c[j>>2]|0)c[c[j>>2]>>2]=-1;c[f>>2]=0;n=c[f>>2]|0;i=e;return n|0}return 0}function vb(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=i;i=i+112|0;j=h+4|0;k=h+48|0;l=h+84|0;m=h;n=h+80|0;o=h+88|0;p=h+92|0;q=h+72|0;r=h+56|0;s=h+8|0;t=h+28|0;u=h+76|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;g[q>>2]=1.0;c[s>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;g[u>>2]=.800000011920929;c[o>>2]=1;while(1){if((c[o>>2]|0)>=(c[l>>2]>>1|0))break;g[(c[k>>2]|0)+(c[o>>2]<<2)>>2]=((+g[(c[c[j>>2]>>2]|0)+((c[o>>2]<<1)-1<<2)>>2]+ +g[(c[c[j>>2]>>2]|0)+((c[o>>2]<<1)+1<<2)>>2])*.5+ +g[(c[c[j>>2]>>2]|0)+(c[o>>2]<<1<<2)>>2])*.5;c[o>>2]=(c[o>>2]|0)+1}g[c[k>>2]>>2]=(+g[(c[c[j>>2]>>2]|0)+4>>2]*.5+ +g[c[c[j>>2]>>2]>>2])*.5;if((c[m>>2]|0)==2){c[o>>2]=1;while(1){if((c[o>>2]|0)>=(c[l>>2]>>1|0))break;m=(c[k>>2]|0)+(c[o>>2]<<2)|0;g[m>>2]=+g[m>>2]+((+g[(c[(c[j>>2]|0)+4>>2]|0)+((c[o>>2]<<1)-1<<2)>>2]+ +g[(c[(c[j>>2]|0)+4>>2]|0)+((c[o>>2]<<1)+1<<2)>>2])*.5+ +g[(c[(c[j>>2]|0)+4>>2]|0)+(c[o>>2]<<1<<2)>>2])*.5;c[o>>2]=(c[o>>2]|0)+1}m=c[k>>2]|0;g[m>>2]=+g[m>>2]+(+g[(c[(c[j>>2]|0)+4>>2]|0)+4>>2]*.5+ +g[c[(c[j>>2]|0)+4>>2]>>2])*.5}Bb(c[k>>2]|0,p,0,0,4,c[l>>2]>>1,c[n>>2]|0)|0;g[p>>2]=+g[p>>2]*1.000100016593933;c[o>>2]=1;while(1){if((c[o>>2]|0)>4)break;n=p+(c[o>>2]<<2)|0;g[n>>2]=+g[n>>2]-+g[p+(c[o>>2]<<2)>>2]*(+(c[o>>2]|0)*.00800000037997961)*(+(c[o>>2]|0)*.00800000037997961);c[o>>2]=(c[o>>2]|0)+1}yb(r,p,4);c[o>>2]=0;while(1){if((c[o>>2]|0)>=4)break;g[q>>2]=+g[q>>2]*.8999999761581421;g[r+(c[o>>2]<<2)>>2]=+g[r+(c[o>>2]<<2)>>2]*+g[q>>2];c[o>>2]=(c[o>>2]|0)+1}g[t>>2]=+g[r>>2]+.800000011920929;g[t+4>>2]=+g[r+4>>2]+ +g[u>>2]*+g[r>>2];g[t+8>>2]=+g[r+8>>2]+ +g[u>>2]*+g[r+4>>2];g[t+12>>2]=+g[r+12>>2]+ +g[u>>2]*+g[r+8>>2];g[t+16>>2]=+g[u>>2]*+g[r+12>>2];rd(c[k>>2]|0,t,c[k>>2]|0,c[l>>2]>>1,s);i=h;return}function wb(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;i=i+48|0;j=h+4|0;k=h+32|0;l=h+8|0;m=h+36|0;n=h+44|0;o=h;p=h+16|0;q=h+40|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=0;while(1){if((c[o>>2]|0)>=((c[n>>2]|0)-3|0))break;c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;sd(c[j>>2]|0,(c[k>>2]|0)+(c[o>>2]<<2)|0,p,c[m>>2]|0);g[(c[l>>2]|0)+(c[o>>2]<<2)>>2]=+g[p>>2];g[(c[l>>2]|0)+((c[o>>2]|0)+1<<2)>>2]=+g[p+4>>2];g[(c[l>>2]|0)+((c[o>>2]|0)+2<<2)>>2]=+g[p+8>>2];g[(c[l>>2]|0)+((c[o>>2]|0)+3<<2)>>2]=+g[p+12>>2];c[o>>2]=(c[o>>2]|0)+4}while(1){if((c[o>>2]|0)>=(c[n>>2]|0))break;g[q>>2]=+td(c[j>>2]|0,(c[k>>2]|0)+(c[o>>2]<<2)|0,c[m>>2]|0);g[(c[l>>2]|0)+(c[o>>2]<<2)>>2]=+g[q>>2];c[o>>2]=(c[o>>2]|0)+1}i=h;return}function xb(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;j=i;i=i+80|0;k=j+16|0;l=j+32|0;m=j+52|0;n=j+60|0;o=j+40|0;p=j+56|0;q=j+64|0;r=j+68|0;s=j+8|0;t=j+36|0;u=j+20|0;v=j;w=j+24|0;x=j+44|0;y=j+28|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[j+48>>2]=h;c[s>>2]=0;c[s+4>>2]=0;c[r>>2]=(c[m>>2]|0)+(c[n>>2]|0);h=c[m>>2]>>2;c[u>>2]=ua()|0;f=i;i=i+((1*(h<<2)|0)+15&-16)|0;h=i;i=i+((1*(c[r>>2]>>2<<2)|0)+15&-16)|0;e=i;i=i+((1*(c[n>>2]>>1<<2)|0)+15&-16)|0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[m>>2]>>2|0))break;g[f+(c[q>>2]<<2)>>2]=+g[(c[k>>2]|0)+(c[q>>2]<<1<<2)>>2];c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[r>>2]>>2|0))break;g[h+(c[q>>2]<<2)>>2]=+g[(c[l>>2]|0)+(c[q>>2]<<1<<2)>>2];c[q>>2]=(c[q>>2]|0)+1}wb(f,h,e,c[m>>2]>>2,c[n>>2]>>2);ud(e,h,c[m>>2]>>2,c[n>>2]>>2,s);c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[n>>2]>>1|0))break;g[e+(c[p>>2]<<2)>>2]=0.0;if(!((N((c[p>>2]|0)-(c[s>>2]<<1)|0)|0)>2?(N((c[p>>2]|0)-(c[s+4>>2]<<1)|0)|0)>2:0)){g[v>>2]=+td(c[k>>2]|0,(c[l>>2]|0)+(c[p>>2]<<2)|0,c[m>>2]>>1);g[e+(c[p>>2]<<2)>>2]=-1.0>+g[v>>2]?-1.0:+g[v>>2]}c[p>>2]=(c[p>>2]|0)+1}ud(e,c[l>>2]|0,c[m>>2]>>1,c[n>>2]>>1,s);if((c[s>>2]|0)>0?(c[s>>2]|0)<((c[n>>2]>>1)-1|0):0){g[w>>2]=+g[e+((c[s>>2]|0)-1<<2)>>2];g[x>>2]=+g[e+(c[s>>2]<<2)>>2];g[y>>2]=+g[e+((c[s>>2]|0)+1<<2)>>2];if(+g[y>>2]-+g[w>>2]>(+g[x>>2]-+g[w>>2])*.699999988079071){c[t>>2]=1;z=c[s>>2]|0;A=z<<1;B=c[t>>2]|0;C=A-B|0;D=c[o>>2]|0;c[D>>2]=C;E=c[u>>2]|0;ka(E|0);i=j;return}if(+g[w>>2]-+g[y>>2]>(+g[x>>2]-+g[y>>2])*.699999988079071){c[t>>2]=-1;z=c[s>>2]|0;A=z<<1;B=c[t>>2]|0;C=A-B|0;D=c[o>>2]|0;c[D>>2]=C;E=c[u>>2]|0;ka(E|0);i=j;return}else{c[t>>2]=0;z=c[s>>2]|0;A=z<<1;B=c[t>>2]|0;C=A-B|0;D=c[o>>2]|0;c[D>>2]=C;E=c[u>>2]|0;ka(E|0);i=j;return}}c[t>>2]=0;z=c[s>>2]|0;A=z<<1;B=c[t>>2]|0;C=A-B|0;D=c[o>>2]|0;c[D>>2]=C;E=c[u>>2]|0;ka(E|0);i=j;return}function yb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;i=i+48|0;f=e+36|0;h=e+16|0;j=e;k=e+28|0;l=e+32|0;m=e+40|0;n=e+12|0;o=e+24|0;p=e+20|0;q=e+8|0;r=e+4|0;c[f>>2]=a;c[h>>2]=b;c[j>>2]=d;g[n>>2]=+g[c[h>>2]>>2];c[o>>2]=c[f>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[j>>2]|0))break;g[(c[o>>2]|0)+(c[k>>2]<<2)>>2]=0.0;c[k>>2]=(c[k>>2]|0)+1}if(!(+g[c[h>>2]>>2]!=0.0)){i=e;return}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[j>>2]|0)){s=15;break}g[p>>2]=0.0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[k>>2]|0))break;g[p>>2]=+g[p>>2]+ +g[(c[o>>2]|0)+(c[l>>2]<<2)>>2]*+g[(c[h>>2]|0)+((c[k>>2]|0)-(c[l>>2]|0)<<2)>>2];c[l>>2]=(c[l>>2]|0)+1}g[p>>2]=+g[p>>2]+ +g[(c[h>>2]|0)+((c[k>>2]|0)+1<<2)>>2];g[m>>2]=-(+g[p>>2]/+g[n>>2]);g[(c[o>>2]|0)+(c[k>>2]<<2)>>2]=+g[m>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=((c[k>>2]|0)+1>>1|0))break;g[q>>2]=+g[(c[o>>2]|0)+(c[l>>2]<<2)>>2];g[r>>2]=+g[(c[o>>2]|0)+((c[k>>2]|0)-1-(c[l>>2]|0)<<2)>>2];g[(c[o>>2]|0)+(c[l>>2]<<2)>>2]=+g[q>>2]+ +g[m>>2]*+g[r>>2];g[(c[o>>2]|0)+((c[k>>2]|0)-1-(c[l>>2]|0)<<2)>>2]=+g[r>>2]+ +g[m>>2]*+g[q>>2];c[l>>2]=(c[l>>2]|0)+1}g[n>>2]=+g[n>>2]-+g[m>>2]*+g[m>>2]*+g[n>>2];if(+g[n>>2]<+g[c[h>>2]>>2]*1.0000000474974513e-03){s=15;break}c[k>>2]=(c[k>>2]|0)+1}if((s|0)==15){i=e;return}}function zb(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=i;i=i+64|0;k=j+48|0;l=j+28|0;m=j;n=j+40|0;o=j+44|0;p=j+52|0;q=j+24|0;r=j+36|0;s=j+32|0;t=j+8|0;u=j+4|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=h;h=c[o>>2]|0;c[s>>2]=ua()|0;f=i;i=i+((1*(h<<2)|0)+15&-16)|0;h=i;i=i+((1*((c[n>>2]|0)+(c[o>>2]|0)<<2)|0)+15&-16)|0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[o>>2]|0))break;g[f+(c[q>>2]<<2)>>2]=+g[(c[l>>2]|0)+((c[o>>2]|0)-(c[q>>2]|0)-1<<2)>>2];c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[o>>2]|0))break;g[h+(c[q>>2]<<2)>>2]=+g[(c[p>>2]|0)+((c[o>>2]|0)-(c[q>>2]|0)-1<<2)>>2];c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[n>>2]|0))break;g[h+((c[q>>2]|0)+(c[o>>2]|0)<<2)>>2]=+g[(c[k>>2]|0)+(c[q>>2]<<2)>>2];c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[o>>2]|0))break;g[(c[p>>2]|0)+(c[q>>2]<<2)>>2]=+g[(c[k>>2]|0)+((c[n>>2]|0)-(c[q>>2]|0)-1<<2)>>2];c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=((c[n>>2]|0)-3|0))break;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;vd(f,h+(c[q>>2]<<2)|0,t,c[o>>2]|0);g[(c[m>>2]|0)+(c[q>>2]<<2)>>2]=+g[(c[k>>2]|0)+(c[q>>2]<<2)>>2]+ +g[t>>2];g[(c[m>>2]|0)+((c[q>>2]|0)+1<<2)>>2]=+g[(c[k>>2]|0)+((c[q>>2]|0)+1<<2)>>2]+ +g[t+4>>2];g[(c[m>>2]|0)+((c[q>>2]|0)+2<<2)>>2]=+g[(c[k>>2]|0)+((c[q>>2]|0)+2<<2)>>2]+ +g[t+8>>2];g[(c[m>>2]|0)+((c[q>>2]|0)+3<<2)>>2]=+g[(c[k>>2]|0)+((c[q>>2]|0)+3<<2)>>2]+ +g[t+12>>2];c[q>>2]=(c[q>>2]|0)+4}while(1){if((c[q>>2]|0)>=(c[n>>2]|0))break;g[u>>2]=0.0;c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[o>>2]|0))break;g[u>>2]=+g[u>>2]+ +g[f+(c[r>>2]<<2)>>2]*+g[h+((c[q>>2]|0)+(c[r>>2]|0)<<2)>>2];c[r>>2]=(c[r>>2]|0)+1}g[(c[m>>2]|0)+(c[q>>2]<<2)>>2]=+g[(c[k>>2]|0)+(c[q>>2]<<2)>>2]+ +g[u>>2];c[q>>2]=(c[q>>2]|0)+1}ka(c[s>>2]|0);i=j;return}function Ab(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=i;i=i+64|0;k=j+48|0;l=j+28|0;m=j;n=j+40|0;o=j+44|0;p=j+52|0;q=j+24|0;r=j+36|0;s=j+32|0;t=j+8|0;u=j+4|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=h;h=c[o>>2]|0;c[s>>2]=ua()|0;f=i;i=i+((1*(h<<2)|0)+15&-16)|0;h=i;i=i+((1*((c[n>>2]|0)+(c[o>>2]|0)<<2)|0)+15&-16)|0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[o>>2]|0))break;g[f+(c[q>>2]<<2)>>2]=+g[(c[l>>2]|0)+((c[o>>2]|0)-(c[q>>2]|0)-1<<2)>>2];c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[o>>2]|0))break;g[h+(c[q>>2]<<2)>>2]=-+g[(c[p>>2]|0)+((c[o>>2]|0)-(c[q>>2]|0)-1<<2)>>2];c[q>>2]=(c[q>>2]|0)+1}while(1){if((c[q>>2]|0)>=((c[n>>2]|0)+(c[o>>2]|0)|0))break;g[h+(c[q>>2]<<2)>>2]=0.0;c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=((c[n>>2]|0)-3|0))break;g[t>>2]=+g[(c[k>>2]|0)+(c[q>>2]<<2)>>2];g[t+4>>2]=+g[(c[k>>2]|0)+((c[q>>2]|0)+1<<2)>>2];g[t+8>>2]=+g[(c[k>>2]|0)+((c[q>>2]|0)+2<<2)>>2];g[t+12>>2]=+g[(c[k>>2]|0)+((c[q>>2]|0)+3<<2)>>2];vd(f,h+(c[q>>2]<<2)|0,t,c[o>>2]|0);g[h+((c[q>>2]|0)+(c[o>>2]|0)<<2)>>2]=-+g[t>>2];g[(c[m>>2]|0)+(c[q>>2]<<2)>>2]=+g[t>>2];g[t+4>>2]=+g[t+4>>2]+ +g[h+((c[q>>2]|0)+(c[o>>2]|0)<<2)>>2]*+g[c[l>>2]>>2];g[h+((c[q>>2]|0)+(c[o>>2]|0)+1<<2)>>2]=-+g[t+4>>2];g[(c[m>>2]|0)+((c[q>>2]|0)+1<<2)>>2]=+g[t+4>>2];g[t+8>>2]=+g[t+8>>2]+ +g[h+((c[q>>2]|0)+(c[o>>2]|0)+1<<2)>>2]*+g[c[l>>2]>>2];g[t+8>>2]=+g[t+8>>2]+ +g[h+((c[q>>2]|0)+(c[o>>2]|0)<<2)>>2]*+g[(c[l>>2]|0)+4>>2];g[h+((c[q>>2]|0)+(c[o>>2]|0)+2<<2)>>2]=-+g[t+8>>2];g[(c[m>>2]|0)+((c[q>>2]|0)+2<<2)>>2]=+g[t+8>>2];g[t+12>>2]=+g[t+12>>2]+ +g[h+((c[q>>2]|0)+(c[o>>2]|0)+2<<2)>>2]*+g[c[l>>2]>>2];g[t+12>>2]=+g[t+12>>2]+ +g[h+((c[q>>2]|0)+(c[o>>2]|0)+1<<2)>>2]*+g[(c[l>>2]|0)+4>>2];g[t+12>>2]=+g[t+12>>2]+ +g[h+((c[q>>2]|0)+(c[o>>2]|0)<<2)>>2]*+g[(c[l>>2]|0)+8>>2];g[h+((c[q>>2]|0)+(c[o>>2]|0)+3<<2)>>2]=-+g[t+12>>2];g[(c[m>>2]|0)+((c[q>>2]|0)+3<<2)>>2]=+g[t+12>>2];c[q>>2]=(c[q>>2]|0)+4}while(1){if((c[q>>2]|0)>=(c[n>>2]|0))break;g[u>>2]=+g[(c[k>>2]|0)+(c[q>>2]<<2)>>2];c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[o>>2]|0))break;g[u>>2]=+g[u>>2]-+g[f+(c[r>>2]<<2)>>2]*+g[h+((c[q>>2]|0)+(c[r>>2]|0)<<2)>>2];c[r>>2]=(c[r>>2]|0)+1}g[h+((c[q>>2]|0)+(c[o>>2]|0)<<2)>>2]=+g[u>>2];g[(c[m>>2]|0)+(c[q>>2]<<2)>>2]=+g[u>>2];c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[o>>2]|0))break;g[(c[p>>2]|0)+(c[q>>2]<<2)>>2]=+g[(c[m>>2]|0)+((c[n>>2]|0)-(c[q>>2]|0)-1<<2)>>2];c[q>>2]=(c[q>>2]|0)+1}ka(c[s>>2]|0);i=j;return}function Bb(a,b,d,e,f,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;k=i;i=i+64|0;l=k+52|0;m=k+44|0;n=k+24|0;o=k+20|0;p=k+12|0;q=k+40|0;r=k+56|0;s=k+28|0;t=k+8|0;u=k+4|0;v=k+32|0;w=k;x=k+16|0;y=k+36|0;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=h;c[k+48>>2]=j;c[u>>2]=(c[q>>2]|0)-(c[p>>2]|0);j=c[q>>2]|0;c[x>>2]=ua()|0;h=i;i=i+((1*(j<<2)|0)+15&-16)|0;if(!(c[o>>2]|0))c[w>>2]=c[l>>2];else{c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[q>>2]|0))break;g[h+(c[s>>2]<<2)>>2]=+g[(c[l>>2]|0)+(c[s>>2]<<2)>>2];c[s>>2]=(c[s>>2]|0)+1}c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[o>>2]|0))break;g[h+(c[s>>2]<<2)>>2]=+g[(c[l>>2]|0)+(c[s>>2]<<2)>>2]*+g[(c[n>>2]|0)+(c[s>>2]<<2)>>2];g[h+((c[q>>2]|0)-(c[s>>2]|0)-1<<2)>>2]=+g[(c[l>>2]|0)+((c[q>>2]|0)-(c[s>>2]|0)-1<<2)>>2]*+g[(c[n>>2]|0)+(c[s>>2]<<2)>>2];c[s>>2]=(c[s>>2]|0)+1}c[w>>2]=h}c[v>>2]=0;wb(c[w>>2]|0,c[w>>2]|0,c[m>>2]|0,c[u>>2]|0,(c[p>>2]|0)+1|0);c[t>>2]=0;while(1){if((c[t>>2]|0)>(c[p>>2]|0))break;c[s>>2]=(c[t>>2]|0)+(c[u>>2]|0);g[r>>2]=0.0;while(1){z=+g[r>>2];if((c[s>>2]|0)>=(c[q>>2]|0))break;g[r>>2]=z+ +g[(c[w>>2]|0)+(c[s>>2]<<2)>>2]*+g[(c[w>>2]|0)+((c[s>>2]|0)-(c[t>>2]|0)<<2)>>2];c[s>>2]=(c[s>>2]|0)+1}h=(c[m>>2]|0)+(c[t>>2]<<2)|0;g[h>>2]=+g[h>>2]+z;c[t>>2]=(c[t>>2]|0)+1}t=c[v>>2]|0;c[y>>2]=1;ka(c[x>>2]|0);i=k;return t|0}function Cb(a,b,e,f,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0;m=i;i=i+96|0;n=m+36|0;o=m+24|0;p=m+20|0;q=m+72|0;r=m+32|0;s=m+16|0;t=m+52|0;u=m+60|0;v=m+68|0;w=m+76|0;x=m+80|0;y=m+40|0;z=m+8|0;A=m;B=m+4|0;C=m+48|0;D=m+56|0;E=m+28|0;F=m+64|0;G=m+12|0;c[n>>2]=a;c[o>>2]=b;c[p>>2]=e;c[q>>2]=f;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[u>>2]=l;c[v>>2]=2552+((c[u>>2]|0)*84|0)+((c[r>>2]|0)*42|0);c[y>>2]=0;c[y+4>>2]=0;if(c[r>>2]|0){g[z>>2]=0.0;g[A>>2]=.149993896484375}else{g[A>>2]=+g[2904+(c[u>>2]<<2)>>2];g[z>>2]=+g[2888+(c[u>>2]<<2)>>2]}c[B>>2]=c[(c[s>>2]|0)+4>>2]<<3;c[w>>2]=c[o>>2];while(1){if((c[w>>2]|0)>=(c[p>>2]|0))break;c[x>>2]=0;do{c[C>>2]=wd(c[s>>2]|0)|0;do if(((c[B>>2]|0)-(c[C>>2]|0)|0)<15){if(((c[B>>2]|0)-(c[C>>2]|0)|0)>=2){c[D>>2]=jb(c[s>>2]|0,2920,2)|0;c[D>>2]=c[D>>2]>>1^0-(c[D>>2]&1);break}if(((c[B>>2]|0)-(c[C>>2]|0)|0)>=1){c[D>>2]=0-(ib(c[s>>2]|0,1)|0);break}else{c[D>>2]=-1;break}}else{c[G>>2]=((c[w>>2]|0)<20?c[w>>2]|0:20)<<1;c[D>>2]=rb(c[s>>2]|0,(d[(c[v>>2]|0)+(c[G>>2]|0)>>0]|0)<<7,(d[(c[v>>2]|0)+((c[G>>2]|0)+1)>>0]|0)<<6)|0}while(0);g[E>>2]=+(c[D>>2]|0);o=(c[w>>2]|0)+(_(c[x>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0)|0;if(-9.0>+g[(c[q>>2]|0)+(o<<2)>>2])H=-9.0;else{o=(c[w>>2]|0)+(_(c[x>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0)|0;H=+g[(c[q>>2]|0)+(o<<2)>>2]}o=(c[w>>2]|0)+(_(c[x>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0)|0;g[(c[q>>2]|0)+(o<<2)>>2]=H;o=(c[w>>2]|0)+(_(c[x>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0)|0;g[F>>2]=+g[z>>2]*+g[(c[q>>2]|0)+(o<<2)>>2]+ +g[y+(c[x>>2]<<2)>>2]+ +g[E>>2];o=(c[w>>2]|0)+(_(c[x>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0)|0;g[(c[q>>2]|0)+(o<<2)>>2]=+g[F>>2];g[y+(c[x>>2]<<2)>>2]=+g[y+(c[x>>2]<<2)>>2]+ +g[E>>2]-+g[A>>2]*+g[E>>2];o=(c[x>>2]|0)+1|0;c[x>>2]=o}while((o|0)<(c[t>>2]|0));c[w>>2]=(c[w>>2]|0)+1}i=m;return}function Db(a,b,d,e,f,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;k=i;i=i+48|0;l=k+36|0;m=k+16|0;n=k;o=k+28|0;p=k+32|0;q=k+40|0;r=k+12|0;s=k+24|0;t=k+20|0;u=k+8|0;v=k+4|0;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=h;c[r>>2]=j;c[s>>2]=c[m>>2];while(1){if((c[s>>2]|0)>=(c[n>>2]|0))break;if((c[(c[p>>2]|0)+(c[s>>2]<<2)>>2]|0)>0){c[t>>2]=0;do{c[u>>2]=lb(c[q>>2]|0,c[(c[p>>2]|0)+(c[s>>2]<<2)>>2]|0)|0;g[v>>2]=(+(c[u>>2]|0)+.5)*+(1<<14-(c[(c[p>>2]|0)+(c[s>>2]<<2)>>2]|0)|0)*.00006103515625-.5;m=(c[s>>2]|0)+(_(c[t>>2]|0,c[(c[l>>2]|0)+8>>2]|0)|0)|0;j=(c[o>>2]|0)+(m<<2)|0;g[j>>2]=+g[j>>2]+ +g[v>>2];j=(c[t>>2]|0)+1|0;c[t>>2]=j}while((j|0)<(c[r>>2]|0))}c[s>>2]=(c[s>>2]|0)+1}i=k;return}function Eb(a,b,d,e,f,h,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;m=i;i=i+64|0;n=m+24|0;o=m+20|0;p=m+44|0;q=m+36|0;r=m+32|0;s=m+40|0;t=m+48|0;u=m+52|0;v=m+8|0;w=m+4|0;x=m+28|0;y=m+12|0;z=m;A=m+16|0;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;c[s>>2]=h;c[t>>2]=j;c[u>>2]=k;c[v>>2]=l;c[x>>2]=0;while(1){if((c[x>>2]|0)>=2)break;c[w>>2]=c[o>>2];while(1){if((c[w>>2]|0)>=(c[p>>2]|0))break;if((c[t>>2]|0)<(c[v>>2]|0))break;if((c[(c[r>>2]|0)+(c[w>>2]<<2)>>2]|0)<8?(c[(c[s>>2]|0)+(c[w>>2]<<2)>>2]|0)==(c[x>>2]|0):0){c[y>>2]=0;do{c[z>>2]=lb(c[u>>2]|0,1)|0;g[A>>2]=(+(c[z>>2]|0)-.5)*+(1<<14-(c[(c[r>>2]|0)+(c[w>>2]<<2)>>2]|0)-1|0)*.00006103515625;l=(c[w>>2]|0)+(_(c[y>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0)|0;k=(c[q>>2]|0)+(l<<2)|0;g[k>>2]=+g[k>>2]+ +g[A>>2];c[t>>2]=(c[t>>2]|0)+-1;k=(c[y>>2]|0)+1|0;c[y>>2]=k}while((k|0)<(c[v>>2]|0))}c[w>>2]=(c[w>>2]|0)+1}c[x>>2]=(c[x>>2]|0)+1}i=m;return}function Fb(a,e,f,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v,w){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;u=u|0;v=v|0;w=w|0;var x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0;x=i;i=i+160|0;y=x+72|0;z=x+56|0;A=x+4|0;B=x+52|0;C=x+140|0;D=x+68|0;E=x+20|0;F=x+24|0;G=x+28|0;H=x+32|0;I=x+36|0;J=x+40|0;K=x+44|0;L=x+48|0;M=x+112|0;N=x+120|0;O=x+128|0;P=x+136|0;Q=x+144|0;R=x+148|0;S=x+76|0;T=x+80|0;U=x+84|0;V=x+88|0;W=x+92|0;X=x+96|0;Y=x+100|0;Z=x+104|0;$=x+12|0;aa=x;ba=x+8|0;ca=x+108|0;da=x+116|0;ea=x+60|0;fa=x+124|0;ga=x+16|0;ha=x+64|0;ia=x+132|0;c[y>>2]=a;c[z>>2]=e;c[A>>2]=f;c[B>>2]=g;c[C>>2]=h;c[D>>2]=j;c[E>>2]=k;c[F>>2]=l;c[G>>2]=m;c[H>>2]=n;c[I>>2]=o;c[J>>2]=p;c[K>>2]=q;c[L>>2]=r;c[M>>2]=s;c[N>>2]=t;c[O>>2]=u;c[P>>2]=v;c[Q>>2]=w;c[G>>2]=(c[G>>2]|0)>0?c[G>>2]|0:0;c[T>>2]=c[(c[y>>2]|0)+8>>2];c[W>>2]=c[z>>2];c[X>>2]=(c[G>>2]|0)>=8?8:0;c[G>>2]=(c[G>>2]|0)-(c[X>>2]|0);c[Z>>2]=0;c[Y>>2]=0;do if((c[L>>2]|0)==2){c[Y>>2]=d[2928+((c[A>>2]|0)-(c[z>>2]|0))>>0];if((c[Y>>2]|0)>(c[G>>2]|0)){c[Y>>2]=0;break}else{c[G>>2]=(c[G>>2]|0)-(c[Y>>2]|0);c[Z>>2]=(c[G>>2]|0)>=8?8:0;c[G>>2]=(c[G>>2]|0)-(c[Z>>2]|0);break}}while(0);w=c[T>>2]|0;c[$>>2]=ua()|0;v=i;i=i+((1*(w<<2)|0)+15&-16)|0;w=i;i=i+((1*(c[T>>2]<<2)|0)+15&-16)|0;u=i;i=i+((1*(c[T>>2]<<2)|0)+15&-16)|0;t=i;i=i+((1*(c[T>>2]<<2)|0)+15&-16)|0;c[U>>2]=c[z>>2];while(1){if((c[U>>2]|0)>=(c[A>>2]|0))break;if((c[L>>2]<<3|0)>(((b[(c[(c[y>>2]|0)+32>>2]|0)+((c[U>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[y>>2]|0)+32>>2]|0)+(c[U>>2]<<1)>>1]|0)|0)*3<<c[M>>2]<<3>>4|0))ja=c[L>>2]<<3;else ja=((b[(c[(c[y>>2]|0)+32>>2]|0)+((c[U>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[y>>2]|0)+32>>2]|0)+(c[U>>2]<<1)>>1]|0)|0)*3<<c[M>>2]<<3>>4;c[u+(c[U>>2]<<2)>>2]=ja;s=_(c[L>>2]|0,(b[(c[(c[y>>2]|0)+32>>2]|0)+((c[U>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[y>>2]|0)+32>>2]|0)+(c[U>>2]<<1)>>1]|0)|0)|0;r=_(s,(c[D>>2]|0)-5-(c[M>>2]|0)|0)|0;s=_(r,(c[A>>2]|0)-(c[U>>2]|0)-1|0)|0;r=(_(s,1<<(c[M>>2]|0)+3)|0)>>6;c[t+(c[U>>2]<<2)>>2]=r;if(((b[(c[(c[y>>2]|0)+32>>2]|0)+((c[U>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[y>>2]|0)+32>>2]|0)+(c[U>>2]<<1)>>1]|0)<<c[M>>2]|0)==1){r=t+(c[U>>2]<<2)|0;c[r>>2]=(c[r>>2]|0)-(c[L>>2]<<3)}c[U>>2]=(c[U>>2]|0)+1}c[R>>2]=1;c[S>>2]=(c[(c[y>>2]|0)+48>>2]|0)-1;do{c[aa>>2]=0;c[ba>>2]=0;c[ca>>2]=(c[R>>2]|0)+(c[S>>2]|0)>>1;c[U>>2]=c[A>>2];while(1){D=c[U>>2]|0;c[U>>2]=D+-1;if((D|0)<=(c[z>>2]|0))break;c[ea>>2]=(b[(c[(c[y>>2]|0)+32>>2]|0)+((c[U>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[y>>2]|0)+32>>2]|0)+(c[U>>2]<<1)>>1]|0);D=_(c[L>>2]|0,c[ea>>2]|0)|0;ja=_(c[ca>>2]|0,c[T>>2]|0)|0;r=_(D,d[(c[(c[y>>2]|0)+52>>2]|0)+(ja+(c[U>>2]|0))>>0]|0)|0;c[da>>2]=r<<c[M>>2]>>2;if((c[da>>2]|0)>0){if(0>((c[da>>2]|0)+(c[t+(c[U>>2]<<2)>>2]|0)|0))la=0;else la=(c[da>>2]|0)+(c[t+(c[U>>2]<<2)>>2]|0)|0;c[da>>2]=la}c[da>>2]=(c[da>>2]|0)+(c[(c[B>>2]|0)+(c[U>>2]<<2)>>2]|0);if(!((c[aa>>2]|0)!=0?1:(c[da>>2]|0)>=(c[u+(c[U>>2]<<2)>>2]|0))){if((c[da>>2]|0)<(c[L>>2]<<3|0))continue;c[ba>>2]=(c[ba>>2]|0)+(c[L>>2]<<3);continue}c[aa>>2]=1;if((c[da>>2]|0)<(c[(c[C>>2]|0)+(c[U>>2]<<2)>>2]|0))ma=c[da>>2]|0;else ma=c[(c[C>>2]|0)+(c[U>>2]<<2)>>2]|0;c[ba>>2]=(c[ba>>2]|0)+ma}r=c[ca>>2]|0;if((c[ba>>2]|0)>(c[G>>2]|0))c[S>>2]=r-1;else c[R>>2]=r+1}while((c[R>>2]|0)<=(c[S>>2]|0));ba=c[R>>2]|0;c[R>>2]=ba+-1;c[S>>2]=ba;c[U>>2]=c[z>>2];while(1){if((c[U>>2]|0)>=(c[A>>2]|0))break;c[ha>>2]=(b[(c[(c[y>>2]|0)+32>>2]|0)+((c[U>>2]|0)+1<<1)>>1]|0)-(b[(c[(c[y>>2]|0)+32>>2]|0)+(c[U>>2]<<1)>>1]|0);ba=_(c[L>>2]|0,c[ha>>2]|0)|0;ca=_(c[R>>2]|0,c[T>>2]|0)|0;ma=_(ba,d[(c[(c[y>>2]|0)+52>>2]|0)+(ca+(c[U>>2]|0))>>0]|0)|0;c[fa>>2]=ma<<c[M>>2]>>2;if((c[S>>2]|0)>=(c[(c[y>>2]|0)+48>>2]|0))na=c[(c[C>>2]|0)+(c[U>>2]<<2)>>2]|0;else{ma=_(c[L>>2]|0,c[ha>>2]|0)|0;ca=_(c[S>>2]|0,c[T>>2]|0)|0;ba=_(ma,d[(c[(c[y>>2]|0)+52>>2]|0)+(ca+(c[U>>2]|0))>>0]|0)|0;na=ba<<c[M>>2]>>2}c[ga>>2]=na;if((c[fa>>2]|0)>0){if(0>((c[fa>>2]|0)+(c[t+(c[U>>2]<<2)>>2]|0)|0))oa=0;else oa=(c[fa>>2]|0)+(c[t+(c[U>>2]<<2)>>2]|0)|0;c[fa>>2]=oa}if((c[ga>>2]|0)>0){if(0>((c[ga>>2]|0)+(c[t+(c[U>>2]<<2)>>2]|0)|0))pa=0;else pa=(c[ga>>2]|0)+(c[t+(c[U>>2]<<2)>>2]|0)|0;c[ga>>2]=pa}if((c[R>>2]|0)>0)c[fa>>2]=(c[fa>>2]|0)+(c[(c[B>>2]|0)+(c[U>>2]<<2)>>2]|0);c[ga>>2]=(c[ga>>2]|0)+(c[(c[B>>2]|0)+(c[U>>2]<<2)>>2]|0);if((c[(c[B>>2]|0)+(c[U>>2]<<2)>>2]|0)>0)c[W>>2]=c[U>>2];if(0>((c[ga>>2]|0)-(c[fa>>2]|0)|0))qa=0;else qa=(c[ga>>2]|0)-(c[fa>>2]|0)|0;c[ga>>2]=qa;c[v+(c[U>>2]<<2)>>2]=c[fa>>2];c[w+(c[U>>2]<<2)>>2]=c[ga>>2];c[U>>2]=(c[U>>2]|0)+1}c[V>>2]=xd(c[y>>2]|0,c[z>>2]|0,c[A>>2]|0,c[W>>2]|0,v,w,u,c[C>>2]|0,c[G>>2]|0,c[H>>2]|0,c[X>>2]|0,c[E>>2]|0,c[Y>>2]|0,c[F>>2]|0,c[Z>>2]|0,c[I>>2]|0,c[J>>2]|0,c[K>>2]|0,c[L>>2]|0,c[M>>2]|0,c[N>>2]|0,c[O>>2]|0,c[P>>2]|0,c[Q>>2]|0)|0;Q=c[V>>2]|0;c[ia>>2]=1;ka(c[$>>2]|0);i=x;return Q|0}function Gb(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;j=i;i=i+96|0;k=j+84|0;l=j;m=j+4|0;n=j+40|0;o=j+76|0;p=j+16|0;q=j+20|0;r=j+24|0;s=j+64|0;t=j+72|0;u=j+80|0;v=j+88|0;w=j+44|0;x=j+48|0;y=j+52|0;z=j+8|0;A=j+56|0;B=j+28|0;C=j+60|0;D=j+12|0;E=j+32|0;F=j+68|0;G=j+36|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=h;h=c[l>>2]|0;c[y>>2]=ua()|0;f=i;i=i+((1*(h<<2)|0)+15&-16)|0;h=i;i=i+((1*(c[l>>2]<<2)|0)+15&-16)|0;e=i;i=i+((1*(c[l>>2]<<2)|0)+15&-16)|0;yd(c[k>>2]|0,c[l>>2]|0,1,c[o>>2]|0,c[m>>2]|0,c[n>>2]|0);g[u>>2]=0.0;c[r>>2]=0;do{n=e+(c[r>>2]<<2)|0;if(+g[(c[k>>2]|0)+(c[r>>2]<<2)>>2]>0.0)g[n>>2]=1.0;else{g[n>>2]=-1.0;g[(c[k>>2]|0)+(c[r>>2]<<2)>>2]=-+g[(c[k>>2]|0)+(c[r>>2]<<2)>>2]}c[h+(c[r>>2]<<2)>>2]=0;g[f+(c[r>>2]<<2)>>2]=0.0;n=(c[r>>2]|0)+1|0;c[r>>2]=n}while((n|0)<(c[l>>2]|0));g[w>>2]=0.0;g[v>>2]=0.0;c[t>>2]=c[m>>2];if((c[m>>2]|0)>(c[l>>2]>>1|0)){c[r>>2]=0;do{g[u>>2]=+g[u>>2]+ +g[(c[k>>2]|0)+(c[r>>2]<<2)>>2];n=(c[r>>2]|0)+1|0;c[r>>2]=n}while((n|0)<(c[l>>2]|0));if(!(+g[u>>2]>1.0000000036274937e-15&+g[u>>2]<64.0)){g[c[k>>2]>>2]=1.0;c[r>>2]=1;do{g[(c[k>>2]|0)+(c[r>>2]<<2)>>2]=0.0;n=(c[r>>2]|0)+1|0;c[r>>2]=n}while((n|0)<(c[l>>2]|0));g[u>>2]=1.0}g[z>>2]=+((c[m>>2]|0)-1|0)*(1.0/+g[u>>2]);c[r>>2]=0;do{u=~~+M(+(+g[z>>2]*+g[(c[k>>2]|0)+(c[r>>2]<<2)>>2]));c[h+(c[r>>2]<<2)>>2]=u;g[f+(c[r>>2]<<2)>>2]=+(c[h+(c[r>>2]<<2)>>2]|0);g[w>>2]=+g[w>>2]+ +g[f+(c[r>>2]<<2)>>2]*+g[f+(c[r>>2]<<2)>>2];g[v>>2]=+g[v>>2]+ +g[(c[k>>2]|0)+(c[r>>2]<<2)>>2]*+g[f+(c[r>>2]<<2)>>2];u=f+(c[r>>2]<<2)|0;g[u>>2]=+g[u>>2]*2.0;c[t>>2]=(c[t>>2]|0)-(c[h+(c[r>>2]<<2)>>2]|0);u=(c[r>>2]|0)+1|0;c[r>>2]=u}while((u|0)<(c[l>>2]|0))}if((c[t>>2]|0)>((c[l>>2]|0)+3|0)){g[A>>2]=+(c[t>>2]|0);g[w>>2]=+g[w>>2]+ +g[A>>2]*+g[A>>2];g[w>>2]=+g[w>>2]+ +g[A>>2]*+g[f>>2];c[h>>2]=(c[h>>2]|0)+(c[t>>2]|0);c[t>>2]=0}g[s>>2]=1.0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[t>>2]|0))break;g[C>>2]=-999999986991104.0;g[D>>2]=0.0;c[B>>2]=0;g[w>>2]=+g[w>>2]+1.0;c[r>>2]=0;do{g[E>>2]=+g[v>>2]+ +g[(c[k>>2]|0)+(c[r>>2]<<2)>>2];g[F>>2]=+g[w>>2]+ +g[f+(c[r>>2]<<2)>>2];g[E>>2]=+g[E>>2]*+g[E>>2];if(+g[D>>2]*+g[E>>2]>+g[F>>2]*+g[C>>2]){g[D>>2]=+g[F>>2];g[C>>2]=+g[E>>2];c[B>>2]=c[r>>2]}A=(c[r>>2]|0)+1|0;c[r>>2]=A}while((A|0)<(c[l>>2]|0));g[v>>2]=+g[v>>2]+ +g[(c[k>>2]|0)+(c[B>>2]<<2)>>2];g[w>>2]=+g[w>>2]+ +g[f+(c[B>>2]<<2)>>2];A=f+(c[B>>2]<<2)|0;g[A>>2]=+g[A>>2]+ +g[s>>2]*2.0;A=h+(c[B>>2]<<2)|0;c[A>>2]=(c[A>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+1}c[r>>2]=0;do{g[(c[k>>2]|0)+(c[r>>2]<<2)>>2]=+g[e+(c[r>>2]<<2)>>2]*+g[(c[k>>2]|0)+(c[r>>2]<<2)>>2];if(+g[e+(c[r>>2]<<2)>>2]<0.0)c[h+(c[r>>2]<<2)>>2]=0-(c[h+(c[r>>2]<<2)>>2]|0);q=(c[r>>2]|0)+1|0;c[r>>2]=q}while((q|0)<(c[l>>2]|0));bb(h,c[l>>2]|0,c[m>>2]|0,c[p>>2]|0);c[x>>2]=zd(h,c[l>>2]|0,c[o>>2]|0)|0;o=c[x>>2]|0;c[G>>2]=1;ka(c[y>>2]|0);i=j;return o|0}function Hb(a,b,d,e,f,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=+j;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;k=i;i=i+48|0;l=k+36|0;m=k+16|0;n=k;o=k+28|0;p=k+32|0;q=k+40|0;r=k+12|0;s=k+24|0;t=k+20|0;u=k+8|0;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=h;g[r>>2]=j;h=c[m>>2]|0;c[u>>2]=ua()|0;f=i;i=i+((1*(h<<2)|0)+15&-16)|0;g[s>>2]=+cb(f,c[m>>2]|0,c[n>>2]|0,c[q>>2]|0);Ad(f,c[l>>2]|0,c[m>>2]|0,+g[s>>2],+g[r>>2]);yd(c[l>>2]|0,c[m>>2]|0,-1,c[p>>2]|0,c[n>>2]|0,c[o>>2]|0);c[t>>2]=zd(f,c[m>>2]|0,c[p>>2]|0)|0;p=c[t>>2]|0;c[k+4>>2]=1;ka(c[u>>2]|0);i=k;return p|0}function Ib(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;i=i+32|0;f=e+4|0;h=e+16|0;j=e+8|0;k=e+20|0;l=e+28|0;m=e;n=e+12|0;o=e+24|0;c[f>>2]=a;c[h>>2]=b;g[j>>2]=d;g[l>>2]=+Bd(c[f>>2]|0,c[f>>2]|0,c[h>>2]|0)+1.0000000036274937e-15;g[n>>2]=+g[l>>2];d=1.0/+O(+(+g[n>>2]));g[m>>2]=d*+g[j>>2];c[o>>2]=c[f>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[h>>2]|0))break;g[c[o>>2]>>2]=+g[m>>2]*+g[c[o>>2]>>2];c[o>>2]=(c[o>>2]|0)+4;c[k>>2]=(c[k>>2]|0)+1}i=e;return}function Jb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0;f=i;i=i+48|0;h=f+4|0;j=f+16|0;k=f+36|0;l=f;m=f+32|0;n=f+40|0;o=f+44|0;p=f+24|0;q=f+20|0;r=f+8|0;s=f+12|0;t=f+28|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;g[r>>2]=1.0000000036274937e-15;g[q>>2]=1.0000000036274937e-15;a:do if(c[k>>2]|0){c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[l>>2]|0))break a;g[s>>2]=+g[(c[h>>2]|0)+(c[m>>2]<<2)>>2]+ +g[(c[j>>2]|0)+(c[m>>2]<<2)>>2];g[t>>2]=+g[(c[h>>2]|0)+(c[m>>2]<<2)>>2]-+g[(c[j>>2]|0)+(c[m>>2]<<2)>>2];g[q>>2]=+g[q>>2]+ +g[s>>2]*+g[s>>2];g[r>>2]=+g[r>>2]+ +g[t>>2]*+g[t>>2];c[m>>2]=(c[m>>2]|0)+1}}else{u=+Bd(c[h>>2]|0,c[h>>2]|0,c[l>>2]|0);g[q>>2]=+g[q>>2]+u;u=+Bd(c[j>>2]|0,c[j>>2]|0,c[l>>2]|0);g[r>>2]=+g[r>>2]+u}while(0);g[o>>2]=+O(+(+g[q>>2]));g[p>>2]=+O(+(+g[r>>2]));c[n>>2]=~~+M(+(+W(+(+g[p>>2]),+(+g[o>>2]))*10430.3818359375+.5));i=f;return c[n>>2]|0}function Kb(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[e>>2]=a;c[g>>2]=32767/((c[(c[e>>2]|0)+2340>>2]|0)+1|0)|0;c[h>>2]=0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+2340>>2]|0))break;c[h>>2]=(c[h>>2]|0)+(c[g>>2]|0);b[(c[e>>2]|0)+2772+1280+(c[f>>2]<<1)>>1]=c[h>>2];c[f>>2]=(c[f>>2]|0)+1}c[(c[e>>2]|0)+2772+1376>>2]=0;c[(c[e>>2]|0)+2772+1380>>2]=3176576;i=d;return}function Lb(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=i;i=i+80|0;h=g;j=g+16|0;k=g+4|0;l=g+8|0;m=g+32|0;n=g+36|0;o=g+12|0;p=g+24|0;q=g+40|0;r=g+28|0;s=g+20|0;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[r>>2]=(c[h>>2]|0)+2772;if((c[(c[h>>2]|0)+2316>>2]|0)!=(c[(c[r>>2]|0)+1384>>2]|0)){Kb(c[h>>2]|0);c[(c[r>>2]|0)+1384>>2]=c[(c[h>>2]|0)+2316>>2]}a:do if((c[(c[h>>2]|0)+4160>>2]|0)==0?(c[(c[h>>2]|0)+4164>>2]|0)==0:0){c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[h>>2]|0)+2340>>2]|0))break;f=(c[r>>2]|0)+1280+(c[m>>2]<<1)|0;b[f>>1]=(b[f>>1]|0)+((((b[(c[h>>2]|0)+2344+(c[m>>2]<<1)>>1]|0)-(b[(c[r>>2]|0)+1280+(c[m>>2]<<1)>>1]|0)>>16)*16348|0)+(((b[(c[h>>2]|0)+2344+(c[m>>2]<<1)>>1]|0)-(b[(c[r>>2]|0)+1280+(c[m>>2]<<1)>>1]|0)&65535)*16348>>16));c[m>>2]=(c[m>>2]|0)+1}c[p>>2]=0;c[n>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[h>>2]|0)+2324>>2]|0))break;if((c[(c[j>>2]|0)+16+(c[m>>2]<<2)>>2]|0)>(c[p>>2]|0)){c[p>>2]=c[(c[j>>2]|0)+16+(c[m>>2]<<2)>>2];c[n>>2]=c[m>>2]}c[m>>2]=(c[m>>2]|0)+1}ff((c[r>>2]|0)+(c[(c[h>>2]|0)+2332>>2]<<2)|0,c[r>>2]|0,(_((c[(c[h>>2]|0)+2324>>2]|0)-1|0,c[(c[h>>2]|0)+2332>>2]|0)|0)<<2|0)|0;f=_(c[n>>2]|0,c[(c[h>>2]|0)+2332>>2]|0)|0;df(c[r>>2]|0,(c[h>>2]|0)+4+(f<<2)|0,c[(c[h>>2]|0)+2332>>2]<<2|0)|0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[h>>2]|0)+2324>>2]|0))break a;f=(c[r>>2]|0)+1376|0;c[f>>2]=(c[f>>2]|0)+((((c[(c[j>>2]|0)+16+(c[m>>2]<<2)>>2]|0)-(c[(c[r>>2]|0)+1376>>2]|0)>>16)*4634|0)+(((c[(c[j>>2]|0)+16+(c[m>>2]<<2)>>2]|0)-(c[(c[r>>2]|0)+1376>>2]|0)&65535)*4634>>16));c[m>>2]=(c[m>>2]|0)+1}}while(0);if(!(c[(c[h>>2]|0)+4160>>2]|0)){bf((c[r>>2]|0)+1312|0,0,c[(c[h>>2]|0)+2340>>2]<<2|0)|0;i=g;return}j=(c[l>>2]|0)+16|0;c[s>>2]=ua()|0;n=i;i=i+((1*(j<<2)|0)+15&-16)|0;Cd(n+64|0,c[r>>2]|0,c[(c[r>>2]|0)+1376>>2]|0,c[l>>2]|0,(c[r>>2]|0)+1380|0);jc(q,(c[r>>2]|0)+1280|0,c[(c[h>>2]|0)+2340>>2]|0);j=n;p=(c[r>>2]|0)+1312|0;f=j+64|0;do{c[j>>2]=c[p>>2];j=j+4|0;p=p+4|0}while((j|0)<(f|0));c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[l>>2]|0))break;c[o>>2]=c[(c[h>>2]|0)+2340>>2]>>1;e=_(c[n+(16+(c[m>>2]|0)-1<<2)>>2]>>16,b[q>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-1<<2)>>2]&65535,b[q>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-2<<2)>>2]>>16,b[q+2>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-2<<2)>>2]&65535,b[q+2>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-3<<2)>>2]>>16,b[q+4>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-3<<2)>>2]&65535,b[q+4>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-4<<2)>>2]>>16,b[q+6>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-4<<2)>>2]&65535,b[q+6>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-5<<2)>>2]>>16,b[q+8>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-5<<2)>>2]&65535,b[q+8>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-6<<2)>>2]>>16,b[q+10>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-6<<2)>>2]&65535,b[q+10>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-7<<2)>>2]>>16,b[q+12>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-7<<2)>>2]&65535,b[q+12>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-8<<2)>>2]>>16,b[q+14>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-8<<2)>>2]&65535,b[q+14>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-9<<2)>>2]>>16,b[q+16>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-9<<2)>>2]&65535,b[q+16>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-10<<2)>>2]>>16,b[q+18>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-10<<2)>>2]&65535,b[q+18>>1]|0)|0)>>16));if((c[(c[h>>2]|0)+2340>>2]|0)==16){e=_(c[n+(16+(c[m>>2]|0)-11<<2)>>2]>>16,b[q+20>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-11<<2)>>2]&65535,b[q+20>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-12<<2)>>2]>>16,b[q+22>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-12<<2)>>2]&65535,b[q+22>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-13<<2)>>2]>>16,b[q+24>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-13<<2)>>2]&65535,b[q+24>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-14<<2)>>2]>>16,b[q+26>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-14<<2)>>2]&65535,b[q+26>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-15<<2)>>2]>>16,b[q+28>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-15<<2)>>2]&65535,b[q+28>>1]|0)|0)>>16));e=_(c[n+(16+(c[m>>2]|0)-16<<2)>>2]>>16,b[q+30>>1]|0)|0;c[o>>2]=(c[o>>2]|0)+(e+((_(c[n+(16+(c[m>>2]|0)-16<<2)>>2]&65535,b[q+30>>1]|0)|0)>>16))}c[n+(16+(c[m>>2]|0)<<2)>>2]=(c[n+(16+(c[m>>2]|0)<<2)>>2]|0)+(c[o>>2]<<4);if(((b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]|0)+((c[o>>2]>>5)+1>>1)|0)<=32767)if(((b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]|0)+((c[o>>2]>>5)+1>>1)|0)<-32768)t=-32768;else t=(b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]|0)+((c[o>>2]>>5)+1>>1)|0;else t=32767;b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]=t;c[m>>2]=(c[m>>2]|0)+1}j=(c[r>>2]|0)+1312|0;p=n+(c[l>>2]<<2)|0;f=j+64|0;do{c[j>>2]=c[p>>2];j=j+4|0;p=p+4|0}while((j|0)<(f|0));ka(c[s>>2]|0);i=g;return}function Mb(d,e,f,g,h,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;k=i;i=i+48|0;l=k+12|0;m=k+16|0;n=k+28|0;o=k+4|0;p=k+32|0;q=k+36|0;r=k+40|0;s=k+24|0;t=k+20|0;u=k+44|0;v=k;w=k+8|0;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;a[u+1>>0]=0;c[v>>2]=c[m>>2];c[r>>2]=(((c[p>>2]|0)+(c[o>>2]<<1)&65535)<<16>>16)*7;c[w>>2]=1496+(c[r>>2]|0);c[n>>2]=(c[n>>2]|0)+8>>4;c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[n>>2]|0))break;c[t>>2]=c[(c[q>>2]|0)+(c[r>>2]<<2)>>2];a:do if((c[t>>2]|0)>0){a[u>>0]=a[(c[w>>2]|0)+((c[t>>2]&31|0)<6?c[t>>2]&31:6)>>0]|0;c[s>>2]=0;while(1){if((c[s>>2]|0)>=16)break a;if((b[(c[v>>2]|0)+(c[s>>2]<<1)>>1]|0)>0){o=((jb(c[l>>2]|0,u,8)|0)<<1)-1|0;p=(c[v>>2]|0)+(c[s>>2]<<1)|0;b[p>>1]=_(b[p>>1]|0,o)|0}c[s>>2]=(c[s>>2]|0)+1}}while(0);c[v>>2]=(c[v>>2]|0)+32;c[r>>2]=(c[r>>2]|0)+1}i=k;return}function Nb(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;bf(c[d>>2]|0,0,4260)|0;c[(c[d>>2]|0)+2376>>2]=1;c[c[d>>2]>>2]=65536;Kb(c[d>>2]|0);Zb(c[d>>2]|0);i=b;return 0}function Ob(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;h=i;i=i+144|0;j=h+48|0;k=h+40|0;l=h;m=h+84|0;n=h+4|0;o=h+16|0;p=h+20|0;q=h+24|0;r=h+28|0;s=h+72|0;t=h+80|0;u=h+88|0;v=h+92|0;w=h+96|0;x=h+104|0;y=h+56|0;z=h+60|0;A=h+8|0;B=h+64|0;C=h+12|0;D=h+32|0;E=h+68|0;F=h+36|0;G=h+76|0;H=h+44|0;I=h+52|0;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[p>>2]=0;g=c[(c[j>>2]|0)+2336>>2]|0;c[I>>2]=ua()|0;f=i;i=i+((1*(g<<1)|0)+15&-16)|0;g=i;i=i+((1*((c[(c[j>>2]|0)+2336>>2]|0)+(c[(c[j>>2]|0)+2328>>2]|0)<<2)|0)+15&-16)|0;e=i;i=i+((1*(c[(c[j>>2]|0)+2332>>2]<<2)|0)+15&-16)|0;d=i;i=i+((1*((c[(c[j>>2]|0)+2332>>2]|0)+16<<2)|0)+15&-16)|0;c[E>>2]=b[456+(a[(c[j>>2]|0)+2736+29>>0]>>1<<2)+(a[(c[j>>2]|0)+2736+30>>0]<<1)>>1];if((a[(c[j>>2]|0)+2736+31>>0]|0)<4)c[s>>2]=1;else c[s>>2]=0;c[D>>2]=a[(c[j>>2]|0)+2736+34>>0];c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[(c[j>>2]|0)+2328>>2]|0))break;c[D>>2]=907633515+(_(c[D>>2]|0,196314165)|0);c[(c[j>>2]|0)+4+(c[n>>2]<<2)>>2]=b[(c[m>>2]|0)+(c[n>>2]<<1)>>1]<<14;J=(c[j>>2]|0)+4+(c[n>>2]<<2)|0;K=c[J>>2]|0;if((c[(c[j>>2]|0)+4+(c[n>>2]<<2)>>2]|0)<=0){if((K|0)<0){L=(c[j>>2]|0)+4+(c[n>>2]<<2)|0;c[L>>2]=(c[L>>2]|0)+1280}}else c[J>>2]=K-1280;K=(c[j>>2]|0)+4+(c[n>>2]<<2)|0;c[K>>2]=(c[K>>2]|0)+(c[E>>2]<<4);if((c[D>>2]|0)<0)c[(c[j>>2]|0)+4+(c[n>>2]<<2)>>2]=0-(c[(c[j>>2]|0)+4+(c[n>>2]<<2)>>2]|0);c[D>>2]=(c[D>>2]|0)+(b[(c[m>>2]|0)+(c[n>>2]<<1)>>1]|0);c[n>>2]=(c[n>>2]|0)+1}m=d;D=(c[j>>2]|0)+1284|0;E=m+64|0;do{c[m>>2]=c[D>>2];m=m+4|0;D=D+4|0}while((m|0)<(E|0));c[G>>2]=(c[j>>2]|0)+4;c[w>>2]=c[l>>2];c[r>>2]=c[(c[j>>2]|0)+2336>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[(c[j>>2]|0)+2324>>2]|0))break;c[H>>2]=e;c[u>>2]=(c[k>>2]|0)+32+(c[o>>2]>>1<<5);df(x|0,c[u>>2]|0,c[(c[j>>2]|0)+2340>>2]<<1|0)|0;c[v>>2]=(c[k>>2]|0)+96+((c[o>>2]|0)*5<<1);c[t>>2]=a[(c[j>>2]|0)+2736+29>>0];c[A>>2]=c[(c[k>>2]|0)+16+(c[o>>2]<<2)>>2]>>6;c[B>>2]=Dd(c[(c[k>>2]|0)+16+(c[o>>2]<<2)>>2]|0,47)|0;a:do if((c[(c[k>>2]|0)+16+(c[o>>2]<<2)>>2]|0)!=(c[c[j>>2]>>2]|0)){c[C>>2]=Ed(c[c[j>>2]>>2]|0,c[(c[k>>2]|0)+16+(c[o>>2]<<2)>>2]|0,16)|0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=16)break a;K=_(c[C>>2]>>16,(c[d+(c[n>>2]<<2)>>2]&65535)<<16>>16)|0;J=K+((_(c[C>>2]&65535,(c[d+(c[n>>2]<<2)>>2]&65535)<<16>>16)|0)>>16)|0;K=J+(_(c[C>>2]|0,(c[d+(c[n>>2]<<2)>>2]>>15)+1>>1)|0)|0;c[d+(c[n>>2]<<2)>>2]=K;c[n>>2]=(c[n>>2]|0)+1}}else c[C>>2]=65536;while(0);c[c[j>>2]>>2]=c[(c[k>>2]|0)+16+(c[o>>2]<<2)>>2];if(((c[(c[j>>2]|0)+4160>>2]|0)!=0?(c[(c[j>>2]|0)+4164>>2]|0)==2:0)?((c[o>>2]|0)<2?(a[(c[j>>2]|0)+2736+29>>0]|0)!=2:0):0){K=c[v>>2]|0;b[K>>1]=0;b[K+2>>1]=0;b[K+4>>1]=0;b[K+6>>1]=0;b[K+8>>1]=0;b[(c[v>>2]|0)+4>>1]=4096;c[t>>2]=2;c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]=c[(c[j>>2]|0)+2308>>2]}b:do if((c[t>>2]|0)==2){c[p>>2]=c[(c[k>>2]|0)+(c[o>>2]<<2)>>2];if((c[o>>2]|0)!=0?!((c[o>>2]|0)==2&(c[s>>2]|0)!=0):0){if((c[C>>2]|0)==65536)break;c[n>>2]=0;while(1){if((c[n>>2]|0)>=((c[p>>2]|0)+2|0))break b;K=_(c[C>>2]>>16,(c[g+((c[r>>2]|0)-(c[n>>2]|0)-1<<2)>>2]&65535)<<16>>16)|0;J=K+((_(c[C>>2]&65535,(c[g+((c[r>>2]|0)-(c[n>>2]|0)-1<<2)>>2]&65535)<<16>>16)|0)>>16)|0;K=J+(_(c[C>>2]|0,(c[g+((c[r>>2]|0)-(c[n>>2]|0)-1<<2)>>2]>>15)+1>>1)|0)|0;c[g+((c[r>>2]|0)-(c[n>>2]|0)-1<<2)>>2]=K;c[n>>2]=(c[n>>2]|0)+1}}c[q>>2]=(c[(c[j>>2]|0)+2336>>2]|0)-(c[p>>2]|0)-(c[(c[j>>2]|0)+2340>>2]|0)-2;if((c[o>>2]|0)==2)df((c[j>>2]|0)+1348+(c[(c[j>>2]|0)+2336>>2]<<1)|0,c[l>>2]|0,c[(c[j>>2]|0)+2332>>2]<<1<<1|0)|0;K=(c[q>>2]|0)+(_(c[o>>2]|0,c[(c[j>>2]|0)+2332>>2]|0)|0)|0;hc(f+(c[q>>2]<<1)|0,(c[j>>2]|0)+1348+(K<<1)|0,c[u>>2]|0,(c[(c[j>>2]|0)+2336>>2]|0)-(c[q>>2]|0)|0,c[(c[j>>2]|0)+2340>>2]|0);if(!(c[o>>2]|0)){K=_(c[B>>2]>>16,(c[(c[k>>2]|0)+136>>2]&65535)<<16>>16)|0;c[B>>2]=K+((_(c[B>>2]&65535,(c[(c[k>>2]|0)+136>>2]&65535)<<16>>16)|0)>>16)<<2}c[n>>2]=0;while(1){if((c[n>>2]|0)>=((c[p>>2]|0)+2|0))break b;K=_(c[B>>2]>>16,b[f+((c[(c[j>>2]|0)+2336>>2]|0)-(c[n>>2]|0)-1<<1)>>1]|0)|0;J=K+((_(c[B>>2]&65535,b[f+((c[(c[j>>2]|0)+2336>>2]|0)-(c[n>>2]|0)-1<<1)>>1]|0)|0)>>16)|0;c[g+((c[r>>2]|0)-(c[n>>2]|0)-1<<2)>>2]=J;c[n>>2]=(c[n>>2]|0)+1}}while(0);c:do if((c[t>>2]|0)==2){c[F>>2]=g+((c[r>>2]|0)-(c[p>>2]|0)+2<<2);c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[(c[j>>2]|0)+2332>>2]|0))break c;c[y>>2]=2;J=_(c[c[F>>2]>>2]>>16,b[c[v>>2]>>1]|0)|0;c[y>>2]=(c[y>>2]|0)+(J+((_(c[c[F>>2]>>2]&65535,b[c[v>>2]>>1]|0)|0)>>16));J=_(c[(c[F>>2]|0)+-4>>2]>>16,b[(c[v>>2]|0)+2>>1]|0)|0;c[y>>2]=(c[y>>2]|0)+(J+((_(c[(c[F>>2]|0)+-4>>2]&65535,b[(c[v>>2]|0)+2>>1]|0)|0)>>16));J=_(c[(c[F>>2]|0)+-8>>2]>>16,b[(c[v>>2]|0)+4>>1]|0)|0;c[y>>2]=(c[y>>2]|0)+(J+((_(c[(c[F>>2]|0)+-8>>2]&65535,b[(c[v>>2]|0)+4>>1]|0)|0)>>16));J=_(c[(c[F>>2]|0)+-12>>2]>>16,b[(c[v>>2]|0)+6>>1]|0)|0;c[y>>2]=(c[y>>2]|0)+(J+((_(c[(c[F>>2]|0)+-12>>2]&65535,b[(c[v>>2]|0)+6>>1]|0)|0)>>16));J=_(c[(c[F>>2]|0)+-16>>2]>>16,b[(c[v>>2]|0)+8>>1]|0)|0;c[y>>2]=(c[y>>2]|0)+(J+((_(c[(c[F>>2]|0)+-16>>2]&65535,b[(c[v>>2]|0)+8>>1]|0)|0)>>16));c[F>>2]=(c[F>>2]|0)+4;c[(c[H>>2]|0)+(c[n>>2]<<2)>>2]=(c[(c[G>>2]|0)+(c[n>>2]<<2)>>2]|0)+(c[y>>2]<<1);c[g+(c[r>>2]<<2)>>2]=c[(c[H>>2]|0)+(c[n>>2]<<2)>>2]<<1;c[r>>2]=(c[r>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+1}}else c[H>>2]=c[G>>2];while(0);c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[(c[j>>2]|0)+2332>>2]|0))break;c[z>>2]=c[(c[j>>2]|0)+2340>>2]>>1;J=_(c[d+(16+(c[n>>2]|0)-1<<2)>>2]>>16,b[x>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-1<<2)>>2]&65535,b[x>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-2<<2)>>2]>>16,b[x+2>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-2<<2)>>2]&65535,b[x+2>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-3<<2)>>2]>>16,b[x+4>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-3<<2)>>2]&65535,b[x+4>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-4<<2)>>2]>>16,b[x+6>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-4<<2)>>2]&65535,b[x+6>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-5<<2)>>2]>>16,b[x+8>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-5<<2)>>2]&65535,b[x+8>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-6<<2)>>2]>>16,b[x+10>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-6<<2)>>2]&65535,b[x+10>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-7<<2)>>2]>>16,b[x+12>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-7<<2)>>2]&65535,b[x+12>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-8<<2)>>2]>>16,b[x+14>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-8<<2)>>2]&65535,b[x+14>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-9<<2)>>2]>>16,b[x+16>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-9<<2)>>2]&65535,b[x+16>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-10<<2)>>2]>>16,b[x+18>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-10<<2)>>2]&65535,b[x+18>>1]|0)|0)>>16));if((c[(c[j>>2]|0)+2340>>2]|0)==16){J=_(c[d+(16+(c[n>>2]|0)-11<<2)>>2]>>16,b[x+20>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-11<<2)>>2]&65535,b[x+20>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-12<<2)>>2]>>16,b[x+22>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-12<<2)>>2]&65535,b[x+22>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-13<<2)>>2]>>16,b[x+24>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-13<<2)>>2]&65535,b[x+24>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-14<<2)>>2]>>16,b[x+26>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-14<<2)>>2]&65535,b[x+26>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-15<<2)>>2]>>16,b[x+28>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-15<<2)>>2]&65535,b[x+28>>1]|0)|0)>>16));J=_(c[d+(16+(c[n>>2]|0)-16<<2)>>2]>>16,b[x+30>>1]|0)|0;c[z>>2]=(c[z>>2]|0)+(J+((_(c[d+(16+(c[n>>2]|0)-16<<2)>>2]&65535,b[x+30>>1]|0)|0)>>16))}c[d+(16+(c[n>>2]|0)<<2)>>2]=(c[(c[H>>2]|0)+(c[n>>2]<<2)>>2]|0)+(c[z>>2]<<4);J=_(c[d+(16+(c[n>>2]|0)<<2)>>2]>>16,(c[A>>2]&65535)<<16>>16)|0;K=J+((_(c[d+(16+(c[n>>2]|0)<<2)>>2]&65535,(c[A>>2]&65535)<<16>>16)|0)>>16)|0;if(((K+(_(c[d+(16+(c[n>>2]|0)<<2)>>2]|0,(c[A>>2]>>15)+1>>1)|0)>>7)+1>>1|0)<=32767){K=_(c[d+(16+(c[n>>2]|0)<<2)>>2]>>16,(c[A>>2]&65535)<<16>>16)|0;J=K+((_(c[d+(16+(c[n>>2]|0)<<2)>>2]&65535,(c[A>>2]&65535)<<16>>16)|0)>>16)|0;if(((J+(_(c[d+(16+(c[n>>2]|0)<<2)>>2]|0,(c[A>>2]>>15)+1>>1)|0)>>7)+1>>1|0)<-32768)M=-32768;else{J=_(c[d+(16+(c[n>>2]|0)<<2)>>2]>>16,(c[A>>2]&65535)<<16>>16)|0;K=J+((_(c[d+(16+(c[n>>2]|0)<<2)>>2]&65535,(c[A>>2]&65535)<<16>>16)|0)>>16)|0;M=(K+(_(c[d+(16+(c[n>>2]|0)<<2)>>2]|0,(c[A>>2]>>15)+1>>1)|0)>>7)+1>>1}}else M=32767;b[(c[w>>2]|0)+(c[n>>2]<<1)>>1]=M;c[n>>2]=(c[n>>2]|0)+1}m=d;D=d+(c[(c[j>>2]|0)+2332>>2]<<2)|0;E=m+64|0;do{c[m>>2]=c[D>>2];m=m+4|0;D=D+4|0}while((m|0)<(E|0));c[G>>2]=(c[G>>2]|0)+(c[(c[j>>2]|0)+2332>>2]<<2);c[w>>2]=(c[w>>2]|0)+(c[(c[j>>2]|0)+2332>>2]<<1);c[o>>2]=(c[o>>2]|0)+1}m=(c[j>>2]|0)+1284|0;D=d;E=m+64|0;do{c[m>>2]=c[D>>2];m=m+4|0;D=D+4|0}while((m|0)<(E|0));ka(c[I>>2]|0);i=h;return}function Pb(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=i;i=i+192|0;k=j+172|0;l=j+152|0;m=j;n=j+164|0;o=j+168|0;p=j+176|0;q=j+148|0;r=j+160|0;s=j+156|0;t=j+8|0;u=j+4|0;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[s>>2]=0;c[q>>2]=c[(c[k>>2]|0)+2328>>2];c[t+136>>2]=0;do if(!(c[o>>2]|0))v=4;else{if((c[o>>2]|0)==2?(c[(c[k>>2]|0)+2420+(c[(c[k>>2]|0)+2388>>2]<<2)>>2]|0)==1:0){v=4;break}_b(c[k>>2]|0,t,c[m>>2]|0,1)}while(0);if((v|0)==4){v=(c[q>>2]|0)+16-1&-16;c[u>>2]=ua()|0;h=i;i=i+((1*(v<<1)|0)+15&-16)|0;Rb(c[k>>2]|0,c[l>>2]|0,c[(c[k>>2]|0)+2388>>2]|0,c[o>>2]|0,c[p>>2]|0);Sb(c[l>>2]|0,h,a[(c[k>>2]|0)+2736+29>>0]|0,a[(c[k>>2]|0)+2736+30>>0]|0,c[(c[k>>2]|0)+2328>>2]|0);Qb(c[k>>2]|0,t,c[p>>2]|0);Ob(c[k>>2]|0,t,c[m>>2]|0,h);_b(c[k>>2]|0,t,c[m>>2]|0,0);c[(c[k>>2]|0)+4160>>2]=0;c[(c[k>>2]|0)+4164>>2]=a[(c[k>>2]|0)+2736+29>>0];c[(c[k>>2]|0)+2376>>2]=0;ka(c[u>>2]|0)}c[r>>2]=(c[(c[k>>2]|0)+2336>>2]|0)-(c[(c[k>>2]|0)+2328>>2]|0);ff((c[k>>2]|0)+1348|0,(c[k>>2]|0)+1348+(c[(c[k>>2]|0)+2328>>2]<<1)|0,c[r>>2]<<1|0)|0;df((c[k>>2]|0)+1348+(c[r>>2]<<1)|0,c[m>>2]|0,c[(c[k>>2]|0)+2328>>2]<<1|0)|0;$b(c[k>>2]|0,c[m>>2]|0,c[q>>2]|0);Lb(c[k>>2]|0,t,c[m>>2]|0,c[q>>2]|0);c[(c[k>>2]|0)+2308>>2]=c[t+((c[(c[k>>2]|0)+2324>>2]|0)-1<<2)>>2];c[c[n>>2]>>2]=c[q>>2];i=j;return c[s>>2]|0}function Qb(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;i=i+96|0;h=g+4|0;j=g+16|0;k=g+12|0;l=g+8|0;m=g+24|0;n=g;o=g+32|0;p=g+64|0;q=g+20|0;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;Xb((c[j>>2]|0)+16|0,(c[h>>2]|0)+2736|0,(c[h>>2]|0)+2312|0,(c[k>>2]|0)==2&1,c[(c[h>>2]|0)+2324>>2]|0);Yb(o,(c[h>>2]|0)+2736+8|0,c[(c[h>>2]|0)+2732>>2]|0);jc((c[j>>2]|0)+32+32|0,o,c[(c[h>>2]|0)+2340>>2]|0);if((c[(c[h>>2]|0)+2376>>2]|0)==1)a[(c[h>>2]|0)+2736+31>>0]=4;if((a[(c[h>>2]|0)+2736+31>>0]|0)<4){c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[(c[h>>2]|0)+2340>>2]|0))break;k=(b[(c[h>>2]|0)+2344+(c[l>>2]<<1)>>1]|0)+((_(a[(c[h>>2]|0)+2736+31>>0]|0,(b[o+(c[l>>2]<<1)>>1]|0)-(b[(c[h>>2]|0)+2344+(c[l>>2]<<1)>>1]|0)|0)|0)>>2)&65535;b[p+(c[l>>2]<<1)>>1]=k;c[l>>2]=(c[l>>2]|0)+1}jc((c[j>>2]|0)+32|0,p,c[(c[h>>2]|0)+2340>>2]|0)}else df((c[j>>2]|0)+32|0,(c[j>>2]|0)+32+32|0,c[(c[h>>2]|0)+2340>>2]<<1|0)|0;df((c[h>>2]|0)+2344|0,o|0,c[(c[h>>2]|0)+2340>>2]<<1|0)|0;if(c[(c[h>>2]|0)+4160>>2]|0){ec((c[j>>2]|0)+32|0,c[(c[h>>2]|0)+2340>>2]|0,63570);ec((c[j>>2]|0)+32+32|0,c[(c[h>>2]|0)+2340>>2]|0,63570)}if((a[(c[h>>2]|0)+2736+29>>0]|0)!=2){bf(c[j>>2]|0,0,c[(c[h>>2]|0)+2324>>2]<<2|0)|0;bf((c[j>>2]|0)+96|0,0,(c[(c[h>>2]|0)+2324>>2]|0)*5<<1|0)|0;a[(c[h>>2]|0)+2736+32>>0]=0;c[(c[j>>2]|0)+136>>2]=0;i=g;return}fc(b[(c[h>>2]|0)+2736+26>>1]|0,a[(c[h>>2]|0)+2736+28>>0]|0,c[j>>2]|0,c[(c[h>>2]|0)+2316>>2]|0,c[(c[h>>2]|0)+2324>>2]|0);c[q>>2]=c[240+(a[(c[h>>2]|0)+2736+32>>0]<<2)>>2];c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[h>>2]|0)+2324>>2]|0))break;c[n>>2]=a[(c[h>>2]|0)+2736+4+(c[m>>2]|0)>>0];c[l>>2]=0;while(1){if((c[l>>2]|0)>=5)break;b[(c[j>>2]|0)+96+(((c[m>>2]|0)*5|0)+(c[l>>2]|0)<<1)>>1]=a[(c[q>>2]|0)+(((c[n>>2]|0)*5|0)+(c[l>>2]|0))>>0]<<7;c[l>>2]=(c[l>>2]|0)+1}c[m>>2]=(c[m>>2]|0)+1}c[n>>2]=a[(c[h>>2]|0)+2736+33>>0];c[(c[j>>2]|0)+136>>2]=b[464+(c[n>>2]<<1)>>1];i=g;return}function Rb(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;j=i;i=i+96|0;k=j+36|0;l=j+4|0;m=j+28|0;n=j+16|0;o=j+32|0;p=j;q=j+12|0;r=j+24|0;s=j+20|0;t=j+8|0;u=j+40|0;v=j+72|0;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;if((c[n>>2]|0)==0?(c[(c[k>>2]|0)+2404+(c[m>>2]<<2)>>2]|0)==0:0)c[r>>2]=jb(c[l>>2]|0,440,8)|0;else c[r>>2]=(jb(c[l>>2]|0,432,8)|0)+2;a[(c[k>>2]|0)+2736+29>>0]=c[r>>2]>>1;a[(c[k>>2]|0)+2736+30>>0]=c[r>>2]&1;m=c[l>>2]|0;if((c[o>>2]|0)==2){n=(jb(m,168,8)|0)&255;a[(c[k>>2]|0)+2736>>0]=n}else{n=(jb(m,144+(a[(c[k>>2]|0)+2736+29>>0]<<3)|0,8)|0)<<3&255;a[(c[k>>2]|0)+2736>>0]=n;n=((jb(c[l>>2]|0,504,8)|0)&255)<<24>>24;m=(c[k>>2]|0)+2736|0;a[m>>0]=(a[m>>0]|0)+n}c[p>>2]=1;while(1){w=c[l>>2]|0;if((c[p>>2]|0)>=(c[(c[k>>2]|0)+2324>>2]|0))break;n=(jb(w,168,8)|0)&255;a[(c[k>>2]|0)+2736+(c[p>>2]|0)>>0]=n;c[p>>2]=(c[p>>2]|0)+1}n=_(a[(c[k>>2]|0)+2736+29>>0]>>1,b[c[(c[k>>2]|0)+2732>>2]>>1]|0)|0;m=(jb(w,(c[(c[(c[k>>2]|0)+2732>>2]|0)+12>>2]|0)+n|0,8)|0)&255;a[(c[k>>2]|0)+2736+8>>0]=m;bc(u,v,c[(c[k>>2]|0)+2732>>2]|0,a[(c[k>>2]|0)+2736+8>>0]|0);c[p>>2]=0;while(1){if((c[p>>2]|0)>=(b[(c[(c[k>>2]|0)+2732>>2]|0)+2>>1]|0))break;c[r>>2]=jb(c[l>>2]|0,(c[(c[(c[k>>2]|0)+2732>>2]|0)+24>>2]|0)+(b[u+(c[p>>2]<<1)>>1]|0)|0,8)|0;if(c[r>>2]|0){if((c[r>>2]|0)==8){v=jb(c[l>>2]|0,512,8)|0;c[r>>2]=(c[r>>2]|0)+v}}else{v=jb(c[l>>2]|0,512,8)|0;c[r>>2]=(c[r>>2]|0)-v}a[(c[k>>2]|0)+2736+8+((c[p>>2]|0)+1)>>0]=(c[r>>2]|0)-4;c[p>>2]=(c[p>>2]|0)+1}if((c[(c[k>>2]|0)+2324>>2]|0)==4){p=(jb(c[l>>2]|0,448,8)|0)&255;a[(c[k>>2]|0)+2736+31>>0]=p}else a[(c[k>>2]|0)+2736+31>>0]=4;if((a[(c[k>>2]|0)+2736+29>>0]|0)!=2){x=c[k>>2]|0;y=x+2736|0;z=y+29|0;A=a[z>>0]|0;B=A<<24>>24;C=c[k>>2]|0;D=C+2396|0;c[D>>2]=B;E=c[l>>2]|0;F=jb(E,480,8)|0;G=F&255;H=c[k>>2]|0;I=H+2736|0;J=I+34|0;a[J>>0]=G;i=j;return}c[s>>2]=1;if(((c[o>>2]|0)==2?(c[(c[k>>2]|0)+2396>>2]|0)==2:0)?(c[t>>2]=((jb(c[l>>2]|0,552,8)|0)&65535)<<16>>16,(c[t>>2]|0)>0):0){c[t>>2]=(c[t>>2]|0)-9;b[(c[k>>2]|0)+2736+26>>1]=(b[(c[k>>2]|0)+2400>>1]|0)+(c[t>>2]|0);c[s>>2]=0}if(c[s>>2]|0){s=((jb(c[l>>2]|0,520,8)|0)&65535)<<16>>16;t=(_(s,c[(c[k>>2]|0)+2316>>2]>>1)|0)&65535;b[(c[k>>2]|0)+2736+26>>1]=t;t=((jb(c[l>>2]|0,c[(c[k>>2]|0)+2380>>2]|0,8)|0)&65535)<<16>>16;s=(c[k>>2]|0)+2736+26|0;b[s>>1]=(b[s>>1]|0)+t}b[(c[k>>2]|0)+2400>>1]=b[(c[k>>2]|0)+2736+26>>1]|0;t=(jb(c[l>>2]|0,c[(c[k>>2]|0)+2384>>2]|0,8)|0)&255;a[(c[k>>2]|0)+2736+28>>0]=t;t=(jb(c[l>>2]|0,216,8)|0)&255;a[(c[k>>2]|0)+2736+32>>0]=t;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[k>>2]|0)+2324>>2]|0))break;t=(jb(c[l>>2]|0,c[224+(a[(c[k>>2]|0)+2736+32>>0]<<2)>>2]|0,8)|0)&255;a[(c[k>>2]|0)+2736+4+(c[q>>2]|0)>>0]=t;c[q>>2]=(c[q>>2]|0)+1}if(!(c[o>>2]|0)){o=(jb(c[l>>2]|0,424,8)|0)&255;a[(c[k>>2]|0)+2736+33>>0]=o;x=c[k>>2]|0;y=x+2736|0;z=y+29|0;A=a[z>>0]|0;B=A<<24>>24;C=c[k>>2]|0;D=C+2396|0;c[D>>2]=B;E=c[l>>2]|0;F=jb(E,480,8)|0;G=F&255;H=c[k>>2]|0;I=H+2736|0;J=I+34|0;a[J>>0]=G;i=j;return}else{a[(c[k>>2]|0)+2736+33>>0]=0;x=c[k>>2]|0;y=x+2736|0;z=y+29|0;A=a[z>>0]|0;B=A<<24>>24;C=c[k>>2]|0;D=C+2396|0;c[D>>2]=B;E=c[l>>2]|0;F=jb(E,480,8)|0;G=F&255;H=c[k>>2]|0;I=H+2736|0;J=I+34|0;a[J>>0]=G;i=j;return}}function Sb(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;h=i;i=i+224|0;j=h+84|0;k=h+180|0;l=h+200|0;m=h+208|0;n=h+188|0;o=h+196|0;p=h+204|0;q=h+212|0;r=h+216|0;s=h+80|0;t=h+184|0;u=h+88|0;v=h;w=h+96|0;x=h+192|0;y=h+176|0;c[j>>2]=a;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[u>>2]=jb(c[j>>2]|0,840+((c[l>>2]>>1)*9|0)|0,8)|0;c[r>>2]=c[n>>2]>>4;if((c[r>>2]<<4|0)<(c[n>>2]|0))c[r>>2]=(c[r>>2]|0)+1;c[y>>2]=656+((c[u>>2]|0)*18|0);c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[r>>2]|0))break;c[w+(c[o>>2]<<2)>>2]=0;u=jb(c[j>>2]|0,c[y>>2]|0,8)|0;c[v+(c[o>>2]<<2)>>2]=u;while(1){z=c[o>>2]|0;if((c[v+(c[o>>2]<<2)>>2]|0)!=17)break;u=w+(z<<2)|0;c[u>>2]=(c[u>>2]|0)+1;u=jb(c[j>>2]|0,818+((c[w+(c[o>>2]<<2)>>2]|0)==10&1)|0,8)|0;c[v+(c[o>>2]<<2)>>2]=u}c[o>>2]=z+1}c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[r>>2]|0))break;z=(c[k>>2]|0)+((c[o>>2]&65535)<<16>>16<<4<<1)|0;if((c[v+(c[o>>2]<<2)>>2]|0)>0)ac(z,c[j>>2]|0,c[v+(c[o>>2]<<2)>>2]|0);else{y=z;z=y+32|0;do{b[y>>1]=0;y=y+2|0}while((y|0)<(z|0))}c[o>>2]=(c[o>>2]|0)+1}c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[r>>2]|0))break;if((c[w+(c[o>>2]<<2)>>2]|0)>0){c[t>>2]=c[w+(c[o>>2]<<2)>>2];c[x>>2]=(c[k>>2]|0)+((c[o>>2]&65535)<<16>>16<<4<<1);c[q>>2]=0;while(1){if((c[q>>2]|0)>=16)break;c[s>>2]=b[(c[x>>2]|0)+(c[q>>2]<<1)>>1];c[p>>2]=0;while(1){A=c[s>>2]|0;if((c[p>>2]|0)>=(c[t>>2]|0))break;c[s>>2]=A<<1;y=jb(c[j>>2]|0,416,8)|0;c[s>>2]=(c[s>>2]|0)+y;c[p>>2]=(c[p>>2]|0)+1}b[(c[x>>2]|0)+(c[q>>2]<<1)>>1]=A;c[q>>2]=(c[q>>2]|0)+1}y=v+(c[o>>2]<<2)|0;c[y>>2]=c[y>>2]|c[t>>2]<<5}c[o>>2]=(c[o>>2]|0)+1}Mb(c[j>>2]|0,c[k>>2]|0,c[n>>2]|0,c[l>>2]|0,c[m>>2]|0,v);i=h;return}function Tb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;l=f;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[l>>2]=0;c[(c[g>>2]|0)+2332>>2]=((c[h>>2]&65535)<<16>>16)*5;c[k>>2]=_((c[(c[g>>2]|0)+2324>>2]&65535)<<16>>16,(c[(c[g>>2]|0)+2332>>2]&65535)<<16>>16)|0;if(!((c[(c[g>>2]|0)+2316>>2]|0)==(c[h>>2]|0)?(c[(c[g>>2]|0)+2320>>2]|0)==(c[j>>2]|0):0)){e=mc((c[g>>2]|0)+2432|0,((c[h>>2]&65535)<<16>>16)*1e3|0,c[j>>2]|0,0)|0;c[l>>2]=(c[l>>2]|0)+e;c[(c[g>>2]|0)+2320>>2]=c[j>>2]}if((c[(c[g>>2]|0)+2316>>2]|0)==(c[h>>2]|0)?(c[k>>2]|0)==(c[(c[g>>2]|0)+2328>>2]|0):0){m=c[l>>2]|0;i=f;return m|0}j=(c[(c[g>>2]|0)+2324>>2]|0)==4;e=(c[g>>2]|0)+2384|0;do if((c[h>>2]|0)==8)if(j){c[e>>2]=616;break}else{c[e>>2]=648;break}else if(j){c[e>>2]=576;break}else{c[e>>2]=632;break}while(0);if((c[(c[g>>2]|0)+2316>>2]|0)!=(c[h>>2]|0)){c[(c[g>>2]|0)+2336>>2]=((c[h>>2]&65535)<<16>>16)*20;e=(c[g>>2]|0)+2340|0;if((c[h>>2]|0)==8|(c[h>>2]|0)==12){c[e>>2]=10;c[(c[g>>2]|0)+2732>>2]=256}else{c[e>>2]=16;c[(c[g>>2]|0)+2732>>2]=296}do if((c[h>>2]|0)!=16){if((c[h>>2]|0)==12){c[(c[g>>2]|0)+2380>>2]=496;break}if((c[h>>2]|0)==8)c[(c[g>>2]|0)+2380>>2]=480}else c[(c[g>>2]|0)+2380>>2]=504;while(0);c[(c[g>>2]|0)+2376>>2]=1;c[(c[g>>2]|0)+2308>>2]=100;a[(c[g>>2]|0)+2312>>0]=10;c[(c[g>>2]|0)+4164>>2]=0;bf((c[g>>2]|0)+1348|0,0,960)|0;e=(c[g>>2]|0)+1284|0;j=e+64|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(j|0))}c[(c[g>>2]|0)+2316>>2]=c[h>>2];c[(c[g>>2]|0)+2328>>2]=c[k>>2];m=c[l>>2]|0;i=f;return m|0}function Ub(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=0;c[c[d>>2]>>2]=8544;i=b;return c[e>>2]|0}function Vb(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[e>>2]=a;c[g>>2]=0;c[h>>2]=c[e>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=2)break;c[g>>2]=Nb((c[h>>2]|0)+((c[f>>2]|0)*4260|0)|0)|0;c[f>>2]=(c[f>>2]|0)+1}f=(c[e>>2]|0)+8520|0;b[f>>1]=0;b[f+2>>1]=0;b[f+4>>1]=0;b[f+6>>1]=0;b[f+8>>1]=0;b[f+10>>1]=0;c[(c[e>>2]|0)+8540>>2]=0;i=d;return c[g>>2]|0}function Wb(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;l=i;i=i+784|0;m=l+64|0;n=l+48|0;o=l+44|0;p=l+108|0;q=l+100|0;r=l+16|0;s=l+20|0;t=l+24|0;u=l+28|0;v=l+32|0;w=l+36|0;x=l+96|0;y=l+104|0;z=l+112|0;A=l+120|0;B=l+128|0;C=l+68|0;D=l+72|0;E=l+76|0;F=l+80|0;G=l+84|0;H=l+12|0;I=l+8|0;J=l+136|0;K=l+4|0;L=l;M=l+40|0;N=l+92|0;O=l+52|0;P=l+88|0;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[w>>2]=0;c[x>>2]=0;c[B>>2]=0;c[B+4>>2]=0;c[D>>2]=c[n>>2];c[E>>2]=c[D>>2];a:do if(c[q>>2]|0){c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[(c[o>>2]|0)+4>>2]|0))break a;c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2388>>2]=0;c[v>>2]=(c[v>>2]|0)+1}}while(0);if((c[(c[o>>2]|0)+4>>2]|0)>(c[(c[D>>2]|0)+8536>>2]|0)){q=Nb((c[E>>2]|0)+4260|0)|0;c[x>>2]=(c[x>>2]|0)+q}if((c[(c[o>>2]|0)+4>>2]|0)==1?(c[(c[D>>2]|0)+8536>>2]|0)==2:0)Q=(c[(c[o>>2]|0)+12>>2]|0)==((c[(c[E>>2]|0)+2316>>2]|0)*1e3|0);else Q=0;c[G>>2]=Q&1;b:do if(!(c[(c[E>>2]|0)+2388>>2]|0)){c[v>>2]=0;c:while(1){if((c[v>>2]|0)>=(c[(c[o>>2]|0)+4>>2]|0))break b;do if(!(c[(c[o>>2]|0)+16>>2]|0)){c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2392>>2]=1;c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2324>>2]=2}else{if((c[(c[o>>2]|0)+16>>2]|0)==10){c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2392>>2]=1;c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2324>>2]=2;break}if((c[(c[o>>2]|0)+16>>2]|0)==20){c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2392>>2]=1;c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2324>>2]=4;break}if((c[(c[o>>2]|0)+16>>2]|0)==40){c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2392>>2]=2;c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2324>>2]=4;break}if((c[(c[o>>2]|0)+16>>2]|0)!=60){R=23;break c}c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2392>>2]=3;c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2324>>2]=4}while(0);c[I>>2]=(c[(c[o>>2]|0)+12>>2]>>10)+1;if((c[I>>2]|0)!=8&(c[I>>2]|0)!=12&(c[I>>2]|0)!=16){R=25;break}Q=Tb((c[E>>2]|0)+((c[v>>2]|0)*4260|0)|0,c[I>>2]|0,c[(c[o>>2]|0)+8>>2]|0)|0;c[x>>2]=(c[x>>2]|0)+Q;c[v>>2]=(c[v>>2]|0)+1}if((R|0)==23){c[m>>2]=-203;S=c[m>>2]|0;i=l;return S|0}else if((R|0)==25){c[m>>2]=-200;S=c[m>>2]|0;i=l;return S|0}}while(0);do if((c[c[o>>2]>>2]|0)==2?(c[(c[o>>2]|0)+4>>2]|0)==2:0){if((c[(c[D>>2]|0)+8532>>2]|0)!=1?(c[(c[D>>2]|0)+8536>>2]|0)!=1:0)break;I=(c[D>>2]|0)+8520|0;b[I>>1]=0;b[I+2>>1]=0;I=(c[D>>2]|0)+8520+8|0;b[I>>1]=0;b[I+2>>1]=0;df((c[E>>2]|0)+4260+2432|0,(c[E>>2]|0)+2432|0,300)|0}while(0);c[(c[D>>2]|0)+8532>>2]=c[c[o>>2]>>2];c[(c[D>>2]|0)+8536>>2]=c[(c[o>>2]|0)+4>>2];if((c[(c[o>>2]|0)+8>>2]|0)<=48e3?(c[(c[o>>2]|0)+8>>2]|0)>=8e3:0){d:do if((c[p>>2]|0)!=1?(c[(c[E>>2]|0)+2388>>2]|0)==0:0){c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[(c[o>>2]|0)+4>>2]|0))break;c[u>>2]=0;while(1){I=(c[u>>2]|0)<(c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2392>>2]|0);T=ib(c[r>>2]|0,1)|0;if(!I)break;c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2404+(c[u>>2]<<2)>>2]=T;c[u>>2]=(c[u>>2]|0)+1}c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2416>>2]=T;c[v>>2]=(c[v>>2]|0)+1}c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[(c[o>>2]|0)+4>>2]|0))break;I=(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2420|0;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;e:do if(c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2416>>2]|0){if((c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2392>>2]|0)==1){c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2420>>2]=1;break}c[z>>2]=(jb(c[r>>2]|0,c[408+((c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2392>>2]|0)-2<<2)>>2]|0,8)|0)+1;c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2392>>2]|0))break e;c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2420+(c[u>>2]<<2)>>2]=c[z>>2]>>c[u>>2]&1;c[u>>2]=(c[u>>2]|0)+1}}while(0);c[v>>2]=(c[v>>2]|0)+1}if(!(c[p>>2]|0)){c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[(c[E>>2]|0)+2392>>2]|0))break d;c[v>>2]=0;while(1){U=c[u>>2]|0;if((c[v>>2]|0)>=(c[(c[o>>2]|0)+4>>2]|0))break;if(c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2420+(U<<2)>>2]|0){do if((c[v>>2]|0)==0?(c[(c[o>>2]|0)+4>>2]|0)==2:0){vc(c[r>>2]|0,B);if(c[(c[E>>2]|0)+4260+2420+(c[u>>2]<<2)>>2]|0)break;wc(c[r>>2]|0,w)}while(0);do if((c[u>>2]|0)>0){if(!(c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2420+((c[u>>2]|0)-1<<2)>>2]|0)){R=64;break}c[K>>2]=2}else R=64;while(0);if((R|0)==64){R=0;c[K>>2]=0}Rb((c[E>>2]|0)+((c[v>>2]|0)*4260|0)|0,c[r>>2]|0,c[u>>2]|0,1,c[K>>2]|0);Sb(c[r>>2]|0,J,a[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2736+29>>0]|0,a[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2736+30>>0]|0,c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2328>>2]|0)}c[v>>2]=(c[v>>2]|0)+1}c[u>>2]=U+1}}}while(0);f:do if((c[(c[o>>2]|0)+4>>2]|0)==2){do if(c[p>>2]|0){if((c[p>>2]|0)==2?(c[(c[E>>2]|0)+2420+(c[(c[E>>2]|0)+2388>>2]<<2)>>2]|0)==1:0)break;c[v>>2]=0;while(1){if((c[v>>2]|0)>=2)break f;c[B+(c[v>>2]<<2)>>2]=b[(c[D>>2]|0)+8520+(c[v>>2]<<1)>>1];c[v>>2]=(c[v>>2]|0)+1}}while(0);vc(c[r>>2]|0,B);if(!((c[p>>2]|0)==0?(c[(c[E>>2]|0)+4260+2404+(c[(c[E>>2]|0)+2388>>2]<<2)>>2]|0)==0:0))R=74;do if((R|0)==74){if((c[p>>2]|0)==2?(c[(c[E>>2]|0)+4260+2420+(c[(c[E>>2]|0)+2388>>2]<<2)>>2]|0)==0:0)break;c[w>>2]=0;break f}while(0);wc(c[r>>2]|0,w)}while(0);if(((c[w>>2]|0)==0?(c[(c[o>>2]|0)+4>>2]|0)==2:0)?(c[(c[D>>2]|0)+8540>>2]|0)==1:0){bf((c[D>>2]|0)+4260+1348|0,0,960)|0;R=(c[D>>2]|0)+4260+1284|0;U=R+64|0;do{c[R>>2]=0;R=R+4|0}while((R|0)<(U|0));c[(c[D>>2]|0)+4260+2308>>2]=100;a[(c[D>>2]|0)+4260+2312>>0]=10;c[(c[D>>2]|0)+4260+4164>>2]=0;c[(c[D>>2]|0)+4260+2376>>2]=1}R=_(c[(c[o>>2]|0)+12>>2]|0,c[(c[o>>2]|0)+4>>2]|0)|0;c[H>>2]=(R|0)<(_(c[(c[o>>2]|0)+8>>2]|0,c[c[o>>2]>>2]|0)|0)&1;if(c[H>>2]|0)V=1;else V=_(c[(c[o>>2]|0)+4>>2]|0,(c[(c[E>>2]|0)+2328>>2]|0)+2|0)|0;c[L>>2]=ua()|0;R=i;i=i+((1*(V<<1)|0)+15&-16)|0;if(c[H>>2]|0){c[A>>2]=c[s>>2];c[A+4>>2]=(c[s>>2]|0)+(c[(c[E>>2]|0)+2328>>2]<<1)+4}else{c[A>>2]=R;c[A+4>>2]=R+(c[(c[E>>2]|0)+2328>>2]<<1)+4}if(!(c[p>>2]|0))c[F>>2]=((c[w>>2]|0)!=0^1)&1;else{if(c[(c[D>>2]|0)+8540>>2]|0)if((c[p>>2]|0)==2?(c[(c[o>>2]|0)+4>>2]|0)==2:0)W=(c[(c[E>>2]|0)+4260+2420+(c[(c[E>>2]|0)+4260+2388>>2]<<2)>>2]|0)==1;else W=0;else W=1;c[F>>2]=W&1}c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[(c[o>>2]|0)+4>>2]|0))break;if((c[v>>2]|0)==0|(c[F>>2]|0)!=0){c[M>>2]=(c[(c[E>>2]|0)+2388>>2]|0)-(c[v>>2]|0);g:do if((c[M>>2]|0)<=0)c[N>>2]=0;else{if((c[p>>2]|0)==2){c[N>>2]=(c[(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2420+((c[M>>2]|0)-1<<2)>>2]|0)!=0?2:0;break}do if((c[v>>2]|0)>0){if(!(c[(c[D>>2]|0)+8540>>2]|0))break;c[N>>2]=1;break g}while(0);c[N>>2]=2}while(0);W=Pb((c[E>>2]|0)+((c[v>>2]|0)*4260|0)|0,c[r>>2]|0,(c[A+(c[v>>2]<<2)>>2]|0)+4|0,y,c[p>>2]|0,c[N>>2]|0)|0;c[x>>2]=(c[x>>2]|0)+W}else bf((c[A+(c[v>>2]<<2)>>2]|0)+4|0,0,c[y>>2]<<1|0)|0;W=(c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2388|0;c[W>>2]=(c[W>>2]|0)+1;c[v>>2]=(c[v>>2]|0)+1}if((c[c[o>>2]>>2]|0)==2?(c[(c[o>>2]|0)+4>>2]|0)==2:0)cc((c[D>>2]|0)+8520|0,c[A>>2]|0,c[A+4>>2]|0,B,c[(c[E>>2]|0)+2316>>2]|0,c[y>>2]|0);else{B=c[A>>2]|0;N=(c[D>>2]|0)+8520+4|0;b[B>>1]=b[N>>1]|0;b[B+2>>1]=b[N+2>>1]|0;N=(c[D>>2]|0)+8520+4|0;B=(c[A>>2]|0)+(c[y>>2]<<1)|0;b[N>>1]=b[B>>1]|0;b[N+2>>1]=b[B+2>>1]|0}B=_(c[y>>2]|0,c[(c[o>>2]|0)+8>>2]|0)|0;c[c[t>>2]>>2]=(B|0)/(((c[(c[E>>2]|0)+2316>>2]&65535)<<16>>16)*1e3|0)|0;if((c[c[o>>2]>>2]|0)==2)X=c[c[t>>2]>>2]|0;else X=1;B=i;i=i+((1*(X<<1)|0)+15&-16)|0;if((c[c[o>>2]>>2]|0)==2)c[C>>2]=B;else c[C>>2]=c[s>>2];if(c[H>>2]|0)Y=_(c[(c[o>>2]|0)+4>>2]|0,(c[(c[E>>2]|0)+2328>>2]|0)+2|0)|0;else Y=1;B=i;i=i+((1*(Y<<1)|0)+15&-16)|0;if(c[H>>2]|0){H=(_(c[(c[o>>2]|0)+4>>2]|0,(c[(c[E>>2]|0)+2328>>2]|0)+2|0)|0)<<1;df(B|0,c[s>>2]|0,H+0|0)|0;c[A>>2]=B;c[A+4>>2]=B+(c[(c[E>>2]|0)+2328>>2]<<1)+4}c[v>>2]=0;while(1){B=c[o>>2]|0;if((c[c[o>>2]>>2]|0)<(c[(c[o>>2]|0)+4>>2]|0))Z=c[B>>2]|0;else Z=c[B+4>>2]|0;if((c[v>>2]|0)>=(Z|0))break;B=nc((c[E>>2]|0)+((c[v>>2]|0)*4260|0)+2432|0,c[C>>2]|0,(c[A+(c[v>>2]<<2)>>2]|0)+2|0,c[y>>2]|0)|0;c[x>>2]=(c[x>>2]|0)+B;h:do if((c[c[o>>2]>>2]|0)==2){c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[c[t>>2]>>2]|0))break h;b[(c[s>>2]|0)+((c[v>>2]|0)+(c[u>>2]<<1)<<1)>>1]=b[(c[C>>2]|0)+(c[u>>2]<<1)>>1]|0;c[u>>2]=(c[u>>2]|0)+1}}while(0);c[v>>2]=(c[v>>2]|0)+1}i:do if((c[c[o>>2]>>2]|0)==2){if((c[(c[o>>2]|0)+4>>2]|0)!=1)break;if(c[G>>2]|0){v=nc((c[E>>2]|0)+4260+2432|0,c[C>>2]|0,(c[A>>2]|0)+2|0,c[y>>2]|0)|0;c[x>>2]=(c[x>>2]|0)+v;c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[c[t>>2]>>2]|0))break i;b[(c[s>>2]|0)+(1+(c[u>>2]<<1)<<1)>>1]=b[(c[C>>2]|0)+(c[u>>2]<<1)>>1]|0;c[u>>2]=(c[u>>2]|0)+1}}else{c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[c[t>>2]>>2]|0))break i;b[(c[s>>2]|0)+(1+(c[u>>2]<<1)<<1)>>1]=b[(c[s>>2]|0)+(0+(c[u>>2]<<1)<<1)>>1]|0;c[u>>2]=(c[u>>2]|0)+1}}}while(0);if((c[(c[E>>2]|0)+4164>>2]|0)==2){c[O>>2]=c[738];c[O+4>>2]=c[739];c[O+8>>2]=c[740];s=_(c[(c[E>>2]|0)+2308>>2]|0,c[O+((c[(c[E>>2]|0)+2316>>2]|0)-8>>2<<2)>>2]|0)|0;c[(c[o>>2]|0)+20>>2]=s}else c[(c[o>>2]|0)+20>>2]=0;j:do if((c[p>>2]|0)==1){c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[(c[D>>2]|0)+8536>>2]|0))break j;a[(c[D>>2]|0)+((c[u>>2]|0)*4260|0)+2312>>0]=10;c[u>>2]=(c[u>>2]|0)+1}}else c[(c[D>>2]|0)+8540>>2]=c[w>>2];while(0);c[m>>2]=c[x>>2];c[P>>2]=1;ka(c[L>>2]|0);S=c[m>>2]|0;i=l;return S|0}c[x>>2]=-200;c[m>>2]=c[x>>2];S=c[m>>2]|0;i=l;return S|0}function Xb(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;i=i+32|0;j=h+4|0;k=h+16|0;l=h+8|0;m=h+20|0;n=h+28|0;o=h;p=h+12|0;q=h+24|0;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[n>>2]|0))break;g=a[(c[k>>2]|0)+(c[o>>2]|0)>>0]|0;do if(!((c[o>>2]|0)==0&(c[m>>2]|0)==0)){c[p>>2]=g+-4;c[q>>2]=8+(a[c[l>>2]>>0]|0);f=c[p>>2]|0;if((c[p>>2]|0)>(c[q>>2]|0)){e=c[l>>2]|0;a[e>>0]=(a[e>>0]|0)+((f<<1)-(c[q>>2]|0));break}else{e=c[l>>2]|0;a[e>>0]=(a[e>>0]|0)+f;break}}else{f=(Gd(g,(a[c[l>>2]>>0]|0)-16|0)|0)&255;a[c[l>>2]>>0]=f}while(0);if((a[c[l>>2]>>0]|0)<=63)if((a[c[l>>2]>>0]|0)<0)r=0;else r=a[c[l>>2]>>0]|0;else r=63;a[c[l>>2]>>0]=r;g=gc(Fd(((a[c[l>>2]>>0]<<16>>16)*29|0)+((a[c[l>>2]>>0]<<16>>16)*7281>>16)+2090|0,3967)|0)|0;c[(c[j>>2]|0)+(c[o>>2]<<2)>>2]=g;c[o>>2]=(c[o>>2]|0)+1}i=h;return}function Yb(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=i;i=i+144|0;j=h+24|0;k=h+16|0;l=h+12|0;m=h+8|0;n=h+128|0;o=h+32|0;p=h+64|0;q=h+96|0;r=h+20|0;s=h;t=h+4|0;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;g=_(a[c[k>>2]>>0]|0,b[(c[l>>2]|0)+2>>1]|0)|0;c[t>>2]=(c[(c[l>>2]|0)+8>>2]|0)+g;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(b[(c[l>>2]|0)+2>>1]|0))break;b[(c[j>>2]|0)+(c[m>>2]<<1)>>1]=d[(c[t>>2]|0)+(c[m>>2]|0)>>0]<<7;c[m>>2]=(c[m>>2]|0)+1}bc(o,n,c[l>>2]|0,a[c[k>>2]>>0]|0);Hd(p,(c[k>>2]|0)+1|0,n,b[(c[l>>2]|0)+4>>1]|0,b[(c[l>>2]|0)+2>>1]|0);lc(q,c[j>>2]|0,b[(c[l>>2]|0)+2>>1]|0);c[m>>2]=0;while(1){if((c[m>>2]|0)>=(b[(c[l>>2]|0)+2>>1]|0))break;c[r>>2]=Id(b[q+(c[m>>2]<<1)>>1]<<16)|0;c[s>>2]=(b[(c[j>>2]|0)+(c[m>>2]<<1)>>1]|0)+((b[p+(c[m>>2]<<1)>>1]<<14|0)/(c[r>>2]|0)|0);if((c[s>>2]|0)>32767)u=32767;else u=(c[s>>2]|0)<0?0:c[s>>2]|0;b[(c[j>>2]|0)+(c[m>>2]<<1)>>1]=u;c[m>>2]=(c[m>>2]|0)+1}kc(c[j>>2]|0,c[(c[l>>2]|0)+32>>2]|0,b[(c[l>>2]|0)+2>>1]|0);i=h;return}function Zb(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+4168>>2]=c[(c[d>>2]|0)+2328>>2]<<7;c[(c[d>>2]|0)+4168+72>>2]=65536;c[(c[d>>2]|0)+4168+72+4>>2]=65536;c[(c[d>>2]|0)+4168+88>>2]=20;c[(c[d>>2]|0)+4168+84>>2]=2;i=b;return}function _b(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[(c[g>>2]|0)+2316>>2]|0)!=(c[(c[g>>2]|0)+4168+80>>2]|0)){Zb(c[g>>2]|0);c[(c[g>>2]|0)+4168+80>>2]=c[(c[g>>2]|0)+2316>>2]}e=c[g>>2]|0;d=c[h>>2]|0;if(c[k>>2]|0){Jd(e,d,c[j>>2]|0);j=(c[g>>2]|0)+4160|0;c[j>>2]=(c[j>>2]|0)+1;i=f;return}else{Kd(e,d);i=f;return}}function $b(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+48|0;g=f+36|0;h=f+16|0;j=f;k=f+28|0;l=f+32|0;m=f+40|0;n=f+12|0;o=f+24|0;p=f+20|0;q=f+8|0;r=f+4|0;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;c[n>>2]=(c[g>>2]|0)+4168;if(c[(c[g>>2]|0)+4160>>2]|0){uc((c[n>>2]|0)+60|0,(c[n>>2]|0)+64|0,c[h>>2]|0,c[j>>2]|0);c[(c[n>>2]|0)+48>>2]=1;i=f;return}a:do if(c[(c[g>>2]|0)+4168+48>>2]|0){uc(m,l,c[h>>2]|0,c[j>>2]|0);if((c[l>>2]|0)<=(c[(c[n>>2]|0)+64>>2]|0)){if((c[l>>2]|0)<(c[(c[n>>2]|0)+64>>2]|0))c[m>>2]=c[m>>2]>>(c[(c[n>>2]|0)+64>>2]|0)-(c[l>>2]|0)}else c[(c[n>>2]|0)+60>>2]=c[(c[n>>2]|0)+60>>2]>>(c[l>>2]|0)-(c[(c[n>>2]|0)+64>>2]|0);if((c[m>>2]|0)>(c[(c[n>>2]|0)+60>>2]|0)){c[p>>2]=Ld(c[(c[n>>2]|0)+60>>2]|0)|0;c[p>>2]=(c[p>>2]|0)-1;c[(c[n>>2]|0)+60>>2]=c[(c[n>>2]|0)+60>>2]<<c[p>>2];e=c[m>>2]|0;c[m>>2]=e>>(Md(24-(c[p>>2]|0)|0,0)|0);c[o>>2]=(c[(c[n>>2]|0)+60>>2]|0)/(((c[m>>2]|0)>1?c[m>>2]|0:1)|0)|0;c[q>>2]=(Nd(c[o>>2]|0)|0)<<4;c[r>>2]=(65536-(c[q>>2]|0)|0)/(c[j>>2]|0)|0;c[r>>2]=c[r>>2]<<2;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[j>>2]|0))break a;e=_(c[q>>2]>>16,b[(c[h>>2]|0)+(c[k>>2]<<1)>>1]|0)|0;d=e+((_(c[q>>2]&65535,b[(c[h>>2]|0)+(c[k>>2]<<1)>>1]|0)|0)>>16)&65535;b[(c[h>>2]|0)+(c[k>>2]<<1)>>1]=d;c[q>>2]=(c[q>>2]|0)+(c[r>>2]|0);if((c[q>>2]|0)>65536)break a;c[k>>2]=(c[k>>2]|0)+1}}}while(0);c[(c[n>>2]|0)+48>>2]=0;i=f;return}function ac(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+48|0;g=f+8|0;h=f+4|0;j=f;k=f+40|0;l=f+32|0;m=f+16|0;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;Od(k,k+2|0,c[h>>2]|0,c[j>>2]|0,1320);Od(l,l+2|0,c[h>>2]|0,b[k>>1]|0,1168);Od(m,m+2|0,c[h>>2]|0,b[l>>1]|0,1016);Od(c[g>>2]|0,(c[g>>2]|0)+2|0,c[h>>2]|0,b[m>>1]|0,864);Od((c[g>>2]|0)+4|0,(c[g>>2]|0)+6|0,c[h>>2]|0,b[m+2>>1]|0,864);Od(m+4|0,m+6|0,c[h>>2]|0,b[l+2>>1]|0,1016);Od((c[g>>2]|0)+8|0,(c[g>>2]|0)+10|0,c[h>>2]|0,b[m+4>>1]|0,864);Od((c[g>>2]|0)+12|0,(c[g>>2]|0)+14|0,c[h>>2]|0,b[m+6>>1]|0,864);Od(l+4|0,l+6|0,c[h>>2]|0,b[k+2>>1]|0,1168);Od(m+8|0,m+10|0,c[h>>2]|0,b[l+4>>1]|0,1016);Od((c[g>>2]|0)+16|0,(c[g>>2]|0)+18|0,c[h>>2]|0,b[m+8>>1]|0,864);Od((c[g>>2]|0)+20|0,(c[g>>2]|0)+22|0,c[h>>2]|0,b[m+10>>1]|0,864);Od(m+12|0,m+14|0,c[h>>2]|0,b[l+6>>1]|0,1016);Od((c[g>>2]|0)+24|0,(c[g>>2]|0)+26|0,c[h>>2]|0,b[m+12>>1]|0,864);Od((c[g>>2]|0)+28|0,(c[g>>2]|0)+30|0,c[h>>2]|0,b[m+14>>1]|0,864);i=f;return}function bc(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+32|0;k=j+4|0;l=j+12|0;m=j+8|0;n=j+20|0;o=j;p=j+24|0;q=j+16|0;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;h=(_(c[n>>2]|0,b[(c[m>>2]|0)+2>>1]|0)|0)/2|0;c[q>>2]=(c[(c[m>>2]|0)+20>>2]|0)+h;c[o>>2]=0;while(1){if((c[o>>2]|0)>=(b[(c[m>>2]|0)+2>>1]|0))break;h=c[q>>2]|0;c[q>>2]=h+1;a[p>>0]=a[h>>0]|0;b[(c[k>>2]|0)+(c[o>>2]<<1)>>1]=((d[p>>0]>>1&7)<<16>>16)*9;h=(c[o>>2]|0)+(_(d[p>>0]&1,(b[(c[m>>2]|0)+2>>1]|0)-1|0)|0)|0;a[(c[l>>2]|0)+(c[o>>2]|0)>>0]=a[(c[(c[m>>2]|0)+16>>2]|0)+h>>0]|0;b[(c[k>>2]|0)+((c[o>>2]|0)+1<<1)>>1]=((d[p>>0]>>5&7)<<16>>16)*9;h=(c[o>>2]|0)+(_(d[p>>0]>>4&1,(b[(c[m>>2]|0)+2>>1]|0)-1|0)|0)+1|0;a[(c[l>>2]|0)+((c[o>>2]|0)+1)>>0]=a[(c[(c[m>>2]|0)+16>>2]|0)+h>>0]|0;c[o>>2]=(c[o>>2]|0)+2}i=j;return}function cc(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;j=i;i=i+64|0;k=j+24|0;l=j+20|0;m=j+44|0;n=j+36|0;o=j+32|0;p=j+40|0;q=j+48|0;r=j+52|0;s=j+8|0;t=j+4|0;u=j+28|0;v=j+12|0;w=j;x=j+16|0;c[k>>2]=a;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;h=c[l>>2]|0;g=(c[k>>2]|0)+4|0;b[h>>1]=b[g>>1]|0;b[h+2>>1]=b[g+2>>1]|0;g=c[m>>2]|0;h=(c[k>>2]|0)+8|0;b[g>>1]=b[h>>1]|0;b[g+2>>1]=b[h+2>>1]|0;h=(c[k>>2]|0)+4|0;g=(c[l>>2]|0)+(c[p>>2]<<1)|0;b[h>>1]=b[g>>1]|0;b[h+2>>1]=b[g+2>>1]|0;g=(c[k>>2]|0)+8|0;h=(c[m>>2]|0)+(c[p>>2]<<1)|0;b[g>>1]=b[h>>1]|0;b[g+2>>1]=b[h+2>>1]|0;c[w>>2]=b[c[k>>2]>>1];c[x>>2]=b[(c[k>>2]|0)+2>>1];c[r>>2]=65536/(c[o>>2]<<3|0)|0;c[s>>2]=((_(((c[c[n>>2]>>2]|0)-(b[c[k>>2]>>1]|0)&65535)<<16>>16,(c[r>>2]&65535)<<16>>16)|0)>>15)+1>>1;c[t>>2]=((_(((c[(c[n>>2]|0)+4>>2]|0)-(b[(c[k>>2]|0)+2>>1]|0)&65535)<<16>>16,(c[r>>2]&65535)<<16>>16)|0)>>15)+1>>1;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[o>>2]<<3|0))break;c[w>>2]=(c[w>>2]|0)+(c[s>>2]|0);c[x>>2]=(c[x>>2]|0)+(c[t>>2]|0);c[u>>2]=(b[(c[l>>2]|0)+(c[q>>2]<<1)>>1]|0)+(b[(c[l>>2]|0)+((c[q>>2]|0)+2<<1)>>1]|0)+(b[(c[l>>2]|0)+((c[q>>2]|0)+1<<1)>>1]<<1)<<9;r=_(c[u>>2]>>16,(c[w>>2]&65535)<<16>>16)|0;c[u>>2]=(b[(c[m>>2]|0)+((c[q>>2]|0)+1<<1)>>1]<<8)+(r+((_(c[u>>2]&65535,(c[w>>2]&65535)<<16>>16)|0)>>16));r=_(b[(c[l>>2]|0)+((c[q>>2]|0)+1<<1)>>1]<<11>>16,(c[x>>2]&65535)<<16>>16)|0;c[u>>2]=(c[u>>2]|0)+(r+((_(b[(c[l>>2]|0)+((c[q>>2]|0)+1<<1)>>1]<<11&65535,(c[x>>2]&65535)<<16>>16)|0)>>16));if(((c[u>>2]>>7)+1>>1|0)<=32767)if(((c[u>>2]>>7)+1>>1|0)<-32768)y=-32768;else y=(c[u>>2]>>7)+1>>1;else y=32767;b[(c[m>>2]|0)+((c[q>>2]|0)+1<<1)>>1]=y;c[q>>2]=(c[q>>2]|0)+1}c[w>>2]=c[c[n>>2]>>2];c[x>>2]=c[(c[n>>2]|0)+4>>2];c[q>>2]=c[o>>2]<<3;while(1){if((c[q>>2]|0)>=(c[p>>2]|0))break;c[u>>2]=(b[(c[l>>2]|0)+(c[q>>2]<<1)>>1]|0)+(b[(c[l>>2]|0)+((c[q>>2]|0)+2<<1)>>1]|0)+(b[(c[l>>2]|0)+((c[q>>2]|0)+1<<1)>>1]<<1)<<9;o=_(c[u>>2]>>16,(c[w>>2]&65535)<<16>>16)|0;c[u>>2]=(b[(c[m>>2]|0)+((c[q>>2]|0)+1<<1)>>1]<<8)+(o+((_(c[u>>2]&65535,(c[w>>2]&65535)<<16>>16)|0)>>16));o=_(b[(c[l>>2]|0)+((c[q>>2]|0)+1<<1)>>1]<<11>>16,(c[x>>2]&65535)<<16>>16)|0;c[u>>2]=(c[u>>2]|0)+(o+((_(b[(c[l>>2]|0)+((c[q>>2]|0)+1<<1)>>1]<<11&65535,(c[x>>2]&65535)<<16>>16)|0)>>16));if(((c[u>>2]>>7)+1>>1|0)<=32767)if(((c[u>>2]>>7)+1>>1|0)<-32768)z=-32768;else z=(c[u>>2]>>7)+1>>1;else z=32767;b[(c[m>>2]|0)+((c[q>>2]|0)+1<<1)>>1]=z;c[q>>2]=(c[q>>2]|0)+1}b[c[k>>2]>>1]=c[c[n>>2]>>2];b[(c[k>>2]|0)+2>>1]=c[(c[n>>2]|0)+4>>2];c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[p>>2]|0))break;c[u>>2]=(b[(c[l>>2]|0)+((c[q>>2]|0)+1<<1)>>1]|0)+(b[(c[m>>2]|0)+((c[q>>2]|0)+1<<1)>>1]|0);c[v>>2]=(b[(c[l>>2]|0)+((c[q>>2]|0)+1<<1)>>1]|0)-(b[(c[m>>2]|0)+((c[q>>2]|0)+1<<1)>>1]|0);if((c[u>>2]|0)>32767)A=32767;else A=(c[u>>2]|0)<-32768?-32768:c[u>>2]|0;b[(c[l>>2]|0)+((c[q>>2]|0)+1<<1)>>1]=A;if((c[v>>2]|0)>32767)B=32767;else B=(c[v>>2]|0)<-32768?-32768:c[v>>2]|0;b[(c[m>>2]|0)+((c[q>>2]|0)+1<<1)>>1]=B;c[q>>2]=(c[q>>2]|0)+1}i=j;return}function dc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+16|0;g=e+12|0;h=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[k>>2]=(c[h>>2]|0)-65536;c[j>>2]=0;while(1){l=c[h>>2]>>16;if((c[j>>2]|0)>=((c[g>>2]|0)-1|0))break;d=_(l,(c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]&65535)<<16>>16)|0;b=d+((_(c[h>>2]&65535,(c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]&65535)<<16>>16)|0)>>16)|0;d=b+(_(c[h>>2]|0,(c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]>>15)+1>>1)|0)|0;c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]=d;d=((_(c[h>>2]|0,c[k>>2]|0)|0)>>15)+1>>1;c[h>>2]=(c[h>>2]|0)+d;c[j>>2]=(c[j>>2]|0)+1}j=_(l,(c[(c[f>>2]|0)+((c[g>>2]|0)-1<<2)>>2]&65535)<<16>>16)|0;l=j+((_(c[h>>2]&65535,(c[(c[f>>2]|0)+((c[g>>2]|0)-1<<2)>>2]&65535)<<16>>16)|0)>>16)|0;j=l+(_(c[h>>2]|0,(c[(c[f>>2]|0)+((c[g>>2]|0)-1<<2)>>2]>>15)+1>>1)|0)|0;c[(c[f>>2]|0)+((c[g>>2]|0)-1<<2)>>2]=j;i=e;return}function ec(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;l=f;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;c[l>>2]=(c[j>>2]|0)-65536;c[k>>2]=0;while(1){m=c[j>>2]|0;if((c[k>>2]|0)>=((c[h>>2]|0)-1|0))break;e=((_(m,b[(c[g>>2]|0)+(c[k>>2]<<1)>>1]|0)|0)>>15)+1>>1&65535;b[(c[g>>2]|0)+(c[k>>2]<<1)>>1]=e;e=((_(c[j>>2]|0,c[l>>2]|0)|0)>>15)+1>>1;c[j>>2]=(c[j>>2]|0)+e;c[k>>2]=(c[k>>2]|0)+1}k=((_(m,b[(c[g>>2]|0)+((c[h>>2]|0)-1<<1)>>1]|0)|0)>>15)+1>>1&65535;b[(c[g>>2]|0)+((c[h>>2]|0)-1<<1)>>1]=k;i=f;return}function fc(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=i;i=i+48|0;k=j+36|0;l=j+38|0;m=j+8|0;n=j+20|0;o=j+28|0;p=j+32|0;q=j+12|0;r=j+24|0;s=j+4|0;t=j;u=j+16|0;b[k>>1]=d;a[l>>0]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;h=(c[o>>2]|0)==4;do if((c[n>>2]|0)==8)if(h){c[u>>2]=1840;c[t>>2]=11;break}else{c[u>>2]=1808;c[t>>2]=3;break}else if(h){c[u>>2]=1888;c[t>>2]=34;break}else{c[u>>2]=1816;c[t>>2]=12;break}while(0);c[r>>2]=(c[n>>2]&65535)<<16>>16<<1;c[s>>2]=((c[n>>2]&65535)<<16>>16)*18;c[p>>2]=(c[r>>2]|0)+(b[k>>1]|0);c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[o>>2]|0))break;k=_(c[q>>2]|0,c[t>>2]|0)|0;c[(c[m>>2]|0)+(c[q>>2]<<2)>>2]=(c[p>>2]|0)+(a[(c[u>>2]|0)+(k+(a[l>>0]|0))>>0]|0);k=c[(c[m>>2]|0)+(c[q>>2]<<2)>>2]|0;do if((c[r>>2]|0)>(c[s>>2]|0)){if((k|0)>(c[r>>2]|0)){v=c[r>>2]|0;break}if((c[(c[m>>2]|0)+(c[q>>2]<<2)>>2]|0)<(c[s>>2]|0)){v=c[s>>2]|0;break}else{v=c[(c[m>>2]|0)+(c[q>>2]<<2)>>2]|0;break}}else{if((k|0)>(c[s>>2]|0)){v=c[s>>2]|0;break}if((c[(c[m>>2]|0)+(c[q>>2]<<2)>>2]|0)<(c[r>>2]|0)){v=c[r>>2]|0;break}else{v=c[(c[m>>2]|0)+(c[q>>2]<<2)>>2]|0;break}}while(0);c[(c[m>>2]|0)+(c[q>>2]<<2)>>2]=v;c[q>>2]=(c[q>>2]|0)+1}i=j;return}function gc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[e>>2]|0)<0){c[d>>2]=0;h=c[d>>2]|0;i=b;return h|0}if((c[e>>2]|0)>=3967){c[d>>2]=2147483647;h=c[d>>2]|0;i=b;return h|0}c[f>>2]=1<<(c[e>>2]>>7);c[g>>2]=c[e>>2]&127;a=c[f>>2]|0;j=c[f>>2]|0;if((c[e>>2]|0)<2048){e=_((_((c[g>>2]&65535)<<16>>16,(128-(c[g>>2]|0)&65535)<<16>>16)|0)>>16,-174)|0;c[f>>2]=a+((_(j,(c[g>>2]|0)+(e+((_((_((c[g>>2]&65535)<<16>>16,(128-(c[g>>2]|0)&65535)<<16>>16)|0)&65535,-174)|0)>>16))|0)|0)>>7)}else{e=_((_((c[g>>2]&65535)<<16>>16,(128-(c[g>>2]|0)&65535)<<16>>16)|0)>>16,-174)|0;c[f>>2]=a+(_(j>>7,(c[g>>2]|0)+(e+((_((_((c[g>>2]&65535)<<16>>16,(128-(c[g>>2]|0)&65535)<<16>>16)|0)&65535,-174)|0)>>16))|0)|0)}c[d>>2]=c[f>>2];h=c[d>>2]|0;i=b;return h|0}function hc(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=i;i=i+48|0;j=h;k=h+16|0;l=h+28|0;m=h+4|0;n=h+32|0;o=h+36|0;p=h+12|0;q=h+24|0;r=h+20|0;s=h+8|0;c[j>>2]=a;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[p>>2]=c[n>>2];while(1){if((c[p>>2]|0)>=(c[m>>2]|0))break;c[s>>2]=(c[k>>2]|0)+((c[p>>2]|0)-1<<1);c[q>>2]=_(b[c[s>>2]>>1]|0,b[c[l>>2]>>1]|0)|0;c[q>>2]=(c[q>>2]|0)+(_(b[(c[s>>2]|0)+-2>>1]|0,b[(c[l>>2]|0)+2>>1]|0)|0);c[q>>2]=(c[q>>2]|0)+(_(b[(c[s>>2]|0)+-4>>1]|0,b[(c[l>>2]|0)+4>>1]|0)|0);c[q>>2]=(c[q>>2]|0)+(_(b[(c[s>>2]|0)+-6>>1]|0,b[(c[l>>2]|0)+6>>1]|0)|0);c[q>>2]=(c[q>>2]|0)+(_(b[(c[s>>2]|0)+-8>>1]|0,b[(c[l>>2]|0)+8>>1]|0)|0);c[q>>2]=(c[q>>2]|0)+(_(b[(c[s>>2]|0)+-10>>1]|0,b[(c[l>>2]|0)+10>>1]|0)|0);c[o>>2]=6;while(1){if((c[o>>2]|0)>=(c[n>>2]|0))break;c[q>>2]=(c[q>>2]|0)+(_(b[(c[s>>2]|0)+(0-(c[o>>2]|0)<<1)>>1]|0,b[(c[l>>2]|0)+(c[o>>2]<<1)>>1]|0)|0);c[q>>2]=(c[q>>2]|0)+(_(b[(c[s>>2]|0)+(0-(c[o>>2]|0)-1<<1)>>1]|0,b[(c[l>>2]|0)+((c[o>>2]|0)+1<<1)>>1]|0)|0);c[o>>2]=(c[o>>2]|0)+2}c[q>>2]=(b[(c[s>>2]|0)+2>>1]<<12)-(c[q>>2]|0);c[r>>2]=(c[q>>2]>>11)+1>>1;if((c[r>>2]|0)>32767)t=32767;else t=(c[r>>2]|0)<-32768?-32768:c[r>>2]|0;b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]=t;c[p>>2]=(c[p>>2]|0)+1}bf(c[j>>2]|0,0,c[n>>2]<<1|0)|0;i=h;return}function ic(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+160|0;f=e+136|0;g=e+144|0;h=e+148|0;j=e+152|0;k=e+8|0;l=e;m=e+140|0;c[g>>2]=a;c[h>>2]=d;c[m>>2]=0;c[l>>2]=k+((c[h>>2]&1)<<6);c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[h>>2]|0))break;c[m>>2]=(c[m>>2]|0)+(b[(c[g>>2]|0)+(c[j>>2]<<1)>>1]|0);c[(c[l>>2]|0)+(c[j>>2]<<2)>>2]=b[(c[g>>2]|0)+(c[j>>2]<<1)>>1]<<12;c[j>>2]=(c[j>>2]|0)+1}if((c[m>>2]|0)>=4096){c[f>>2]=0;n=c[f>>2]|0;i=e;return n|0}else{c[f>>2]=Pd(k,c[h>>2]|0)|0;n=c[f>>2]|0;i=e;return n|0}return 0}function jc(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=i;i=i+272|0;h=g+264|0;j=g+48|0;k=g+24|0;l=g+36|0;m=g+224|0;n=g+16|0;o=g+20|0;p=g+120|0;q=g+188|0;r=g+228|0;s=g+268|0;t=g+40|0;u=g+44|0;v=g+8|0;w=g;x=g+4|0;y=g+56|0;z=g+28|0;A=g+184|0;B=g+12|0;C=g+32|0;c[h>>2]=a;c[j>>2]=e;c[k>>2]=f;c[B>>2]=0;c[l>>2]=(c[k>>2]|0)==16?2968:2984;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;c[u>>2]=b[(c[j>>2]|0)+(c[m>>2]<<1)>>1]>>8;c[v>>2]=(b[(c[j>>2]|0)+(c[m>>2]<<1)>>1]|0)-(c[u>>2]<<8);c[w>>2]=b[1544+(c[u>>2]<<1)>>1];c[x>>2]=(b[1544+((c[u>>2]|0)+1<<1)>>1]|0)-(c[w>>2]|0);f=((c[w>>2]<<8)+(_(c[x>>2]|0,c[v>>2]|0)|0)>>3)+1>>1;c[p+(d[(c[l>>2]|0)+(c[m>>2]|0)>>0]<<2)>>2]=f;c[m>>2]=(c[m>>2]|0)+1}c[o>>2]=c[k>>2]>>1;Qd(q,p,c[o>>2]|0);Qd(r,p+4|0,c[o>>2]|0);c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[o>>2]|0))break;c[s>>2]=(c[q+((c[m>>2]|0)+1<<2)>>2]|0)+(c[q+(c[m>>2]<<2)>>2]|0);c[t>>2]=(c[r+((c[m>>2]|0)+1<<2)>>2]|0)-(c[r+(c[m>>2]<<2)>>2]|0);c[y+(c[m>>2]<<2)>>2]=0-(c[t>>2]|0)-(c[s>>2]|0);c[y+((c[k>>2]|0)-(c[m>>2]|0)-1<<2)>>2]=(c[t>>2]|0)-(c[s>>2]|0);c[m>>2]=(c[m>>2]|0)+1}c[n>>2]=0;while(1){if((c[n>>2]|0)>=10)break;c[z>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;s=c[y+(c[m>>2]<<2)>>2]|0;c[A>>2]=(c[y+(c[m>>2]<<2)>>2]|0)>0?s:0-s|0;if((c[A>>2]|0)>(c[z>>2]|0)){c[z>>2]=c[A>>2];c[B>>2]=c[m>>2]}c[m>>2]=(c[m>>2]|0)+1}c[z>>2]=(c[z>>2]>>4)+1>>1;if((c[z>>2]|0)<=32767)break;c[z>>2]=(c[z>>2]|0)<163838?c[z>>2]|0:163838;c[C>>2]=65470-(((c[z>>2]|0)-32767<<14|0)/((_(c[z>>2]|0,(c[B>>2]|0)+1|0)|0)>>2|0)|0);dc(y,c[k>>2]|0,c[C>>2]|0);c[n>>2]=(c[n>>2]|0)+1}C=(c[n>>2]|0)==10;c[m>>2]=0;a:do if(C)while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break a;if(((c[y+(c[m>>2]<<2)>>2]>>4)+1>>1|0)<=32767)if(((c[y+(c[m>>2]<<2)>>2]>>4)+1>>1|0)<-32768)D=-32768;else D=(c[y+(c[m>>2]<<2)>>2]>>4)+1>>1;else D=32767;b[(c[h>>2]|0)+(c[m>>2]<<1)>>1]=D;c[y+(c[m>>2]<<2)>>2]=b[(c[h>>2]|0)+(c[m>>2]<<1)>>1]<<5;c[m>>2]=(c[m>>2]|0)+1}else while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break a;b[(c[h>>2]|0)+(c[m>>2]<<1)>>1]=(c[y+(c[m>>2]<<2)>>2]>>4)+1>>1;c[m>>2]=(c[m>>2]|0)+1}while(0);c[n>>2]=0;while(1){if((c[n>>2]|0)>=16){E=31;break}if((ic(c[h>>2]|0,c[k>>2]|0)|0)>=107374){E=31;break}dc(y,c[k>>2]|0,65536-(2<<c[n>>2])|0);c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;b[(c[h>>2]|0)+(c[m>>2]<<1)>>1]=(c[y+(c[m>>2]<<2)>>2]>>4)+1>>1;c[m>>2]=(c[m>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1}if((E|0)==31){i=g;return}}
+function Td(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)>(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0)|0}function Ud(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)<(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0)|0}function Vd(a,d,e,f,g,h,j){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;k=i;i=i+48|0;l=k;m=k+8|0;n=k+36|0;o=k+16|0;p=k+32|0;q=k+40|0;r=k+44|0;s=k+24|0;t=k+20|0;u=k+12|0;v=k+4|0;w=k+28|0;c[l>>2]=a;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=j;j=c[o>>2]|0;if((j|0)==18){c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[q>>2]|0))break;c[u>>2]=(c[m>>2]|0)+(c[s>>2]>>16<<2);o=_((c[s>>2]&65535)>>16,(c[p>>2]&65535)<<16>>16)|0;c[v>>2]=o+((_(c[s>>2]&65535,(c[p>>2]&65535)<<16>>16)|0)>>16);c[w>>2]=(c[n>>2]|0)+((c[v>>2]|0)*9<<1);o=_(c[c[u>>2]>>2]>>16,b[c[w>>2]>>1]|0)|0;c[t>>2]=o+((_(c[c[u>>2]>>2]&65535,b[c[w>>2]>>1]|0)|0)>>16);o=_(c[(c[u>>2]|0)+4>>2]>>16,b[(c[w>>2]|0)+2>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+4>>2]&65535,b[(c[w>>2]|0)+2>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+8>>2]>>16,b[(c[w>>2]|0)+4>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+8>>2]&65535,b[(c[w>>2]|0)+4>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+12>>2]>>16,b[(c[w>>2]|0)+6>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+12>>2]&65535,b[(c[w>>2]|0)+6>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+16>>2]>>16,b[(c[w>>2]|0)+8>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+16>>2]&65535,b[(c[w>>2]|0)+8>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+20>>2]>>16,b[(c[w>>2]|0)+10>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+20>>2]&65535,b[(c[w>>2]|0)+10>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+24>>2]>>16,b[(c[w>>2]|0)+12>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+24>>2]&65535,b[(c[w>>2]|0)+12>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+28>>2]>>16,b[(c[w>>2]|0)+14>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+28>>2]&65535,b[(c[w>>2]|0)+14>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+32>>2]>>16,b[(c[w>>2]|0)+16>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+32>>2]&65535,b[(c[w>>2]|0)+16>>1]|0)|0)>>16));c[w>>2]=(c[n>>2]|0)+(((c[p>>2]|0)-1-(c[v>>2]|0)|0)*9<<1);o=_(c[(c[u>>2]|0)+68>>2]>>16,b[c[w>>2]>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+68>>2]&65535,b[c[w>>2]>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+64>>2]>>16,b[(c[w>>2]|0)+2>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+64>>2]&65535,b[(c[w>>2]|0)+2>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+60>>2]>>16,b[(c[w>>2]|0)+4>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+60>>2]&65535,b[(c[w>>2]|0)+4>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+56>>2]>>16,b[(c[w>>2]|0)+6>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+56>>2]&65535,b[(c[w>>2]|0)+6>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+52>>2]>>16,b[(c[w>>2]|0)+8>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+52>>2]&65535,b[(c[w>>2]|0)+8>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+48>>2]>>16,b[(c[w>>2]|0)+10>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+48>>2]&65535,b[(c[w>>2]|0)+10>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+44>>2]>>16,b[(c[w>>2]|0)+12>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+44>>2]&65535,b[(c[w>>2]|0)+12>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+40>>2]>>16,b[(c[w>>2]|0)+14>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+40>>2]&65535,b[(c[w>>2]|0)+14>>1]|0)|0)>>16));o=_(c[(c[u>>2]|0)+36>>2]>>16,b[(c[w>>2]|0)+16>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(o+((_(c[(c[u>>2]|0)+36>>2]&65535,b[(c[w>>2]|0)+16>>1]|0)|0)>>16));if(((c[t>>2]>>5)+1>>1|0)<=32767)if(((c[t>>2]>>5)+1>>1|0)<-32768)x=-32768;else x=(c[t>>2]>>5)+1>>1;else x=32767;o=c[l>>2]|0;c[l>>2]=o+2;b[o>>1]=x;c[s>>2]=(c[s>>2]|0)+(c[r>>2]|0)}y=c[l>>2]|0;i=k;return y|0}else if((j|0)==24){c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[q>>2]|0))break;c[u>>2]=(c[m>>2]|0)+(c[s>>2]>>16<<2);x=_((c[c[u>>2]>>2]|0)+(c[(c[u>>2]|0)+92>>2]|0)>>16,b[c[n>>2]>>1]|0)|0;c[t>>2]=x+((_((c[c[u>>2]>>2]|0)+(c[(c[u>>2]|0)+92>>2]|0)&65535,b[c[n>>2]>>1]|0)|0)>>16);x=_((c[(c[u>>2]|0)+4>>2]|0)+(c[(c[u>>2]|0)+88>>2]|0)>>16,b[(c[n>>2]|0)+2>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(x+((_((c[(c[u>>2]|0)+4>>2]|0)+(c[(c[u>>2]|0)+88>>2]|0)&65535,b[(c[n>>2]|0)+2>>1]|0)|0)>>16));x=_((c[(c[u>>2]|0)+8>>2]|0)+(c[(c[u>>2]|0)+84>>2]|0)>>16,b[(c[n>>2]|0)+4>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(x+((_((c[(c[u>>2]|0)+8>>2]|0)+(c[(c[u>>2]|0)+84>>2]|0)&65535,b[(c[n>>2]|0)+4>>1]|0)|0)>>16));x=_((c[(c[u>>2]|0)+12>>2]|0)+(c[(c[u>>2]|0)+80>>2]|0)>>16,b[(c[n>>2]|0)+6>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(x+((_((c[(c[u>>2]|0)+12>>2]|0)+(c[(c[u>>2]|0)+80>>2]|0)&65535,b[(c[n>>2]|0)+6>>1]|0)|0)>>16));x=_((c[(c[u>>2]|0)+16>>2]|0)+(c[(c[u>>2]|0)+76>>2]|0)>>16,b[(c[n>>2]|0)+8>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(x+((_((c[(c[u>>2]|0)+16>>2]|0)+(c[(c[u>>2]|0)+76>>2]|0)&65535,b[(c[n>>2]|0)+8>>1]|0)|0)>>16));x=_((c[(c[u>>2]|0)+20>>2]|0)+(c[(c[u>>2]|0)+72>>2]|0)>>16,b[(c[n>>2]|0)+10>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(x+((_((c[(c[u>>2]|0)+20>>2]|0)+(c[(c[u>>2]|0)+72>>2]|0)&65535,b[(c[n>>2]|0)+10>>1]|0)|0)>>16));x=_((c[(c[u>>2]|0)+24>>2]|0)+(c[(c[u>>2]|0)+68>>2]|0)>>16,b[(c[n>>2]|0)+12>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(x+((_((c[(c[u>>2]|0)+24>>2]|0)+(c[(c[u>>2]|0)+68>>2]|0)&65535,b[(c[n>>2]|0)+12>>1]|0)|0)>>16));x=_((c[(c[u>>2]|0)+28>>2]|0)+(c[(c[u>>2]|0)+64>>2]|0)>>16,b[(c[n>>2]|0)+14>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(x+((_((c[(c[u>>2]|0)+28>>2]|0)+(c[(c[u>>2]|0)+64>>2]|0)&65535,b[(c[n>>2]|0)+14>>1]|0)|0)>>16));x=_((c[(c[u>>2]|0)+32>>2]|0)+(c[(c[u>>2]|0)+60>>2]|0)>>16,b[(c[n>>2]|0)+16>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(x+((_((c[(c[u>>2]|0)+32>>2]|0)+(c[(c[u>>2]|0)+60>>2]|0)&65535,b[(c[n>>2]|0)+16>>1]|0)|0)>>16));x=_((c[(c[u>>2]|0)+36>>2]|0)+(c[(c[u>>2]|0)+56>>2]|0)>>16,b[(c[n>>2]|0)+18>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(x+((_((c[(c[u>>2]|0)+36>>2]|0)+(c[(c[u>>2]|0)+56>>2]|0)&65535,b[(c[n>>2]|0)+18>>1]|0)|0)>>16));x=_((c[(c[u>>2]|0)+40>>2]|0)+(c[(c[u>>2]|0)+52>>2]|0)>>16,b[(c[n>>2]|0)+20>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(x+((_((c[(c[u>>2]|0)+40>>2]|0)+(c[(c[u>>2]|0)+52>>2]|0)&65535,b[(c[n>>2]|0)+20>>1]|0)|0)>>16));x=_((c[(c[u>>2]|0)+44>>2]|0)+(c[(c[u>>2]|0)+48>>2]|0)>>16,b[(c[n>>2]|0)+22>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(x+((_((c[(c[u>>2]|0)+44>>2]|0)+(c[(c[u>>2]|0)+48>>2]|0)&65535,b[(c[n>>2]|0)+22>>1]|0)|0)>>16));if(((c[t>>2]>>5)+1>>1|0)<=32767)if(((c[t>>2]>>5)+1>>1|0)<-32768)z=-32768;else z=(c[t>>2]>>5)+1>>1;else z=32767;x=c[l>>2]|0;c[l>>2]=x+2;b[x>>1]=z;c[s>>2]=(c[s>>2]|0)+(c[r>>2]|0)}y=c[l>>2]|0;i=k;return y|0}else if((j|0)==36){c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[q>>2]|0))break;c[u>>2]=(c[m>>2]|0)+(c[s>>2]>>16<<2);j=_((c[c[u>>2]>>2]|0)+(c[(c[u>>2]|0)+140>>2]|0)>>16,b[c[n>>2]>>1]|0)|0;c[t>>2]=j+((_((c[c[u>>2]>>2]|0)+(c[(c[u>>2]|0)+140>>2]|0)&65535,b[c[n>>2]>>1]|0)|0)>>16);j=_((c[(c[u>>2]|0)+4>>2]|0)+(c[(c[u>>2]|0)+136>>2]|0)>>16,b[(c[n>>2]|0)+2>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+4>>2]|0)+(c[(c[u>>2]|0)+136>>2]|0)&65535,b[(c[n>>2]|0)+2>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+8>>2]|0)+(c[(c[u>>2]|0)+132>>2]|0)>>16,b[(c[n>>2]|0)+4>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+8>>2]|0)+(c[(c[u>>2]|0)+132>>2]|0)&65535,b[(c[n>>2]|0)+4>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+12>>2]|0)+(c[(c[u>>2]|0)+128>>2]|0)>>16,b[(c[n>>2]|0)+6>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+12>>2]|0)+(c[(c[u>>2]|0)+128>>2]|0)&65535,b[(c[n>>2]|0)+6>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+16>>2]|0)+(c[(c[u>>2]|0)+124>>2]|0)>>16,b[(c[n>>2]|0)+8>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+16>>2]|0)+(c[(c[u>>2]|0)+124>>2]|0)&65535,b[(c[n>>2]|0)+8>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+20>>2]|0)+(c[(c[u>>2]|0)+120>>2]|0)>>16,b[(c[n>>2]|0)+10>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+20>>2]|0)+(c[(c[u>>2]|0)+120>>2]|0)&65535,b[(c[n>>2]|0)+10>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+24>>2]|0)+(c[(c[u>>2]|0)+116>>2]|0)>>16,b[(c[n>>2]|0)+12>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+24>>2]|0)+(c[(c[u>>2]|0)+116>>2]|0)&65535,b[(c[n>>2]|0)+12>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+28>>2]|0)+(c[(c[u>>2]|0)+112>>2]|0)>>16,b[(c[n>>2]|0)+14>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+28>>2]|0)+(c[(c[u>>2]|0)+112>>2]|0)&65535,b[(c[n>>2]|0)+14>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+32>>2]|0)+(c[(c[u>>2]|0)+108>>2]|0)>>16,b[(c[n>>2]|0)+16>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+32>>2]|0)+(c[(c[u>>2]|0)+108>>2]|0)&65535,b[(c[n>>2]|0)+16>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+36>>2]|0)+(c[(c[u>>2]|0)+104>>2]|0)>>16,b[(c[n>>2]|0)+18>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+36>>2]|0)+(c[(c[u>>2]|0)+104>>2]|0)&65535,b[(c[n>>2]|0)+18>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+40>>2]|0)+(c[(c[u>>2]|0)+100>>2]|0)>>16,b[(c[n>>2]|0)+20>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+40>>2]|0)+(c[(c[u>>2]|0)+100>>2]|0)&65535,b[(c[n>>2]|0)+20>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+44>>2]|0)+(c[(c[u>>2]|0)+96>>2]|0)>>16,b[(c[n>>2]|0)+22>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+44>>2]|0)+(c[(c[u>>2]|0)+96>>2]|0)&65535,b[(c[n>>2]|0)+22>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+48>>2]|0)+(c[(c[u>>2]|0)+92>>2]|0)>>16,b[(c[n>>2]|0)+24>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+48>>2]|0)+(c[(c[u>>2]|0)+92>>2]|0)&65535,b[(c[n>>2]|0)+24>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+52>>2]|0)+(c[(c[u>>2]|0)+88>>2]|0)>>16,b[(c[n>>2]|0)+26>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+52>>2]|0)+(c[(c[u>>2]|0)+88>>2]|0)&65535,b[(c[n>>2]|0)+26>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+56>>2]|0)+(c[(c[u>>2]|0)+84>>2]|0)>>16,b[(c[n>>2]|0)+28>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+56>>2]|0)+(c[(c[u>>2]|0)+84>>2]|0)&65535,b[(c[n>>2]|0)+28>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+60>>2]|0)+(c[(c[u>>2]|0)+80>>2]|0)>>16,b[(c[n>>2]|0)+30>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+60>>2]|0)+(c[(c[u>>2]|0)+80>>2]|0)&65535,b[(c[n>>2]|0)+30>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+64>>2]|0)+(c[(c[u>>2]|0)+76>>2]|0)>>16,b[(c[n>>2]|0)+32>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+64>>2]|0)+(c[(c[u>>2]|0)+76>>2]|0)&65535,b[(c[n>>2]|0)+32>>1]|0)|0)>>16));j=_((c[(c[u>>2]|0)+68>>2]|0)+(c[(c[u>>2]|0)+72>>2]|0)>>16,b[(c[n>>2]|0)+34>>1]|0)|0;c[t>>2]=(c[t>>2]|0)+(j+((_((c[(c[u>>2]|0)+68>>2]|0)+(c[(c[u>>2]|0)+72>>2]|0)&65535,b[(c[n>>2]|0)+34>>1]|0)|0)>>16));if(((c[t>>2]>>5)+1>>1|0)<=32767)if(((c[t>>2]>>5)+1>>1|0)<-32768)A=-32768;else A=(c[t>>2]>>5)+1>>1;else A=32767;j=c[l>>2]|0;c[l>>2]=j+2;b[j>>1]=A;c[s>>2]=(c[s>>2]|0)+(c[r>>2]|0)}y=c[l>>2]|0;i=k;return y|0}else{y=c[l>>2]|0;i=k;return y|0}return 0}function Wd(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;i=i+32|0;h=g+4|0;j=g+16|0;k=g+8|0;l=g+20|0;m=g+28|0;n=g;o=g+12|0;p=g+24|0;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;c[p>>2]=(((c[m>>2]&65535)>>16)*12|0)+((c[m>>2]&65535)*12>>16);c[o>>2]=(c[j>>2]|0)+(c[m>>2]>>16<<1);c[n>>2]=_(b[c[o>>2]>>1]|0,b[2280+(c[p>>2]<<3)>>1]|0)|0;c[n>>2]=(c[n>>2]|0)+(_(b[(c[o>>2]|0)+2>>1]|0,b[2280+(c[p>>2]<<3)+2>>1]|0)|0);c[n>>2]=(c[n>>2]|0)+(_(b[(c[o>>2]|0)+4>>1]|0,b[2280+(c[p>>2]<<3)+4>>1]|0)|0);c[n>>2]=(c[n>>2]|0)+(_(b[(c[o>>2]|0)+6>>1]|0,b[2280+(c[p>>2]<<3)+6>>1]|0)|0);c[n>>2]=(c[n>>2]|0)+(_(b[(c[o>>2]|0)+8>>1]|0,b[2280+(11-(c[p>>2]|0)<<3)+6>>1]|0)|0);c[n>>2]=(c[n>>2]|0)+(_(b[(c[o>>2]|0)+10>>1]|0,b[2280+(11-(c[p>>2]|0)<<3)+4>>1]|0)|0);c[n>>2]=(c[n>>2]|0)+(_(b[(c[o>>2]|0)+12>>1]|0,b[2280+(11-(c[p>>2]|0)<<3)+2>>1]|0)|0);c[n>>2]=(c[n>>2]|0)+(_(b[(c[o>>2]|0)+14>>1]|0,b[2280+(11-(c[p>>2]|0)<<3)>>1]|0)|0);if(((c[n>>2]>>14)+1>>1|0)<=32767)if(((c[n>>2]>>14)+1>>1|0)<-32768)q=-32768;else q=(c[n>>2]>>14)+1>>1;else q=32767;f=c[h>>2]|0;c[h>>2]=f+2;b[f>>1]=q;c[m>>2]=(c[m>>2]|0)+(c[l>>2]|0)}i=g;return c[h>>2]|0}function Xd(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+16|0;h=g+12|0;j=g+8|0;k=g+4|0;l=g;c[j>>2]=a;c[k>>2]=e;c[l>>2]=f;if((c[k>>2]|0)<1){b[c[l>>2]>>1]=-1;c[h>>2]=-1;m=c[h>>2]|0;i=g;return m|0}if((d[c[j>>2]>>0]|0|0)<252){b[c[l>>2]>>1]=d[c[j>>2]>>0]|0;c[h>>2]=1;m=c[h>>2]|0;i=g;return m|0}if((c[k>>2]|0)<2){b[c[l>>2]>>1]=-1;c[h>>2]=-1;m=c[h>>2]|0;i=g;return m|0}else{b[c[l>>2]>>1]=((d[(c[j>>2]|0)+1>>0]|0)<<2)+(d[c[j>>2]>>0]|0);c[h>>2]=2;m=c[h>>2]|0;i=g;return m|0}return 0}function Yd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;i=b;return (c[d>>2]|0)+4-1&-4|0}function Zd(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;l=i;i=i+320|0;m=l;n=l+72|0;o=l+48|0;p=l+40|0;q=l+24|0;r=l+8|0;s=l+16|0;t=l+56|0;u=l+80|0;v=l+64|0;w=l+32|0;x=l+100|0;y=l+96|0;z=l+88|0;A=l+84|0;B=l+256|0;C=l+252|0;D=l+220|0;E=l+200|0;F=l+192|0;G=l+172|0;H=l+168|0;I=l+160|0;J=l+112|0;K=l+272|0;L=l+284|0;M=l+292|0;N=l+300|0;O=l+304|0;P=l+180|0;Q=l+184|0;R=l+280|0;S=l+288|0;T=l+296|0;U=l+248|0;V=l+216|0;W=l+204|0;Y=l+208|0;Z=l+212|0;$=l+188|0;aa=l+228|0;ba=l+232|0;ca=l+276|0;da=l+164|0;ea=l+236|0;fa=l+240|0;ga=l+244|0;ha=l+92|0;ia=l+104|0;ja=l+260|0;la=l+308|0;ma=l+196|0;na=l+268|0;oa=l+224|0;pa=l+312|0;qa=l+108|0;ra=l+176|0;sa=l+264|0;c[y>>2]=d;c[z>>2]=e;c[A>>2]=f;c[B>>2]=h;c[C>>2]=j;c[D>>2]=k;c[H>>2]=0;c[I>>2]=0;c[O>>2]=0;c[S>>2]=0;c[U>>2]=0;c[V>>2]=0;c[W>>2]=0;c[da>>2]=0;c[E>>2]=(c[y>>2]|0)+(c[(c[y>>2]|0)+4>>2]|0);c[F>>2]=(c[y>>2]|0)+(c[c[y>>2]>>2]|0);c[ba>>2]=(c[(c[y>>2]|0)+12>>2]|0)/50|0;c[aa>>2]=c[ba>>2]>>1;c[$>>2]=c[aa>>2]>>1;c[Z>>2]=c[$>>2]>>1;if((c[C>>2]|0)<(c[Z>>2]|0)){c[x>>2]=-2;ta=c[x>>2]|0;i=l;return ta|0}if((c[C>>2]|0)<(((c[(c[y>>2]|0)+12>>2]|0)/25|0)*3|0))va=c[C>>2]|0;else va=((c[(c[y>>2]|0)+12>>2]|0)/25|0)*3|0;c[C>>2]=va;if((c[A>>2]|0)<=1){c[z>>2]=0;if((c[C>>2]|0)<(c[(c[y>>2]|0)+60>>2]|0))wa=c[C>>2]|0;else wa=c[(c[y>>2]|0)+60>>2]|0;c[C>>2]=wa}do if(!(c[z>>2]|0)){c[Q>>2]=c[C>>2];c[R>>2]=c[(c[y>>2]|0)+56>>2];if(!(c[R>>2]|0)){c[G>>2]=0;while(1){if((c[G>>2]|0)>=(_(c[Q>>2]|0,c[(c[y>>2]|0)+8>>2]|0)|0))break;g[(c[B>>2]|0)+(c[G>>2]<<2)>>2]=0.0;c[G>>2]=(c[G>>2]|0)+1}c[x>>2]=c[Q>>2];ta=c[x>>2]|0;i=l;return ta|0}if((c[Q>>2]|0)>(c[ba>>2]|0)){while(1){c[fa>>2]=Zd(c[y>>2]|0,0,0,c[B>>2]|0,(c[Q>>2]|0)<(c[ba>>2]|0)?c[Q>>2]|0:c[ba>>2]|0,0)|0;xa=c[fa>>2]|0;if((c[fa>>2]|0)<0){ya=20;break}wa=_(xa,c[(c[y>>2]|0)+8>>2]|0)|0;c[B>>2]=(c[B>>2]|0)+(wa<<2);c[Q>>2]=(c[Q>>2]|0)-(c[fa>>2]|0);if((c[Q>>2]|0)<=0){ya=22;break}}if((ya|0)==20){c[x>>2]=xa;ta=c[x>>2]|0;i=l;return ta|0}else if((ya|0)==22){c[x>>2]=c[C>>2];ta=c[x>>2]|0;i=l;return ta|0}}if((c[Q>>2]|0)<(c[ba>>2]|0)){if((c[Q>>2]|0)>(c[aa>>2]|0)){c[Q>>2]=c[aa>>2];break}if(((c[R>>2]|0)!=1e3?(c[Q>>2]|0)>(c[$>>2]|0):0)?(c[Q>>2]|0)<(c[aa>>2]|0):0)c[Q>>2]=c[$>>2]}}else{c[Q>>2]=c[(c[y>>2]|0)+60>>2];c[R>>2]=c[(c[y>>2]|0)+52>>2];eb(J,c[z>>2]|0,c[A>>2]|0)}while(0);c[ea>>2]=0;c[M>>2]=1;c[N>>2]=1;do if((c[z>>2]|0)!=0?(c[(c[y>>2]|0)+56>>2]|0)>0:0){if(!(((c[R>>2]|0)==1002?(c[(c[y>>2]|0)+56>>2]|0)!=1002:0)?(c[(c[y>>2]|0)+64>>2]|0)==0:0)){if((c[R>>2]|0)==1002)break;if((c[(c[y>>2]|0)+56>>2]|0)!=1002)break}c[S>>2]=1;ya=_(c[$>>2]|0,c[(c[y>>2]|0)+8>>2]|0)|0;if((c[R>>2]|0)==1002){c[N>>2]=ya;break}else{c[M>>2]=ya;break}}while(0);ya=c[N>>2]|0;c[ga>>2]=ua()|0;N=i;i=i+((1*(ya<<2)|0)+15&-16)|0;if((c[S>>2]|0)!=0&(c[R>>2]|0)==1002){c[O>>2]=N;Zd(c[y>>2]|0,0,0,c[O>>2]|0,(c[$>>2]|0)<(c[Q>>2]|0)?c[$>>2]|0:c[Q>>2]|0,0)|0}a:do if((c[Q>>2]|0)>(c[C>>2]|0)){c[x>>2]=-1;c[ha>>2]=1}else{c[C>>2]=c[Q>>2];if((c[R>>2]|0)==1002|(c[ea>>2]|0)!=0)za=1;else za=_((c[aa>>2]|0)>(c[C>>2]|0)?c[aa>>2]|0:c[C>>2]|0,c[(c[y>>2]|0)+8>>2]|0)|0;c[L>>2]=za;N=i;i=i+((1*(c[L>>2]<<1)|0)+15&-16)|0;b:do if((c[R>>2]|0)!=1002){c[la>>2]=N;if((c[(c[y>>2]|0)+56>>2]|0)==1002)Vb(c[E>>2]|0)|0;if(10>(((c[Q>>2]|0)*1e3|0)/(c[(c[y>>2]|0)+12>>2]|0)|0|0))Aa=10;else Aa=((c[Q>>2]|0)*1e3|0)/(c[(c[y>>2]|0)+12>>2]|0)|0;c[(c[y>>2]|0)+16+16>>2]=Aa;do if(c[z>>2]|0){c[(c[y>>2]|0)+16+4>>2]=c[(c[y>>2]|0)+44>>2];ya=c[y>>2]|0;if((c[R>>2]|0)!=1e3){c[ya+16+12>>2]=16e3;break}xa=c[y>>2]|0;if((c[ya+48>>2]|0)==1101){c[xa+16+12>>2]=8e3;break}if((c[xa+48>>2]|0)==1102){c[(c[y>>2]|0)+16+12>>2]=12e3;break}else{c[(c[y>>2]|0)+16+12>>2]=16e3;break}}while(0);c[ia>>2]=(c[z>>2]|0)==0?1:c[D>>2]<<1;c[ja>>2]=0;c:while(1){c[ma>>2]=(c[ja>>2]|0)==0&1;c[H>>2]=Wb(c[E>>2]|0,(c[y>>2]|0)+16|0,c[ia>>2]|0,c[ma>>2]|0,J,c[la>>2]|0,K)|0;d:do if(c[H>>2]|0){if(!(c[ia>>2]|0))break c;c[K>>2]=c[C>>2];c[G>>2]=0;while(1){if((c[G>>2]|0)>=(_(c[C>>2]|0,c[(c[y>>2]|0)+8>>2]|0)|0))break d;b[(c[la>>2]|0)+(c[G>>2]<<1)>>1]=0;c[G>>2]=(c[G>>2]|0)+1}}while(0);xa=_(c[K>>2]|0,c[(c[y>>2]|0)+8>>2]|0)|0;c[la>>2]=(c[la>>2]|0)+(xa<<1);c[ja>>2]=(c[ja>>2]|0)+(c[K>>2]|0);if((c[ja>>2]|0)>=(c[C>>2]|0))break b}c[x>>2]=-3;c[ha>>2]=1;break a}while(0);c[T>>2]=0;if((c[D>>2]|0)==0&(c[R>>2]|0)!=1002&(c[z>>2]|0)!=0?(xa=(ge(J)|0)+17|0,(xa+(((c[(c[y>>2]|0)+52>>2]|0)==1001&1)*20|0)|0)<=(c[A>>2]<<3|0)):0){if((c[R>>2]|0)==1001)c[U>>2]=ib(J,12)|0;else c[U>>2]=1;if(c[U>>2]|0){c[W>>2]=ib(J,1)|0;if((c[R>>2]|0)==1001)Ba=(kb(J,256)|0)+2|0;else{xa=c[A>>2]|0;Ba=xa-((ge(J)|0)+7>>3)|0}c[V>>2]=Ba;c[A>>2]=(c[A>>2]|0)-(c[V>>2]|0);xa=c[A>>2]<<3;if((xa|0)<(ge(J)|0)){c[A>>2]=0;c[V>>2]=0;c[U>>2]=0}xa=J+4|0;c[xa>>2]=(c[xa>>2]|0)-(c[V>>2]|0)}}if((c[R>>2]|0)!=1002)c[T>>2]=17;c[na>>2]=21;switch(c[(c[y>>2]|0)+48>>2]|0){case 1101:{c[na>>2]=13;break}case 1103:case 1102:{c[na>>2]=17;break}case 1104:{c[na>>2]=19;break}case 1105:{c[na>>2]=21;break}default:{}}xa=c[F>>2]|0;c[w>>2]=c[na>>2];ab(xa,10012,w)|0;xa=c[F>>2]|0;c[v>>2]=c[(c[y>>2]|0)+44>>2];ab(xa,10008,v)|0;if(c[U>>2]|0){c[S>>2]=0;c[M>>2]=1}xa=i;i=i+((1*(c[M>>2]<<2)|0)+15&-16)|0;if((c[S>>2]|0)!=0&(c[R>>2]|0)!=1002){c[O>>2]=xa;Zd(c[y>>2]|0,0,0,c[O>>2]|0,(c[$>>2]|0)<(c[Q>>2]|0)?c[$>>2]|0:c[Q>>2]|0,0)|0}if(c[U>>2]|0)Ca=_(c[$>>2]|0,c[(c[y>>2]|0)+8>>2]|0)|0;else Ca=1;c[P>>2]=Ca;xa=i;i=i+((1*(c[P>>2]<<2)|0)+15&-16)|0;if((c[U>>2]|0)!=0&(c[W>>2]|0)!=0){ya=c[F>>2]|0;c[u>>2]=0;ab(ya,10010,u)|0;$a(c[F>>2]|0,(c[z>>2]|0)+(c[A>>2]|0)|0,c[V>>2]|0,xa,c[$>>2]|0,0,0)|0;ya=c[F>>2]|0;c[t>>2]=da+(((da-da|0)/4|0)<<2);ab(ya,4031,t)|0}ya=c[F>>2]|0;c[s>>2]=c[T>>2];ab(ya,10010,s)|0;do if((c[R>>2]|0)==1e3){a[pa>>0]=a[5184]|0;a[pa+1>>0]=a[5185]|0;e:do if(!(c[ea>>2]|0)){c[G>>2]=0;while(1){if((c[G>>2]|0)>=(_(c[C>>2]|0,c[(c[y>>2]|0)+8>>2]|0)|0))break e;g[(c[B>>2]|0)+(c[G>>2]<<2)>>2]=0.0;c[G>>2]=(c[G>>2]|0)+1}}while(0);if((c[(c[y>>2]|0)+56>>2]|0)==1001){if((c[U>>2]|0)!=0&(c[W>>2]|0)!=0?(c[(c[y>>2]|0)+64>>2]|0)!=0:0)break;ya=c[F>>2]|0;c[q>>2]=0;ab(ya,10010,q)|0;$a(c[F>>2]|0,pa,2,c[B>>2]|0,c[Z>>2]|0,0,c[ea>>2]|0)|0}}else{c[oa>>2]=(c[ba>>2]|0)<(c[C>>2]|0)?c[ba>>2]|0:c[C>>2]|0;do if((c[R>>2]|0)!=(c[(c[y>>2]|0)+56>>2]|0)){if((c[(c[y>>2]|0)+56>>2]|0)<=0)break;if(c[(c[y>>2]|0)+64>>2]|0)break;ab(c[F>>2]|0,4028,r)|0}while(0);c[I>>2]=$a(c[F>>2]|0,(c[D>>2]|0)!=0?0:c[z>>2]|0,c[A>>2]|0,c[B>>2]|0,c[oa>>2]|0,J,c[ea>>2]|0)|0}while(0);f:do if(!((c[R>>2]|0)==1002|(c[ea>>2]|0)!=0)){c[G>>2]=0;while(1){if((c[G>>2]|0)>=(_(c[C>>2]|0,c[(c[y>>2]|0)+8>>2]|0)|0))break f;g[(c[B>>2]|0)+(c[G>>2]<<2)>>2]=+g[(c[B>>2]|0)+(c[G>>2]<<2)>>2]+ +(b[N+(c[G>>2]<<1)>>1]|0)*.000030517578125;c[G>>2]=(c[G>>2]|0)+1}}while(0);N=c[F>>2]|0;c[p>>2]=qa+(((qa-qa|0)/4|0)<<2);ab(N,10015,p)|0;c[ca>>2]=c[(c[qa>>2]|0)+60>>2];if(!((c[U>>2]|0)==0|(c[W>>2]|0)!=0)){ab(c[F>>2]|0,4028,o)|0;N=c[F>>2]|0;c[n>>2]=0;ab(N,10010,n)|0;$a(c[F>>2]|0,(c[z>>2]|0)+(c[A>>2]|0)|0,c[V>>2]|0,xa,c[$>>2]|0,0,0)|0;N=c[F>>2]|0;c[m>>2]=da+(((da-da|0)/4|0)<<2);ab(N,4031,m)|0;N=(c[B>>2]|0)+((_(c[(c[y>>2]|0)+8>>2]|0,(c[C>>2]|0)-(c[Z>>2]|0)|0)|0)<<2)|0;ya=xa+((_(c[(c[y>>2]|0)+8>>2]|0,c[Z>>2]|0)|0)<<2)|0;fa=(c[B>>2]|0)+((_(c[(c[y>>2]|0)+8>>2]|0,(c[C>>2]|0)-(c[Z>>2]|0)|0)|0)<<2)|0;he(N,ya,fa,c[Z>>2]|0,c[(c[y>>2]|0)+8>>2]|0,c[ca>>2]|0,c[(c[y>>2]|0)+12>>2]|0)}if((c[U>>2]|0)!=0&(c[W>>2]|0)!=0){c[Y>>2]=0;while(1){if((c[Y>>2]|0)>=(c[(c[y>>2]|0)+8>>2]|0))break;c[G>>2]=0;while(1){if((c[G>>2]|0)>=(c[Z>>2]|0))break;fa=_(c[(c[y>>2]|0)+8>>2]|0,c[G>>2]|0)|0;ya=_(c[(c[y>>2]|0)+8>>2]|0,c[G>>2]|0)|0;g[(c[B>>2]|0)+(ya+(c[Y>>2]|0)<<2)>>2]=+g[xa+(fa+(c[Y>>2]|0)<<2)>>2];c[G>>2]=(c[G>>2]|0)+1}c[Y>>2]=(c[Y>>2]|0)+1}fa=xa+((_(c[(c[y>>2]|0)+8>>2]|0,c[Z>>2]|0)|0)<<2)|0;ya=(c[B>>2]|0)+((_(c[(c[y>>2]|0)+8>>2]|0,c[Z>>2]|0)|0)<<2)|0;N=(c[B>>2]|0)+((_(c[(c[y>>2]|0)+8>>2]|0,c[Z>>2]|0)|0)<<2)|0;he(fa,ya,N,c[Z>>2]|0,c[(c[y>>2]|0)+8>>2]|0,c[ca>>2]|0,c[(c[y>>2]|0)+12>>2]|0)}do if(c[S>>2]|0){if((c[Q>>2]|0)<(c[$>>2]|0)){he(c[O>>2]|0,c[B>>2]|0,c[B>>2]|0,c[Z>>2]|0,c[(c[y>>2]|0)+8>>2]|0,c[ca>>2]|0,c[(c[y>>2]|0)+12>>2]|0);break}c[G>>2]=0;while(1){if((c[G>>2]|0)>=(_(c[(c[y>>2]|0)+8>>2]|0,c[Z>>2]|0)|0))break;g[(c[B>>2]|0)+(c[G>>2]<<2)>>2]=+g[(c[O>>2]|0)+(c[G>>2]<<2)>>2];c[G>>2]=(c[G>>2]|0)+1}N=(c[O>>2]|0)+((_(c[(c[y>>2]|0)+8>>2]|0,c[Z>>2]|0)|0)<<2)|0;ya=(c[B>>2]|0)+((_(c[(c[y>>2]|0)+8>>2]|0,c[Z>>2]|0)|0)<<2)|0;fa=(c[B>>2]|0)+((_(c[(c[y>>2]|0)+8>>2]|0,c[Z>>2]|0)|0)<<2)|0;he(N,ya,fa,c[Z>>2]|0,c[(c[y>>2]|0)+8>>2]|0,c[ca>>2]|0,c[(c[y>>2]|0)+12>>2]|0)}while(0);g:do if(c[(c[y>>2]|0)+40>>2]|0){g[ra>>2]=+X(+(+(c[(c[y>>2]|0)+40>>2]|0)*6.488140788860619e-04*.6931471805599453));c[G>>2]=0;while(1){if((c[G>>2]|0)>=(_(c[C>>2]|0,c[(c[y>>2]|0)+8>>2]|0)|0))break g;g[sa>>2]=+g[(c[B>>2]|0)+(c[G>>2]<<2)>>2]*+g[ra>>2];g[(c[B>>2]|0)+(c[G>>2]<<2)>>2]=+g[sa>>2];c[G>>2]=(c[G>>2]|0)+1}}while(0);if((c[A>>2]|0)<=1)c[(c[y>>2]|0)+80>>2]=0;else c[(c[y>>2]|0)+80>>2]=c[J+28>>2]^c[da>>2];c[(c[y>>2]|0)+56>>2]=c[R>>2];if(c[U>>2]|0)Da=(c[W>>2]|0)!=0^1;else Da=0;c[(c[y>>2]|0)+64>>2]=Da&1;if((c[I>>2]|0)>=0)_d()|0;c[x>>2]=(c[I>>2]|0)<0?c[I>>2]|0:c[Q>>2]|0;c[ha>>2]=1}while(0);ka(c[ga>>2]|0);ta=c[x>>2]|0;i=l;return ta|0}function _d(){return 0}function $d(a){a=a|0;var b=0,e=0,f=0;b=i;i=i+16|0;e=b+4|0;f=b;c[e>>2]=a;do if(!((d[c[e>>2]>>0]|0)&128))if(((d[c[e>>2]>>0]|0)&96|0)==96){c[f>>2]=1001;break}else{c[f>>2]=1e3;break}else c[f>>2]=1002;while(0);i=b;return c[f>>2]|0}function ae(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;i=b;return (c[d>>2]|0)+4-1&-4|0}function be(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Ze(c[d>>2]|0)|0;i=b;return a|0}function ce(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;_e(c[d>>2]|0);i=b;return}function de(a,b,e,f,g,h,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;l=i;i=i+112|0;m=l;n=l+72|0;o=l+56|0;p=l+12|0;q=l+4|0;r=l+16|0;s=l+20|0;t=l+24|0;u=l+28|0;v=l+32|0;w=l+36|0;x=l+40|0;y=l+44|0;z=l+48|0;A=l+52|0;B=l+8|0;C=l+60|0;D=l+64|0;E=l+68|0;F=l+76|0;G=l+80|0;H=l+84|0;I=l+88|0;J=l+92|0;K=l+96|0;L=l+100|0;M=l+104|0;c[o>>2]=a;c[p>>2]=b;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=j;c[v>>2]=k;c[C>>2]=0;k=c[o>>2]|0;c[m>>2]=w+(((w-w|0)/4|0)<<2);Qc(k,4029,m)|0;if((c[t>>2]|0)<(((c[w>>2]|0)/25|0)*3|0))N=c[t>>2]|0;else N=((c[w>>2]|0)/25|0)*3|0;c[t>>2]=N;N=c[t>>2]<<1;c[D>>2]=ua()|0;m=i;i=i+((1*(N<<2)|0)+15&-16)|0;N=c[o>>2]|0;c[B>>2]=N+(ae(268)|0);c[x>>2]=Ac(2)|0;c[y>>2]=Ac(1)|0;if(!(c[q>>2]|0))c[C>>2]=1;if((c[q>>2]|0)<0){c[n>>2]=-1;c[E>>2]=1;O=c[D>>2]|0;ka(O|0);P=c[n>>2]|0;i=l;return P|0}if((c[C>>2]|0)==0?(c[q>>2]|0)<((c[(c[o>>2]|0)+4>>2]<<1)-1|0):0){c[n>>2]=-4;c[E>>2]=1;O=c[D>>2]|0;ka(O|0);P=c[n>>2]|0;i=l;return P|0}if(!(c[C>>2]|0)){c[F>>2]=fe(c[p>>2]|0,c[q>>2]|0,c[(c[o>>2]|0)+4>>2]|0,c[w>>2]|0)|0;w=c[F>>2]|0;if((c[F>>2]|0)<0){c[n>>2]=w;c[E>>2]=1;O=c[D>>2]|0;ka(O|0);P=c[n>>2]|0;i=l;return P|0}if((w|0)>(c[t>>2]|0)){c[n>>2]=-2;c[E>>2]=1;O=c[D>>2]|0;ka(O|0);P=c[n>>2]|0;i=l;return P|0}}c[z>>2]=0;while(1){if((c[z>>2]|0)>=(c[(c[o>>2]|0)+4>>2]|0)){Q=36;break}c[G>>2]=c[B>>2];if((c[z>>2]|0)<(c[(c[o>>2]|0)+8>>2]|0))R=ae(c[x>>2]|0)|0;else R=ae(c[y>>2]|0)|0;c[B>>2]=(c[B>>2]|0)+R;if((c[C>>2]|0)==0&(c[q>>2]|0)<=0){Q=22;break}c[H>>2]=0;c[I>>2]=Cc(c[G>>2]|0,c[p>>2]|0,c[q>>2]|0,m,c[t>>2]|0,c[u>>2]|0,(c[z>>2]|0)!=((c[(c[o>>2]|0)+4>>2]|0)-1|0)&1,H,c[v>>2]|0)|0;c[p>>2]=(c[p>>2]|0)+(c[H>>2]|0);c[q>>2]=(c[q>>2]|0)-(c[H>>2]|0);S=c[I>>2]|0;if((c[I>>2]|0)<=0){Q=24;break}c[t>>2]=S;a:do if((c[z>>2]|0)<(c[(c[o>>2]|0)+8>>2]|0)){c[K>>2]=-1;while(1){w=Jc(c[o>>2]|0,c[z>>2]|0,c[K>>2]|0)|0;c[J>>2]=w;if((w|0)==-1)break;Ha[c[s>>2]&1](c[r>>2]|0,c[c[o>>2]>>2]|0,c[J>>2]|0,m,2,c[t>>2]|0);c[K>>2]=c[J>>2]}c[K>>2]=-1;while(1){w=Kc(c[o>>2]|0,c[z>>2]|0,c[K>>2]|0)|0;c[J>>2]=w;if((w|0)==-1)break a;Ha[c[s>>2]&1](c[r>>2]|0,c[c[o>>2]>>2]|0,c[J>>2]|0,m+4|0,2,c[t>>2]|0);c[K>>2]=c[J>>2]}}else{c[M>>2]=-1;while(1){w=Lc(c[o>>2]|0,c[z>>2]|0,c[M>>2]|0)|0;c[L>>2]=w;if((w|0)==-1)break a;Ha[c[s>>2]&1](c[r>>2]|0,c[c[o>>2]>>2]|0,c[L>>2]|0,m,1,c[t>>2]|0);c[M>>2]=c[L>>2]}}while(0);c[z>>2]=(c[z>>2]|0)+1}if((Q|0)==22){c[n>>2]=-3;c[E>>2]=1;O=c[D>>2]|0;ka(O|0);P=c[n>>2]|0;i=l;return P|0}else if((Q|0)==24){c[n>>2]=S;c[E>>2]=1;O=c[D>>2]|0;ka(O|0);P=c[n>>2]|0;i=l;return P|0}else if((Q|0)==36){c[A>>2]=0;while(1){if((c[A>>2]|0)>=(c[c[o>>2]>>2]|0))break;if((d[(c[o>>2]|0)+12+(c[A>>2]|0)>>0]|0|0)==255)Ha[c[s>>2]&1](c[r>>2]|0,c[c[o>>2]>>2]|0,c[A>>2]|0,0,0,c[t>>2]|0);c[A>>2]=(c[A>>2]|0)+1}c[n>>2]=c[t>>2];c[E>>2]=1;O=c[D>>2]|0;ka(O|0);P=c[n>>2]|0;i=l;return P|0}return 0}function ee(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;i=i+32|0;k=j+4|0;l=j+16|0;m=j+8|0;n=j+20|0;o=j+28|0;p=j;q=j+12|0;r=j+24|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=h;c[q>>2]=c[k>>2];k=(c[n>>2]|0)!=0;c[r>>2]=0;if(k){while(1){if((c[r>>2]|0)>=(c[p>>2]|0))break;k=_(c[r>>2]|0,c[o>>2]|0)|0;h=_(c[r>>2]|0,c[l>>2]|0)|0;g[(c[q>>2]|0)+(h+(c[m>>2]|0)<<2)>>2]=+g[(c[n>>2]|0)+(k<<2)>>2];c[r>>2]=(c[r>>2]|0)+1}i=j;return}else{while(1){if((c[r>>2]|0)>=(c[p>>2]|0))break;n=_(c[r>>2]|0,c[l>>2]|0)|0;g[(c[q>>2]|0)+(n+(c[m>>2]|0)<<2)>>2]=0.0;c[r>>2]=(c[r>>2]|0)+1}i=j;return}}function fe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=i;i=i+144|0;g=f+12|0;h=f+16|0;j=f+4|0;k=f+8|0;l=f+32|0;m=f;n=f+36|0;o=f+136|0;p=f+40|0;q=f+28|0;r=f+20|0;s=f+24|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[q>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0)){t=11;break}if((c[j>>2]|0)<=0){t=4;break}c[n>>2]=zc(c[h>>2]|0,c[j>>2]|0,(c[m>>2]|0)!=((c[k>>2]|0)-1|0)&1,o,0,p,0,r)|0;if((c[n>>2]|0)<0){t=6;break}c[s>>2]=Hc(c[h>>2]|0,c[r>>2]|0,c[l>>2]|0)|0;if((c[m>>2]|0)!=0?(c[q>>2]|0)!=(c[s>>2]|0):0){t=9;break}c[q>>2]=c[s>>2];c[h>>2]=(c[h>>2]|0)+(c[r>>2]|0);c[j>>2]=(c[j>>2]|0)-(c[r>>2]|0);c[m>>2]=(c[m>>2]|0)+1}if((t|0)==4){c[g>>2]=-4;u=c[g>>2]|0;i=f;return u|0}else if((t|0)==6){c[g>>2]=c[n>>2];u=c[g>>2]|0;i=f;return u|0}else if((t|0)==9){c[g>>2]=-4;u=c[g>>2]|0;i=f;return u|0}else if((t|0)==11){c[g>>2]=c[q>>2];u=c[g>>2]|0;i=f;return u|0}return 0}function ge(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[(c[d>>2]|0)+20>>2]|0)-(32-(aa(c[(c[d>>2]|0)+28>>2]|0)|0))|0;i=b;return a|0}function he(a,b,d,e,f,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;k=i;i=i+48|0;l=k+36|0;m=k+16|0;n=k;o=k+28|0;p=k+32|0;q=k+40|0;r=k+12|0;s=k+24|0;t=k+20|0;u=k+8|0;v=k+4|0;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=h;c[r>>2]=j;c[u>>2]=48e3/(c[r>>2]|0)|0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[p>>2]|0))break;c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[o>>2]|0))break;r=_(c[s>>2]|0,c[u>>2]|0)|0;j=_(c[s>>2]|0,c[u>>2]|0)|0;g[v>>2]=+g[(c[q>>2]|0)+(r<<2)>>2]*+g[(c[q>>2]|0)+(j<<2)>>2];j=_(c[s>>2]|0,c[p>>2]|0)|0;r=_(c[s>>2]|0,c[p>>2]|0)|0;h=_(c[s>>2]|0,c[p>>2]|0)|0;g[(c[n>>2]|0)+(h+(c[t>>2]|0)<<2)>>2]=+g[v>>2]*+g[(c[m>>2]|0)+(j+(c[t>>2]|0)<<2)>>2]+(1.0-+g[v>>2])*+g[(c[l>>2]|0)+(r+(c[t>>2]|0)<<2)>>2];c[s>>2]=(c[s>>2]|0)+1}c[t>>2]=(c[t>>2]|0)+1}i=k;return}function ie(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[d>>2]|0)){e=32;i=b;return e|0}e=32-(32-(aa(c[d>>2]|0)|0))|0;i=b;return e|0}function je(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;i=i+48|0;e=d+28|0;f=d+16|0;g=d+4|0;h=d+8|0;j=d+32|0;k=d;l=d+12|0;m=d+24|0;n=d+20|0;c[f>>2]=a;c[g>>2]=b;b=c[f>>2]|0;c[h>>2]=(ie((c[f>>2]|0)>0?b:0-b|0)|0)-1;c[l>>2]=c[f>>2]<<c[h>>2];c[k>>2]=536870911/(c[l>>2]>>16|0)|0;c[n>>2]=c[k>>2]<<16;f=_(c[l>>2]>>16,(c[k>>2]&65535)<<16>>16)|0;c[m>>2]=536870912-(f+((_(c[l>>2]&65535,(c[k>>2]&65535)<<16>>16)|0)>>16))<<3;l=_(c[m>>2]>>16,(c[k>>2]&65535)<<16>>16)|0;f=(c[n>>2]|0)+(l+((_(c[m>>2]&65535,(c[k>>2]&65535)<<16>>16)|0)>>16))|0;c[n>>2]=f+(_(c[m>>2]|0,(c[k>>2]>>15)+1>>1)|0);c[j>>2]=61-(c[h>>2]|0)-(c[g>>2]|0);g=c[j>>2]|0;if((c[j>>2]|0)>0)if((g|0)<32){c[e>>2]=c[n>>2]>>c[j>>2];o=c[e>>2]|0;i=d;return o|0}else{c[e>>2]=0;o=c[e>>2]|0;i=d;return o|0}h=c[n>>2]|0;k=0-(c[j>>2]|0)|0;do if((-2147483648>>0-g|0)>(2147483647>>0-(c[j>>2]|0)|0)){if((h|0)>(-2147483648>>k|0)){p=-2147483648>>0-(c[j>>2]|0);break}if((c[n>>2]|0)<(2147483647>>0-(c[j>>2]|0)|0)){p=2147483647>>0-(c[j>>2]|0);break}else{p=c[n>>2]|0;break}}else{if((h|0)>(2147483647>>k|0)){p=2147483647>>0-(c[j>>2]|0);break}if((c[n>>2]|0)<(-2147483648>>0-(c[j>>2]|0)|0)){p=-2147483648>>0-(c[j>>2]|0);break}else{p=c[n>>2]|0;break}}while(0);c[e>>2]=p<<0-(c[j>>2]|0);o=c[e>>2]|0;i=d;return o|0}function ke(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+12|0;g=e+8|0;h=e+4|0;j=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=Ld(c[f>>2]|0)|0;c[c[g>>2]>>2]=c[j>>2];g=(le(c[f>>2]|0,24-(c[j>>2]|0)|0)|0)&127;c[c[h>>2]>>2]=g;i=e;return}function le(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+32|0;e=d+20|0;f=d+16|0;g=d+12|0;h=d+8|0;j=d+4|0;k=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[f>>2];c[j>>2]=c[g>>2];c[k>>2]=0-(c[g>>2]|0);if(!(c[g>>2]|0)){c[e>>2]=c[f>>2];l=c[e>>2]|0;i=d;return l|0}f=c[h>>2]|0;if((c[g>>2]|0)<0){c[e>>2]=f<<c[k>>2]|(c[h>>2]|0)>>>(32-(c[k>>2]|0)|0);l=c[e>>2]|0;i=d;return l|0}else{c[e>>2]=f<<32-(c[j>>2]|0)|(c[h>>2]|0)>>>(c[j>>2]|0);l=c[e>>2]|0;i=d;return l|0}return 0}function me(a,d,e,f,g,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;l=i;i=i+48|0;m=l+4|0;n=l+16|0;o=l+36|0;p=l;q=l+32|0;r=l+40|0;s=l+44|0;t=l+24|0;u=l+20|0;v=l+8|0;w=l+12|0;x=l+28|0;c[m>>2]=a;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;k=c[s>>2]<<1;c[x>>2]=ua()|0;j=i;i=i+((1*(k<<1)|0)+15&-16)|0;c[w>>2]=j;c[v>>2]=0;while(1){if((c[v>>2]|0)>=2)break;c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[s>>2]|0))break;k=(c[u>>2]|0)+(_((c[v>>2]|0)+(c[t>>2]|0)-2|0,c[s>>2]|0)|0)|0;h=_(c[(c[q>>2]|0)+(k<<2)>>2]>>16,(c[(c[r>>2]|0)+(c[v>>2]<<2)>>2]&65535)<<16>>16)|0;k=(c[u>>2]|0)+(_((c[v>>2]|0)+(c[t>>2]|0)-2|0,c[s>>2]|0)|0)|0;g=h+((_(c[(c[q>>2]|0)+(k<<2)>>2]&65535,(c[(c[r>>2]|0)+(c[v>>2]<<2)>>2]&65535)<<16>>16)|0)>>16)|0;k=(c[u>>2]|0)+(_((c[v>>2]|0)+(c[t>>2]|0)-2|0,c[s>>2]|0)|0)|0;if((g+(_(c[(c[q>>2]|0)+(k<<2)>>2]|0,(c[(c[r>>2]|0)+(c[v>>2]<<2)>>2]>>15)+1>>1)|0)>>8|0)<=32767){k=(c[u>>2]|0)+(_((c[v>>2]|0)+(c[t>>2]|0)-2|0,c[s>>2]|0)|0)|0;g=_(c[(c[q>>2]|0)+(k<<2)>>2]>>16,(c[(c[r>>2]|0)+(c[v>>2]<<2)>>2]&65535)<<16>>16)|0;k=(c[u>>2]|0)+(_((c[v>>2]|0)+(c[t>>2]|0)-2|0,c[s>>2]|0)|0)|0;h=g+((_(c[(c[q>>2]|0)+(k<<2)>>2]&65535,(c[(c[r>>2]|0)+(c[v>>2]<<2)>>2]&65535)<<16>>16)|0)>>16)|0;k=(c[u>>2]|0)+(_((c[v>>2]|0)+(c[t>>2]|0)-2|0,c[s>>2]|0)|0)|0;if((h+(_(c[(c[q>>2]|0)+(k<<2)>>2]|0,(c[(c[r>>2]|0)+(c[v>>2]<<2)>>2]>>15)+1>>1)|0)>>8|0)<-32768)y=-32768;else{k=(c[u>>2]|0)+(_((c[v>>2]|0)+(c[t>>2]|0)-2|0,c[s>>2]|0)|0)|0;h=_(c[(c[q>>2]|0)+(k<<2)>>2]>>16,(c[(c[r>>2]|0)+(c[v>>2]<<2)>>2]&65535)<<16>>16)|0;k=(c[u>>2]|0)+(_((c[v>>2]|0)+(c[t>>2]|0)-2|0,c[s>>2]|0)|0)|0;g=h+((_(c[(c[q>>2]|0)+(k<<2)>>2]&65535,(c[(c[r>>2]|0)+(c[v>>2]<<2)>>2]&65535)<<16>>16)|0)>>16)|0;k=(c[u>>2]|0)+(_((c[v>>2]|0)+(c[t>>2]|0)-2|0,c[s>>2]|0)|0)|0;y=g+(_(c[(c[q>>2]|0)+(k<<2)>>2]|0,(c[(c[r>>2]|0)+(c[v>>2]<<2)>>2]>>15)+1>>1)|0)>>8}}else y=32767;b[(c[w>>2]|0)+(c[u>>2]<<1)>>1]=y;c[u>>2]=(c[u>>2]|0)+1}c[w>>2]=(c[w>>2]|0)+(c[s>>2]<<1);c[v>>2]=(c[v>>2]|0)+1}uc(c[m>>2]|0,c[n>>2]|0,j,c[s>>2]|0);uc(c[o>>2]|0,c[p>>2]|0,j+(c[s>>2]<<1)|0,c[s>>2]|0);ka(c[x>>2]|0);i=l;return}function ne(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)>(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0)|0}function oe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)<(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0)|0}function pe(a,c){a=a|0;c=c|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+2|0;f=d;b[e>>1]=a;b[f>>1]=c;i=d;return ((b[e>>1]|0)>(b[f>>1]|0)?b[e>>1]|0:b[f>>1]|0)&65535|0}function qe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)<(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0)|0}function re(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;i=i+48|0;e=d+28|0;f=d+16|0;g=d+4|0;h=d+8|0;j=d+32|0;k=d;l=d+12|0;m=d+24|0;n=d+20|0;c[f>>2]=a;c[g>>2]=b;b=c[f>>2]|0;c[h>>2]=(Ld((c[f>>2]|0)>0?b:0-b|0)|0)-1;c[l>>2]=c[f>>2]<<c[h>>2];c[k>>2]=536870911/(c[l>>2]>>16|0)|0;c[n>>2]=c[k>>2]<<16;f=_(c[l>>2]>>16,(c[k>>2]&65535)<<16>>16)|0;c[m>>2]=536870912-(f+((_(c[l>>2]&65535,(c[k>>2]&65535)<<16>>16)|0)>>16))<<3;l=_(c[m>>2]>>16,(c[k>>2]&65535)<<16>>16)|0;f=(c[n>>2]|0)+(l+((_(c[m>>2]&65535,(c[k>>2]&65535)<<16>>16)|0)>>16))|0;c[n>>2]=f+(_(c[m>>2]|0,(c[k>>2]>>15)+1>>1)|0);c[j>>2]=61-(c[h>>2]|0)-(c[g>>2]|0);g=c[j>>2]|0;if((c[j>>2]|0)>0)if((g|0)<32){c[e>>2]=c[n>>2]>>c[j>>2];o=c[e>>2]|0;i=d;return o|0}else{c[e>>2]=0;o=c[e>>2]|0;i=d;return o|0}h=c[n>>2]|0;k=0-(c[j>>2]|0)|0;do if((-2147483648>>0-g|0)>(2147483647>>0-(c[j>>2]|0)|0)){if((h|0)>(-2147483648>>k|0)){p=-2147483648>>0-(c[j>>2]|0);break}if((c[n>>2]|0)<(2147483647>>0-(c[j>>2]|0)|0)){p=2147483647>>0-(c[j>>2]|0);break}else{p=c[n>>2]|0;break}}else{if((h|0)>(2147483647>>k|0)){p=2147483647>>0-(c[j>>2]|0);break}if((c[n>>2]|0)<(-2147483648>>0-(c[j>>2]|0)|0)){p=-2147483648>>0-(c[j>>2]|0);break}else{p=c[n>>2]|0;break}}while(0);c[e>>2]=p<<0-(c[j>>2]|0);o=c[e>>2]|0;i=d;return o|0}function se(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+12|0;g=e+8|0;h=e+4|0;j=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=te(c[f>>2]|0)|0;c[c[g>>2]>>2]=c[j>>2];g=(ue(c[f>>2]|0,24-(c[j>>2]|0)|0)|0)&127;c[c[h>>2]>>2]=g;i=e;return}function te(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[d>>2]|0)){e=32;i=b;return e|0}e=32-(32-(aa(c[d>>2]|0)|0))|0;i=b;return e|0}function ue(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+32|0;e=d+20|0;f=d+16|0;g=d+12|0;h=d+8|0;j=d+4|0;k=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[f>>2];c[j>>2]=c[g>>2];c[k>>2]=0-(c[g>>2]|0);if(!(c[g>>2]|0)){c[e>>2]=c[f>>2];l=c[e>>2]|0;i=d;return l|0}f=c[h>>2]|0;if((c[g>>2]|0)<0){c[e>>2]=f<<c[k>>2]|(c[h>>2]|0)>>>(32-(c[k>>2]|0)|0);l=c[e>>2]|0;i=d;return l|0}else{c[e>>2]=f<<32-(c[j>>2]|0)|(c[h>>2]|0)>>>(c[j>>2]|0);l=c[e>>2]|0;i=d;return l|0}return 0}function ve(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[d>>2]|0)){e=32;i=b;return e|0}e=32-(32-(aa(c[d>>2]|0)|0))|0;i=b;return e|0}function we(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)>>>0)/((c[f>>2]|0)>>>0)|0|0}function xe(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=i;i=i+48|0;j=h+4|0;k=h+16|0;l=h+36|0;m=h;n=h+32|0;o=h+40|0;p=h+44|0;q=h+24|0;r=h+20|0;s=h+8|0;t=h+12|0;u=h+28|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;g[m>>2]=e;g[n>>2]=f;c[q>>2]=c[j>>2];g[p>>2]=-+g[n>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=((c[k>>2]|0)-(c[l>>2]|0)|0))break;g[r>>2]=+g[c[q>>2]>>2];g[s>>2]=+g[(c[q>>2]|0)+(c[l>>2]<<2)>>2];g[(c[q>>2]|0)+(c[l>>2]<<2)>>2]=+g[m>>2]*+g[s>>2]+ +g[n>>2]*+g[r>>2];f=+g[m>>2]*+g[r>>2]+ +g[p>>2]*+g[s>>2];d=c[q>>2]|0;c[q>>2]=d+4;g[d>>2]=f;c[o>>2]=(c[o>>2]|0)+1}c[q>>2]=(c[j>>2]|0)+((c[k>>2]|0)-(c[l>>2]<<1)-1<<2);c[o>>2]=(c[k>>2]|0)-(c[l>>2]<<1)-1;while(1){if((c[o>>2]|0)<0)break;g[t>>2]=+g[c[q>>2]>>2];g[u>>2]=+g[(c[q>>2]|0)+(c[l>>2]<<2)>>2];g[(c[q>>2]|0)+(c[l>>2]<<2)>>2]=+g[m>>2]*+g[u>>2]+ +g[n>>2]*+g[t>>2];f=+g[m>>2]*+g[t>>2]+ +g[p>>2]*+g[u>>2];k=c[q>>2]|0;c[q>>2]=k+-4;g[k>>2]=f;c[o>>2]=(c[o>>2]|0)+-1}i=h;return}function ye(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;i=d;return ((c[e>>2]|0)>>>0)/((c[f>>2]|0)>>>0)|0|0}function ze(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=b;c[h>>2]=d;if(((c[(c[g>>2]|0)+24>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)|0)>>>0>=(c[(c[g>>2]|0)+4>>2]|0)>>>0){c[f>>2]=-1;j=c[f>>2]|0;i=e;return j|0}else{d=c[h>>2]&255;h=(c[g>>2]|0)+24|0;b=c[h>>2]|0;c[h>>2]=b+1;a[(c[c[g>>2]>>2]|0)+b>>0]=d;c[f>>2]=0;j=c[f>>2]|0;i=e;return j|0}return 0}function Ae(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+4112|0;f=e+4108|0;g=e+4104|0;h=e+4100|0;j=e+4096|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;vb(c[f>>2]|0,k,2048,c[g>>2]|0,c[h>>2]|0);xb(k+1440|0,k,1328,620,j,c[h>>2]|0);c[j>>2]=720-(c[j>>2]|0);i=e;return c[j>>2]|0}function Be(){return 0}function Ce(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=i;i=i+48|0;j=h+4|0;k=h+16|0;l=h+36|0;m=h;n=h+32|0;o=h+40|0;p=h+44|0;q=h+24|0;r=h+20|0;s=h+8|0;t=h+12|0;u=h+28|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=((c[c[j>>2]>>2]|0)!=0^1)&1;c[r>>2]=c[k>>2];c[s>>2]=c[c[j>>2]>>2];c[t>>2]=c[(c[j>>2]|0)+24>>2];c[q>>2]=(c[l>>2]|0)!=0&1;c[p>>2]=0;do{c[u>>2]=0;if((c[(c[j>>2]|0)+28>>2]|0)>=8){if(c[s>>2]|0){c[u>>2]=+g[c[r>>2]>>2]<0.0&1;pb(c[t>>2]|0,c[u>>2]|0,1)}else c[u>>2]=lb(c[t>>2]|0,1)|0;f=(c[j>>2]|0)+28|0;c[f>>2]=(c[f>>2]|0)-8;c[m>>2]=(c[m>>2]|0)-8}if(c[o>>2]|0)g[c[r>>2]>>2]=(c[u>>2]|0)!=0?-1.0:1.0;c[r>>2]=c[l>>2];f=(c[p>>2]|0)+1|0;c[p>>2]=f}while((f|0)<(1+(c[q>>2]|0)|0));if(!(c[n>>2]|0)){i=h;return 1}g[c[n>>2]>>2]=+g[c[k>>2]>>2];i=h;return 1}function De(a,d,e,f,h,j,k,l,m,n,o){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;p=i;i=i+160|0;q=p+72|0;r=p+56|0;s=p+4|0;t=p+52|0;u=p+140|0;v=p+68|0;w=p+20|0;x=p+24|0;y=p+28|0;z=p+32|0;A=p+36|0;B=p+40|0;C=p+44|0;D=p+48|0;E=p+112|0;F=p+120|0;G=p+128|0;H=p+136|0;I=p+144|0;J=p+148|0;K=p+76|0;L=p+80|0;M=p+84|0;N=p+88|0;O=p+92|0;P=p+96|0;Q=p+100|0;R=p+104|0;S=p+12|0;T=p;U=p+8|0;V=p+108|0;W=p+116|0;X=p+60|0;Y=p+124|0;Z=p+16|0;$=p+64|0;aa=p+132|0;c[q>>2]=a;c[r>>2]=d;c[s>>2]=e;c[t>>2]=f;c[u>>2]=h;c[v>>2]=j;c[w>>2]=k;c[x>>2]=l;c[y>>2]=m;c[z>>2]=n;c[A>>2]=o;c[C>>2]=0;c[K>>2]=0;c[L>>2]=c[c[q>>2]>>2];c[M>>2]=c[(c[q>>2]|0)+4>>2];c[N>>2]=c[(c[q>>2]|0)+8>>2];c[O>>2]=c[(c[q>>2]|0)+12>>2];c[P>>2]=c[(c[q>>2]|0)+24>>2];c[Q>>2]=c[(c[q>>2]|0)+32>>2];c[H>>2]=(b[(c[(c[M>>2]|0)+56>>2]|0)+(c[N>>2]<<1)>>1]|0)+(c[y>>2]<<3);c[I>>2]=(c[H>>2]>>1)-(((c[z>>2]|0)!=0?(c[u>>2]|0)==2:0)?16:4);c[B>>2]=Ge(c[u>>2]|0,c[c[v>>2]>>2]|0,c[I>>2]|0,c[H>>2]|0,c[z>>2]|0)|0;if((c[z>>2]|0)!=0?(c[N>>2]|0)>=(c[O>>2]|0):0)c[B>>2]=1;if(c[L>>2]|0)c[C>>2]=Jb(c[s>>2]|0,c[t>>2]|0,c[z>>2]|0,c[u>>2]|0)|0;c[J>>2]=db(c[P>>2]|0)|0;do if((c[B>>2]|0)!=1){if(c[L>>2]|0)c[C>>2]=(_(c[C>>2]|0,c[B>>2]|0)|0)+8192>>14;do if((c[z>>2]|0)!=0&(c[u>>2]|0)>2){c[R>>2]=3;c[S>>2]=c[C>>2];c[T>>2]=(c[B>>2]|0)/2|0;O=_(c[R>>2]|0,(c[T>>2]|0)+1|0)|0;c[U>>2]=O+(c[T>>2]|0);O=c[P>>2]|0;if(c[L>>2]|0){if((c[S>>2]|0)<=(c[T>>2]|0))ba=_(c[R>>2]|0,c[S>>2]|0)|0;else ba=(c[S>>2]|0)-1-(c[T>>2]|0)+(_((c[T>>2]|0)+1|0,c[R>>2]|0)|0)|0;if((c[S>>2]|0)<=(c[T>>2]|0))ca=_(c[R>>2]|0,(c[S>>2]|0)+1|0)|0;else ca=(c[S>>2]|0)-(c[T>>2]|0)+(_((c[T>>2]|0)+1|0,c[R>>2]|0)|0)|0;mb(O,ba,ca,c[U>>2]|0);break}c[V>>2]=fb(O,c[U>>2]|0)|0;if((c[V>>2]|0)<(_((c[T>>2]|0)+1|0,c[R>>2]|0)|0))c[S>>2]=(c[V>>2]|0)/(c[R>>2]|0)|0;else c[S>>2]=(c[T>>2]|0)+1+((c[V>>2]|0)-(_((c[T>>2]|0)+1|0,c[R>>2]|0)|0));if((c[S>>2]|0)<=(c[T>>2]|0))da=_(c[R>>2]|0,c[S>>2]|0)|0;else da=(c[S>>2]|0)-1-(c[T>>2]|0)+(_((c[T>>2]|0)+1|0,c[R>>2]|0)|0)|0;if((c[S>>2]|0)<=(c[T>>2]|0))ea=_(c[R>>2]|0,(c[S>>2]|0)+1|0)|0;else ea=(c[S>>2]|0)-(c[T>>2]|0)+(_((c[T>>2]|0)+1|0,c[R>>2]|0)|0)|0;hb(c[P>>2]|0,da,ea,c[U>>2]|0);c[C>>2]=c[S>>2]}else{if((c[x>>2]|0)>1|(c[z>>2]|0)!=0){O=c[P>>2]|0;if(c[L>>2]|0){ob(O,c[C>>2]|0,(c[B>>2]|0)+1|0);break}else{c[C>>2]=kb(O,(c[B>>2]|0)+1|0)|0;break}}c[W>>2]=1;c[X>>2]=_((c[B>>2]>>1)+1|0,(c[B>>2]>>1)+1|0)|0;if(!(c[L>>2]|0)){c[Z>>2]=0;c[$>>2]=fb(c[P>>2]|0,c[X>>2]|0)|0;if((c[$>>2]|0)<((_(c[B>>2]>>1,(c[B>>2]>>1)+1|0)|0)>>1|0)){c[C>>2]=((sb((c[$>>2]<<3)+1|0)|0)-1|0)>>>1;c[W>>2]=(c[C>>2]|0)+1;c[Z>>2]=(_(c[C>>2]|0,(c[C>>2]|0)+1|0)|0)>>1}else{O=(c[B>>2]|0)+1<<1;c[C>>2]=(O-(sb(((c[X>>2]|0)-(c[$>>2]|0)-1<<3)+1|0)|0)|0)>>>1;c[W>>2]=(c[B>>2]|0)+1-(c[C>>2]|0);c[Z>>2]=(c[X>>2]|0)-((_((c[B>>2]|0)+1-(c[C>>2]|0)|0,(c[B>>2]|0)+2-(c[C>>2]|0)|0)|0)>>1)}hb(c[P>>2]|0,c[Z>>2]|0,(c[Z>>2]|0)+(c[W>>2]|0)|0,c[X>>2]|0);break}if((c[C>>2]|0)<=(c[B>>2]>>1|0))fa=(c[C>>2]|0)+1|0;else fa=(c[B>>2]|0)+1-(c[C>>2]|0)|0;c[W>>2]=fa;if((c[C>>2]|0)<=(c[B>>2]>>1|0))ga=(_(c[C>>2]|0,(c[C>>2]|0)+1|0)|0)>>1;else ga=(c[X>>2]|0)-((_((c[B>>2]|0)+1-(c[C>>2]|0)|0,(c[B>>2]|0)+2-(c[C>>2]|0)|0)|0)>>1)|0;c[Y>>2]=ga;mb(c[P>>2]|0,c[Y>>2]|0,(c[Y>>2]|0)+(c[W>>2]|0)|0,c[X>>2]|0)}while(0);c[C>>2]=Rc(c[C>>2]<<14,c[B>>2]|0)|0;if((c[L>>2]|0)!=0&(c[z>>2]|0)!=0)if(!(c[C>>2]|0)){He(c[M>>2]|0,c[s>>2]|0,c[t>>2]|0,c[Q>>2]|0,c[N>>2]|0,c[u>>2]|0);break}else{Ie(c[s>>2]|0,c[t>>2]|0,c[u>>2]|0);break}}else if(c[z>>2]|0){if(c[L>>2]|0){c[K>>2]=(c[C>>2]|0)>8192&1;a:do if(c[K>>2]|0){c[aa>>2]=0;while(1){if((c[aa>>2]|0)>=(c[u>>2]|0))break a;g[(c[t>>2]|0)+(c[aa>>2]<<2)>>2]=-+g[(c[t>>2]|0)+(c[aa>>2]<<2)>>2];c[aa>>2]=(c[aa>>2]|0)+1}}while(0);He(c[M>>2]|0,c[s>>2]|0,c[t>>2]|0,c[Q>>2]|0,c[N>>2]|0,c[u>>2]|0)}do if((c[c[v>>2]>>2]|0)>16?(c[(c[q>>2]|0)+28>>2]|0)>16:0){O=c[P>>2]|0;if(c[L>>2]|0){nb(O,c[K>>2]|0,2);break}else{c[K>>2]=ib(O,2)|0;break}}else ha=60;while(0);if((ha|0)==60)c[K>>2]=0;c[C>>2]=0}while(0);ha=db(c[P>>2]|0)|0;c[G>>2]=ha-(c[J>>2]|0);J=c[v>>2]|0;c[J>>2]=(c[J>>2]|0)-(c[G>>2]|0);if(!(c[C>>2]|0)){c[E>>2]=32767;c[F>>2]=0;J=c[A>>2]|0;c[J>>2]=c[J>>2]&(1<<c[w>>2])-1;c[D>>2]=-16384;ia=c[K>>2]|0;ja=c[r>>2]|0;c[ja>>2]=ia;ka=c[E>>2]|0;la=c[r>>2]|0;ma=la+4|0;c[ma>>2]=ka;na=c[F>>2]|0;oa=c[r>>2]|0;pa=oa+8|0;c[pa>>2]=na;qa=c[D>>2]|0;ra=c[r>>2]|0;sa=ra+12|0;c[sa>>2]=qa;ta=c[C>>2]|0;ua=c[r>>2]|0;va=ua+16|0;c[va>>2]=ta;wa=c[G>>2]|0;xa=c[r>>2]|0;ya=xa+20|0;c[ya>>2]=wa;i=p;return}if((c[C>>2]|0)==16384){c[E>>2]=0;c[F>>2]=32767;J=c[A>>2]|0;c[J>>2]=c[J>>2]&(1<<c[w>>2])-1<<c[w>>2];c[D>>2]=16384;ia=c[K>>2]|0;ja=c[r>>2]|0;c[ja>>2]=ia;ka=c[E>>2]|0;la=c[r>>2]|0;ma=la+4|0;c[ma>>2]=ka;na=c[F>>2]|0;oa=c[r>>2]|0;pa=oa+8|0;c[pa>>2]=na;qa=c[D>>2]|0;ra=c[r>>2]|0;sa=ra+12|0;c[sa>>2]=qa;ta=c[C>>2]|0;ua=c[r>>2]|0;va=ua+16|0;c[va>>2]=ta;wa=c[G>>2]|0;xa=c[r>>2]|0;ya=xa+20|0;c[ya>>2]=wa;i=p;return}else{c[E>>2]=(Je(c[C>>2]&65535)|0)<<16>>16;c[F>>2]=(Je(16384-(c[C>>2]|0)&65535)|0)<<16>>16;w=((c[u>>2]|0)-1<<7&65535)<<16>>16;c[D>>2]=16384+(_(w,((Ke(c[F>>2]|0,c[E>>2]|0)|0)&65535)<<16>>16)|0)>>15;ia=c[K>>2]|0;ja=c[r>>2]|0;c[ja>>2]=ia;ka=c[E>>2]|0;la=c[r>>2]|0;ma=la+4|0;c[ma>>2]=ka;na=c[F>>2]|0;oa=c[r>>2]|0;pa=oa+8|0;c[pa>>2]=na;qa=c[D>>2]|0;ra=c[r>>2]|0;sa=ra+12|0;c[sa>>2]=qa;ta=c[C>>2]|0;ua=c[r>>2]|0;va=ua+16|0;c[va>>2]=ta;wa=c[G>>2]|0;xa=c[r>>2]|0;ya=xa+20|0;c[ya>>2]=wa;i=p;return}}function Ee(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=i;i=i+64|0;h=f+52|0;j=f+44|0;k=f+24|0;l=f+20|0;m=f+12|0;n=f+40|0;o=f+48|0;p=f+56|0;q=f+28|0;r=f+8|0;s=f+4|0;t=f+32|0;u=f;v=f+16|0;w=f+36|0;c[h>>2]=a;c[j>>2]=b;g[k>>2]=d;c[l>>2]=e;g[n>>2]=0.0;g[o>>2]=0.0;Fe(c[j>>2]|0,c[h>>2]|0,c[j>>2]|0,c[l>>2]|0,n,o);g[n>>2]=+g[k>>2]*+g[n>>2];g[r>>2]=+g[k>>2];g[p>>2]=+g[r>>2]*+g[r>>2]+ +g[o>>2]-+g[n>>2]*2.0;g[q>>2]=+g[r>>2]*+g[r>>2]+ +g[o>>2]+ +g[n>>2]*2.0;if(+g[q>>2]<6.000000284984708e-04|+g[p>>2]<6.000000284984708e-04){df(c[j>>2]|0,c[h>>2]|0,(c[l>>2]<<2)+0|0)|0;i=f;return}g[s>>2]=+g[p>>2];g[t>>2]=1.0/+O(+(+g[s>>2]));g[s>>2]=+g[q>>2];g[u>>2]=1.0/+O(+(+g[s>>2]));c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[l>>2]|0))break;g[w>>2]=+g[k>>2]*+g[(c[h>>2]|0)+(c[m>>2]<<2)>>2];g[v>>2]=+g[(c[j>>2]|0)+(c[m>>2]<<2)>>2];g[(c[h>>2]|0)+(c[m>>2]<<2)>>2]=+g[t>>2]*(+g[w>>2]-+g[v>>2]);g[(c[j>>2]|0)+(c[m>>2]<<2)>>2]=+g[u>>2]*(+g[w>>2]+ +g[v>>2]);c[m>>2]=(c[m>>2]|0)+1}i=f;return}function Fe(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;j=i;i=i+48|0;k=j+28|0;l=j+16|0;m=j+4|0;n=j+8|0;o=j+32|0;p=j;q=j+12|0;r=j+24|0;s=j+20|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=h;g[r>>2]=0.0;g[s>>2]=0.0;c[q>>2]=0;while(1){t=+g[r>>2];if((c[q>>2]|0)>=(c[n>>2]|0))break;g[r>>2]=t+ +g[(c[k>>2]|0)+(c[q>>2]<<2)>>2]*+g[(c[l>>2]|0)+(c[q>>2]<<2)>>2];g[s>>2]=+g[s>>2]+ +g[(c[k>>2]|0)+(c[q>>2]<<2)>>2]*+g[(c[m>>2]|0)+(c[q>>2]<<2)>>2];c[q>>2]=(c[q>>2]|0)+1}g[c[o>>2]>>2]=t;g[c[p>>2]>>2]=+g[s>>2];i=j;return}function Ge(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;i=i+32|0;j=h+4|0;k=h+16|0;l=h+8|0;m=h+20|0;n=h+28|0;o=h;p=h+12|0;q=h+24|0;c[j>>2]=a;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[q>>2]=(c[j>>2]<<1)-1;if((c[n>>2]|0)!=0&(c[j>>2]|0)==2)c[q>>2]=(c[q>>2]|0)+-1;j=(c[k>>2]|0)+(_(c[q>>2]|0,c[l>>2]|0)|0)|0;c[p>>2]=Sc(j,c[q>>2]|0)|0;if(((c[k>>2]|0)-(c[m>>2]|0)-32|0)<(c[p>>2]|0))r=(c[k>>2]|0)-(c[m>>2]|0)-32|0;else r=c[p>>2]|0;c[p>>2]=r;c[p>>2]=64<(c[p>>2]|0)?64:c[p>>2]|0;if((c[p>>2]|0)<4){c[o>>2]=1;s=c[o>>2]|0;i=h;return s|0}else{c[o>>2]=b[25080+((c[p>>2]&7)<<1)>>1]>>14-(c[p>>2]>>3);c[o>>2]=(c[o>>2]|0)+1>>1<<1;s=c[o>>2]|0;i=h;return s|0}return 0}function He(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;j=i;i=i+64|0;k=j+52|0;l=j+44|0;m=j+24|0;n=j+20|0;o=j+12|0;p=j+40|0;q=j+48|0;r=j+56|0;s=j+28|0;t=j+8|0;u=j+4|0;v=j+32|0;w=j;x=j+16|0;y=j+36|0;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=h;c[q>>2]=c[o>>2];g[u>>2]=+g[(c[n>>2]|0)+(c[q>>2]<<2)>>2];g[v>>2]=+g[(c[n>>2]|0)+((c[q>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0)<<2)>>2];g[w>>2]=+O(+(+g[u>>2]*+g[u>>2]+1.0000000036274937e-15+ +g[v>>2]*+g[v>>2]))+1.0000000036274937e-15;g[s>>2]=+g[u>>2]/+g[w>>2];g[t>>2]=+g[v>>2]/+g[w>>2];c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[p>>2]|0))break;g[y>>2]=+g[(c[l>>2]|0)+(c[r>>2]<<2)>>2];g[x>>2]=+g[(c[m>>2]|0)+(c[r>>2]<<2)>>2];g[(c[l>>2]|0)+(c[r>>2]<<2)>>2]=+g[s>>2]*+g[y>>2]+ +g[t>>2]*+g[x>>2];c[r>>2]=(c[r>>2]|0)+1}i=j;return}function Ie(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;f=e+20|0;h=e+16|0;j=e+12|0;k=e+8|0;l=e+4|0;m=e;c[f>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[j>>2]|0))break;g[m>>2]=+g[(c[f>>2]|0)+(c[k>>2]<<2)>>2]*.7071067690849304;g[l>>2]=+g[(c[h>>2]|0)+(c[k>>2]<<2)>>2]*.7071067690849304;g[(c[f>>2]|0)+(c[k>>2]<<2)>>2]=+g[m>>2]+ +g[l>>2];g[(c[h>>2]|0)+(c[k>>2]<<2)>>2]=+g[l>>2]-+g[m>>2];c[k>>2]=(c[k>>2]|0)+1}i=e;return}function Je(a){a=a|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+6|0;f=d;g=d+4|0;b[e>>1]=a;c[f>>2]=4096+(_(b[e>>1]|0,b[e>>1]|0)|0)>>13;b[g>>1]=c[f>>2];b[g>>1]=32767-(b[g>>1]|0)+(16384+(_(b[g>>1]|0,((16384+(_(b[g>>1]|0,(8277+(16384+(_(-626,b[g>>1]|0)|0)>>15)&65535)<<16>>16)|0)>>15)+-7651&65535)<<16>>16)|0)>>15);i=d;return 1+(b[g>>1]|0)&65535|0}function Ke(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=32-(aa(c[f>>2]|0)|0);c[h>>2]=32-(aa(c[e>>2]|0)|0);c[f>>2]=c[f>>2]<<15-(c[g>>2]|0);c[e>>2]=c[e>>2]<<15-(c[h>>2]|0);b=((c[h>>2]|0)-(c[g>>2]|0)<<11)+(16384+(_((c[e>>2]&65535)<<16>>16,((16384+(_((c[e>>2]&65535)<<16>>16,-2597)|0)>>15)+7932&65535)<<16>>16)|0)>>15)|0;e=b-(16384+(_((c[f>>2]&65535)<<16>>16,((16384+(_((c[f>>2]&65535)<<16>>16,-2597)|0)>>15)+7932&65535)<<16>>16)|0)>>15)|0;i=d;return e|0}function Le(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;f=i;i=i+48|0;h=f+28|0;j=f+16|0;k=f+4|0;l=f+8|0;m=f+32|0;n=f;o=f+12|0;p=f+24|0;q=f+20|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[o>>2]=_(c[j>>2]|0,c[k>>2]|0)|0;e=c[o>>2]|0;c[p>>2]=ua()|0;d=i;i=i+((1*(e<<2)|0)+15&-16)|0;if(c[l>>2]|0){c[q>>2]=25128+(c[k>>2]<<2)+-8;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[j>>2]|0))break;l=_(c[n>>2]|0,c[k>>2]|0)|0;e=_(c[(c[q>>2]|0)+(c[m>>2]<<2)>>2]|0,c[j>>2]|0)|0;g[d+(e+(c[n>>2]|0)<<2)>>2]=+g[(c[h>>2]|0)+(l+(c[m>>2]|0)<<2)>>2];c[n>>2]=(c[n>>2]|0)+1}c[m>>2]=(c[m>>2]|0)+1}r=c[h>>2]|0;s=c[o>>2]|0;t=s<<2;u=c[h>>2]|0;v=u;w=d;x=v-w|0;y=(x|0)/4|0;z=0;A=t+z|0;df(r|0,d|0,A|0)|0;B=c[p>>2]|0;ka(B|0);i=f;return}else{c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[j>>2]|0))break;q=_(c[n>>2]|0,c[k>>2]|0)|0;l=_(c[m>>2]|0,c[j>>2]|0)|0;g[d+(l+(c[n>>2]|0)<<2)>>2]=+g[(c[h>>2]|0)+(q+(c[m>>2]|0)<<2)>>2];c[n>>2]=(c[n>>2]|0)+1}c[m>>2]=(c[m>>2]|0)+1}r=c[h>>2]|0;s=c[o>>2]|0;t=s<<2;u=c[h>>2]|0;v=u;w=d;x=v-w|0;y=(x|0)/4|0;z=0;A=t+z|0;df(r|0,d|0,A|0)|0;B=c[p>>2]|0;ka(B|0);i=f;return}}function Me(a,e,f,h,j,k,l,m,n){a=a|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=+m;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0;o=i;i=i+176|0;p=o+160|0;q=o+128|0;r=o+4|0;s=o+56|0;t=o+68|0;u=o+152|0;v=o+20|0;w=o+24|0;x=o+28|0;y=o+32|0;z=o+36|0;A=o+40|0;B=o+44|0;C=o+48|0;D=o+132|0;E=o+140|0;F=o+148|0;G=o+156|0;H=o+164|0;I=o+72|0;J=o+76|0;K=o+80|0;L=o+84|0;M=o+88|0;N=o+92|0;O=o+96|0;P=o+100|0;Q=o+12|0;R=o;S=o+8|0;T=o+104|0;U=o+52|0;V=o+136|0;W=o+60|0;X=o+144|0;Y=o+16|0;Z=o+64|0;c[p>>2]=a;c[q>>2]=e;c[r>>2]=f;c[s>>2]=h;c[t>>2]=j;c[u>>2]=k;c[v>>2]=l;g[w>>2]=m;c[x>>2]=n;c[B>>2]=0;c[C>>2]=0;c[D>>2]=c[t>>2];g[E>>2]=0.0;g[F>>2]=0.0;c[G>>2]=0;c[H>>2]=((c[c[p>>2]>>2]|0)!=0^1)&1;c[I>>2]=0;c[J>>2]=c[c[p>>2]>>2];c[K>>2]=c[(c[p>>2]|0)+4>>2];c[L>>2]=c[(c[p>>2]|0)+8>>2];c[M>>2]=c[(c[p>>2]|0)+16>>2];c[N>>2]=c[(c[p>>2]|0)+24>>2];n=_((c[v>>2]|0)+1|0,c[(c[K>>2]|0)+8>>2]|0)|0;c[y>>2]=(c[(c[K>>2]|0)+92+8>>2]|0)+(b[(c[(c[K>>2]|0)+92+4>>2]|0)+(n+(c[L>>2]|0)<<1)>>1]|0);if((c[v>>2]|0)!=-1?((c[r>>2]|0)>2?(c[s>>2]|0)>((d[(c[y>>2]|0)+(d[c[y>>2]>>0]|0)>>0]|0)+12|0):0):0){c[U>>2]=0;c[r>>2]=c[r>>2]>>1;c[I>>2]=(c[q>>2]|0)+(c[r>>2]<<2);c[v>>2]=(c[v>>2]|0)-1;if((c[t>>2]|0)==1)c[x>>2]=c[x>>2]&1|c[x>>2]<<1;c[t>>2]=(c[t>>2]|0)+1>>1;De(c[p>>2]|0,T,c[q>>2]|0,c[I>>2]|0,c[r>>2]|0,s,c[t>>2]|0,c[D>>2]|0,c[v>>2]|0,0,x);c[B>>2]=c[T+4>>2];c[C>>2]=c[T+8>>2];c[Q>>2]=c[T+12>>2];c[R>>2]=c[T+16>>2];c[S>>2]=c[T+20>>2];g[E>>2]=+(c[B>>2]|0)*.000030517578125;g[F>>2]=+(c[C>>2]|0)*.000030517578125;do if((c[D>>2]|0)>1?(c[R>>2]&16383|0)!=0:0){C=c[Q>>2]|0;if((c[R>>2]|0)>8192){c[Q>>2]=(c[Q>>2]|0)-(C>>4-(c[v>>2]|0));break}if(0<(C+(c[r>>2]<<3>>5-(c[v>>2]|0))|0))$=0;else $=(c[Q>>2]|0)+(c[r>>2]<<3>>5-(c[v>>2]|0))|0;c[Q>>2]=$}while(0);$=c[s>>2]|0;if((c[s>>2]|0)<(((c[s>>2]|0)-(c[Q>>2]|0)|0)/2|0|0))aa=$;else aa=($-(c[Q>>2]|0)|0)/2|0;if(0<=(aa|0)){aa=c[s>>2]|0;if((c[s>>2]|0)<(((c[s>>2]|0)-(c[Q>>2]|0)|0)/2|0|0))ba=aa;else ba=(aa-(c[Q>>2]|0)|0)/2|0}else ba=0;c[O>>2]=ba;c[P>>2]=(c[s>>2]|0)-(c[O>>2]|0);ba=(c[p>>2]|0)+28|0;c[ba>>2]=(c[ba>>2]|0)-(c[S>>2]|0);if(c[u>>2]|0)c[U>>2]=(c[u>>2]|0)+(c[r>>2]<<2);c[V>>2]=c[(c[p>>2]|0)+28>>2];S=c[p>>2]|0;if((c[O>>2]|0)>=(c[P>>2]|0)){c[G>>2]=Me(S,c[q>>2]|0,c[r>>2]|0,c[O>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,+g[w>>2]*+g[E>>2],c[x>>2]|0)|0;c[V>>2]=(c[O>>2]|0)-((c[V>>2]|0)-(c[(c[p>>2]|0)+28>>2]|0));if((c[V>>2]|0)>24&(c[R>>2]|0)!=0)c[P>>2]=(c[P>>2]|0)+((c[V>>2]|0)-24);ba=Me(c[p>>2]|0,c[I>>2]|0,c[r>>2]|0,c[P>>2]|0,c[t>>2]|0,c[U>>2]|0,c[v>>2]|0,+g[w>>2]*+g[F>>2],c[x>>2]>>c[t>>2])|0;c[G>>2]=c[G>>2]|ba<<(c[D>>2]>>1);ca=c[G>>2]|0;i=o;return ca|0}else{ba=Me(S,c[I>>2]|0,c[r>>2]|0,c[P>>2]|0,c[t>>2]|0,c[U>>2]|0,c[v>>2]|0,+g[w>>2]*+g[F>>2],c[x>>2]>>c[t>>2])|0;c[G>>2]=ba<<(c[D>>2]>>1);c[V>>2]=(c[P>>2]|0)-((c[V>>2]|0)-(c[(c[p>>2]|0)+28>>2]|0));if((c[V>>2]|0)>24&(c[R>>2]|0)!=16384)c[O>>2]=(c[O>>2]|0)+((c[V>>2]|0)-24);V=Me(c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[O>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,+g[w>>2]*+g[E>>2],c[x>>2]|0)|0;c[G>>2]=c[G>>2]|V;ca=c[G>>2]|0;i=o;return ca|0}}c[z>>2]=Oe(c[K>>2]|0,c[L>>2]|0,c[v>>2]|0,c[s>>2]|0)|0;c[A>>2]=Pe(c[K>>2]|0,c[L>>2]|0,c[v>>2]|0,c[z>>2]|0)|0;s=(c[p>>2]|0)+28|0;c[s>>2]=(c[s>>2]|0)-(c[A>>2]|0);while(1){if(!((c[(c[p>>2]|0)+28>>2]|0)<0?(c[z>>2]|0)>0:0))break;s=(c[p>>2]|0)+28|0;c[s>>2]=(c[s>>2]|0)+(c[A>>2]|0);c[z>>2]=(c[z>>2]|0)+-1;c[A>>2]=Pe(c[K>>2]|0,c[L>>2]|0,c[v>>2]|0,c[z>>2]|0)|0;s=(c[p>>2]|0)+28|0;c[s>>2]=(c[s>>2]|0)-(c[A>>2]|0)}if(c[z>>2]|0){c[W>>2]=Qe(c[z>>2]|0)|0;z=c[q>>2]|0;A=c[r>>2]|0;v=c[W>>2]|0;W=c[M>>2]|0;M=c[t>>2]|0;L=c[N>>2]|0;if(c[J>>2]|0){c[G>>2]=Gb(z,A,v,W,M,L)|0;ca=c[G>>2]|0;i=o;return ca|0}else{c[G>>2]=Hb(z,A,v,W,M,L,+g[w>>2])|0;ca=c[G>>2]|0;i=o;return ca|0}}if(!(c[H>>2]|0)){ca=c[G>>2]|0;i=o;return ca|0}c[Y>>2]=(1<<c[t>>2])-1;c[x>>2]=c[x>>2]&c[Y>>2];if(!(c[x>>2]|0)){bf(c[q>>2]|0,0,c[r>>2]<<2|0)|0;ca=c[G>>2]|0;i=o;return ca|0}t=(c[u>>2]|0)==0;c[X>>2]=0;if(t){while(1){if((c[X>>2]|0)>=(c[r>>2]|0))break;t=Ra(c[(c[p>>2]|0)+36>>2]|0)|0;c[(c[p>>2]|0)+36>>2]=t;g[(c[q>>2]|0)+(c[X>>2]<<2)>>2]=+(c[(c[p>>2]|0)+36>>2]>>20|0);c[X>>2]=(c[X>>2]|0)+1}c[G>>2]=c[Y>>2]}else{while(1){if((c[X>>2]|0)>=(c[r>>2]|0))break;Y=Ra(c[(c[p>>2]|0)+36>>2]|0)|0;c[(c[p>>2]|0)+36>>2]=Y;g[Z>>2]=.00390625;m=+g[Z>>2];g[Z>>2]=(c[(c[p>>2]|0)+36>>2]&32768|0)!=0?m:-m;g[(c[q>>2]|0)+(c[X>>2]<<2)>>2]=+g[(c[u>>2]|0)+(c[X>>2]<<2)>>2]+ +g[Z>>2];c[X>>2]=(c[X>>2]|0)+1}c[G>>2]=c[x>>2]}Ib(c[q>>2]|0,c[r>>2]|0,+g[w>>2]);ca=c[G>>2]|0;i=o;return ca|0}function Ne(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=i;i=i+48|0;h=f+28|0;j=f+16|0;k=f+4|0;l=f+8|0;m=f+32|0;n=f;o=f+12|0;p=f+24|0;q=f+20|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[o>>2]=_(c[j>>2]|0,c[k>>2]|0)|0;e=c[o>>2]|0;c[p>>2]=ua()|0;d=i;i=i+((1*(e<<2)|0)+15&-16)|0;if(c[l>>2]|0){c[q>>2]=25128+(c[k>>2]<<2)+-8;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;c[n>>2]=0;while(1){r=c[m>>2]|0;if((c[n>>2]|0)>=(c[j>>2]|0))break;l=_(c[(c[q>>2]|0)+(r<<2)>>2]|0,c[j>>2]|0)|0;e=_(c[n>>2]|0,c[k>>2]|0)|0;g[d+(e+(c[m>>2]|0)<<2)>>2]=+g[(c[h>>2]|0)+(l+(c[n>>2]|0)<<2)>>2];c[n>>2]=(c[n>>2]|0)+1}c[m>>2]=r+1}s=c[h>>2]|0;t=c[o>>2]|0;u=t<<2;v=c[h>>2]|0;w=v;x=d;y=w-x|0;z=(y|0)/4|0;A=0;B=u+A|0;df(s|0,d|0,B|0)|0;C=c[p>>2]|0;ka(C|0);i=f;return}else{c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;c[n>>2]=0;while(1){D=c[m>>2]|0;if((c[n>>2]|0)>=(c[j>>2]|0))break;r=_(D,c[j>>2]|0)|0;q=_(c[n>>2]|0,c[k>>2]|0)|0;g[d+(q+(c[m>>2]|0)<<2)>>2]=+g[(c[h>>2]|0)+(r+(c[n>>2]|0)<<2)>>2];c[n>>2]=(c[n>>2]|0)+1}c[m>>2]=D+1}s=c[h>>2]|0;t=c[o>>2]|0;u=t<<2;v=c[h>>2]|0;w=v;x=d;y=w-x|0;z=(y|0)/4|0;A=0;B=u+A|0;df(s|0,d|0,B|0)|0;C=c[p>>2]|0;ka(C|0);i=f;return}}function Oe(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=i;i=i+48|0;j=h;k=h+16|0;l=h+28|0;m=h+4|0;n=h+32|0;o=h+36|0;p=h+12|0;q=h+24|0;r=h+20|0;s=h+8|0;c[k>>2]=a;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[m>>2]=(c[m>>2]|0)+1;g=_(c[m>>2]|0,c[(c[k>>2]|0)+8>>2]|0)|0;c[r>>2]=(c[(c[k>>2]|0)+92+8>>2]|0)+(b[(c[(c[k>>2]|0)+92+4>>2]|0)+(g+(c[l>>2]|0)<<1)>>1]|0);c[p>>2]=0;c[q>>2]=d[c[r>>2]>>0];c[n>>2]=(c[n>>2]|0)+-1;c[o>>2]=0;while(1){if((c[o>>2]|0)>=6)break;c[s>>2]=(c[p>>2]|0)+(c[q>>2]|0)+1>>1;l=c[s>>2]|0;if((d[(c[r>>2]|0)+(c[s>>2]|0)>>0]|0)>=(c[n>>2]|0))c[q>>2]=l;else c[p>>2]=l;c[o>>2]=(c[o>>2]|0)+1}if(!(c[p>>2]|0))t=-1;else t=d[(c[r>>2]|0)+(c[p>>2]|0)>>0]|0;if(((c[n>>2]|0)-t|0)<=((d[(c[r>>2]|0)+(c[q>>2]|0)>>0]|0)-(c[n>>2]|0)|0)){c[j>>2]=c[p>>2];u=c[j>>2]|0;i=h;return u|0}else{c[j>>2]=c[q>>2];u=c[j>>2]|0;i=h;return u|0}return 0}function Pe(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;j=h+16|0;k=h+12|0;l=h+8|0;m=h+4|0;n=h;c[j>>2]=a;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[l>>2]=(c[l>>2]|0)+1;g=_(c[l>>2]|0,c[(c[j>>2]|0)+8>>2]|0)|0;c[n>>2]=(c[(c[j>>2]|0)+92+8>>2]|0)+(b[(c[(c[j>>2]|0)+92+4>>2]|0)+(g+(c[k>>2]|0)<<1)>>1]|0);if(!(c[m>>2]|0)){o=0;i=h;return o|0}o=(d[(c[n>>2]|0)+(c[m>>2]|0)>>0]|0)+1|0;i=h;return o|0}function Qe(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=c[d>>2]|0;if((c[d>>2]|0)<8){e=a;i=b;return e|0}e=8+(a&7)<<(c[d>>2]>>3)-1;i=b;return e|0}function Re(){return}function Se(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0.0;d=i;i=i+48|0;e=d+32|0;f=d;Ve(f,a,b);b=c[6312]|0;if((b|0)==1){c[6312]=2;h=1;i=d;return h|0}else if(!b){b=Xe(f,25264,25272,25280,25288,25296)|0;c[6314]=b;if(!b){h=0;i=d;return h|0}c[6312]=1;j=+g[6322];if(j!=0.0){c[e>>2]=~~j;Qc(b,4034,e)|0}c[6312]=1;h=1;i=d;return h|0}else{pa(c[6318]|0,48e3);h=1;i=d;return h|0}return 0}function Te(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;i=i+16|0;e=d;f=Ze((c[6318]|0)*23040|0)|0;g=Pc(c[6314]|0,a,b,f,5760,0)|0;if((g|0)<0){c[e>>2]=g;va(25304,e|0)|0;h=0;_e(f);i=d;return h|0}e=c[6320]|0;if((g|0)>(e|0)){b=g-e|0;a=c[6318]|0;j=Ze(_(b<<2,a)|0)|0;k=Ze(a<<2)|0;if((a|0)>0){l=0;do{m=_(l,b)|0;c[k+(l<<2)>>2]=j+(m<<2);n=e;do{c[j+(m+(n-e)<<2)>>2]=c[f+((_(a,n)|0)+l<<2)>>2];n=n+1|0}while((n|0)!=(g|0));l=l+1|0}while((l|0)<(a|0))}wa(k|0,a|0,b|0);_e(k);_e(j);o=c[6320]|0;p=e}else{o=e;p=g}c[6320]=o-p;h=1;_e(f);i=d;return h|0}function Ue(){return}function Ve(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;d=a+8|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;return}function We(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;g=i;i=i+16|0;h=g;a[h+8>>0]=0;if((e|0)<19){i=g;return 0}j=b;k=j;l=j+4|0;j=d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24;l=h;c[l>>2]=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;c[l+4>>2]=j;if(Ye(h,25336,8)|0){i=g;return 0}h=e+-1|0;if((e|0)<9){i=g;return 0}j=d[b+8>>0]|0;c[f>>2]=j;if((e|0)<10|(j&240|0)!=0){i=g;return 0}l=a[b+9>>0]|0;k=f+4|0;c[k>>2]=l&255;if(!(l<<24>>24)){i=g;return 0}m=e+-2|0;if((m|0)<=9){i=g;return 0}c[f+8>>2]=(d[b+11>>0]|0)<<8|(d[b+10>>0]|0);n=f+12|0;if((e+-4|0)<12){i=g;return 0}o=d[b+12>>0]|0;c[n>>2]=o;p=(d[b+13>>0]|0)<<8|o;c[n>>2]=p;o=(d[b+14>>0]|0)<<16|p;c[n>>2]=o;c[n>>2]=(d[b+15>>0]|0)<<24|o;if((m|0)<16){i=g;return 0}c[f+16>>2]=((d[b+17>>0]|0)<<8|(d[b+16>>0]|0))<<16>>16;if((e|0)<19){i=g;return 0}m=a[b+18>>0]|0;c[f+20>>2]=m&255;if(!(m<<24>>24)){if((l&255)>2){i=g;return 0}c[f+24>>2]=1;c[f+28>>2]=(l&255)>1&1;a[f+32>>0]=0;a[f+33>>0]=1;q=j;r=19;s=q>>>0>1;t=(r|0)==(e|0);u=t|s;v=u&1;i=g;return v|0}if((h|0)<=18){i=g;return 0}j=a[b+19>>0]|0;if(!(j<<24>>24)){i=g;return 0}l=j&255;m=f+24|0;c[m>>2]=l;if((h|0)<=19){i=g;return 0}o=a[b+20>>0]|0;n=o&255;if((o&255)>(j&255)|(n+l|0)>255){i=g;return 0}l=f+28|0;c[l>>2]=n;n=21;j=0;while(1){if((n|0)>(h|0)){w=23;break}o=a[b+n>>0]|0;a[f+32+j>>0]=o;p=n+1|0;j=j+1|0;if(!(o<<24>>24==-1?1:(o&255|0)<=((c[l>>2]|0)+(c[m>>2]|0)|0))){w=23;break}if((j|0)>=(c[k>>2]|0)){x=p;w=21;break}else n=p}if((w|0)==21){q=c[f>>2]|0;r=x;s=q>>>0>1;t=(r|0)==(e|0);u=t|s;v=u&1;i=g;return v|0}else if((w|0)==23){i=g;return 0}return 0}function Xe(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+304|0;k=j;l=j+296|0;m=j+8|0;if(!(We(c[a>>2]|0,c[a+4>>2]|0,m)|0)){n=0;i=j;return n|0}c[b>>2]=c[m+20>>2];b=c[m+4>>2]|0;c[d>>2]=b;c[e>>2]=c[m+8>>2];e=m+24|0;d=Oc(48e3,b,c[e>>2]|0,c[m+28>>2]|0,m+32|0,l)|0;if((d|0)==0|(c[l>>2]|0)!=0){n=0;i=j;return n|0}c[h>>2]=c[e>>2];e=m+16|0;m=c[e>>2]|0;do if(m){c[k>>2]=m;h=Qc(d,4034,k)|0;c[l>>2]=h;if(!h)break;else if((h|0)==-5){g[f>>2]=+P(10.0,+(+(c[e>>2]|0)/5120.0));break}else{n=0;i=j;return n|0}}while(0);n=d;i=j;return n|0}function Ye(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!d){e=0;return e|0}else{f=d;g=b;h=c}while(1){c=a[g>>0]|0;b=a[h>>0]|0;if(c<<24>>24!=b<<24>>24){i=c;j=b;break}f=f+-1|0;if(!f){e=0;k=5;break}else{g=g+1|0;h=h+1|0}}if((k|0)==5)return e|0;e=(i&255)-(j&255)|0;return e|0}function Ze(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,pa=0,qa=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,Aa=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0;do if(a>>>0<245){b=a>>>0<11?16:a+11&-8;d=b>>>3;e=c[6338]|0;f=e>>>d;if(f&3){g=(f&1^1)+d|0;h=g<<1;i=25392+(h<<2)|0;j=25392+(h+2<<2)|0;h=c[j>>2]|0;k=h+8|0;l=c[k>>2]|0;do if((i|0)!=(l|0)){if(l>>>0<(c[6342]|0)>>>0)za();m=l+12|0;if((c[m>>2]|0)==(h|0)){c[m>>2]=i;c[j>>2]=l;break}else za()}else c[6338]=e&~(1<<g);while(0);l=g<<3;c[h+4>>2]=l|3;j=h+(l|4)|0;c[j>>2]=c[j>>2]|1;n=k;return n|0}j=c[6340]|0;if(b>>>0>j>>>0){if(f){l=2<<d;i=f<<d&(l|0-l);l=(i&0-i)+-1|0;i=l>>>12&16;m=l>>>i;l=m>>>5&8;o=m>>>l;m=o>>>2&4;p=o>>>m;o=p>>>1&2;q=p>>>o;p=q>>>1&1;r=(l|i|m|o|p)+(q>>>p)|0;p=r<<1;q=25392+(p<<2)|0;o=25392+(p+2<<2)|0;p=c[o>>2]|0;m=p+8|0;i=c[m>>2]|0;do if((q|0)!=(i|0)){if(i>>>0<(c[6342]|0)>>>0)za();l=i+12|0;if((c[l>>2]|0)==(p|0)){c[l>>2]=q;c[o>>2]=i;s=c[6340]|0;break}else za()}else{c[6338]=e&~(1<<r);s=j}while(0);j=r<<3;e=j-b|0;c[p+4>>2]=b|3;i=p+b|0;c[p+(b|4)>>2]=e|1;c[p+j>>2]=e;if(s){j=c[6343]|0;o=s>>>3;q=o<<1;d=25392+(q<<2)|0;f=c[6338]|0;k=1<<o;if(f&k){o=25392+(q+2<<2)|0;h=c[o>>2]|0;if(h>>>0<(c[6342]|0)>>>0)za();else{t=o;u=h}}else{c[6338]=f|k;t=25392+(q+2<<2)|0;u=d}c[t>>2]=j;c[u+12>>2]=j;c[j+8>>2]=u;c[j+12>>2]=d}c[6340]=e;c[6343]=i;n=m;return n|0}i=c[6339]|0;if(i){e=(i&0-i)+-1|0;i=e>>>12&16;d=e>>>i;e=d>>>5&8;j=d>>>e;d=j>>>2&4;q=j>>>d;j=q>>>1&2;k=q>>>j;q=k>>>1&1;f=c[25656+((e|i|d|j|q)+(k>>>q)<<2)>>2]|0;q=(c[f+4>>2]&-8)-b|0;k=f;j=f;while(1){f=c[k+16>>2]|0;if(!f){d=c[k+20>>2]|0;if(!d){v=q;w=j;break}else x=d}else x=f;f=(c[x+4>>2]&-8)-b|0;d=f>>>0<q>>>0;q=d?f:q;k=x;j=d?x:j}j=c[6342]|0;if(w>>>0<j>>>0)za();k=w+b|0;if(w>>>0>=k>>>0)za();q=c[w+24>>2]|0;m=c[w+12>>2]|0;do if((m|0)==(w|0)){p=w+20|0;r=c[p>>2]|0;if(!r){d=w+16|0;f=c[d>>2]|0;if(!f){y=0;break}else{z=f;A=d}}else{z=r;A=p}while(1){p=z+20|0;r=c[p>>2]|0;if(r){z=r;A=p;continue}p=z+16|0;r=c[p>>2]|0;if(!r){B=z;C=A;break}else{z=r;A=p}}if(C>>>0<j>>>0)za();else{c[C>>2]=0;y=B;break}}else{p=c[w+8>>2]|0;if(p>>>0<j>>>0)za();r=p+12|0;if((c[r>>2]|0)!=(w|0))za();d=m+8|0;if((c[d>>2]|0)==(w|0)){c[r>>2]=m;c[d>>2]=p;y=m;break}else za()}while(0);do if(q){m=c[w+28>>2]|0;j=25656+(m<<2)|0;if((w|0)==(c[j>>2]|0)){c[j>>2]=y;if(!y){c[6339]=c[6339]&~(1<<m);break}}else{if(q>>>0<(c[6342]|0)>>>0)za();m=q+16|0;if((c[m>>2]|0)==(w|0))c[m>>2]=y;else c[q+20>>2]=y;if(!y)break}m=c[6342]|0;if(y>>>0<m>>>0)za();c[y+24>>2]=q;j=c[w+16>>2]|0;do if(j)if(j>>>0<m>>>0)za();else{c[y+16>>2]=j;c[j+24>>2]=y;break}while(0);j=c[w+20>>2]|0;if(j)if(j>>>0<(c[6342]|0)>>>0)za();else{c[y+20>>2]=j;c[j+24>>2]=y;break}}while(0);if(v>>>0<16){q=v+b|0;c[w+4>>2]=q|3;j=w+(q+4)|0;c[j>>2]=c[j>>2]|1}else{c[w+4>>2]=b|3;c[w+(b|4)>>2]=v|1;c[w+(v+b)>>2]=v;j=c[6340]|0;if(j){q=c[6343]|0;m=j>>>3;j=m<<1;p=25392+(j<<2)|0;d=c[6338]|0;r=1<<m;if(d&r){m=25392+(j+2<<2)|0;f=c[m>>2]|0;if(f>>>0<(c[6342]|0)>>>0)za();else{D=m;E=f}}else{c[6338]=d|r;D=25392+(j+2<<2)|0;E=p}c[D>>2]=q;c[E+12>>2]=q;c[q+8>>2]=E;c[q+12>>2]=p}c[6340]=v;c[6343]=k}n=w+8|0;return n|0}else F=b}else F=b}else if(a>>>0<=4294967231){p=a+11|0;q=p&-8;j=c[6339]|0;if(j){r=0-q|0;d=p>>>8;if(d)if(q>>>0>16777215)G=31;else{p=(d+1048320|0)>>>16&8;f=d<<p;d=(f+520192|0)>>>16&4;m=f<<d;f=(m+245760|0)>>>16&2;i=14-(d|p|f)+(m<<f>>>15)|0;G=q>>>(i+7|0)&1|i<<1}else G=0;i=c[25656+(G<<2)>>2]|0;a:do if(!i){H=r;I=0;J=0;K=86}else{f=r;m=0;p=q<<((G|0)==31?0:25-(G>>>1)|0);d=i;e=0;while(1){h=c[d+4>>2]&-8;o=h-q|0;if(o>>>0<f>>>0)if((h|0)==(q|0)){L=o;M=d;N=d;K=90;break a}else{O=o;P=d}else{O=f;P=e}o=c[d+20>>2]|0;d=c[d+16+(p>>>31<<2)>>2]|0;h=(o|0)==0|(o|0)==(d|0)?m:o;if(!d){H=O;I=h;J=P;K=86;break}else{f=O;m=h;p=p<<1;e=P}}}while(0);if((K|0)==86){if((I|0)==0&(J|0)==0){i=2<<G;r=j&(i|0-i);if(!r){F=q;break}i=(r&0-r)+-1|0;r=i>>>12&16;b=i>>>r;i=b>>>5&8;k=b>>>i;b=k>>>2&4;e=k>>>b;k=e>>>1&2;p=e>>>k;e=p>>>1&1;Q=c[25656+((i|r|b|k|e)+(p>>>e)<<2)>>2]|0;R=0}else{Q=I;R=J}if(!Q){S=H;T=R}else{L=H;M=Q;N=R;K=90}}if((K|0)==90)while(1){K=0;e=(c[M+4>>2]&-8)-q|0;p=e>>>0<L>>>0;k=p?e:L;e=p?M:N;p=c[M+16>>2]|0;if(p){L=k;M=p;N=e;K=90;continue}M=c[M+20>>2]|0;if(!M){S=k;T=e;break}else{L=k;N=e;K=90}}if((T|0)!=0?S>>>0<((c[6340]|0)-q|0)>>>0:0){j=c[6342]|0;if(T>>>0<j>>>0)za();e=T+q|0;if(T>>>0>=e>>>0)za();k=c[T+24>>2]|0;p=c[T+12>>2]|0;do if((p|0)==(T|0)){b=T+20|0;r=c[b>>2]|0;if(!r){i=T+16|0;m=c[i>>2]|0;if(!m){U=0;break}else{V=m;W=i}}else{V=r;W=b}while(1){b=V+20|0;r=c[b>>2]|0;if(r){V=r;W=b;continue}b=V+16|0;r=c[b>>2]|0;if(!r){X=V;Y=W;break}else{V=r;W=b}}if(Y>>>0<j>>>0)za();else{c[Y>>2]=0;U=X;break}}else{b=c[T+8>>2]|0;if(b>>>0<j>>>0)za();r=b+12|0;if((c[r>>2]|0)!=(T|0))za();i=p+8|0;if((c[i>>2]|0)==(T|0)){c[r>>2]=p;c[i>>2]=b;U=p;break}else za()}while(0);do if(k){p=c[T+28>>2]|0;j=25656+(p<<2)|0;if((T|0)==(c[j>>2]|0)){c[j>>2]=U;if(!U){c[6339]=c[6339]&~(1<<p);break}}else{if(k>>>0<(c[6342]|0)>>>0)za();p=k+16|0;if((c[p>>2]|0)==(T|0))c[p>>2]=U;else c[k+20>>2]=U;if(!U)break}p=c[6342]|0;if(U>>>0<p>>>0)za();c[U+24>>2]=k;j=c[T+16>>2]|0;do if(j)if(j>>>0<p>>>0)za();else{c[U+16>>2]=j;c[j+24>>2]=U;break}while(0);j=c[T+20>>2]|0;if(j)if(j>>>0<(c[6342]|0)>>>0)za();else{c[U+20>>2]=j;c[j+24>>2]=U;break}}while(0);b:do if(S>>>0>=16){c[T+4>>2]=q|3;c[T+(q|4)>>2]=S|1;c[T+(S+q)>>2]=S;k=S>>>3;if(S>>>0<256){j=k<<1;p=25392+(j<<2)|0;b=c[6338]|0;i=1<<k;if(b&i){k=25392+(j+2<<2)|0;r=c[k>>2]|0;if(r>>>0<(c[6342]|0)>>>0)za();else{Z=k;_=r}}else{c[6338]=b|i;Z=25392+(j+2<<2)|0;_=p}c[Z>>2]=e;c[_+12>>2]=e;c[T+(q+8)>>2]=_;c[T+(q+12)>>2]=p;break}p=S>>>8;if(p)if(S>>>0>16777215)$=31;else{j=(p+1048320|0)>>>16&8;i=p<<j;p=(i+520192|0)>>>16&4;b=i<<p;i=(b+245760|0)>>>16&2;r=14-(p|j|i)+(b<<i>>>15)|0;$=S>>>(r+7|0)&1|r<<1}else $=0;r=25656+($<<2)|0;c[T+(q+28)>>2]=$;c[T+(q+20)>>2]=0;c[T+(q+16)>>2]=0;i=c[6339]|0;b=1<<$;if(!(i&b)){c[6339]=i|b;c[r>>2]=e;c[T+(q+24)>>2]=r;c[T+(q+12)>>2]=e;c[T+(q+8)>>2]=e;break}b=c[r>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(S|0)){r=S<<(($|0)==31?0:25-($>>>1)|0);i=b;while(1){j=i+16+(r>>>31<<2)|0;p=c[j>>2]|0;if(!p){aa=j;ba=i;break}if((c[p+4>>2]&-8|0)==(S|0)){ca=p;break c}else{r=r<<1;i=p}}if(aa>>>0<(c[6342]|0)>>>0)za();else{c[aa>>2]=e;c[T+(q+24)>>2]=ba;c[T+(q+12)>>2]=e;c[T+(q+8)>>2]=e;break b}}else ca=b;while(0);b=ca+8|0;i=c[b>>2]|0;r=c[6342]|0;if(i>>>0>=r>>>0&ca>>>0>=r>>>0){c[i+12>>2]=e;c[b>>2]=e;c[T+(q+8)>>2]=i;c[T+(q+12)>>2]=ca;c[T+(q+24)>>2]=0;break}else za()}else{i=S+q|0;c[T+4>>2]=i|3;b=T+(i+4)|0;c[b>>2]=c[b>>2]|1}while(0);n=T+8|0;return n|0}else F=q}else F=q}else F=-1;while(0);T=c[6340]|0;if(T>>>0>=F>>>0){S=T-F|0;ca=c[6343]|0;if(S>>>0>15){c[6343]=ca+F;c[6340]=S;c[ca+(F+4)>>2]=S|1;c[ca+T>>2]=S;c[ca+4>>2]=F|3}else{c[6340]=0;c[6343]=0;c[ca+4>>2]=T|3;S=ca+(T+4)|0;c[S>>2]=c[S>>2]|1}n=ca+8|0;return n|0}ca=c[6341]|0;if(ca>>>0>F>>>0){S=ca-F|0;c[6341]=S;ca=c[6344]|0;c[6344]=ca+F;c[ca+(F+4)>>2]=S|1;c[ca+4>>2]=F|3;n=ca+8|0;return n|0}do if(!(c[6456]|0)){ca=ra(30)|0;if(!(ca+-1&ca)){c[6458]=ca;c[6457]=ca;c[6459]=-1;c[6460]=-1;c[6461]=0;c[6449]=0;c[6456]=(Ba(0)|0)&-16^1431655768;break}else za()}while(0);ca=F+48|0;S=c[6458]|0;T=F+47|0;ba=S+T|0;aa=0-S|0;S=ba&aa;if(S>>>0<=F>>>0){n=0;return n|0}$=c[6448]|0;if(($|0)!=0?(_=c[6446]|0,Z=_+S|0,Z>>>0<=_>>>0|Z>>>0>$>>>0):0){n=0;return n|0}d:do if(!(c[6449]&4)){$=c[6344]|0;e:do if($){Z=25800;while(1){_=c[Z>>2]|0;if(_>>>0<=$>>>0?(U=Z+4|0,(_+(c[U>>2]|0)|0)>>>0>$>>>0):0){da=Z;ea=U;break}Z=c[Z+8>>2]|0;if(!Z){K=174;break e}}Z=ba-(c[6341]|0)&aa;if(Z>>>0<2147483647){U=oa(Z|0)|0;_=(U|0)==((c[da>>2]|0)+(c[ea>>2]|0)|0);X=_?Z:0;if(_)if((U|0)==(-1|0))fa=X;else{ga=U;ha=X;K=194;break d}else{ia=U;ja=Z;ka=X;K=184}}else fa=0}else K=174;while(0);do if((K|0)==174){$=oa(0)|0;if(($|0)!=(-1|0)){q=$;X=c[6457]|0;Z=X+-1|0;if(!(Z&q))la=S;else la=S-q+(Z+q&0-X)|0;X=c[6446]|0;q=X+la|0;if(la>>>0>F>>>0&la>>>0<2147483647){Z=c[6448]|0;if((Z|0)!=0?q>>>0<=X>>>0|q>>>0>Z>>>0:0){fa=0;break}Z=oa(la|0)|0;q=(Z|0)==($|0);X=q?la:0;if(q){ga=$;ha=X;K=194;break d}else{ia=Z;ja=la;ka=X;K=184}}else fa=0}else fa=0}while(0);f:do if((K|0)==184){X=0-ja|0;do if(ca>>>0>ja>>>0&(ja>>>0<2147483647&(ia|0)!=(-1|0))?(Z=c[6458]|0,$=T-ja+Z&0-Z,$>>>0<2147483647):0)if((oa($|0)|0)==(-1|0)){oa(X|0)|0;fa=ka;break f}else{ma=$+ja|0;break}else ma=ja;while(0);if((ia|0)==(-1|0))fa=ka;else{ga=ia;ha=ma;K=194;break d}}while(0);c[6449]=c[6449]|4;na=fa;K=191}else{na=0;K=191}while(0);if((((K|0)==191?S>>>0<2147483647:0)?(fa=oa(S|0)|0,S=oa(0)|0,fa>>>0<S>>>0&((fa|0)!=(-1|0)&(S|0)!=(-1|0))):0)?(ma=S-fa|0,S=ma>>>0>(F+40|0)>>>0,S):0){ga=fa;ha=S?ma:na;K=194}if((K|0)==194){na=(c[6446]|0)+ha|0;c[6446]=na;if(na>>>0>(c[6447]|0)>>>0)c[6447]=na;na=c[6344]|0;g:do if(na){ma=25800;do{S=c[ma>>2]|0;fa=ma+4|0;ia=c[fa>>2]|0;if((ga|0)==(S+ia|0)){pa=S;qa=fa;sa=ia;ta=ma;K=204;break}ma=c[ma+8>>2]|0}while((ma|0)!=0);if(((K|0)==204?(c[ta+12>>2]&8|0)==0:0)?na>>>0<ga>>>0&na>>>0>=pa>>>0:0){c[qa>>2]=sa+ha;ma=(c[6341]|0)+ha|0;ia=na+8|0;fa=(ia&7|0)==0?0:0-ia&7;ia=ma-fa|0;c[6344]=na+fa;c[6341]=ia;c[na+(fa+4)>>2]=ia|1;c[na+(ma+4)>>2]=40;c[6345]=c[6460];break}ma=c[6342]|0;if(ga>>>0<ma>>>0){c[6342]=ga;ua=ga}else ua=ma;ma=ga+ha|0;ia=25800;while(1){if((c[ia>>2]|0)==(ma|0)){va=ia;wa=ia;K=212;break}ia=c[ia+8>>2]|0;if(!ia){xa=25800;break}}if((K|0)==212)if(!(c[wa+12>>2]&8)){c[va>>2]=ga;ia=wa+4|0;c[ia>>2]=(c[ia>>2]|0)+ha;ia=ga+8|0;ma=(ia&7|0)==0?0:0-ia&7;ia=ga+(ha+8)|0;fa=(ia&7|0)==0?0:0-ia&7;ia=ga+(fa+ha)|0;S=ma+F|0;ka=ga+S|0;ja=ia-(ga+ma)-F|0;c[ga+(ma+4)>>2]=F|3;h:do if((ia|0)!=(na|0)){if((ia|0)==(c[6343]|0)){T=(c[6340]|0)+ja|0;c[6340]=T;c[6343]=ka;c[ga+(S+4)>>2]=T|1;c[ga+(T+S)>>2]=T;break}T=ha+4|0;ca=c[ga+(T+fa)>>2]|0;if((ca&3|0)==1){la=ca&-8;ea=ca>>>3;i:do if(ca>>>0>=256){da=c[ga+((fa|24)+ha)>>2]|0;aa=c[ga+(ha+12+fa)>>2]|0;do if((aa|0)==(ia|0)){ba=fa|16;X=ga+(T+ba)|0;$=c[X>>2]|0;if(!$){Z=ga+(ba+ha)|0;ba=c[Z>>2]|0;if(!ba){Aa=0;break}else{Ca=ba;Da=Z}}else{Ca=$;Da=X}while(1){X=Ca+20|0;$=c[X>>2]|0;if($){Ca=$;Da=X;continue}X=Ca+16|0;$=c[X>>2]|0;if(!$){Ea=Ca;Fa=Da;break}else{Ca=$;Da=X}}if(Fa>>>0<ua>>>0)za();else{c[Fa>>2]=0;Aa=Ea;break}}else{X=c[ga+((fa|8)+ha)>>2]|0;if(X>>>0<ua>>>0)za();$=X+12|0;if((c[$>>2]|0)!=(ia|0))za();Z=aa+8|0;if((c[Z>>2]|0)==(ia|0)){c[$>>2]=aa;c[Z>>2]=X;Aa=aa;break}else za()}while(0);if(!da)break;aa=c[ga+(ha+28+fa)>>2]|0;X=25656+(aa<<2)|0;do if((ia|0)!=(c[X>>2]|0)){if(da>>>0<(c[6342]|0)>>>0)za();Z=da+16|0;if((c[Z>>2]|0)==(ia|0))c[Z>>2]=Aa;else c[da+20>>2]=Aa;if(!Aa)break i}else{c[X>>2]=Aa;if(Aa)break;c[6339]=c[6339]&~(1<<aa);break i}while(0);aa=c[6342]|0;if(Aa>>>0<aa>>>0)za();c[Aa+24>>2]=da;X=fa|16;Z=c[ga+(X+ha)>>2]|0;do if(Z)if(Z>>>0<aa>>>0)za();else{c[Aa+16>>2]=Z;c[Z+24>>2]=Aa;break}while(0);Z=c[ga+(T+X)>>2]|0;if(!Z)break;if(Z>>>0<(c[6342]|0)>>>0)za();else{c[Aa+20>>2]=Z;c[Z+24>>2]=Aa;break}}else{Z=c[ga+((fa|8)+ha)>>2]|0;aa=c[ga+(ha+12+fa)>>2]|0;da=25392+(ea<<1<<2)|0;do if((Z|0)!=(da|0)){if(Z>>>0<ua>>>0)za();if((c[Z+12>>2]|0)==(ia|0))break;za()}while(0);if((aa|0)==(Z|0)){c[6338]=c[6338]&~(1<<ea);break}do if((aa|0)==(da|0))Ga=aa+8|0;else{if(aa>>>0<ua>>>0)za();X=aa+8|0;if((c[X>>2]|0)==(ia|0)){Ga=X;break}za()}while(0);c[Z+12>>2]=aa;c[Ga>>2]=Z}while(0);Ha=ga+((la|fa)+ha)|0;Ia=la+ja|0}else{Ha=ia;Ia=ja}ea=Ha+4|0;c[ea>>2]=c[ea>>2]&-2;c[ga+(S+4)>>2]=Ia|1;c[ga+(Ia+S)>>2]=Ia;ea=Ia>>>3;if(Ia>>>0<256){T=ea<<1;ca=25392+(T<<2)|0;da=c[6338]|0;X=1<<ea;do if(!(da&X)){c[6338]=da|X;Ja=25392+(T+2<<2)|0;Ka=ca}else{ea=25392+(T+2<<2)|0;$=c[ea>>2]|0;if($>>>0>=(c[6342]|0)>>>0){Ja=ea;Ka=$;break}za()}while(0);c[Ja>>2]=ka;c[Ka+12>>2]=ka;c[ga+(S+8)>>2]=Ka;c[ga+(S+12)>>2]=ca;break}T=Ia>>>8;do if(!T)La=0;else{if(Ia>>>0>16777215){La=31;break}X=(T+1048320|0)>>>16&8;da=T<<X;la=(da+520192|0)>>>16&4;$=da<<la;da=($+245760|0)>>>16&2;ea=14-(la|X|da)+($<<da>>>15)|0;La=Ia>>>(ea+7|0)&1|ea<<1}while(0);T=25656+(La<<2)|0;c[ga+(S+28)>>2]=La;c[ga+(S+20)>>2]=0;c[ga+(S+16)>>2]=0;ca=c[6339]|0;ea=1<<La;if(!(ca&ea)){c[6339]=ca|ea;c[T>>2]=ka;c[ga+(S+24)>>2]=T;c[ga+(S+12)>>2]=ka;c[ga+(S+8)>>2]=ka;break}ea=c[T>>2]|0;j:do if((c[ea+4>>2]&-8|0)!=(Ia|0)){T=Ia<<((La|0)==31?0:25-(La>>>1)|0);ca=ea;while(1){da=ca+16+(T>>>31<<2)|0;$=c[da>>2]|0;if(!$){Ma=da;Na=ca;break}if((c[$+4>>2]&-8|0)==(Ia|0)){Oa=$;break j}else{T=T<<1;ca=$}}if(Ma>>>0<(c[6342]|0)>>>0)za();else{c[Ma>>2]=ka;c[ga+(S+24)>>2]=Na;c[ga+(S+12)>>2]=ka;c[ga+(S+8)>>2]=ka;break h}}else Oa=ea;while(0);ea=Oa+8|0;ca=c[ea>>2]|0;T=c[6342]|0;if(ca>>>0>=T>>>0&Oa>>>0>=T>>>0){c[ca+12>>2]=ka;c[ea>>2]=ka;c[ga+(S+8)>>2]=ca;c[ga+(S+12)>>2]=Oa;c[ga+(S+24)>>2]=0;break}else za()}else{ca=(c[6341]|0)+ja|0;c[6341]=ca;c[6344]=ka;c[ga+(S+4)>>2]=ca|1}while(0);n=ga+(ma|8)|0;return n|0}else xa=25800;while(1){S=c[xa>>2]|0;if(S>>>0<=na>>>0?(ka=c[xa+4>>2]|0,ja=S+ka|0,ja>>>0>na>>>0):0){Pa=S;Qa=ka;Ra=ja;break}xa=c[xa+8>>2]|0}ma=Pa+(Qa+-39)|0;ja=Pa+(Qa+-47+((ma&7|0)==0?0:0-ma&7))|0;ma=na+16|0;ka=ja>>>0<ma>>>0?na:ja;ja=ka+8|0;S=ga+8|0;ia=(S&7|0)==0?0:0-S&7;S=ha+-40-ia|0;c[6344]=ga+ia;c[6341]=S;c[ga+(ia+4)>>2]=S|1;c[ga+(ha+-36)>>2]=40;c[6345]=c[6460];S=ka+4|0;c[S>>2]=27;c[ja>>2]=c[6450];c[ja+4>>2]=c[6451];c[ja+8>>2]=c[6452];c[ja+12>>2]=c[6453];c[6450]=ga;c[6451]=ha;c[6453]=0;c[6452]=ja;ja=ka+28|0;c[ja>>2]=7;if((ka+32|0)>>>0<Ra>>>0){ia=ja;do{ja=ia;ia=ia+4|0;c[ia>>2]=7}while((ja+8|0)>>>0<Ra>>>0)}if((ka|0)!=(na|0)){ia=ka-na|0;c[S>>2]=c[S>>2]&-2;c[na+4>>2]=ia|1;c[ka>>2]=ia;ja=ia>>>3;if(ia>>>0<256){fa=ja<<1;ca=25392+(fa<<2)|0;ea=c[6338]|0;T=1<<ja;if(ea&T){ja=25392+(fa+2<<2)|0;Z=c[ja>>2]|0;if(Z>>>0<(c[6342]|0)>>>0)za();else{Sa=ja;Ta=Z}}else{c[6338]=ea|T;Sa=25392+(fa+2<<2)|0;Ta=ca}c[Sa>>2]=na;c[Ta+12>>2]=na;c[na+8>>2]=Ta;c[na+12>>2]=ca;break}ca=ia>>>8;if(ca)if(ia>>>0>16777215)Ua=31;else{fa=(ca+1048320|0)>>>16&8;T=ca<<fa;ca=(T+520192|0)>>>16&4;ea=T<<ca;T=(ea+245760|0)>>>16&2;Z=14-(ca|fa|T)+(ea<<T>>>15)|0;Ua=ia>>>(Z+7|0)&1|Z<<1}else Ua=0;Z=25656+(Ua<<2)|0;c[na+28>>2]=Ua;c[na+20>>2]=0;c[ma>>2]=0;T=c[6339]|0;ea=1<<Ua;if(!(T&ea)){c[6339]=T|ea;c[Z>>2]=na;c[na+24>>2]=Z;c[na+12>>2]=na;c[na+8>>2]=na;break}ea=c[Z>>2]|0;k:do if((c[ea+4>>2]&-8|0)!=(ia|0)){Z=ia<<((Ua|0)==31?0:25-(Ua>>>1)|0);T=ea;while(1){fa=T+16+(Z>>>31<<2)|0;ca=c[fa>>2]|0;if(!ca){Va=fa;Wa=T;break}if((c[ca+4>>2]&-8|0)==(ia|0)){Xa=ca;break k}else{Z=Z<<1;T=ca}}if(Va>>>0<(c[6342]|0)>>>0)za();else{c[Va>>2]=na;c[na+24>>2]=Wa;c[na+12>>2]=na;c[na+8>>2]=na;break g}}else Xa=ea;while(0);ea=Xa+8|0;ia=c[ea>>2]|0;ma=c[6342]|0;if(ia>>>0>=ma>>>0&Xa>>>0>=ma>>>0){c[ia+12>>2]=na;c[ea>>2]=na;c[na+8>>2]=ia;c[na+12>>2]=Xa;c[na+24>>2]=0;break}else za()}}else{ia=c[6342]|0;if((ia|0)==0|ga>>>0<ia>>>0)c[6342]=ga;c[6450]=ga;c[6451]=ha;c[6453]=0;c[6347]=c[6456];c[6346]=-1;ia=0;do{ea=ia<<1;ma=25392+(ea<<2)|0;c[25392+(ea+3<<2)>>2]=ma;c[25392+(ea+2<<2)>>2]=ma;ia=ia+1|0}while((ia|0)!=32);ia=ga+8|0;ma=(ia&7|0)==0?0:0-ia&7;ia=ha+-40-ma|0;c[6344]=ga+ma;c[6341]=ia;c[ga+(ma+4)>>2]=ia|1;c[ga+(ha+-36)>>2]=40;c[6345]=c[6460]}while(0);ha=c[6341]|0;if(ha>>>0>F>>>0){ga=ha-F|0;c[6341]=ga;ha=c[6344]|0;c[6344]=ha+F;c[ha+(F+4)>>2]=ga|1;c[ha+4>>2]=F|3;n=ha+8|0;return n|0}}c[(ya()|0)>>2]=12;n=0;return n|0}function _e(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;if(!a)return;b=a+-8|0;d=c[6342]|0;if(b>>>0<d>>>0)za();e=c[a+-4>>2]|0;f=e&3;if((f|0)==1)za();g=e&-8;h=a+(g+-8)|0;do if(!(e&1)){i=c[b>>2]|0;if(!f)return;j=-8-i|0;k=a+j|0;l=i+g|0;if(k>>>0<d>>>0)za();if((k|0)==(c[6343]|0)){m=a+(g+-4)|0;n=c[m>>2]|0;if((n&3|0)!=3){o=k;p=l;break}c[6340]=l;c[m>>2]=n&-2;c[a+(j+4)>>2]=l|1;c[h>>2]=l;return}n=i>>>3;if(i>>>0<256){i=c[a+(j+8)>>2]|0;m=c[a+(j+12)>>2]|0;q=25392+(n<<1<<2)|0;if((i|0)!=(q|0)){if(i>>>0<d>>>0)za();if((c[i+12>>2]|0)!=(k|0))za()}if((m|0)==(i|0)){c[6338]=c[6338]&~(1<<n);o=k;p=l;break}if((m|0)!=(q|0)){if(m>>>0<d>>>0)za();q=m+8|0;if((c[q>>2]|0)==(k|0))r=q;else za()}else r=m+8|0;c[i+12>>2]=m;c[r>>2]=i;o=k;p=l;break}i=c[a+(j+24)>>2]|0;m=c[a+(j+12)>>2]|0;do if((m|0)==(k|0)){q=a+(j+20)|0;n=c[q>>2]|0;if(!n){s=a+(j+16)|0;t=c[s>>2]|0;if(!t){u=0;break}else{v=t;w=s}}else{v=n;w=q}while(1){q=v+20|0;n=c[q>>2]|0;if(n){v=n;w=q;continue}q=v+16|0;n=c[q>>2]|0;if(!n){x=v;y=w;break}else{v=n;w=q}}if(y>>>0<d>>>0)za();else{c[y>>2]=0;u=x;break}}else{q=c[a+(j+8)>>2]|0;if(q>>>0<d>>>0)za();n=q+12|0;if((c[n>>2]|0)!=(k|0))za();s=m+8|0;if((c[s>>2]|0)==(k|0)){c[n>>2]=m;c[s>>2]=q;u=m;break}else za()}while(0);if(i){m=c[a+(j+28)>>2]|0;q=25656+(m<<2)|0;if((k|0)==(c[q>>2]|0)){c[q>>2]=u;if(!u){c[6339]=c[6339]&~(1<<m);o=k;p=l;break}}else{if(i>>>0<(c[6342]|0)>>>0)za();m=i+16|0;if((c[m>>2]|0)==(k|0))c[m>>2]=u;else c[i+20>>2]=u;if(!u){o=k;p=l;break}}m=c[6342]|0;if(u>>>0<m>>>0)za();c[u+24>>2]=i;q=c[a+(j+16)>>2]|0;do if(q)if(q>>>0<m>>>0)za();else{c[u+16>>2]=q;c[q+24>>2]=u;break}while(0);q=c[a+(j+20)>>2]|0;if(q)if(q>>>0<(c[6342]|0)>>>0)za();else{c[u+20>>2]=q;c[q+24>>2]=u;o=k;p=l;break}else{o=k;p=l}}else{o=k;p=l}}else{o=b;p=g}while(0);if(o>>>0>=h>>>0)za();b=a+(g+-4)|0;u=c[b>>2]|0;if(!(u&1))za();if(!(u&2)){if((h|0)==(c[6344]|0)){d=(c[6341]|0)+p|0;c[6341]=d;c[6344]=o;c[o+4>>2]=d|1;if((o|0)!=(c[6343]|0))return;c[6343]=0;c[6340]=0;return}if((h|0)==(c[6343]|0)){d=(c[6340]|0)+p|0;c[6340]=d;c[6343]=o;c[o+4>>2]=d|1;c[o+d>>2]=d;return}d=(u&-8)+p|0;x=u>>>3;do if(u>>>0>=256){y=c[a+(g+16)>>2]|0;w=c[a+(g|4)>>2]|0;do if((w|0)==(h|0)){v=a+(g+12)|0;r=c[v>>2]|0;if(!r){f=a+(g+8)|0;e=c[f>>2]|0;if(!e){z=0;break}else{A=e;B=f}}else{A=r;B=v}while(1){v=A+20|0;r=c[v>>2]|0;if(r){A=r;B=v;continue}v=A+16|0;r=c[v>>2]|0;if(!r){C=A;D=B;break}else{A=r;B=v}}if(D>>>0<(c[6342]|0)>>>0)za();else{c[D>>2]=0;z=C;break}}else{v=c[a+g>>2]|0;if(v>>>0<(c[6342]|0)>>>0)za();r=v+12|0;if((c[r>>2]|0)!=(h|0))za();f=w+8|0;if((c[f>>2]|0)==(h|0)){c[r>>2]=w;c[f>>2]=v;z=w;break}else za()}while(0);if(y){w=c[a+(g+20)>>2]|0;l=25656+(w<<2)|0;if((h|0)==(c[l>>2]|0)){c[l>>2]=z;if(!z){c[6339]=c[6339]&~(1<<w);break}}else{if(y>>>0<(c[6342]|0)>>>0)za();w=y+16|0;if((c[w>>2]|0)==(h|0))c[w>>2]=z;else c[y+20>>2]=z;if(!z)break}w=c[6342]|0;if(z>>>0<w>>>0)za();c[z+24>>2]=y;l=c[a+(g+8)>>2]|0;do if(l)if(l>>>0<w>>>0)za();else{c[z+16>>2]=l;c[l+24>>2]=z;break}while(0);l=c[a+(g+12)>>2]|0;if(l)if(l>>>0<(c[6342]|0)>>>0)za();else{c[z+20>>2]=l;c[l+24>>2]=z;break}}}else{l=c[a+g>>2]|0;w=c[a+(g|4)>>2]|0;y=25392+(x<<1<<2)|0;if((l|0)!=(y|0)){if(l>>>0<(c[6342]|0)>>>0)za();if((c[l+12>>2]|0)!=(h|0))za()}if((w|0)==(l|0)){c[6338]=c[6338]&~(1<<x);break}if((w|0)!=(y|0)){if(w>>>0<(c[6342]|0)>>>0)za();y=w+8|0;if((c[y>>2]|0)==(h|0))E=y;else za()}else E=w+8|0;c[l+12>>2]=w;c[E>>2]=l}while(0);c[o+4>>2]=d|1;c[o+d>>2]=d;if((o|0)==(c[6343]|0)){c[6340]=d;return}else F=d}else{c[b>>2]=u&-2;c[o+4>>2]=p|1;c[o+p>>2]=p;F=p}p=F>>>3;if(F>>>0<256){u=p<<1;b=25392+(u<<2)|0;d=c[6338]|0;E=1<<p;if(d&E){p=25392+(u+2<<2)|0;h=c[p>>2]|0;if(h>>>0<(c[6342]|0)>>>0)za();else{G=p;H=h}}else{c[6338]=d|E;G=25392+(u+2<<2)|0;H=b}c[G>>2]=o;c[H+12>>2]=o;c[o+8>>2]=H;c[o+12>>2]=b;return}b=F>>>8;if(b)if(F>>>0>16777215)I=31;else{H=(b+1048320|0)>>>16&8;G=b<<H;b=(G+520192|0)>>>16&4;u=G<<b;G=(u+245760|0)>>>16&2;E=14-(b|H|G)+(u<<G>>>15)|0;I=F>>>(E+7|0)&1|E<<1}else I=0;E=25656+(I<<2)|0;c[o+28>>2]=I;c[o+20>>2]=0;c[o+16>>2]=0;G=c[6339]|0;u=1<<I;a:do if(G&u){H=c[E>>2]|0;b:do if((c[H+4>>2]&-8|0)!=(F|0)){b=F<<((I|0)==31?0:25-(I>>>1)|0);d=H;while(1){h=d+16+(b>>>31<<2)|0;p=c[h>>2]|0;if(!p){J=h;K=d;break}if((c[p+4>>2]&-8|0)==(F|0)){L=p;break b}else{b=b<<1;d=p}}if(J>>>0<(c[6342]|0)>>>0)za();else{c[J>>2]=o;c[o+24>>2]=K;c[o+12>>2]=o;c[o+8>>2]=o;break a}}else L=H;while(0);H=L+8|0;d=c[H>>2]|0;b=c[6342]|0;if(d>>>0>=b>>>0&L>>>0>=b>>>0){c[d+12>>2]=o;c[H>>2]=o;c[o+8>>2]=d;c[o+12>>2]=L;c[o+24>>2]=0;break}else za()}else{c[6339]=G|u;c[E>>2]=o;c[o+24>>2]=E;c[o+12>>2]=o;c[o+8>>2]=o}while(0);o=(c[6346]|0)+-1|0;c[6346]=o;if(!o)M=25808;else return;while(1){o=c[M>>2]|0;if(!o)break;else M=o+8|0}c[6346]=-1;return}function $e(){}function af(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>c;return a>>>c|(b&(1<<c)-1)<<32-c}C=(b|0)<0?-1:0;return b>>c-32|0}function bf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;g=b&3;h=d|d<<8|d<<16|d<<24;i=f&~3;if(g){g=b+4-g|0;while((b|0)<(g|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(i|0)){c[b>>2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function cf(b){b=b|0;var c=0;c=b;while(a[c>>0]|0)c=c+1|0;return c-b|0}function df(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return sa(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function ef(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;return (C=b+d+(e>>>0<a>>>0|0)>>>0,e|0)|0}function ff(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else df(b,c,d)|0;return b|0}function gf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return (C=e,a-c>>>0|0)|0}function hf(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}C=a<<c-32;return 0}function jf(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}C=0;return b>>>c-32|0}function kf(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[m+(b>>>24)>>0]|0)+24|0}function lf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=_(d,c)|0;f=a>>>16;a=(e>>>16)+(_(d,f)|0)|0;d=b>>>16;b=_(d,c)|0;return (C=(a>>>16)+(_(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0}function mf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;g=d>>31|((d|0)<0?-1:0)<<1;h=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;i=gf(e^a,f^b,e,f)|0;b=C;a=g^e;e=h^f;return gf((rf(i,b,gf(g^c,h^d,g,h)|0,C,0)|0)^a,C^e,a,e)|0}function nf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+8|0;g=f|0;h=b>>31|((b|0)<0?-1:0)<<1;j=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;k=e>>31|((e|0)<0?-1:0)<<1;l=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;m=gf(h^a,j^b,h,j)|0;b=C;rf(m,b,gf(k^d,l^e,k,l)|0,C,g)|0;l=gf(c[g>>2]^h,c[g+4>>2]^j,h,j)|0;j=C;i=f;return (C=j,l)|0}function of(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=lf(e,a)|0;f=C;return (C=(_(b,a)|0)+(_(d,e)|0)+f|f&0,c|0|0)|0}function pf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return rf(a,b,c,d,0)|0}function qf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+8|0;g=f|0;rf(a,b,d,e,g)|0;i=f;return (C=c[g+4>>2]|0,c[g>>2]|0)|0}function rf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0;g=a;h=b;i=h;j=d;k=e;l=k;if(!i){m=(f|0)!=0;if(!l){if(m){c[f>>2]=(g>>>0)%(j>>>0);c[f+4>>2]=0}n=0;o=(g>>>0)/(j>>>0)>>>0;return (C=n,o)|0}else{if(!m){n=0;o=0;return (C=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;o=0;return (C=n,o)|0}}m=(l|0)==0;do if(j){if(!m){p=(aa(l|0)|0)-(aa(i|0)|0)|0;if(p>>>0<=31){q=p+1|0;r=31-p|0;s=p-31>>31;t=q;u=g>>>(q>>>0)&s|i<<r;v=i>>>(q>>>0)&s;w=0;x=g<<r;break}if(!f){n=0;o=0;return (C=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return (C=n,o)|0}r=j-1|0;if(r&j){s=(aa(j|0)|0)+33-(aa(i|0)|0)|0;q=64-s|0;p=32-s|0;y=p>>31;z=s-32|0;A=z>>31;t=s;u=p-1>>31&i>>>(z>>>0)|(i<<p|g>>>(s>>>0))&A;v=A&i>>>(s>>>0);w=g<<q&y;x=(i<<q|g>>>(z>>>0))&y|g<<p&s-33>>31;break}if(f){c[f>>2]=r&g;c[f+4>>2]=0}if((j|0)==1){n=h|b&0;o=a|0|0;return (C=n,o)|0}else{r=kf(j|0)|0;n=i>>>(r>>>0)|0;o=i<<32-r|g>>>(r>>>0)|0;return (C=n,o)|0}}else{if(m){if(f){c[f>>2]=(i>>>0)%(j>>>0);c[f+4>>2]=0}n=0;o=(i>>>0)/(j>>>0)>>>0;return (C=n,o)|0}if(!g){if(f){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(l>>>0)}n=0;o=(i>>>0)/(l>>>0)>>>0;return (C=n,o)|0}r=l-1|0;if(!(r&l)){if(f){c[f>>2]=a|0;c[f+4>>2]=r&i|b&0}n=0;o=i>>>((kf(l|0)|0)>>>0);return (C=n,o)|0}r=(aa(l|0)|0)-(aa(i|0)|0)|0;if(r>>>0<=30){s=r+1|0;p=31-r|0;t=s;u=i<<p|g>>>(s>>>0);v=i>>>(s>>>0);w=0;x=g<<p;break}if(!f){n=0;o=0;return (C=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return (C=n,o)|0}while(0);if(!t){B=x;D=w;E=v;F=u;G=0;H=0}else{b=d|0|0;d=k|e&0;e=ef(b|0,d|0,-1,-1)|0;k=C;h=x;x=w;w=v;v=u;u=t;t=0;do{a=h;h=x>>>31|h<<1;x=t|x<<1;g=v<<1|a>>>31|0;a=v>>>31|w<<1|0;gf(e,k,g,a)|0;i=C;l=i>>31|((i|0)<0?-1:0)<<1;t=l&1;v=gf(g,a,l&b,(((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1)&d)|0;w=C;u=u-1|0}while((u|0)!=0);B=h;D=x;E=w;F=v;G=0;H=t}t=D;D=0;if(f){c[f>>2]=F;c[f+4>>2]=E}n=(t|0)>>>31|(B|D)<<1|(D<<1|t>>>31)&0|G;o=(t<<1|0>>>31)&-2|H;return (C=n,o)|0}function sf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Ha[a&1](b|0,c|0,d|0,e|0,f|0,g|0)}function tf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ba(0)}
+
+// EMSCRIPTEN_END_FUNCS
+var Ha=[tf,ee];return{_strlen:cf,_free:_e,_ogv_audio_decoder_destroy:Ue,_ogv_audio_decoder_init:Re,_i64Add:ef,_memmove:ff,_bitshift64Ashr:af,_memset:bf,_ogv_audio_decoder_process_header:Se,_malloc:Ze,_memcpy:df,_ogv_audio_decoder_process_audio:Te,runPostSets:$e,stackAlloc:Ia,stackSave:Ja,stackRestore:Ka,establishStackSpace:La,setThrew:Ma,setTempRet0:Pa,getTempRet0:Qa,dynCall_viiiiii:sf}})
+
+
+// EMSCRIPTEN_END_ASM
+(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _strlen=Module["_strlen"]=asm["_strlen"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _ogv_audio_decoder_destroy=Module["_ogv_audio_decoder_destroy"]=asm["_ogv_audio_decoder_destroy"];var _ogv_audio_decoder_init=Module["_ogv_audio_decoder_init"]=asm["_ogv_audio_decoder_init"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memmove=Module["_memmove"]=asm["_memmove"];var _bitshift64Ashr=Module["_bitshift64Ashr"]=asm["_bitshift64Ashr"];var _memset=Module["_memset"]=asm["_memset"];var _ogv_audio_decoder_process_header=Module["_ogv_audio_decoder_process_header"]=asm["_ogv_audio_decoder_process_header"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _ogv_audio_decoder_process_audio=Module["_ogv_audio_decoder_process_audio"]=asm["_ogv_audio_decoder_process_audio"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];var i64Math=(function(){var goog={math:{}};goog.math.Long=(function(low,high){this.low_=low|0;this.high_=high|0});goog.math.Long.IntCache_={};goog.math.Long.fromInt=(function(value){if(-128<=value&&value<128){var cachedObj=goog.math.Long.IntCache_[value];if(cachedObj){return cachedObj}}var obj=new goog.math.Long(value|0,value<0?-1:0);if(-128<=value&&value<128){goog.math.Long.IntCache_[value]=obj}return obj});goog.math.Long.fromNumber=(function(value){if(isNaN(value)||!isFinite(value)){return goog.math.Long.ZERO}else if(value<=-goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MIN_VALUE}else if(value+1>=goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MAX_VALUE}else if(value<0){return goog.math.Long.fromNumber(-value).negate()}else{return new goog.math.Long(value%goog.math.Long.TWO_PWR_32_DBL_|0,value/goog.math.Long.TWO_PWR_32_DBL_|0)}});goog.math.Long.fromBits=(function(lowBits,highBits){return new goog.math.Long(lowBits,highBits)});goog.math.Long.fromString=(function(str,opt_radix){if(str.length==0){throw Error("number format error: empty string")}var radix=opt_radix||10;if(radix<2||36<radix){throw Error("radix out of range: "+radix)}if(str.charAt(0)=="-"){return goog.math.Long.fromString(str.substring(1),radix).negate()}else if(str.indexOf("-")>=0){throw Error('number format error: interior "-" character: '+str)}var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,8));var result=goog.math.Long.ZERO;for(var i=0;i<str.length;i+=8){var size=Math.min(8,str.length-i);var value=parseInt(str.substring(i,i+size),radix);if(size<8){var power=goog.math.Long.fromNumber(Math.pow(radix,size));result=result.multiply(power).add(goog.math.Long.fromNumber(value))}else{result=result.multiply(radixToPower);result=result.add(goog.math.Long.fromNumber(value))}}return result});goog.math.Long.TWO_PWR_16_DBL_=1<<16;goog.math.Long.TWO_PWR_24_DBL_=1<<24;goog.math.Long.TWO_PWR_32_DBL_=goog.math.Long.TWO_PWR_16_DBL_*goog.math.Long.TWO_PWR_16_DBL_;goog.math.Long.TWO_PWR_31_DBL_=goog.math.Long.TWO_PWR_32_DBL_/2;goog.math.Long.TWO_PWR_48_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_16_DBL_;goog.math.Long.TWO_PWR_64_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_32_DBL_;goog.math.Long.TWO_PWR_63_DBL_=goog.math.Long.TWO_PWR_64_DBL_/2;goog.math.Long.ZERO=goog.math.Long.fromInt(0);goog.math.Long.ONE=goog.math.Long.fromInt(1);goog.math.Long.NEG_ONE=goog.math.Long.fromInt(-1);goog.math.Long.MAX_VALUE=goog.math.Long.fromBits(4294967295|0,2147483647|0);goog.math.Long.MIN_VALUE=goog.math.Long.fromBits(0,2147483648|0);goog.math.Long.TWO_PWR_24_=goog.math.Long.fromInt(1<<24);goog.math.Long.prototype.toInt=(function(){return this.low_});goog.math.Long.prototype.toNumber=(function(){return this.high_*goog.math.Long.TWO_PWR_32_DBL_+this.getLowBitsUnsigned()});goog.math.Long.prototype.toString=(function(opt_radix){var radix=opt_radix||10;if(radix<2||36<radix){throw Error("radix out of range: "+radix)}if(this.isZero()){return"0"}if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){var radixLong=goog.math.Long.fromNumber(radix);var div=this.div(radixLong);var rem=div.multiply(radixLong).subtract(this);return div.toString(radix)+rem.toInt().toString(radix)}else{return"-"+this.negate().toString(radix)}}var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,6));var rem=this;var result="";while(true){var remDiv=rem.div(radixToPower);var intval=rem.subtract(remDiv.multiply(radixToPower)).toInt();var digits=intval.toString(radix);rem=remDiv;if(rem.isZero()){return digits+result}else{while(digits.length<6){digits="0"+digits}result=""+digits+result}}});goog.math.Long.prototype.getHighBits=(function(){return this.high_});goog.math.Long.prototype.getLowBits=(function(){return this.low_});goog.math.Long.prototype.getLowBitsUnsigned=(function(){return this.low_>=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_});goog.math.Long.prototype.getNumBitsAbs=(function(){if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){return 64}else{return this.negate().getNumBitsAbs()}}else{var val=this.high_!=0?this.high_:this.low_;for(var bit=31;bit>0;bit--){if((val&1<<bit)!=0){break}}return this.high_!=0?bit+33:bit+1}});goog.math.Long.prototype.isZero=(function(){return this.high_==0&&this.low_==0});goog.math.Long.prototype.isNegative=(function(){return this.high_<0});goog.math.Long.prototype.isOdd=(function(){return(this.low_&1)==1});goog.math.Long.prototype.equals=(function(other){return this.high_==other.high_&&this.low_==other.low_});goog.math.Long.prototype.notEquals=(function(other){return this.high_!=other.high_||this.low_!=other.low_});goog.math.Long.prototype.lessThan=(function(other){return this.compare(other)<0});goog.math.Long.prototype.lessThanOrEqual=(function(other){return this.compare(other)<=0});goog.math.Long.prototype.greaterThan=(function(other){return this.compare(other)>0});goog.math.Long.prototype.greaterThanOrEqual=(function(other){return this.compare(other)>=0});goog.math.Long.prototype.compare=(function(other){if(this.equals(other)){return 0}var thisNeg=this.isNegative();var otherNeg=other.isNegative();if(thisNeg&&!otherNeg){return-1}if(!thisNeg&&otherNeg){return 1}if(this.subtract(other).isNegative()){return-1}else{return 1}});goog.math.Long.prototype.negate=(function(){if(this.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.MIN_VALUE}else{return this.not().add(goog.math.Long.ONE)}});goog.math.Long.prototype.add=(function(other){var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00+b00;c16+=c00>>>16;c00&=65535;c16+=a16+b16;c32+=c16>>>16;c16&=65535;c32+=a32+b32;c48+=c32>>>16;c32&=65535;c48+=a48+b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.subtract=(function(other){return this.add(other.negate())});goog.math.Long.prototype.multiply=(function(other){if(this.isZero()){return goog.math.Long.ZERO}else if(other.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){return other.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}else if(other.equals(goog.math.Long.MIN_VALUE)){return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().multiply(other.negate())}else{return this.negate().multiply(other).negate()}}else if(other.isNegative()){return this.multiply(other.negate()).negate()}if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&other.lessThan(goog.math.Long.TWO_PWR_24_)){return goog.math.Long.fromNumber(this.toNumber()*other.toNumber())}var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00*b00;c16+=c00>>>16;c00&=65535;c16+=a16*b00;c32+=c16>>>16;c16&=65535;c16+=a00*b16;c32+=c16>>>16;c16&=65535;c32+=a32*b00;c48+=c32>>>16;c32&=65535;c32+=a16*b16;c48+=c32>>>16;c32&=65535;c32+=a00*b32;c48+=c32>>>16;c32&=65535;c48+=a48*b00+a32*b16+a16*b32+a00*b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.div=(function(other){if(other.isZero()){throw Error("division by zero")}else if(this.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){if(other.equals(goog.math.Long.ONE)||other.equals(goog.math.Long.NEG_ONE)){return goog.math.Long.MIN_VALUE}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ONE}else{var halfThis=this.shiftRight(1);var approx=halfThis.div(other).shiftLeft(1);if(approx.equals(goog.math.Long.ZERO)){return other.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE}else{var rem=this.subtract(other.multiply(approx));var result=approx.add(rem.div(other));return result}}}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().div(other.negate())}else{return this.negate().div(other).negate()}}else if(other.isNegative()){return this.div(other.negate()).negate()}var res=goog.math.Long.ZERO;var rem=this;while(rem.greaterThanOrEqual(other)){var approx=Math.max(1,Math.floor(rem.toNumber()/other.toNumber()));var log2=Math.ceil(Math.log(approx)/Math.LN2);var delta=log2<=48?1:Math.pow(2,log2-48);var approxRes=goog.math.Long.fromNumber(approx);var approxRem=approxRes.multiply(other);while(approxRem.isNegative()||approxRem.greaterThan(rem)){approx-=delta;approxRes=goog.math.Long.fromNumber(approx);approxRem=approxRes.multiply(other)}if(approxRes.isZero()){approxRes=goog.math.Long.ONE}res=res.add(approxRes);rem=rem.subtract(approxRem)}return res});goog.math.Long.prototype.modulo=(function(other){return this.subtract(this.div(other).multiply(other))});goog.math.Long.prototype.not=(function(){return goog.math.Long.fromBits(~this.low_,~this.high_)});goog.math.Long.prototype.and=(function(other){return goog.math.Long.fromBits(this.low_&other.low_,this.high_&other.high_)});goog.math.Long.prototype.or=(function(other){return goog.math.Long.fromBits(this.low_|other.low_,this.high_|other.high_)});goog.math.Long.prototype.xor=(function(other){return goog.math.Long.fromBits(this.low_^other.low_,this.high_^other.high_)});goog.math.Long.prototype.shiftLeft=(function(numBits){numBits&=63;if(numBits==0){return this}else{var low=this.low_;if(numBits<32){var high=this.high_;return goog.math.Long.fromBits(low<<numBits,high<<numBits|low>>>32-numBits)}else{return goog.math.Long.fromBits(0,low<<numBits-32)}}});goog.math.Long.prototype.shiftRight=(function(numBits){numBits&=63;if(numBits==0){return this}else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>numBits)}else{return goog.math.Long.fromBits(high>>numBits-32,high>=0?0:-1)}}});goog.math.Long.prototype.shiftRightUnsigned=(function(numBits){numBits&=63;if(numBits==0){return this}else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>>numBits)}else if(numBits==32){return goog.math.Long.fromBits(high,0)}else{return goog.math.Long.fromBits(high>>>numBits-32,0)}}});var navigator={appName:"Modern Browser"};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b,c){if(a!=null)if("number"==typeof a)this.fromNumber(a,b,c);else if(b==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b)}function nbi(){return new BigInteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<<dbits)-1;BigInteger.prototype.DV=1<<dbits;var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP);BigInteger.prototype.F1=BI_FP-dbits;BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM="0123456789abcdefghijklmnopqrstuvwxyz";var BI_RC=new Array;var rr,vv;rr="0".charCodeAt(0);for(vv=0;vv<=9;++vv)BI_RC[rr++]=vv;rr="a".charCodeAt(0);for(vv=10;vv<36;++vv)BI_RC[rr++]=vv;rr="A".charCodeAt(0);for(vv=10;vv<36;++vv)BI_RC[rr++]=vv;function int2char(n){return BI_RM.charAt(n)}function intAt(s,i){var c=BI_RC[s.charCodeAt(i)];return c==null?-1:c}function bnpCopyTo(r){for(var i=this.t-1;i>=0;--i)r[i]=this[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=k==8?s[i]&255:intAt(s,i);if(x<0){if(s.charAt(i)=="-")mi=true;continue}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&(1<<this.DB-sh)-1)<<sh;this[this.t++]=x>>this.DB-sh}else this[this.t-1]|=x<<sh;sh+=k;if(sh>=this.DB)sh-=this.DB}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0)this[this.t-1]|=(1<<this.DB-sh)-1<<sh}this.clamp();if(mi)BigInteger.ZERO.subTo(this,this)}function bnpClamp(){var c=this.s&this.DM;while(this.t>0&&this[this.t-1]==c)--this.t}function bnToString(b){if(this.s<0)return"-"+this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<<k)-1,d,m=false,r="",i=this.t;var p=this.DB-i*this.DB%k;if(i-->0){if(p<this.DB&&(d=this[i]>>p)>0){m=true;r=int2char(d)}while(i>=0){if(p<k){d=(this[i]&(1<<p)-1)<<k-p;d|=this[--i]>>(p+=this.DB-k)}else{d=this[i]>>(p-=k)&km;if(p<=0){p+=this.DB;--i}}if(d>0)m=true;if(m)r+=int2char(d)}}return m?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,r){var i;for(i=this.t-1;i>=0;--i)r[i+n]=this[i];for(i=n-1;i>=0;--i)r[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i<this.t;++i)r[i-n]=this[i];r.t=Math.max(this.t-n,0);r.s=this.s}function bnpLShiftTo(n,r){var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<<cbs)-1;var ds=Math.floor(n/this.DB),c=this.s<<bs&this.DM,i;for(i=this.t-1;i>=0;--i){r[i+ds+1]=this[i]>>cbs|c;c=(this[i]&bm)<<bs}for(i=ds-1;i>=0;--i)r[i]=0;r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<<bs)-1;r[0]=this[ds]>>bs;for(var i=ds+1;i<this.t;++i){r[i-ds-1]|=(this[i]&bm)<<cbs;r[i-ds]=this[i]>>bs}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<<cbs;r.t=this.t-ds;r.clamp()}function bnpSubTo(a,r){var i=0,c=0,m=Math.min(a.t,this.t);while(i<m){c+=this[i]-a[i];r[i++]=c&this.DM;c>>=this.DB}if(a.t<this.t){c-=a.s;while(i<this.t){c+=this[i];r[i++]=c&this.DM;c>>=this.DB}c+=this.s}else{c+=this.s;while(i<a.t){c-=a[i];r[i++]=c&this.DM;c>>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r[i]=0;for(i=0;i<y.t;++i)r[i+x.t]=x.am(0,y[i],r,i,0,x.t);r.s=0;r.clamp();if(this.s!=a.s)BigInteger.ZERO.subTo(r,r)}function bnpSquareTo(r){var x=this.abs();var i=r.t=2*x.t;while(--i>=0)r[i]=0;for(i=0;i<x.t-1;++i){var c=x.am(i,x[i],r,2*i,0,1);if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1))>=x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1}}if(r.t>0)r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t<pm.t){if(q!=null)q.fromInt(0);if(r!=null)this.copyTo(r);return}if(r==null)r=nbi();var y=nbi(),ts=this.s,ms=m.s;var nsh=this.DB-nbits(pm[pm.t-1]);if(nsh>0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r)}else{pm.copyTo(y);pt.copyTo(r)}var ys=y.t;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<<this.F1)+(ys>1?y[ys-2]>>this.F2:0);var d1=this.FV/yt,d2=(1<<this.F1)/yt,e=1<<this.F2;var i=r.t,j=i-ys,t=q==null?nbi():q;y.dlShiftTo(j,t);if(r.compareTo(t)>=0){r[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t<ys)y[y.t++]=0;while(--j>=0){var qd=r[--i]==y0?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))<qd){y.dlShiftTo(j,t);r.subTo(t,r);while(r[i]<--qd)r.subTo(t,r)}}if(q!=null){r.drShiftTo(ys,q);if(ts!=ms)BigInteger.ZERO.subTo(q,q)}r.t=ys;r.clamp();if(nsh>0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m){this.m=m}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<m.DB-15)-1;this.mt2=2*m.t}function montConvert(x){var r=nbi();x.abs().dlShiftTo(this.m.t,r);r.divRemTo(this.m,null,r);if(x.s<0&&r.compareTo(BigInteger.ZERO)>0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x[x.t++]=0;for(var i=0;i<this.m.t;++i){var j=x[i]&32767;var u0=j*this.mpl+((j*this.mph+(x[i]>>15)*this.mpl&this.um)<<15)&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp(e,z){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&1<<i)>0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnpFromRadix(s,b){this.fromInt(0);if(b==null)b=10;var cs=this.chunkSize(b);var d=Math.pow(b,cs),mi=false,j=0,w=0;for(var i=0;i<s.length;++i){var x=intAt(s,i);if(x<0){if(s.charAt(i)=="-"&&this.signum()==0)mi=true;continue}w=b*w+x;if(++j>=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0)}if(mi)BigInteger.ZERO.subTo(this,this)}function bnpChunkSize(r){return Math.floor(Math.LN2*this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this[0]<=0)return 0;else return 1}function bnpDMultiply(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w){if(n==0)return;while(this.t<=w)this[this.t++]=0;this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t)this[this.t++]=0;++this[w]}}function bnpToRadix(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var cs=this.chunkSize(b);var a=Math.pow(b,cs);var d=nbv(a),y=nbi(),z=nbi(),r="";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z)}return z.intValue().toString(b)+r}function bnIntValue(){if(this.s<0){if(this.t==1)return this[0]-this.DV;else if(this.t==0)return-1}else if(this.t==1)return this[0];else if(this.t==0)return 0;return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]}function bnpAddTo(a,r){var i=0,c=0,m=Math.min(a.t,this.t);while(i<m){c+=this[i]+a[i];r[i++]=c&this.DM;c>>=this.DB}if(a.t<this.t){c+=a.s;while(i<this.t){c+=this[i];r[i++]=c&this.DM;c>>=this.DB}c+=this.s}else{c+=this.s;while(i<a.t){c+=a[i];r[i++]=c&this.DM;c>>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r[i++]=c;else if(c<-1)r[i++]=this.DV+c;r.t=i;r.clamp()}BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.addTo=bnpAddTo;var Wrapper={abs:(function(l,h){var x=new goog.math.Long(l,h);var ret;if(x.isNegative()){ret=x.negate()}else{ret=x}HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_}),ensureTemps:(function(){if(Wrapper.ensuredTemps)return;Wrapper.ensuredTemps=true;Wrapper.two32=new BigInteger;Wrapper.two32.fromString("4294967296",10);Wrapper.two64=new BigInteger;Wrapper.two64.fromString("18446744073709551616",10);Wrapper.temp1=new BigInteger;Wrapper.temp2=new BigInteger}),lh2bignum:(function(l,h){var a=new BigInteger;a.fromString(h.toString(),10);var b=new BigInteger;a.multiplyTo(Wrapper.two32,b);var c=new BigInteger;c.fromString(l.toString(),10);var d=new BigInteger;c.addTo(b,d);return d}),stringify:(function(l,h,unsigned){var ret=(new goog.math.Long(l,h)).toString();if(unsigned&&ret[0]=="-"){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(ret,10);ret=new BigInteger;Wrapper.two64.addTo(bignum,ret);ret=ret.toString(10)}return ret}),fromString:(function(str,base,min,max,unsigned){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(str,base);var bigmin=new BigInteger;bigmin.fromString(min,10);var bigmax=new BigInteger;bigmax.fromString(max,10);if(unsigned&&bignum.compareTo(BigInteger.ZERO)<0){var temp=new BigInteger;bignum.addTo(Wrapper.two64,temp);bignum=temp}var error=false;if(bignum.compareTo(bigmin)<0){bignum=bigmin;error=true}else if(bignum.compareTo(bigmax)>0){bignum=bigmax;error=true}var ret=goog.math.Long.fromString(bignum.toString());HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_;if(error)throw"range error"})};return Wrapper})();function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i<argc-1;i=i+1){argv.push(allocate(intArrayFromString(args[i]),"i8",ALLOC_NORMAL));pad()}argv.push(0);argv=allocate(argv,"i32",ALLOC_NORMAL);initialStackTop=STACKTOP;try{var ret=Module["_main"](argc,argv,0);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="SimulateInfiniteLoop"){Module["noExitRuntime"]=true;return}else{if(e&&typeof e==="object"&&e.stack)Module.printErr("exception thrown: "+[e,e.stack]);throw e}}finally{calledMain=true}};function run(args){args=args||Module["arguments"];if(preloadStartTime===null)preloadStartTime=Date.now();if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(ENVIRONMENT_IS_WEB&&preloadStartTime!==null){Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms")}if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=false;if(Module["noInitialRun"]){shouldRunNow=false}Module["noExitRuntime"]=true;run();var inputBuffer,inputBufferSize;function reallocInputBuffer(size){if(inputBuffer&&inputBufferSize>=size){return inputBuffer}if(inputBuffer){Module._free(inputBuffer)}inputBufferSize=size;inputBuffer=Module._malloc(inputBufferSize);return inputBuffer}Module.loadedMetadata=!!options.audioFormat;Module.audioFormat=options.audioFormat||null;Module.audioBuffer=null;Object.defineProperty(Module,"processing",{get:function getProcessing(){return false}});Module.init=(function(callback){Module._ogv_audio_decoder_init();callback()});Module.processHeader=(function(data,callback){var len=data.byteLength;var buffer=reallocInputBuffer(len);Module.HEAPU8.set(new Uint8Array(data),buffer);var ret=Module._ogv_audio_decoder_process_header(buffer,len);callback(ret)});Module.processAudio=(function(data,callback){var len=data.byteLength;var buffer=reallocInputBuffer(len);Module.HEAPU8.set(new Uint8Array(data),buffer);var ret=Module._ogv_audio_decoder_process_audio(buffer,len);callback(ret)})
+
+
+
+
+
+ return Module;
+};
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-decoder-audio-vorbis.js b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-decoder-audio-vorbis.js
new file mode 100644
index 00000000..7815d228
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/binPlayers/ogv.js/ogv-decoder-audio-vorbis.js
@@ -0,0 +1,23 @@
+var OGVDecoderAudioVorbis = function(Module) {
+ Module = Module || {};
+
+var options=Module;Module={print:(function(str){console.log(str)})};var Module;if(!Module)Module=(typeof OGVDecoderAudioVorbis!=="undefined"?OGVDecoderAudioVorbis:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB;var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){return Module["read"](filename,true)};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i<Runtime.functionPointers.length;i++){if(!Runtime.functionPointers[i]){Runtime.functionPointers[i]=func;return 2*(1+i)}}throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}),removeFunction:(function(index){Runtime.functionPointers[(index-2)/2]=null}),warnOnce:(function(text){if(!Runtime.warnOnce.shown)Runtime.warnOnce.shown={};if(!Runtime.warnOnce.shown[text]){Runtime.warnOnce.shown[text]=1;Module.printErr(text)}}),funcWrappers:{},getFuncWrapper:(function(func,sig){assert(sig);if(!Runtime.funcWrappers[sig]){Runtime.funcWrappers[sig]={}}var sigCache=Runtime.funcWrappers[sig];if(!sigCache[func]){sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func,arguments)}}return sigCache[func]}),getCompilerSetting:(function(name){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"}),stackAlloc:(function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+15&-16;return ret}),staticAlloc:(function(size){var ret=STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+15&-16;return ret}),dynamicAlloc:(function(size){var ret=DYNAMICTOP;DYNAMICTOP=DYNAMICTOP+size|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0){if(opts&&opts.async){EmterpreterAsync.asyncFinalizers.push((function(){Runtime.stackRestore(stack)}));return}Runtime.stackRestore(stack)}return ret};var sourceRegex=/^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(jsfunc){var parsed=jsfunc.toString().match(sourceRegex).slice(1);return{arguments:parsed[0],body:parsed[1],returnValue:parsed[2]}}var JSsource={};for(var fun in JSfuncs){if(JSfuncs.hasOwnProperty(fun)){JSsource[fun]=parseJSFunc(JSfuncs[fun])}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident);var numericArgs=argTypes.every((function(type){return type==="number"}));var numericRet=returnType!=="string";if(numericRet&&numericArgs){return cfunc}var argNames=argTypes.map((function(x,i){return"$"+i}));var funcstr="(function("+argNames.join(",")+") {";var nargs=argTypes.length;if(!numericArgs){funcstr+="var stack = "+JSsource["stackSave"].body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type==="number")continue;var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";";funcstr+=convertCode.body+";";funcstr+=arg+"="+convertCode.returnValue+";"}}var cfuncname=parseJSFunc((function(){return cfunc})).returnValue;funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");";if(!numericRet){var strgfy=parseJSFunc((function(){return Pointer_stringify})).returnValue;funcstr+="ret = "+strgfy+"(ret);"}if(!numericArgs){funcstr+=JSsource["stackRestore"].body.replace("()","(stack)")+";"}funcstr+="return ret})";return eval(funcstr)}}))();Module["cwrap"]=cwrap;Module["ccall"]=ccall;function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];if(typeof curr==="function"){curr=Runtime.getFunctionIndex(curr)}type=singleType||types[i];if(type===0){i++;continue}if(type=="i64")type="i32";setValue(ret+i,curr,type);if(previousType!==type){typeSize=Runtime.getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}Module["allocate"]=allocate;function getMemory(size){if(!staticSealed)return Runtime.staticAlloc(size);if(typeof _sbrk!=="undefined"&&!_sbrk.called||!runtimeInitialized)return Runtime.dynamicAlloc(size);return _malloc(size)}Module["getMemory"]=getMemory;function Pointer_stringify(ptr,length){if(length===0||!ptr)ret