{"version":3,"sources":["webpack:///./node_modules/markdown-it/lib/common/utils.js","webpack:///./node_modules/markdown-it-emoji/lib/render.js","webpack:///./node_modules/lamejs/src/js/common.js","webpack:///./node_modules/markdown-it/lib/rules_block/heading.js","webpack:///./node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/markdown-it/lib/index.js","webpack:///./node_modules/markdown-it/lib/token.js","webpack:///./node_modules/markdown-it/lib/rules_inline/state_inline.js","webpack:///./node_modules/lamejs/src/js/CalcNoiseData.js","webpack:///./src/images/good_on.png","webpack:///./node_modules/katex/src/domTree.js","webpack:///./node_modules/core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/katex/src/ParseError.js","webpack:///./node_modules/katex/src/symbols.js","webpack:///./src/images/sending2.gif","webpack:///./node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/babel-runtime/core-js/get-iterator.js","webpack:///./node_modules/babel-runtime/core-js/object/keys.js","webpack:///./node_modules/node-libs-browser/node_modules/punycode/punycode.js","webpack:///./node_modules/markdown-it/lib/rules_block/lheading.js","webpack:///./node_modules/uslug/index.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/markdown-it/lib/presets/zero.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/markdown-it/lib/rules_inline/text_collapse.js","webpack:///./node_modules/clone/clone.js","webpack:///./node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/lamejs/src/js/VBRSeekInfo.js","webpack:///./node_modules/lamejs/src/js/PsyModel.js","webpack:///./node_modules/core-js/library/modules/_defined.js","webpack:///./node_modules/lamejs/src/js/IIISideInfo.js","webpack:///./node_modules/markdown-it/lib/rules_inline/autolink.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/unorm/lib/unorm.js","webpack:///./node_modules/uslug/lib/Z.js","webpack:///./node_modules/lamejs/src/js/GainAnalysis.js","webpack:///./node_modules/core-js/library/modules/_iter-define.js","webpack:///./node_modules/core-js/library/modules/es6.object.keys.js","webpack:///./node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/core-js/library/modules/_iobject.js","webpack:///./node_modules/uslug/lib/L.js","webpack:///./node_modules/markdown-it-toc-and-anchor/dist/index.js","webpack:///./node_modules/katex/src/buildTree.js","webpack:///./node_modules/markdown-it/lib/rules_core/block.js","webpack:///./node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/markdown-it-emoji/index.js","webpack:///./node_modules/core-js/library/modules/_to-iobject.js","webpack:///./node_modules/markdown-it-emoji/lib/normalize_opts.js","webpack:///./node_modules/lamejs/src/js/Presets.js","webpack:///./node_modules/core-js/library/modules/_to-integer.js","webpack:///./src/images/soundwave.png","webpack:///./node_modules/core-js/library/modules/_classof.js","webpack:///./node_modules/markdown-it/lib/rules_inline/newline.js","webpack:///./node_modules/markdown-it/lib/presets/commonmark.js","webpack:///./node_modules/mdurl/format.js","webpack:///./node_modules/markdown-it/lib/rules_block/paragraph.js","webpack:///./node_modules/core-js/library/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/library/fn/get-iterator.js","webpack:///./node_modules/core-js/library/modules/_iterators.js","webpack:///./node_modules/markdown-it/lib/ruler.js","webpack:///./node_modules/markdown-it-emoji/lib/replace.js","webpack:///./node_modules/lamejs/src/js/CBRNewIterationLoop.js","webpack:///./node_modules/markdown-it/lib/rules_inline/backticks.js","webpack:///./node_modules/markdown-it/lib/rules_block/list.js","webpack:///./node_modules/lamejs/src/js/Encoder.js","webpack:///./node_modules/markdown-it-mark/index.js","webpack:///./node_modules/markdown-it/lib/rules_core/normalize.js","webpack:///./node_modules/markdown-it/lib/parser_inline.js","webpack:///./node_modules/uc.micro/categories/Z/regex.js","webpack:///./node_modules/katex/src/mathMLTree.js","webpack:///./node_modules/core-js/library/modules/_iter-step.js","webpack:///./node_modules/markdown-it-abbr/index.js","webpack:///./node_modules/core-js/library/modules/_wks.js","webpack:///./node_modules/core-js/library/modules/_object-gpo.js","webpack:///./node_modules/markdown-it-sub/index.js","webpack:///./node_modules/core-js/library/modules/_shared-key.js","webpack:///./node_modules/markdown-it/lib/helpers/index.js","webpack:///./node_modules/markdown-it/lib/common/html_re.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/lamejs/src/js/Reservoir.js","webpack:///./node_modules/katex/src/Options.js","webpack:///./node_modules/core-js/library/modules/_array-includes.js","webpack:///./node_modules/markdown-it/lib/rules_inline/entity.js","webpack:///./node_modules/lamejs/src/js/Tables.js","webpack:///./node_modules/markdown-it/lib/rules_block/html_block.js","webpack:///./node_modules/core-js/library/modules/_uid.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/uslug/lib/N.js","webpack:///./node_modules/lamejs/src/js/MPEGMode.js","webpack:///./node_modules/katex/src/Style.js","webpack:///./node_modules/lamejs/src/js/BitStream.js","webpack:///./node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/markdown-it/lib/rules_inline/escape.js","webpack:///./node_modules/katex/src/Parser.js","webpack:///./node_modules/uc.micro/categories/Cf/regex.js","webpack:///./node_modules/markdown-it/lib/rules_core/state_core.js","webpack:///./node_modules/core-js/library/modules/_string-at.js","webpack:///./node_modules/lamejs/src/js/ReplayGain.js","webpack:///./node_modules/lamejs/src/js/CalcNoiseResult.js","webpack:///./node_modules/katex/src/fontMetricsData.js","webpack:///./node_modules/markdown-it/lib/parser_block.js","webpack:///./node_modules/katex/src/functions.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/markdown-it-sup/index.js","webpack:///./node_modules/uc.micro/categories/P/regex.js","webpack:///./node_modules/markdown-it/lib/renderer.js","webpack:///./node_modules/core-js/library/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/library/modules/core.get-iterator.js","webpack:///./node_modules/markdown-it/lib/helpers/parse_link_title.js","webpack:///./node_modules/core-js/library/modules/_object-dps.js","webpack:///./node_modules/uslug/lib/M.js","webpack:///./node_modules/markdown-it/lib/rules_block/table.js","webpack:///./node_modules/lamejs/src/js/FFT.js","webpack:///./node_modules/katex/src/environments.js","webpack:///./node_modules/markdown-it/lib/rules_block/state_block.js","webpack:///./node_modules/markdown-it/lib/rules_inline/balance_pairs.js","webpack:///./node_modules/core-js/library/modules/_add-to-unscopables.js","webpack:///./node_modules/markdown-it/lib/presets/default.js","webpack:///./node_modules/core-js/library/fn/object/keys.js","webpack:///./node_modules/lamejs/src/js/Version.js","webpack:///./src/images/close.png","webpack:///./node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/mdurl/decode.js","webpack:///./node_modules/core-js/library/modules/_iter-create.js","webpack:///./node_modules/core-js/library/modules/_redefine.js","webpack:///./src/images/good.png","webpack:///./node_modules/markdown-it/lib/rules_inline/strikethrough.js","webpack:///./src/components/DropDownRefresh.vue?da42","webpack:///./node_modules/markdown-it/lib/rules_inline/image.js","webpack:///./node_modules/lamejs/src/js/LameGlobalFlags.js","webpack:///./node_modules/lamejs/src/js/L3Side.js","webpack:///./node_modules/markdown-it/lib/rules_core/linkify.js","webpack:///./node_modules/markdown-it/lib/rules_block/code.js","webpack:///./node_modules/vue-markdown/dist/vue-markdown.common.js","webpack:///./src/images/refresh.png","webpack:///./node_modules/markdown-it/lib/rules_core/inline.js","webpack:///./src/images/bad.png","webpack:///./node_modules/core-js/library/modules/_object-create.js","webpack:///./node_modules/lamejs/src/js/III_psy_xmin.js","webpack:///./node_modules/katex/src/Settings.js","webpack:///./node_modules/lamejs/src/js/VBRQuantize.js","webpack:///./node_modules/markdown-it-katex/index.js","webpack:///./node_modules/uc.micro/categories/Cc/regex.js","webpack:///./node_modules/markdown-it/lib/parser_core.js","webpack:///./node_modules/markdown-it-emoji/lib/data/shortcuts.js","webpack:///./node_modules/lamejs/src/js/ATH.js","webpack:///./node_modules/js-audio-recorder/dist/recorder.js","webpack:///./node_modules/match-at/lib/matchAt.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/markdown-it/lib/rules_core/smartquotes.js","webpack:///./node_modules/linkify-it/lib/re.js","webpack:///./node_modules/katex/src/utils.js","webpack:///./node_modules/core-js/library/modules/_to-length.js","webpack:///./src/components/DropDownRefresh.vue","webpack:///./src/components/DropDownRefresh.vue?87a6","webpack:///./src/components/DropDownRefresh.vue?fb82","webpack:///./src/components/DropDownRefresh.vue?efe0","webpack:///./node_modules/core-js/library/modules/_library.js","webpack:///./node_modules/markdown-it/lib/rules_inline/text.js","webpack:///./node_modules/lamejs/src/js/QuantizePVT.js","webpack:///./node_modules/markdown-it/lib/rules_core/replacements.js","webpack:///./node_modules/markdown-it/lib/common/entities.js","webpack:///./node_modules/lamejs/src/js/LameInternalFlags.js","webpack:///./node_modules/markdown-it-task-lists/index.js","webpack:///./node_modules/markdown-it/lib/rules_block/fence.js","webpack:///./node_modules/lamejs/src/js/NsPsy.js","webpack:///./node_modules/markdown-it/lib/rules_inline/html_inline.js","webpack:///./node_modules/core-js/library/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/library/modules/_object-keys.js","webpack:///./node_modules/mdurl/encode.js","webpack:///./node_modules/katex/katex.js","webpack:///./node_modules/markdown-it/lib/rules_inline/emphasis.js","webpack:///./node_modules/katex/src/buildCommon.js","webpack:///./node_modules/katex/src/parseData.js","webpack:///./node_modules/uc.micro/properties/Any/regex.js","webpack:///./node_modules/katex/src/fontMetrics.js","webpack:///./node_modules/markdown-it/lib/rules_inline/link.js","webpack:///./node_modules/core-js/library/modules/_object-sap.js","webpack:///./node_modules/markdown-it-ins/index.js","webpack:///./node_modules/katex/src/buildHTML.js","webpack:///./node_modules/markdown-it/index.js","webpack:///./node_modules/uc.micro/index.js","webpack:///./node_modules/markdown-it/lib/rules_block/reference.js","webpack:///./src/images/bad_on.png","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/mdurl/index.js","webpack:///./node_modules/lamejs/src/js/Takehiro.js","webpack:///./node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/js-audio-recorder/index.js","webpack:///./node_modules/mdurl/parse.js","webpack:///./node_modules/lamejs/src/js/index.js","webpack:///./node_modules/lamejs/src/js/Quantize.js","webpack:///./node_modules/core-js/library/modules/_shared.js","webpack:///./node_modules/lamejs/src/js/Lame.js","webpack:///./node_modules/markdown-it/lib/helpers/parse_link_label.js","webpack:///./node_modules/lamejs/src/js/VBRTag.js","webpack:///./node_modules/markdown-it/lib/common/html_blocks.js","webpack:///./node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/markdown-it/lib/helpers/parse_link_destination.js","webpack:///./node_modules/uslug/lib/uslug.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/katex/src/Lexer.js","webpack:///./node_modules/katex/src/buildMathML.js","webpack:///./node_modules/core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/markdown-it-footnote/index.js","webpack:///./node_modules/js-base64/base64.mjs","webpack:///./node_modules/markdown-it/lib/rules_block/blockquote.js","webpack:///./node_modules/katex/src/delimiter.js","webpack:///./node_modules/katex/src/parseTree.js","webpack:///./node_modules/lamejs/src/js/MeanBits.js","webpack:///./node_modules/lamejs/src/js/III_psy_ratio.js","webpack:///./src/images/share2.png","webpack:///./node_modules/lamejs/src/js/GrInfo.js","webpack:///./node_modules/lamejs/src/js/NewMDCT.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/linkify-it/index.js","webpack:///./node_modules/markdown-it/lib/rules_block/hr.js","webpack:///./node_modules/lamejs/src/js/ScaleFac.js","webpack:///./node_modules/markdown-it-deflist/index.js","webpack:///./src/images/mai.png"],"names":["_class","obj","Object","prototype","toString","call","isString","_hasOwnProperty","hasOwnProperty","has","object","key","assign","sources","Array","slice","arguments","forEach","source","TypeError","keys","arrayReplaceAt","src","pos","newElements","concat","isValidEntityCode","c","fromCodePoint","surrogate1","surrogate2","String","fromCharCode","UNESCAPE_MD_RE","ENTITY_RE","UNESCAPE_ALL_RE","RegExp","DIGITAL_ENTITY_TEST_RE","entities","replaceEntityPattern","match","name","code","charCodeAt","test","toLowerCase","parseInt","unescapeMd","str","indexOf","replace","unescapeAll","escaped","entity","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","replaceUnsafeChar","ch","escapeHtml","REGEXP_ESCAPE_RE","escapeRE","isSpace","isWhiteSpace","UNICODE_PUNCT_RE","isPunctChar","isMdAsciiPunct","normalizeReference","trim","toUpperCase","exports","lib","mdurl","ucmicro","module","tokens","idx","content","new_byte","count","Int8Array","new_short","Int16Array","new_int","Int32Array","new_float","Float32Array","new_double","Float64Array","new_float_n","args","length","sz","A","i","push","new_int_n","new_short_n","new_array_n","Arrays","a","fromIndex","toIndex","val","System","srcPos","dest","destPos","srcEnd","out","println","message","console","log","printf","apply","Util","ShortBlock","ordinal","this","SQRT2","FAST_LOG10","x","Math","log10","FAST_LOG10_X","y","short_block_allowed","short_block_coupled","short_block_dispensed","short_block_forced","Float","VbrMode","MAX_VALUE","vbr_off","vbr_mt","vbr_rh","vbr_abr","vbr_mtrh","vbr_default","assert","state","startLine","endLine","silent","level","tmp","token","bMarks","tShift","max","eMarks","skipSpacesBack","skipCharsBack","line","markup","map","children","it","utils","helpers","Renderer","ParserCore","ParserBlock","ParserInline","LinkifyIt","punycode","config","zero","commonmark","BAD_PROTO_RE","GOOD_DATA_RE","validateLink","url","RECODE_HOSTNAME_FOR","normalizeLink","parsed","parse","hostname","protocol","toASCII","er","encode","format","normalizeLinkText","toUnicode","decode","MarkdownIt","presetName","options","inline","block","core","renderer","linkify","configure","set","presets","self","Error","components","rules","ruler","enableOnly","rules2","ruler2","enable","list","ignoreInvalid","result","isArray","chain","missed","filter","disable","use","plugin","env","State","process","render","parseInline","inlineMode","renderInline","Token","type","tag","nesting","attrs","info","meta","hidden","attrIndex","len","attrPush","attrData","attrSet","value","attrGet","attrJoin","StateInline","md","outTokens","posMax","pending","pendingLevel","cache","delimiters","pushPending","scanDelims","start","canSplitWord","lastChar","nextChar","can_open","can_close","isLastWhiteSpace","isLastPunctChar","isNextWhiteSpace","isNextPunctChar","left_flanking","right_flanking","marker","common","CalcNoiseData","global_gain","sfb_count1","step","noise","noise_log","createClass","classes","splice","join","span","height","depth","maxFontSize","style","attributes","documentFragment","symbolNode","italic","skew","setAttribute","attribute","toNode","document","createElement","className","attr","appendChild","toMarkup","escape","styles","hyphenate","frag","createDocumentFragment","node","createTextNode","marginRight","needsSpan","toInteger","min","index","ParseError","lexer","position","error","undefined","input","_input","begin","end","__proto__","defineSymbol","mode","font","group","math","text","main","ams","accent","bin","close","inner","mathord","op","open","punct","rel","spacing","textord","mathTextSymbols","charAt","textSymbols","letters","$at","iterated","_t","_i","point","O","done","split","__esModule","root","nodeType","freeGlobal","global","window","maxInt","base","tMin","tMax","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","stringFromCharCode","RangeError","array","fn","mapDomain","string","parts","labels","encoded","ucs2decode","extra","output","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","basic","j","oldi","w","t","baseMinusT","inputLength","n","bias","lastIndexOf","handledCPCount","basicLength","m","q","currentValue","handledCPCountPlusOne","qMinusT","terminate","l","nextLine","terminatorRules","getRules","isEmpty","sCount","blkIndent","skipChars","skipSpaces","getLines","isObject","S","valueOf","html","xhtmlOut","breaks","langPrefix","typographer","quotes","highlight","maxNesting","is","curr","last","_instanceof","nativeMap","nativeSet","nativePromise","Map","_","Set","Promise","clone","parent","circular","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","_clone","child","proto","resolve","reject","then","err","__isArray","__isRegExp","__getRegExpFlags","lastIndex","__isDate","Date","getTime","isBuffer","allocUnsafe","copy","create","getPrototypeOf","keyChild","valueChild","entryChild","add","getOwnPropertyDescriptor","getOwnPropertySymbols","symbols","symbol","descriptor","enumerable","defineProperty","allPropertyNames","getOwnPropertyNames","propertyName","Infinity","__objToStr","o","re","flags","ignoreCase","multiline","clonePrototype","defined","VBRSeekInfo","sum","seen","want","size","bag","nVbrNumFrames","nBytesWritten","TotalFrameSize","FFT","Encoder","PsyModel","fft","LOG10","rpelev","rpelev2","rpelev_s","rpelev2_s","DELBARK","VO_SCALE","BLKSIZE","temporalmask_sustain_sec","NS_PREECHO_ATT0","NS_PREECHO_ATT1","NS_PREECHO_ATT2","NS_MSFIX","NSFIRLEN","LN_TO_LOG10","NON_LINEAR_SCALE_ENERGY","psycho_loudness_approx","energy","gfc","loudness_power","ATH","eql_w","compute_ffts","gfp","fftenergy","fftenergy_s","wsamp_l","wsamp_lPos","wsamp_s","wsamp_sPos","gr_out","chn","buffer","bufPos","internal_flags","fft_long","fft_short","r","b","BLKSIZE_s","im","totalenergy","HBLKSIZE","tot_ener","analysis","pinfo","energy_save","pe","athaa_loudapprox","loudness_sq","loudness_sq_save","ma_max_i1","ma_max_i2","ma_max_m","I1LIMIT","I2LIMIT","MLIMIT","tab","init_mask_add_max_values","pow","table1","table2","table3","mask_add","m1","m2","kk","shortblock","ratio","f","cb_s","adjust","cb_l","table2_","vbrpsy_mask_add","calc_interchannel_masking","channels_out","sb","SBMAX_l","thm","SBMAX_s","sblock","s","msfix1","mld","mld_l","en","rmid","rside","mld_s","ns_msfix","msfix","athadjust","msfix2","athlower","ath","bm_l","thmLR","thmM","thmS","bm_s","convert_partition2scalefac_s","eb","thr","enn","thmm","bo_s_sb","bo_s","npart_s","b_lim","w_curr","PSY","bo_s_weight","w_next","convert_partition2scalefac_l","bo_l_sb","bo_l","npart_l","bo_l_weight","compute_masking_s","ebb","numlines_s","el","s3ind_s","ecb","s3_ss","nb_s1","blocktype_old","SHORT_TYPE","nb_s2","CBANDS","block_type_set","uselongblock","blocktype_d","blocktype","short_blocks","NORM_TYPE","START_TYPE","STOP_TYPE","NS_INTERP","regcoef_s","pecalc_s","mr","masking_lower","pe_s","regcoef_l","pecalc_l","pe_l","calc_energy","avg","numlines_l","rnumlines_l","calc_mask_index_l","mask_idx","last_tab_entry","fircoef","vbrpsy_compute_fft_l","vbrpsy_compute_fft_s","vbrpsy_compute_loudness_approximation_l","L3psycho_anal_ns","masking_ratio","masking_MS_ratio","percep_entropy","percep_MS_entropy","numchn","pcfact","wsamp_L","wsamp_S","eb_l","eb_s","ns_hpfsmpl","mask_idx_l","mask_idx_s","fill","MPEGMode","JOINT_STEREO","VBR","ResvMax","firbuf","firbufPos","sum1","sum2","attackThreshold","en_subshort","en_short","attack_intensity","ns_uselongblock","ns_attacks","HBLKSIZE_s","nsPsy","last_en_subshort","pf","pfPos","pfe","p","abs","ers","ers_save","attackthre_s","attackthre","lastAttacks","s3ind","eb2","s3_ll","nb_1","nb_2","STEREO","interChRatio","ATHlower","ppe","ppePos","fircoef_","vbrpsy_attack_detection","sub_short_factor","n_chn_out","n_chn_psy","factor","u","v","vbrpsy_skip_masking_s","vbrpsy_skip_masking_l","psyvbr_calc_mask_index_s","vbrpsy_compute_masking_s","float","int","dd","dd_n","avg_mask","minval_s","vbrpsy_compute_masking_l","ecb_limit","ecb_limit_2","ecb_limit_1","minval_l","vbrpsy_compute_block_type","vbrpsy_apply_block_type","vbrpsy_compute_MS_thresholds","cb_mld","ath_cb","ebM","ebS","thmL","thmR","mld_m","thmMS","s3_func_x","bark","hf_slope","tempy","tempx","exp","norm_s3_func_x","lim_a","lim_b","h","norm","s3_func","temp","sqrt","freq2bark","freq","atan","init_numline","numlines","bo","bm","bval","bval_width","bo_w","sfreq","blksize","scalepos","deltafreq","sbmax","b_frq","sample_freq_frac","partition","ni","j2","bark1","sfb","i1","i2","arg","f_tmp","cos","PI","bark2","init_s3_values","npart","use_old_s3","s3","numberOfNoneZero","s3_x_norm","stereo_demask","ATHformula_GB","L3psycho_anal_vbr","ch01","mld_cb_l","mld_cb_s","new_thmm","psymodel_init","useOldS3","bvl_a","bvl_b","snr_l_a","snr_l_b","snr_s_a","snr_s_b","out_samplerate","experimentalZ","ms_ener_ratio_old","scalefac_band","snr","ATHformula","init_fft","decay","exp_nspsytune","frame_duration","mode_gr","adjustLimit","ATHtype","freq_inc","eql_balance","ATHcurve","GrInfo","IIISideInfo","tt","main_data_begin","private_bits","resvDrain_pre","resvDrain_post","scfsi","gr","EMAIL_RE","AUTOLINK_RE","tail","linkMatch","emailMatch","fullUrl","exec","e","DEFAULT_FEATURE","CACHE_THRESHOLD","SBase","LBase","VBase","TBase","LCount","VCount","TCount","NCount","SCount","UChar","cp","feature","codepoint","cacheCounter","fromCache","next","needFeature","ret","fromData","hash","dunit","udata","fromCpOnly","fromRuleBasedJamo","SIndex","TIndex","fromCpFilter","strategies","reduceRight","strategy","isHighSurrogate","isLowSurrogate","prepFeature","getDecomp","isCompatibility","isExclude","getCanonicalClass","getComposite","following","UCharIterator","cursor","d","RecursDecompIterator","cano","canonical","resBuf","recursiveDecomp","uchar","decomp","shift","DecompIterator","cc","inspt","uchar2","cc2","CompIterator","procBuf","lastClass","starter","composite","createIterator","normalize","nfd","nfkd","nfc","nfkc","0","60","824","61","62","65","768","769","770","771","772","774","775","776","777","778","780","783","785","803","805","808","66","817","67","807","68","813","69","816","70","71","72","814","73","74","75","76","77","78","79","779","795","80","82","83","806","84","85","804","86","87","88","89","90","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","114","115","116","117","118","119","120","121","122","160","168","834","170","175","178","179","180","181","184","185","186","188","189","190","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","209","210","211","212","213","214","216","217","218","219","220","221","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","241","242","243","244","245","246","248","249","250","251","252","253","255","256","257","258","259","260","261","262","263","264","265","266","267","268","269","270","271","274","275","276","277","278","279","280","281","282","283","284","285","286","287","288","289","290","291","292","293","296","297","298","299","300","301","302","303","304","306","307","308","309","310","311","313","314","315","316","317","318","319","320","323","324","325","326","327","328","329","332","333","334","335","336","337","340","341","342","343","344","345","346","347","348","349","350","351","352","353","354","355","356","357","360","361","362","363","364","365","366","367","368","369","370","371","372","373","374","375","376","377","378","379","380","381","382","383","416","417","431","432","439","452","453","454","455","456","457","458","459","460","461","462","463","464","465","466","467","468","469","470","471","472","473","474","475","476","478","479","480","481","482","483","486","487","488","489","490","491","492","493","494","495","496","497","498","499","500","501","504","505","506","507","508","509","510","511","66045","512","513","514","515","516","517","518","519","520","521","522","523","524","525","526","527","528","529","530","531","532","533","534","535","536","537","538","539","542","543","550","551","552","553","554","555","556","557","558","559","560","561","562","563","658","688","689","690","691","692","693","694","695","696","728","729","730","731","732","733","736","737","738","739","740","66272","773","781","782","784","786","787","788","789","790","791","792","793","794","796","797","798","799","800","801","802","809","810","811","812","815","818","819","820","821","822","823","825","826","827","828","829","830","831","832","833","835","836","837","838","839","840","841","842","843","844","845","846","848","849","850","851","852","853","854","855","856","857","858","859","860","861","862","863","864","865","866","867","868","869","870","871","872","873","874","875","876","877","878","879","884","890","894","900","901","902","903","904","905","906","908","910","911","912","913","917","919","921","927","929","933","937","938","939","940","941","942","943","944","945","949","951","953","959","961","965","969","970","971","972","973","974","976","977","978","979","980","981","982","1008","1009","1010","1012","1013","1017","66422","66423","66424","66425","66426","1024","1025","1027","1030","1031","1036","1037","1038","1040","1043","1045","1046","1047","1048","1049","1050","1054","1059","1063","1067","1069","1072","1075","1077","1078","1079","1080","1081","1082","1086","1091","1095","1099","1101","1104","1105","1107","1110","1111","1116","1117","1118","1140","1141","1142","1143","1155","1156","1157","1158","1159","1217","1218","1232","1233","1234","1235","1238","1239","1240","1241","1242","1243","1244","1245","1246","1247","1250","1251","1252","1253","1254","1255","1256","1257","1258","1259","1260","1261","1262","1263","1264","1265","1266","1267","1268","1269","1272","1273","1280","1415","1425","1426","1427","1428","1429","1430","1431","1432","1433","1434","1435","1436","1437","1438","1439","1440","1441","1442","1443","1444","1445","1446","1447","1448","1449","1450","1451","1452","1453","1454","1455","1456","1457","1458","1459","1460","1461","1462","1463","1464","1465","1466","1467","1468","1469","1471","1473","1474","1476","1477","1479","1536","1552","1553","1554","1555","1556","1557","1558","1559","1560","1561","1562","1570","1571","1572","1573","1574","1575","1619","1620","1621","1608","1610","1611","1612","1613","1614","1615","1616","1617","1618","1622","1623","1624","1625","1626","1627","1628","1629","1630","1631","1648","1653","1654","1655","1656","1728","1729","1730","1746","1747","1749","1750","1751","1752","1753","1754","1755","1756","1759","1760","1761","1762","1763","1764","1767","1768","1770","1771","1772","1773","1792","1809","1840","1841","1842","1843","1844","1845","1846","1847","1848","1849","1850","1851","1852","1853","1854","1855","1856","1857","1858","1859","1860","1861","1862","1863","1864","1865","1866","2027","2028","2029","2030","2031","2032","2033","2034","2035","2048","2070","2071","2072","2073","2075","2076","2077","2078","2079","2080","2081","2082","2083","2085","2086","2087","2089","2090","2091","2092","2093","2137","2138","2139","2276","2277","2278","2279","2280","2281","2282","2283","2284","2285","2286","2287","2288","2289","2290","2291","2292","2293","2294","2295","2296","2297","2298","2299","2300","2301","2302","2303","2304","2344","2364","2345","2352","2353","2355","2356","2381","2385","2386","2387","2388","2392","2393","2394","2395","2396","2397","2398","2399","2492","2503","2494","2519","2507","2508","2509","2524","2525","2527","2560","2611","2614","2620","2637","2649","2650","2651","2654","2748","2765","68109","68111","68152","68153","68154","68159","68325","68326","2816","2876","2887","2878","2902","2903","2888","2891","2892","2893","2908","2909","2962","3031","2964","3014","3006","3015","3018","3019","3020","3021","3072","3142","3158","3144","3149","3157","3260","3263","3285","3264","3270","3266","3286","3271","3272","3274","3275","3277","3328","3398","3390","3415","3399","3402","3403","3404","3405","3530","3545","3535","3551","3546","3548","3549","3550","3584","3635","3640","3641","3642","3656","3657","3658","3659","3763","3768","3769","3784","3785","3786","3787","3804","3805","3840","3852","3864","3865","3893","3895","3897","3907","3917","3922","3927","3932","3945","3953","3954","3955","3956","3957","3958","3959","3960","3961","3962","3963","3964","3965","3968","3969","3970","3971","3972","3974","3975","3987","3997","4002","4007","4012","4025","4038","4096","4133","4142","4134","4151","4153","4154","4237","4348","69702","69759","69785","69818","69786","69787","69788","69797","69803","69817","4352","69888","69889","69890","69934","69935","69937","69927","69938","69939","69940","70003","70080","4608","70197","70198","70377","70378","4864","4957","4958","4959","70460","70471","70462","70487","70475","70476","70477","70502","70503","70504","70505","70506","70507","70508","70512","70513","70514","70515","70516","5120","70841","70832","70842","70845","70843","70844","70846","70850","70851","5376","71096","71087","71097","71098","71099","71103","71104","5632","71231","71350","71351","5888","5908","5940","6098","6109","6144","6313","6400","6457","6458","6459","6656","6679","6680","6752","6773","6774","6775","6776","6777","6778","6779","6780","6783","6832","6833","6834","6835","6836","6837","6838","6839","6840","6841","6842","6843","6844","6845","6912","6917","6965","6918","6919","6920","6921","6922","6923","6924","6925","6926","6929","6930","6964","6970","6971","6972","6973","6974","6975","6976","6977","6978","6979","6980","7019","7020","7021","7022","7023","7024","7025","7026","7027","7082","7083","7142","7154","7155","7168","7223","7376","7377","7378","7380","7381","7382","7383","7384","7385","7386","7387","7388","7389","7390","7391","7392","7394","7395","7396","7397","7398","7399","7400","7405","7412","7416","7417","7424","7468","7469","7470","7472","7473","7474","7475","7476","7477","7478","7479","7480","7481","7482","7484","7485","7486","7487","7488","7489","7490","7491","7492","7493","7494","7495","7496","7497","7498","7499","7500","7501","7503","7504","7505","7506","7507","7508","7509","7510","7511","7512","7513","7514","7515","7516","7517","7518","7519","7520","7521","7522","7523","7524","7525","7526","7527","7528","7529","7530","7544","7579","7580","7581","7582","7583","7584","7585","7586","7587","7588","7589","7590","7591","7592","7593","7594","7595","7596","7597","7598","7599","7600","7601","7602","7603","7604","7605","7606","7607","7608","7609","7610","7611","7612","7613","7614","7615","7616","7617","7618","7619","7620","7621","7622","7623","7624","7625","7626","7627","7628","7629","7630","7631","7632","7633","7634","7635","7636","7637","7638","7639","7640","7641","7642","7643","7644","7645","7646","7647","7648","7649","7650","7651","7652","7653","7654","7655","7656","7657","7658","7659","7660","7661","7662","7663","7664","7665","7666","7667","7668","7669","7676","7677","7678","7679","7680","7681","7682","7683","7684","7685","7686","7687","7688","7689","7690","7691","7692","7693","7694","7695","7696","7697","7698","7699","7700","7701","7702","7703","7704","7705","7706","7707","7708","7709","7710","7711","7712","7713","7714","7715","7716","7717","7718","7719","7720","7721","7722","7723","7724","7725","7726","7727","7728","7729","7730","7731","7732","7733","7734","7735","7736","7737","7738","7739","7740","7741","7742","7743","7744","7745","7746","7747","7748","7749","7750","7751","7752","7753","7754","7755","7756","7757","7758","7759","7760","7761","7762","7763","7764","7765","7766","7767","7768","7769","7770","7771","7772","7773","7774","7775","7776","7777","7778","7779","7780","7781","7782","7783","7784","7785","7786","7787","7788","7789","7790","7791","7792","7793","7794","7795","7796","7797","7798","7799","7800","7801","7802","7803","7804","7805","7806","7807","7808","7809","7810","7811","7812","7813","7814","7815","7816","7817","7818","7819","7820","7821","7822","7823","7824","7825","7826","7827","7828","7829","7830","7831","7832","7833","7834","7835","7840","7841","7842","7843","7844","7845","7846","7847","7848","7849","7850","7851","7852","7853","7854","7855","7856","7857","7858","7859","7860","7861","7862","7863","7864","7865","7866","7867","7868","7869","7870","7871","7872","7873","7874","7875","7876","7877","7878","7879","7880","7881","7882","7883","7884","7885","7886","7887","7888","7889","7890","7891","7892","7893","7894","7895","7896","7897","7898","7899","7900","7901","7902","7903","7904","7905","7906","7907","7908","7909","7910","7911","7912","7913","7914","7915","7916","7917","7918","7919","7920","7921","7922","7923","7924","7925","7926","7927","7928","7929","7936","7937","7938","7939","7940","7941","7942","7943","7944","7945","7946","7947","7948","7949","7950","7951","7952","7953","7954","7955","7956","7957","7960","7961","7962","7963","7964","7965","7968","7969","7970","7971","7972","7973","7974","7975","7976","7977","7978","7979","7980","7981","7982","7983","7984","7985","7986","7987","7988","7989","7990","7991","7992","7993","7994","7995","7996","7997","7998","7999","8000","8001","8002","8003","8004","8005","8008","8009","8010","8011","8012","8013","8016","8017","8018","8019","8020","8021","8022","8023","8025","8027","8029","8031","8032","8033","8034","8035","8036","8037","8038","8039","8040","8041","8042","8043","8044","8045","8046","8047","8048","8049","8050","8051","8052","8053","8054","8055","8056","8057","8058","8059","8060","8061","8064","8065","8066","8067","8068","8069","8070","8071","8072","8073","8074","8075","8076","8077","8078","8079","8080","8081","8082","8083","8084","8085","8086","8087","8088","8089","8090","8091","8092","8093","8094","8095","8096","8097","8098","8099","8100","8101","8102","8103","8104","8105","8106","8107","8108","8109","8110","8111","8112","8113","8114","8115","8116","8118","8119","8120","8121","8122","8123","8124","8125","8126","8127","8128","8129","8130","8131","8132","8134","8135","8136","8137","8138","8139","8140","8141","8142","8143","8144","8145","8146","8147","8150","8151","8152","8153","8154","8155","8157","8158","8159","8160","8161","8162","8163","8164","8165","8166","8167","8168","8169","8170","8171","8172","8173","8174","8175","8178","8179","8180","8182","8183","8184","8185","8186","8187","8188","8189","8190","8192","8193","8194","8195","8196","8197","8198","8199","8200","8201","8202","8209","8215","8228","8229","8230","8239","8243","8244","8246","8247","8252","8254","8263","8264","8265","8279","8287","8304","8305","8308","8309","8310","8311","8312","8313","8314","8315","8316","8317","8318","8319","8320","8321","8322","8323","8324","8325","8326","8327","8328","8329","8330","8331","8332","8333","8334","8336","8337","8338","8339","8340","8341","8342","8343","8344","8345","8346","8347","8348","8360","8400","8401","8402","8403","8404","8405","8406","8407","8408","8409","8410","8411","8412","8417","8421","8422","8423","8424","8425","8426","8427","8428","8429","8430","8431","8432","8448","8449","8450","8451","8453","8454","8455","8457","8458","8459","8460","8461","8462","8463","8464","8465","8466","8467","8469","8470","8473","8474","8475","8476","8477","8480","8481","8482","8484","8486","8488","8490","8491","8492","8493","8495","8496","8497","8499","8500","8501","8502","8503","8504","8505","8507","8508","8509","8510","8511","8512","8517","8518","8519","8520","8521","8528","8529","8530","8531","8532","8533","8534","8535","8536","8537","8538","8539","8540","8541","8542","8543","8544","8545","8546","8547","8548","8549","8550","8551","8552","8553","8554","8555","8556","8557","8558","8559","8560","8561","8562","8563","8564","8565","8566","8567","8568","8569","8570","8571","8572","8573","8574","8575","8585","8592","8594","8596","8602","8603","8622","8653","8654","8655","8656","8658","8660","8704","8707","8708","8712","8713","8715","8716","8739","8740","8741","8742","8748","8749","8751","8752","8764","8769","8771","8772","8773","8775","8776","8777","8781","8800","8801","8802","8804","8805","8813","8814","8815","8816","8817","8818","8819","8820","8821","8822","8823","8824","8825","8826","8827","8828","8829","8832","8833","8834","8835","8836","8837","8838","8839","8840","8841","8849","8850","8866","8872","8873","8875","8876","8877","8878","8879","8882","8883","8884","8885","8928","8929","8930","8931","8938","8939","8940","8941","8960","9001","9002","9216","9312","9313","9314","9315","9316","9317","9318","9319","9320","9321","9322","9323","9324","9325","9326","9327","9328","9329","9330","9331","9332","9333","9334","9335","9336","9337","9338","9339","9340","9341","9342","9343","9344","9345","9346","9347","9348","9349","9350","9351","9352","9353","9354","9355","9356","9357","9358","9359","9360","9361","9362","9363","9364","9365","9366","9367","9368","9369","9370","9371","9372","9373","9374","9375","9376","9377","9378","9379","9380","9381","9382","9383","9384","9385","9386","9387","9388","9389","9390","9391","9392","9393","9394","9395","9396","9397","9398","9399","9400","9401","9402","9403","9404","9405","9406","9407","9408","9409","9410","9411","9412","9413","9414","9415","9416","9417","9418","9419","9420","9421","9422","9423","9424","9425","9426","9427","9428","9429","9430","9431","9432","9433","9434","9435","9436","9437","9438","9439","9440","9441","9442","9443","9444","9445","9446","9447","9448","9449","9450","10752","10764","10868","10869","10870","10972","11264","11388","11389","11503","11504","11505","11520","11631","11647","11744","11745","11746","11747","11748","11749","11750","11751","11752","11753","11754","11755","11756","11757","11758","11759","11760","11761","11762","11763","11764","11765","11766","11767","11768","11769","11770","11771","11772","11773","11774","11775","11776","11935","12019","12032","12033","12034","12035","12036","12037","12038","12039","12040","12041","12042","12043","12044","12045","12046","12047","12048","12049","12050","12051","12052","12053","12054","12055","12056","12057","12058","12059","12060","12061","12062","12063","12064","12065","12066","12067","12068","12069","12070","12071","12072","12073","12074","12075","12076","12077","12078","12079","12080","12081","12082","12083","12084","12085","12086","12087","12088","12089","12090","12091","12092","12093","12094","12095","12096","12097","12098","12099","12100","12101","12102","12103","12104","12105","12106","12107","12108","12109","12110","12111","12112","12113","12114","12115","12116","12117","12118","12119","12120","12121","12122","12123","12124","12125","12126","12127","12128","12129","12130","12131","12132","12133","12134","12135","12136","12137","12138","12139","12140","12141","12142","12143","12144","12145","12146","12147","12148","12149","12150","12151","12152","12153","12154","12155","12156","12157","12158","12159","12160","12161","12162","12163","12164","12165","12166","12167","12168","12169","12170","12171","12172","12173","12174","12175","12176","12177","12178","12179","12180","12181","12182","12183","12184","12185","12186","12187","12188","12189","12190","12191","12192","12193","12194","12195","12196","12197","12198","12199","12200","12201","12202","12203","12204","12205","12206","12207","12208","12209","12210","12211","12212","12213","12214","12215","12216","12217","12218","12219","12220","12221","12222","12223","12224","12225","12226","12227","12228","12229","12230","12231","12232","12233","12234","12235","12236","12237","12238","12239","12240","12241","12242","12243","12244","12245","12288","12330","12331","12332","12333","12334","12335","12342","12344","12345","12346","12358","12441","12363","12364","12365","12366","12367","12368","12369","12370","12371","12372","12373","12374","12375","12376","12377","12378","12379","12380","12381","12382","12383","12384","12385","12386","12388","12389","12390","12391","12392","12393","12399","12442","12400","12401","12402","12403","12404","12405","12406","12407","12408","12409","12410","12411","12412","12413","12436","12443","12444","12445","12446","12447","12454","12459","12460","12461","12462","12463","12464","12465","12466","12467","12468","12469","12470","12471","12472","12473","12474","12475","12476","12477","12478","12479","12480","12481","12482","12484","12485","12486","12487","12488","12489","12495","12496","12497","12498","12499","12500","12501","12502","12503","12504","12505","12506","12507","12508","12509","12527","12528","12529","12530","12532","12535","12536","12537","12538","12541","12542","12543","12544","12593","12594","12595","12596","12597","12598","12599","12600","12601","12602","12603","12604","12605","12606","12607","12608","12609","12610","12611","12612","12613","12614","12615","12616","12617","12618","12619","12620","12621","12622","12623","12624","12625","12626","12627","12628","12629","12630","12631","12632","12633","12634","12635","12636","12637","12638","12639","12640","12641","12642","12643","12644","12645","12646","12647","12648","12649","12650","12651","12652","12653","12654","12655","12656","12657","12658","12659","12660","12661","12662","12663","12664","12665","12666","12667","12668","12669","12670","12671","12672","12673","12674","12675","12676","12677","12678","12679","12680","12681","12682","12683","12684","12685","12686","12690","12691","12692","12693","12694","12695","12696","12697","12698","12699","12700","12701","12702","12703","12800","12801","12802","12803","12804","12805","12806","12807","12808","12809","12810","12811","12812","12813","12814","12815","12816","12817","12818","12819","12820","12821","12822","12823","12824","12825","12826","12827","12828","12829","12830","12832","12833","12834","12835","12836","12837","12838","12839","12840","12841","12842","12843","12844","12845","12846","12847","12848","12849","12850","12851","12852","12853","12854","12855","12856","12857","12858","12859","12860","12861","12862","12863","12864","12865","12866","12867","12868","12869","12870","12871","12880","12881","12882","12883","12884","12885","12886","12887","12888","12889","12890","12891","12892","12893","12894","12895","12896","12897","12898","12899","12900","12901","12902","12903","12904","12905","12906","12907","12908","12909","12910","12911","12912","12913","12914","12915","12916","12917","12918","12919","12920","12921","12922","12923","12924","12925","12926","12928","12929","12930","12931","12932","12933","12934","12935","12936","12937","12938","12939","12940","12941","12942","12943","12944","12945","12946","12947","12948","12949","12950","12951","12952","12953","12954","12955","12956","12957","12958","12959","12960","12961","12962","12963","12964","12965","12966","12967","12968","12969","12970","12971","12972","12973","12974","12975","12976","12977","12978","12979","12980","12981","12982","12983","12984","12985","12986","12987","12988","12989","12990","12991","12992","12993","12994","12995","12996","12997","12998","12999","13000","13001","13002","13003","13004","13005","13006","13007","13008","13009","13010","13011","13012","13013","13014","13015","13016","13017","13018","13019","13020","13021","13022","13023","13024","13025","13026","13027","13028","13029","13030","13031","13032","13033","13034","13035","13036","13037","13038","13039","13040","13041","13042","13043","13044","13045","13046","13047","13048","13049","13050","13051","13052","13053","13054","13056","13057","13058","13059","13060","13061","13062","13063","13064","13065","13066","13067","13068","13069","13070","13071","13072","13073","13074","13075","13076","13077","13078","13079","13080","13081","13082","13083","13084","13085","13086","13087","13088","13089","13090","13091","13092","13093","13094","13095","13096","13097","13098","13099","13100","13101","13102","13103","13104","13105","13106","13107","13108","13109","13110","13111","13112","13113","13114","13115","13116","13117","13118","13119","13120","13121","13122","13123","13124","13125","13126","13127","13128","13129","13130","13131","13132","13133","13134","13135","13136","13137","13138","13139","13140","13141","13142","13143","13144","13145","13146","13147","13148","13149","13150","13151","13152","13153","13154","13155","13156","13157","13158","13159","13160","13161","13162","13163","13164","13165","13166","13167","13168","13169","13170","13171","13172","13173","13174","13175","13176","13177","13178","13179","13180","13181","13182","13183","13184","13185","13186","13187","13188","13189","13190","13191","13192","13193","13194","13195","13196","13197","13198","13199","13200","13201","13202","13203","13204","13205","13206","13207","13208","13209","13210","13211","13212","13213","13214","13215","13216","13217","13218","13219","13220","13221","13222","13223","13224","13225","13226","13227","13228","13229","13230","13231","13232","13233","13234","13235","13236","13237","13238","13239","13240","13241","13242","13243","13244","13245","13246","13247","13248","13249","13250","13251","13252","13253","13254","13255","13256","13257","13258","13259","13260","13261","13262","13263","13264","13265","13266","13267","13268","13269","13270","13271","13272","13273","13274","13275","13276","13277","13278","13279","13280","13281","13282","13283","13284","13285","13286","13287","13288","13289","13290","13291","13292","13293","13294","13295","13296","13297","13298","13299","13300","13301","13302","13303","13304","13305","13306","13307","13308","13309","13310","13311","27136","92912","92913","92914","92915","92916","27392","92976","92977","92978","92979","92980","92981","92982","42496","42607","42612","42613","42614","42615","42616","42617","42618","42619","42620","42621","42652","42653","42655","42736","42737","42752","42864","43000","43001","43008","43014","43204","43232","43233","43234","43235","43236","43237","43238","43239","43240","43241","43242","43243","43244","43245","43246","43247","43248","43249","43264","43307","43308","43309","43347","43443","43456","43520","43696","43698","43699","43700","43703","43704","43710","43711","43713","43766","43776","43868","43869","43870","43871","44013","48128","113822","53504","119134","119135","119136","119137","119138","119139","119140","119141","119142","119143","119144","119145","119149","119150","119151","119152","119153","119154","119163","119164","119165","119166","119167","119168","119169","119170","119173","119174","119175","119176","119177","119178","119179","119210","119211","119212","119213","119227","119228","119229","119230","119231","119232","53760","119362","119363","119364","54272","119808","119809","119810","119811","119812","119813","119814","119815","119816","119817","119818","119819","119820","119821","119822","119823","119824","119825","119826","119827","119828","119829","119830","119831","119832","119833","119834","119835","119836","119837","119838","119839","119840","119841","119842","119843","119844","119845","119846","119847","119848","119849","119850","119851","119852","119853","119854","119855","119856","119857","119858","119859","119860","119861","119862","119863","119864","119865","119866","119867","119868","119869","119870","119871","119872","119873","119874","119875","119876","119877","119878","119879","119880","119881","119882","119883","119884","119885","119886","119887","119888","119889","119890","119891","119892","119894","119895","119896","119897","119898","119899","119900","119901","119902","119903","119904","119905","119906","119907","119908","119909","119910","119911","119912","119913","119914","119915","119916","119917","119918","119919","119920","119921","119922","119923","119924","119925","119926","119927","119928","119929","119930","119931","119932","119933","119934","119935","119936","119937","119938","119939","119940","119941","119942","119943","119944","119945","119946","119947","119948","119949","119950","119951","119952","119953","119954","119955","119956","119957","119958","119959","119960","119961","119962","119963","119964","119966","119967","119970","119973","119974","119977","119978","119979","119980","119982","119983","119984","119985","119986","119987","119988","119989","119990","119991","119992","119993","119995","119997","119998","119999","120000","120001","120002","120003","120005","120006","120007","120008","120009","120010","120011","120012","120013","120014","120015","120016","120017","120018","120019","120020","120021","120022","120023","120024","120025","120026","120027","120028","120029","120030","120031","120032","120033","120034","120035","120036","120037","120038","120039","120040","120041","120042","120043","120044","120045","120046","120047","120048","120049","120050","120051","120052","120053","120054","120055","120056","120057","120058","120059","120060","120061","120062","120063","54528","120064","120065","120066","120067","120068","120069","120071","120072","120073","120074","120077","120078","120079","120080","120081","120082","120083","120084","120086","120087","120088","120089","120090","120091","120092","120094","120095","120096","120097","120098","120099","120100","120101","120102","120103","120104","120105","120106","120107","120108","120109","120110","120111","120112","120113","120114","120115","120116","120117","120118","120119","120120","120121","120123","120124","120125","120126","120128","120129","120130","120131","120132","120134","120138","120139","120140","120141","120142","120143","120144","120146","120147","120148","120149","120150","120151","120152","120153","120154","120155","120156","120157","120158","120159","120160","120161","120162","120163","120164","120165","120166","120167","120168","120169","120170","120171","120172","120173","120174","120175","120176","120177","120178","120179","120180","120181","120182","120183","120184","120185","120186","120187","120188","120189","120190","120191","120192","120193","120194","120195","120196","120197","120198","120199","120200","120201","120202","120203","120204","120205","120206","120207","120208","120209","120210","120211","120212","120213","120214","120215","120216","120217","120218","120219","120220","120221","120222","120223","120224","120225","120226","120227","120228","120229","120230","120231","120232","120233","120234","120235","120236","120237","120238","120239","120240","120241","120242","120243","120244","120245","120246","120247","120248","120249","120250","120251","120252","120253","120254","120255","120256","120257","120258","120259","120260","120261","120262","120263","120264","120265","120266","120267","120268","120269","120270","120271","120272","120273","120274","120275","120276","120277","120278","120279","120280","120281","120282","120283","120284","120285","120286","120287","120288","120289","120290","120291","120292","120293","120294","120295","120296","120297","120298","120299","120300","120301","120302","120303","120304","120305","120306","120307","120308","120309","120310","120311","120312","120313","120314","120315","120316","120317","120318","120319","54784","120320","120321","120322","120323","120324","120325","120326","120327","120328","120329","120330","120331","120332","120333","120334","120335","120336","120337","120338","120339","120340","120341","120342","120343","120344","120345","120346","120347","120348","120349","120350","120351","120352","120353","120354","120355","120356","120357","120358","120359","120360","120361","120362","120363","120364","120365","120366","120367","120368","120369","120370","120371","120372","120373","120374","120375","120376","120377","120378","120379","120380","120381","120382","120383","120384","120385","120386","120387","120388","120389","120390","120391","120392","120393","120394","120395","120396","120397","120398","120399","120400","120401","120402","120403","120404","120405","120406","120407","120408","120409","120410","120411","120412","120413","120414","120415","120416","120417","120418","120419","120420","120421","120422","120423","120424","120425","120426","120427","120428","120429","120430","120431","120432","120433","120434","120435","120436","120437","120438","120439","120440","120441","120442","120443","120444","120445","120446","120447","120448","120449","120450","120451","120452","120453","120454","120455","120456","120457","120458","120459","120460","120461","120462","120463","120464","120465","120466","120467","120468","120469","120470","120471","120472","120473","120474","120475","120476","120477","120478","120479","120480","120481","120482","120483","120484","120485","120488","120489","120490","120491","120492","120493","120494","120495","120496","120497","120498","120499","120500","120501","120502","120503","120504","120505","120506","120507","120508","120509","120510","120511","120512","120513","120514","120515","120516","120517","120518","120519","120520","120521","120522","120523","120524","120525","120526","120527","120528","120529","120530","120531","120532","120533","120534","120535","120536","120537","120538","120539","120540","120541","120542","120543","120544","120545","120546","120547","120548","120549","120550","120551","120552","120553","120554","120555","120556","120557","120558","120559","120560","120561","120562","120563","120564","120565","120566","120567","120568","120569","120570","120571","120572","120573","120574","120575","55040","120576","120577","120578","120579","120580","120581","120582","120583","120584","120585","120586","120587","120588","120589","120590","120591","120592","120593","120594","120595","120596","120597","120598","120599","120600","120601","120602","120603","120604","120605","120606","120607","120608","120609","120610","120611","120612","120613","120614","120615","120616","120617","120618","120619","120620","120621","120622","120623","120624","120625","120626","120627","120628","120629","120630","120631","120632","120633","120634","120635","120636","120637","120638","120639","120640","120641","120642","120643","120644","120645","120646","120647","120648","120649","120650","120651","120652","120653","120654","120655","120656","120657","120658","120659","120660","120661","120662","120663","120664","120665","120666","120667","120668","120669","120670","120671","120672","120673","120674","120675","120676","120677","120678","120679","120680","120681","120682","120683","120684","120685","120686","120687","120688","120689","120690","120691","120692","120693","120694","120695","120696","120697","120698","120699","120700","120701","120702","120703","120704","120705","120706","120707","120708","120709","120710","120711","120712","120713","120714","120715","120716","120717","120718","120719","120720","120721","120722","120723","120724","120725","120726","120727","120728","120729","120730","120731","120732","120733","120734","120735","120736","120737","120738","120739","120740","120741","120742","120743","120744","120745","120746","120747","120748","120749","120750","120751","120752","120753","120754","120755","120756","120757","120758","120759","120760","120761","120762","120763","120764","120765","120766","120767","120768","120769","120770","120771","120772","120773","120774","120775","120776","120777","120778","120779","120782","120783","120784","120785","120786","120787","120788","120789","120790","120791","120792","120793","120794","120795","120796","120797","120798","120799","120800","120801","120802","120803","120804","120805","120806","120807","120808","120809","120810","120811","120812","120813","120814","120815","120816","120817","120818","120819","120820","120821","120822","120823","120824","120825","120826","120827","120828","120829","120830","120831","59392","125136","125137","125138","125139","125140","125141","125142","60928","126464","126465","126466","126467","126469","126470","126471","126472","126473","126474","126475","126476","126477","126478","126479","126480","126481","126482","126483","126484","126485","126486","126487","126488","126489","126490","126491","126492","126493","126494","126495","126497","126498","126500","126503","126505","126506","126507","126508","126509","126510","126511","126512","126513","126514","126516","126517","126518","126519","126521","126523","126530","126535","126537","126539","126541","126542","126543","126545","126546","126548","126551","126553","126555","126557","126559","126561","126562","126564","126567","126568","126569","126570","126572","126573","126574","126575","126576","126577","126578","126580","126581","126582","126583","126585","126586","126587","126588","126590","126592","126593","126594","126595","126596","126597","126598","126599","126600","126601","126603","126604","126605","126606","126607","126608","126609","126610","126611","126612","126613","126614","126615","126616","126617","126618","126619","126625","126626","126627","126629","126630","126631","126632","126633","126635","126636","126637","126638","126639","126640","126641","126642","126643","126644","126645","126646","126647","126648","126649","126650","126651","61696","127232","127233","127234","127235","127236","127237","127238","127239","127240","127241","127242","127248","127249","127250","127251","127252","127253","127254","127255","127256","127257","127258","127259","127260","127261","127262","127263","127264","127265","127266","127267","127268","127269","127270","127271","127272","127273","127274","127275","127276","127277","127278","127280","127281","127282","127283","127284","127285","127286","127287","127288","127289","127290","127291","127292","127293","127294","127295","127296","127297","127298","127299","127300","127301","127302","127303","127304","127305","127306","127307","127308","127309","127310","127311","127338","127339","127376","61952","127488","127489","127490","127504","127505","127506","127507","127508","127509","127510","127511","127512","127513","127514","127515","127516","127517","127518","127519","127520","127521","127522","127523","127524","127525","127526","127527","127528","127529","127530","127531","127532","127533","127534","127535","127536","127537","127538","127539","127540","127541","127542","127543","127544","127545","127546","127552","127553","127554","127555","127556","127557","127558","127559","127560","127568","127569","63488","194560","194561","194562","194563","194564","194565","194566","194567","194568","194569","194570","194571","194572","194573","194574","194575","194576","194577","194578","194579","194580","194581","194582","194583","194584","194585","194586","194587","194588","194589","194590","194591","194592","194593","194594","194595","194596","194597","194598","194599","194600","194601","194602","194603","194604","194605","194606","194607","194608","194609","194610","194611","194612","194613","194614","194615","194616","194617","194618","194619","194620","194621","194622","194623","194624","194625","194626","194627","194628","194629","194630","194631","194632","194633","194634","194635","194636","194637","194638","194639","194640","194641","194642","194643","194644","194645","194646","194647","194648","194649","194650","194651","194652","194653","194654","194655","194656","194657","194658","194659","194660","194661","194662","194663","194664","194665","194666","194667","194668","194669","194670","194671","194672","194673","194674","194675","194676","194677","194678","194679","194680","194681","194682","194683","194684","194685","194686","194687","194688","194689","194690","194691","194692","194693","194694","194695","194696","194697","194698","194699","194700","194701","194702","194703","194704","194705","194706","194707","194708","194709","194710","194711","194712","194713","194714","194715","194716","194717","194718","194719","194720","194721","194722","194723","194724","194725","194726","194727","194728","194729","194730","194731","194732","194733","194734","194735","194736","194737","194738","194739","194740","194741","194742","194743","194744","194745","194746","194747","194748","194749","194750","194751","194752","194753","194754","194755","194756","194757","194758","194759","194760","194761","194762","194763","194764","194765","194766","194767","194768","194769","194770","194771","194772","194773","194774","194775","194776","194777","194778","194779","194780","194781","194782","194783","194784","194785","194786","194787","194788","194789","194790","194791","194792","194793","194794","194795","194796","194797","194798","194799","194800","194801","194802","194803","194804","194805","194806","194807","194808","194809","194810","194811","194812","194813","194814","194815","63744","63745","63746","63747","63748","63749","63750","63751","63752","63753","63754","63755","63756","63757","63758","63759","63760","63761","63762","63763","63764","63765","63766","63767","63768","63769","63770","63771","63772","63773","63774","63775","63776","63777","63778","63779","63780","63781","63782","63783","63784","63785","63786","63787","63788","63789","63790","63791","63792","63793","63794","63795","63796","63797","63798","63799","63800","63801","63802","63803","63804","63805","63806","63807","63808","63809","63810","63811","63812","63813","63814","63815","63816","63817","63818","63819","63820","63821","63822","63823","63824","63825","63826","63827","63828","63829","63830","63831","63832","63833","63834","63835","63836","63837","63838","63839","63840","63841","63842","63843","63844","63845","63846","63847","63848","63849","63850","63851","63852","63853","63854","63855","63856","63857","63858","63859","63860","63861","63862","63863","63864","63865","63866","63867","63868","63869","63870","63871","63872","63873","63874","63875","63876","63877","63878","63879","63880","63881","63882","63883","63884","63885","63886","63887","63888","63889","63890","63891","63892","63893","63894","63895","63896","63897","63898","63899","63900","63901","63902","63903","63904","63905","63906","63907","63908","63909","63910","63911","63912","63913","63914","63915","63916","63917","63918","63919","63920","63921","63922","63923","63924","63925","63926","63927","63928","63929","63930","63931","63932","63933","63934","63935","63936","63937","63938","63939","63940","63941","63942","63943","63944","63945","63946","63947","63948","63949","63950","63951","63952","63953","63954","63955","63956","63957","63958","63959","63960","63961","63962","63963","63964","63965","63966","63967","63968","63969","63970","63971","63972","63973","63974","63975","63976","63977","63978","63979","63980","63981","63982","63983","63984","63985","63986","63987","63988","63989","63990","63991","63992","63993","63994","63995","63996","63997","63998","63999","194816","194817","194818","194819","194820","194821","194822","194823","194824","194825","194826","194827","194828","194829","194830","194831","194832","194833","194834","194835","194836","194837","194838","194839","194840","194841","194842","194843","194844","194845","194846","194847","194848","194849","194850","194851","194852","194853","194854","194855","194856","194857","194858","194859","194860","194861","194862","194863","194864","194865","194866","194867","194868","194869","194870","194871","194872","194873","194874","194875","194876","194877","194878","194879","194880","194881","194882","194883","194884","194885","194886","194887","194888","194889","194890","194891","194892","194893","194894","194895","194896","194897","194898","194899","194900","194901","194902","194903","194904","194905","194906","194907","194908","194909","194910","194911","194912","194913","194914","194915","194916","194917","194918","194919","194920","194921","194922","194923","194924","194925","194926","194927","194928","194929","194930","194931","194932","194933","194934","194935","194936","194937","194938","194939","194940","194941","194942","194943","194944","194945","194946","194947","194948","194949","194950","194951","194952","194953","194954","194955","194956","194957","194958","194959","194960","194961","194962","194963","194964","194965","194966","194967","194968","194969","194970","194971","194972","194973","194974","194975","194976","194977","194978","194979","194980","194981","194982","194983","194984","194985","194986","194987","194988","194989","194990","194991","194992","194993","194994","194995","194996","194997","194998","194999","195000","195001","195002","195003","195004","195005","195006","195007","195008","195009","195010","195011","195012","195013","195014","195015","195016","195017","195018","195019","195020","195021","195022","195023","195024","195025","195026","195027","195028","195029","195030","195031","195032","195033","195034","195035","195036","195037","195038","195039","195040","195041","195042","195043","195044","195045","195046","195047","195048","195049","195050","195051","195052","195053","195054","195055","195056","195057","195058","195059","195060","195061","195062","195063","195064","195065","195066","195067","195068","195069","195070","195071","64000","64001","64002","64003","64004","64005","64006","64007","64008","64009","64010","64011","64012","64013","64016","64018","64021","64022","64023","64024","64025","64026","64027","64028","64029","64030","64032","64034","64037","64038","64042","64043","64044","64045","64046","64047","64048","64049","64050","64051","64052","64053","64054","64055","64056","64057","64058","64059","64060","64061","64062","64063","64064","64065","64066","64067","64068","64069","64070","64071","64072","64073","64074","64075","64076","64077","64078","64079","64080","64081","64082","64083","64084","64085","64086","64087","64088","64089","64090","64091","64092","64093","64094","64095","64096","64097","64098","64099","64100","64101","64102","64103","64104","64105","64106","64107","64108","64109","64112","64113","64114","64115","64116","64117","64118","64119","64120","64121","64122","64123","64124","64125","64126","64127","64128","64129","64130","64131","64132","64133","64134","64135","64136","64137","64138","64139","64140","64141","64142","64143","64144","64145","64146","64147","64148","64149","64150","64151","64152","64153","64154","64155","64156","64157","64158","64159","64160","64161","64162","64163","64164","64165","64166","64167","64168","64169","64170","64171","64172","64173","64174","64175","64176","64177","64178","64179","64180","64181","64182","64183","64184","64185","64186","64187","64188","64189","64190","64191","64192","64193","64194","64195","64196","64197","64198","64199","64200","64201","64202","64203","64204","64205","64206","64207","64208","64209","64210","64211","64212","64213","64214","64215","64216","64217","195072","195073","195074","195075","195076","195077","195078","195079","195080","195081","195082","195083","195084","195085","195086","195087","195088","195089","195090","195091","195092","195093","195094","195095","195096","195097","195098","195099","195100","195101","64256","64257","64258","64259","64260","64261","64262","64275","64276","64277","64278","64279","64285","64286","64287","64288","64289","64290","64291","64292","64293","64294","64295","64296","64297","64298","64299","64300","64301","64302","64303","64304","64305","64306","64307","64308","64309","64310","64312","64313","64314","64315","64316","64318","64320","64321","64323","64324","64326","64327","64328","64329","64330","64331","64332","64333","64334","64335","64336","64337","64338","64339","64340","64341","64342","64343","64344","64345","64346","64347","64348","64349","64350","64351","64352","64353","64354","64355","64356","64357","64358","64359","64360","64361","64362","64363","64364","64365","64366","64367","64368","64369","64370","64371","64372","64373","64374","64375","64376","64377","64378","64379","64380","64381","64382","64383","64384","64385","64386","64387","64388","64389","64390","64391","64392","64393","64394","64395","64396","64397","64398","64399","64400","64401","64402","64403","64404","64405","64406","64407","64408","64409","64410","64411","64412","64413","64414","64415","64416","64417","64418","64419","64420","64421","64422","64423","64424","64425","64426","64427","64428","64429","64430","64431","64432","64433","64467","64468","64469","64470","64471","64472","64473","64474","64475","64476","64477","64478","64479","64480","64481","64482","64483","64484","64485","64486","64487","64488","64489","64490","64491","64492","64493","64494","64495","64496","64497","64498","64499","64500","64501","64502","64503","64504","64505","64506","64507","64508","64509","64510","64511","64512","64513","64514","64515","64516","64517","64518","64519","64520","64521","64522","64523","64524","64525","64526","64527","64528","64529","64530","64531","64532","64533","64534","64535","64536","64537","64538","64539","64540","64541","64542","64543","64544","64545","64546","64547","64548","64549","64550","64551","64552","64553","64554","64555","64556","64557","64558","64559","64560","64561","64562","64563","64564","64565","64566","64567","64568","64569","64570","64571","64572","64573","64574","64575","64576","64577","64578","64579","64580","64581","64582","64583","64584","64585","64586","64587","64588","64589","64590","64591","64592","64593","64594","64595","64596","64597","64598","64599","64600","64601","64602","64603","64604","64605","64606","64607","64608","64609","64610","64611","64612","64613","64614","64615","64616","64617","64618","64619","64620","64621","64622","64623","64624","64625","64626","64627","64628","64629","64630","64631","64632","64633","64634","64635","64636","64637","64638","64639","64640","64641","64642","64643","64644","64645","64646","64647","64648","64649","64650","64651","64652","64653","64654","64655","64656","64657","64658","64659","64660","64661","64662","64663","64664","64665","64666","64667","64668","64669","64670","64671","64672","64673","64674","64675","64676","64677","64678","64679","64680","64681","64682","64683","64684","64685","64686","64687","64688","64689","64690","64691","64692","64693","64694","64695","64696","64697","64698","64699","64700","64701","64702","64703","64704","64705","64706","64707","64708","64709","64710","64711","64712","64713","64714","64715","64716","64717","64718","64719","64720","64721","64722","64723","64724","64725","64726","64727","64728","64729","64730","64731","64732","64733","64734","64735","64736","64737","64738","64739","64740","64741","64742","64743","64744","64745","64746","64747","64748","64749","64750","64751","64752","64753","64754","64755","64756","64757","64758","64759","64760","64761","64762","64763","64764","64765","64766","64767","64768","64769","64770","64771","64772","64773","64774","64775","64776","64777","64778","64779","64780","64781","64782","64783","64784","64785","64786","64787","64788","64789","64790","64791","64792","64793","64794","64795","64796","64797","64798","64799","64800","64801","64802","64803","64804","64805","64806","64807","64808","64809","64810","64811","64812","64813","64814","64815","64816","64817","64818","64819","64820","64821","64822","64823","64824","64825","64826","64827","64828","64829","64848","64849","64850","64851","64852","64853","64854","64855","64856","64857","64858","64859","64860","64861","64862","64863","64864","64865","64866","64867","64868","64869","64870","64871","64872","64873","64874","64875","64876","64877","64878","64879","64880","64881","64882","64883","64884","64885","64886","64887","64888","64889","64890","64891","64892","64893","64894","64895","64896","64897","64898","64899","64900","64901","64902","64903","64904","64905","64906","64907","64908","64909","64910","64911","64914","64915","64916","64917","64918","64919","64920","64921","64922","64923","64924","64925","64926","64927","64928","64929","64930","64931","64932","64933","64934","64935","64936","64937","64938","64939","64940","64941","64942","64943","64944","64945","64946","64947","64948","64949","64950","64951","64952","64953","64954","64955","64956","64957","64958","64959","64960","64961","64962","64963","64964","64965","64966","64967","65008","65009","65010","65011","65012","65013","65014","65015","65016","65017","65018","65019","65020","65024","65040","65041","65042","65043","65044","65045","65046","65047","65048","65049","65056","65057","65058","65059","65060","65061","65062","65063","65064","65065","65066","65067","65068","65069","65072","65073","65074","65075","65076","65077","65078","65079","65080","65081","65082","65083","65084","65085","65086","65087","65088","65089","65090","65091","65092","65095","65096","65097","65098","65099","65100","65101","65102","65103","65104","65105","65106","65108","65109","65110","65111","65112","65113","65114","65115","65116","65117","65118","65119","65120","65121","65122","65123","65124","65125","65126","65128","65129","65130","65131","65136","65137","65138","65140","65142","65143","65144","65145","65146","65147","65148","65149","65150","65151","65152","65153","65154","65155","65156","65157","65158","65159","65160","65161","65162","65163","65164","65165","65166","65167","65168","65169","65170","65171","65172","65173","65174","65175","65176","65177","65178","65179","65180","65181","65182","65183","65184","65185","65186","65187","65188","65189","65190","65191","65192","65193","65194","65195","65196","65197","65198","65199","65200","65201","65202","65203","65204","65205","65206","65207","65208","65209","65210","65211","65212","65213","65214","65215","65216","65217","65218","65219","65220","65221","65222","65223","65224","65225","65226","65227","65228","65229","65230","65231","65232","65233","65234","65235","65236","65237","65238","65239","65240","65241","65242","65243","65244","65245","65246","65247","65248","65249","65250","65251","65252","65253","65254","65255","65256","65257","65258","65259","65260","65261","65262","65263","65264","65265","65266","65267","65268","65269","65270","65271","65272","65273","65274","65275","65276","65280","65281","65282","65283","65284","65285","65286","65287","65288","65289","65290","65291","65292","65293","65294","65295","65296","65297","65298","65299","65300","65301","65302","65303","65304","65305","65306","65307","65308","65309","65310","65311","65312","65313","65314","65315","65316","65317","65318","65319","65320","65321","65322","65323","65324","65325","65326","65327","65328","65329","65330","65331","65332","65333","65334","65335","65336","65337","65338","65339","65340","65341","65342","65343","65344","65345","65346","65347","65348","65349","65350","65351","65352","65353","65354","65355","65356","65357","65358","65359","65360","65361","65362","65363","65364","65365","65366","65367","65368","65369","65370","65371","65372","65373","65374","65375","65376","65377","65378","65379","65380","65381","65382","65383","65384","65385","65386","65387","65388","65389","65390","65391","65392","65393","65394","65395","65396","65397","65398","65399","65400","65401","65402","65403","65404","65405","65406","65407","65408","65409","65410","65411","65412","65413","65414","65415","65416","65417","65418","65419","65420","65421","65422","65423","65424","65425","65426","65427","65428","65429","65430","65431","65432","65433","65434","65435","65436","65437","65438","65439","65440","65441","65442","65443","65444","65445","65446","65447","65448","65449","65450","65451","65452","65453","65454","65455","65456","65457","65458","65459","65460","65461","65462","65463","65464","65465","65466","65467","65468","65469","65470","65474","65475","65476","65477","65478","65479","65482","65483","65484","65485","65486","65487","65490","65491","65492","65493","65494","65495","65498","65499","65500","65504","65505","65506","65507","65508","65509","65510","65512","65513","65514","65515","65516","65517","65518","unorm","shimApplied","configurable","writable","form","Z","GainAnalysis","PINK_REF","RMS_PERCENTILE","YULE_ORDER","RMS_WINDOW_TIME_NUMERATOR","MAX_SAMP_FREQ","RMS_WINDOW_TIME_DENOMINATOR","ABYule","MAX_SAMPLES_PER_WINDOW","ABButter","filterYule","inputPos","outputPos","nSamples","kernel","filterButter","ResetSampleFrequency","rgData","samplefreq","MAX_ORDER","linprebuf","lstepbuf","loutbuf","rinprebuf","rstepbuf","routbuf","reqindex","INIT_GAIN_ANALYSIS_ERROR","sampleWindow","lsum","rsum","totsamp","ill","INIT_GAIN_ANALYSIS_OK","fsqr","analyzeResult","elems","GAIN_NOT_ENOUGH_SAMPLES","upper","ceil","STEPS_per_dB","InitGainAnalysis","linpre","rinpre","lstep","rstep","lout","rout","B","AnalyzeSamples","left_samples","left_samplesPos","right_samples","right_samplesPos","num_samples","num_channels","curleft","curleftBase","curright","currightBase","batchsamples","cursamples","cursamplepos","GAIN_ANALYSIS_OK","GAIN_ANALYSIS_ERROR","arraycopy","ival","GetTitleGain","retval","MAX_dB","LIBRARY","$export","redefine","hide","Iterators","$iterCreate","setToStringTag","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","Base","NAME","Constructor","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","values","P","F","toObject","$keys","documentElement","cof","propertyIsEnumerable","L","default","_default","_interopRequireDefault","_uslug","_token","_typeof","Symbol","iterator","constructor","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","from","arr2","_objectSpread","target","ownKeys","sym","_defineProperty","TOC","TOC_RE","markdownItSecondInstance","headingIds","tocHtml","repeat","num","makeSafe","slugifyFn","space","renderAnchorLinkSymbol","anchorLinkSymbolClassName","anchorLinkSymbol","renderAnchorLink","anchor","anchorClassName","openLinkToken","closeLinkToken","wrapHeadingTextInAnchor","unshift","_tokens$children","linkTokens","actionOnArray","false","true","anchorLinkSpace","anchorLinkBefore","treeToMarkdownBulletList","tree","indent","item","indentation","heading","contentWithoutAnchor","nodes","generateTocMarkdownFromArray","headings","tocFirstLevel","tocLastLevel","lastItem","toc","tocClassName","tocCallback","anchorLink","resetIds","tocArray","tocMarkdown","tocTokens","slugify","heading_close","_tocAnchor","reduce","acc","anchorLinkPrefix","substr","after","originalHeadingOpen","heading_open","_len","_key","renderToken","_len2","_key2","toc_open","toc_close","toc_body","buildHTML","buildMathML","buildCommon","Options","Settings","Style","makeSpan","buildTree","expression","settings","startStyle","TEXT","displayMode","DISPLAY","mathMLNode","htmlNode","katexNode","dP","createDesc","emojies_defs","emojies_shortcuts","emoji_html","emoji_replace","normalize_opts","defaults","defs","shortcuts","enabled","opts","emoji","scanRE","replaceRE","IObject","quoteRE","emojies","alias","names","sort","reverse","Presets","VBRPresets","qual","comp","compS","shThreshold","shThresholdS","adj","adjShort","lower","curve","sens","inter","joint","mod","fix","vbr_q","quant_comp","quant_comp_s","expY","st_lrm","st_s","masking_adj","masking_adj_short","ath_lower","ath_curve","ath_sensitivity","interch","safejoint","sfb21mod","ABRPresets","kbps","bass","sc","mask","interCh","sfScale","nsmsfix","nsbass","scale","sfscale","lame","setModules","_lame","vbr_old_switch_map","vbr_psy_switch_map","apply_vbr_preset","enforce","vbr_preset","VBR_q_frac","lame_set_VBR_q","quant_comp_short","experimentalY","maskingadjust","maskingadjust_short","athaa_sensitivity","VBR_q","abr_switch_map","apply_abr_preset","preset","actual_bitrate","nearestBitrateFullIndex","VBR_mean_bitrate_kbps","brate","disable_reservoir","noise_shaping","apply_preset","Lame","R3MIX","V3","MEDIUM","V4","MEDIUM_FAST","STANDARD","V2","STANDARD_FAST","EXTREME","V0","EXTREME_FAST","INSANE","V9","V8","V7","V6","V5","V1","isNaN","ARG","tryGet","T","callee","pmax","slashes","auth","port","pathname","search","lineMax","def","stat","Ruler","__rules__","__cache__","__find__","__compile__","chains","rule","alt","altName","at","opt","before","beforeName","ruleName","afterName","chainName","ucm","ZPCc","Cc","splitTextToken","last_pos","offset","emoji_name","blockTokens","autolinkLevel","MeanBits","L3Side","LameInternalFlags","CBRNewIterationLoop","_quantize","quantize","iteration_loop","ms_ener_ratio","max_bits","l3_xmin","SFBMAX","xrpow","targ_bits","mean_bits","l3_side","mb","rv","ResvFrameBegin","bits","qupvt","on_pe","mode_ext","MPG_MD_MS_LR","ms_convert","reduce_side","masking_lower_db","cod_info","block_type","mask_adjust","mask_adjust_short","init_outer_loop","init_xrpow","calc_xmin","outer_loop","iteration_finish_one","part2_3_length","MAX_BITS_PER_CHANNEL","ResvFrameEnd","matchStart","matchEnd","skipBulletListMarker","skipOrderedListMarker","markTightParagraphs","initial","oldTShift","oldIndent","oldLIndent","oldTight","oldParentType","posAfterMarker","indentAfterMarker","markerValue","markerCharCode","isOrdered","contentStart","listTokIdx","prevEmptyEnd","listLines","itemLines","tight","Number","parentType","tokenize","NewMDCT","III_psy_ratio","FFTOFFSET","bs","psy","vbr","_bs","_psy","_qupvt","_vbr","newMDCT","adjust_ATH","gr2_max","max_pow","useAdjust","aaSensitivityP","adj_lim_new","updateStats","bitrate_index","bitrate_stereoMode_Hist","bt","mixed_block_flag","bitrate_blockType_Hist","lame_encode_frame_init","inbuf","primebuff0","primebuff1","mdct_sub48","mf_size","framesize","lame_encode_mp3_frame","inbuf_l","inbuf_r","mp3buf","mp3bufPos","mp3buf_size","mp3count","masking_LR","masking","masking_MS","pe_use","pe_MS","padding","slot_lag","frac_SpF","psymodel","bufp","bufpPos","MPG_MD_LR_LR","force_ms","sum_pe_MS","sum_pe_LR","gi0","gi1","ms_ratio","xr","pefirbuf","format_bitstream","copy_buffer","bWriteVbrTag","addVbrFrame","pcmdata","set_frame_pinfo","ENCDELAY","POSTDELAY","MDCTDELAY","DECDELAY","SBLIMIT","SBPSY_l","SBPSY_s","PSFB21","PSFB12","MPG_MD_LR_I","MPG_MD_MS_I","scanned","jump","postProcess","startDelim","endDelim","loneMarkers","pop","NEWLINES_RE","NULL_RE","_rules","_rules2","skipToken","ok","MathNode","TextNode","createElementNS","OTHER_CHARS","UNICODE_SPACE_RE","abbr_def","label","title","labelStart","labelEnd","abbreviations","abbr_replace","reg","regText","regSimple","currentToken","store","uid","USE_SYMBOL","$exports","IE_PROTO","ObjectProto","UNESCAPE_RE","subscript","found","shared","parseLinkLabel","parseLinkDestination","parseLinkTitle","attr_name","unquoted","single_quoted","double_quoted","attr_value","open_tag","close_tag","comment","processing","declaration","cdata","HTML_TAG_RE","HTML_OPEN_CLOSE_TAG_RE","version","__e","Reservoir","maxmp3buf","frameLength","getframebits","sideinfo_len","resvLimit","strict_ISO","fullFrameBits","ResvSize","resvsize","ResvMaxBits","cbr","add_bits","substep_shaping","extra_bits","ResvAdjust","gi","part2_length","over_bits","stuffingBits","mdb_bytes","data","color","phantom","parentStyle","parentSize","extend","extension","withStyle","withSize","withColor","withPhantom","withFont","reset","colorMap","getColor","toIObject","toLength","toAbsoluteIndex","IS_INCLUDES","$this","DIGITAL_RE","NAMED_RE","HuffCodeTab","hl","xlen","linmax","table","hlen","Tables","ht","t1HB","t1l","t2HB","t2l","t3HB","t3l","t5HB","t5l","t6HB","t6l","t7HB","t7l","t8HB","t8l","t9HB","t9l","t10HB","t10l","t11HB","t11l","t12HB","t12l","t13HB","t13l","t16_5l","t15HB","t15l","t16HB","t16l","t24HB","t24l","t32HB","t32l","t33HB","t33l","largetbl","table23","table56","bitrate_table","samplerate_table","scfsi_band","block_names","HTML_SEQUENCES","lineText","id","px","random","webpackPolyfill","deprecate","paths","get","ctx","PROTOTYPE","own","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","W","expProto","C","Function","virtual","R","U","N","_ordinal","DUAL_CHANNEL","MONO","NOT_SET","multiplier","cramped","sizeMultiplier","sup","sub","fracNum","fracDen","cramp","cls","sizeNames","resetNames","D","Dc","Tc","Sc","SS","SSc","SCRIPT","SCRIPTSCRIPT","Takehiro","BitStream","CRC16_POLYNOMIAL","MAX_LENGTH","ga","mpg","ver","_ga","_mpg","_ver","buf","totbit","bufByteIdx","bufBitIdx","putheader_bits","header","w_ptr","MAX_HEADER_BUF","putbits2","LAME_MAXMP3BUFFER","write_timing","putbits_noheaders","drain_into_ancillary","remainingBits","getLameShortVersion","ancillary_flag","writeheader","ptr","h_ptr","CRC_update","crc","encodeSideInfo2","bitsPerFrame","error_protection","band","big_values","scalefac_compress","table_select","subblock_gain","region0_count","region1_count","preflag","scalefac_scale","count1table_select","CRC_writeheader","old","huffman_coder_count1","ix","count1","huffbits","l3_enc","Huffmancode","tableindex","cbits","xbits","linbits","ext","x1","x2","linbits_x1","linbits_x2","ShortHuffmancodebits","region1Start","LongHuffmancodebits","bigvalues","region2Start","writeMainData","data_bits","tot_bits","slen1","slen1_tab","slen2","slen2_tab","sfbdivide","scalefac","sfbmax","sfb_partition","scale_bits","sfb_partition_table","sfbs","slen","TotalBytes","total","compute_flushbits","total_bytes_output","flushbits","remaining_headers","last_ptr","first_ptr","bit_rate","bytes","flush_bitstream","findReplayGain","RadioGain","rgdata","NEQ","findPeakSample","noclipGainChange","PeakSample","EQ","noclipScale","add_dummy_byte","bufferPos","mp3data","minimum","nMusicCRC","updateMusicCRC","VBR_seek_table","decode_on_the_fly","pcm_buf","mp3_in","samples_out","hip_decode1_unclipped","hip","init_bit_stream_w","TO_STRING_TAG","DOMIterables","Collection","ESCAPED","functions","environments","Lexer","parseData","Parser","ParseNode","ParseFuncOrArgument","isFunction","expect","consume","nextToken","lex","parseInput","parseExpression","endOfExpression","breakOnInfix","breakOnToken","body","atom","parseAtom","throwOnError","errorNode","handleUnsupportedCmd","handleInfixNodes","funcName","overIndex","replaceWith","numerNode","denomNode","numerBody","denomBody","callFunction","SUPSUB_GREEDINESS","handleSupSubscript","symPos","parseGroup","funcGreediness","greediness","parseFunction","textordArray","textNode","colorNode","errorColor","superscript","parseImplicitGroup","limits","alwaysHandleSupSub","prime","primes","sizeFuncs","styleFuncs","parseSymbol","func","left","right","envName","namepos","parseArguments","context","parser","positions","handler","contains","baseGroup","funcData","allowedInText","totalArgs","numArgs","numOptionalArgs","baseGreediness","argNode","argType","argTypes","parseSpecialGroup","parseOptionalGroup","argGreediness","innerMode","optional","res","outerMode","openBrace","whitespace","nucleus","StateCore","TO_STRING","that","ReplayGain","freqindex","first","CalcNoiseResult","over_noise","tot_noise","max_noise","over_count","over_SSD","hasEmptyLines","skipEmptyLines","defineFunction","props","width","delimiterSizes","fontAliases","atoms","hasBarLine","numer","denom","leftDelim","rightDelim","delim","delimType","nameGroup","default_rules","code_inline","slf","renderAttrs","code_block","fence","highlighted","tmpAttrs","tmpToken","langName","image","renderInlineAsText","hardbreak","softbreak","html_block","html_inline","needLf","classof","getIteratorMethod","anObject","getIterator","iterFn","lines","getKeys","defineProperties","Properties","M","getLine","escapedSplit","escapes","lastPos","backTicked","lastBackTick","substring","columns","columnCount","aligns","tableLines","tbodyLines","window_s","costab","fht","fz","fzPos","k4","fi","tri","s1","c1","k1","k2","k3","kx","f1","f0","f3","f2","c2","s2","g0","g1","g2","g3","rv_tbl","x_real","jj","fontMetrics","parseArray","row","rowGaps","cell","cr","defineEnvironment","colalign","cols","ca","align","separator","hskipBeforeAndAfter","arraystretch","pregap","postgap","metrics","quad","emptyGroup","numCols","StateBlock","indent_found","ddIndent","keepLastLF","lineIndent","queue","lineStart","lastDelim","currDelim","Version","LAME_URL","LAME_MAJOR_VERSION","LAME_MINOR_VERSION","LAME_PATCH_VERSION","PSY_MAJOR_VERSION","PSY_MINOR_VERSION","getLameVersion","getLameVeryShortVersion","getPsyVersion","getLameUrl","getLameOsBitness","decodeCache","getDecodeCache","exclude","defaultChars","seq","b1","b2","b3","b4","chr","componentChars","ref","href","oldPos","references","LameGlobalFlags","class_id","in_samplerate","scale_left","scale_right","decode_only","quality","free_format","write_id3tag_automatic","compression_ratio","copyright","original","emphasis","VBR_min_bitrate_kbps","VBR_max_bitrate_kbps","VBR_hard_min","lowpassfreq","highpassfreq","lowpasswidth","highpasswidth","ATHonly","ATHshort","noATH","athaa_type","useTemporal","tune","tune_value_a","encoder_delay","encoder_padding","frameNum","lame_allocated_gfp","isLinkOpen","isLinkClose","ln","htmlLinkLevel","urlText","links","pretest","schema","emptyLines","factory","__WEBPACK_EXTERNAL_MODULE_1__","__WEBPACK_EXTERNAL_MODULE_2__","__WEBPACK_EXTERNAL_MODULE_3__","__WEBPACK_EXTERNAL_MODULE_4__","__WEBPACK_EXTERNAL_MODULE_5__","__WEBPACK_EXTERNAL_MODULE_6__","__WEBPACK_EXTERNAL_MODULE_7__","__WEBPACK_EXTERNAL_MODULE_8__","__WEBPACK_EXTERNAL_MODULE_9__","__WEBPACK_EXTERNAL_MODULE_10__","__WEBPACK_EXTERNAL_MODULE_11__","__WEBPACK_EXTERNAL_MODULE_12__","__WEBPACK_EXTERNAL_MODULE_13__","__WEBPACK_EXTERNAL_MODULE_14__","modules","installedModules","__webpack_require__","moduleId","loaded","_getIterator2","_getIterator3","_keys","_keys2","_markdownIt","_markdownIt2","_markdownItEmoji","_markdownItEmoji2","_markdownItSub","_markdownItSub2","_markdownItSup","_markdownItSup2","_markdownItFootnote","_markdownItFootnote2","_markdownItDeflist","_markdownItDeflist2","_markdownItAbbr","_markdownItAbbr2","_markdownItIns","_markdownItIns2","_markdownItMark","_markdownItMark2","_markdownItTocAndAnchor","_markdownItTocAndAnchor2","_markdownItKatex","_markdownItKatex2","_markdownItTaskLists","_markdownItTaskLists2","template","sourceData","watches","show","Boolean","tableClass","taskLists","tocId","tocClass","tocAnchorLink","tocAnchorClass","tocAnchorLinkSymbol","tocAnchorLinkSpace","tocAnchorLinkClass","anchorAttributes","prerender","postrender","htmlData","computed","tocLastLevelComputed","_this","table_open","defaultLinkRenderer","link_open","aIndex","getElementById","innerHTML","$emit","outHtml","domProps","beforeMount","_this2","$slots","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","slot","return","$watch","$forceUpdate","tok","dPs","enumBugKeys","Empty","createDict","iframeDocument","iframe","lt","gt","display","contentWindow","write","III_psy_xmin","iii_psy_xmin","option","defaultValue","VBRQuantize","_tk","katex","isValidDelim","prevChar","math_inline","math_block","firstLine","lastLine","katexInline","latex","renderToString","inlineRenderer","katexBlock","blockRenderer","Core","angry","blush","broken_heart","confused","cry","frowning","heart","imp","innocent","joy","kissing","laughing","neutral_face","open_mouth","rage","smile","smiley","smiling_imp","sob","stuck_out_tongue","sunglasses","sweat","sweat_smile","unamused","wink","psfb21","psfb12","toStringTag","bind","setUint8","compress","encodePCM","ArrayBuffer","DataView","setInt8","setInt16","encodeWAV","byteLength","setUint32","setUint16","getUint8","__extends","setPrototypeOf","isrecording","ispause","isplaying","setOption","setNewOption","startRecord","pause","pauseRecord","resume","resumeRecord","stop","stopRecord","play","onplay","addPlayEnd","onplayend","getWAV","getPlayTime","pausePlay","onpauseplay","resumePlay","onresumeplay","stopPlay","onstopplay","destroy","destroyPlay","destroyRecord","getRecordAnalyseData","getAnalyseData","getPlayAnalyseData","getPCM","getData","inputSampleRate","outputSampleRate","oututSampleBits","littleEdian","getPCMBlob","Blob","downloadPCM","numChannels","getWAVBlob","downloadWAV","download","getChannelData","sampleBits","getInt16","getInt8","URL","createObjectURL","click","decodeAudioData","createBufferSource","onended","currentTime","connect","destination","throwError","AudioContext","webkitAudioContext","createAnalyser","fftSize","Uint8Array","frequencyBinCount","getByteTimeDomainData","lBuffer","rBuffer","tempPCM","inputSampleBits","fileSize","duration","needRecord","sampleRate","initUserMedia","initRecorder","navigator","mediaDevices","getUserMedia","audio","audioInput","createMediaStreamSource","stream","analyser","recorder","disconnect","clearRecordStatus","stopStream","closeAudioContext","flat","PCM","createScriptProcessor","createJavaScriptNode","onaudioprocess","inputBuffer","onprocess","onprogress","vol","getTracks","webkitGetUserMedia","mozGetUserMedia","transformIntoPCM","getPermission","getRelocatable","__matchAtRelocatable","unicode","matchAt","sticky","reloc","bitmap","QUOTE_TEST_RE","QUOTE_RE","APOSTROPHE","replaceAt","process_inlines","thisLevel","canOpen","canClose","isSingle","stack","openQuote","closeQuote","OUTER","single","blkIdx","src_Any","src_Cc","src_Z","src_P","src_ZPCc","src_ZCc","src_pseudo_letter","src_ip4","src_auth","src_port","src_host_terminator","src_path","src_email_name","src_xn","src_domain_root","src_domain","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","src_host_strict","tpl_host_fuzzy_strict","src_host_port_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","tpl_host_fuzzy_test","tpl_email_fuzzy","tpl_link_fuzzy","tpl_link_no_ip_fuzzy","setTextContent","nativeIndexOf","elem","deflt","setting","defaultIfUndefined","uppercase","ESCAPE_LOOKUP","\"","ESCAPE_REGEX","escaper","testNode","textContent","innerText","clearNode","_vm","_c","_self","staticClass","transform","top","on","$event","touchStart","touchMove","touchEnd","dropDownState","ispc","refresh","_v","_s","_e","dropDownInfo","upText","refreshText","staticRenderFns","onRefresh","required","isrefresh","defaultOffset","scrollIsToTop","startY","isDropDown","isRefreshing","downText","downImg","upImg","refreshImg","created","querySelector","clientHeight","targetTouches","pageY","scrollTop","pageYOffset","diff","preventDefault","setTimeout","refreshDone","component","isTerminatorChar","ScaleFac","QuantizePVT","tak","POW20","Q_MAX2","Q_MAX","pow20","_rv","IPOW20","ipow20","DBL_EPSILON","IXMAX_VAL","PRECALC_SIZE","NSATHSCALE","LARGE_BITS","nr_of_sfb_block","pretab","sfBandIndex","pow43","adj43","ATHmdct","compute_ath","ATH_l","ATH_psfb21","ATH_s","ATH_psfb12","samp_freq","ATH_f","StartLine","iteration_init","iteration_init_init","alto","treble","sfb21","huffman_init","longfact","shortfact","tbits","MAX_BITS_PER_GRANULE","fac","move_bits","athAdjust","athFloor","pxmin","gsfb","pxminPos","ath_over","enable_athaa_fix","psy_lmax","xmin","rh1","rh2","en0","xa","xb","max_nonzero","max_nonzero_coeff","sfb_smin","psymax","tmpATH","calc_noise_core","startline","ix01","calc_noise","distort","prev_noise","distortPos","l3_xminPos","over","over_noise_db","tot_noise_db","scalefacPos","usefullsize","sl","set_pinfo","sfb2","en1","ifqstep","xfsf","sfb_lmax","bw","LAMEsfb","en_s","xfsf_s","thr_s","LAMEsfb_s","LAMEqss","LAMEmainbits","LAMEsfbits","RARE_RE","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","tm","replaceFn","replace_scoped","inlineTokens","replace_rare","NsPsy","MAX_HEADER_LEN","Header","Class_ID","fill_buffer_resample_init","mfbuf","MFSIZE","channels_in","resample_ratio","mf_samples_to_encode","VBR_min_bitrate","VBR_max_bitrate","samplerate_index","lowpass1","lowpass2","highpass1","highpass2","noise_shaping_amp","noise_shaping_stop","use_best_huffman","full_outer_loop","tag_spec","OldValue","CurrentStep","bv_scf","pseudohalf","sfb21_extra","inbuf_old","blackfilt","BPC","itime","sb_sample","amp_filter","numlines_s_num1","numlines_l_num1","ms_ratio_s_old","ms_ratio_l_old","nogap_total","nogap_current","AudiophileGain","in_buffer_nsamples","in_buffer_0","in_buffer_1","disableCheckboxes","useLabelWrapper","useLabelAfter","parentToken","targetLevel","isTodoItem","isInline","isParagraph","isListItem","startsWithTodoMarkdown","todoify","TokenConstructor","makeCheckbox","afterLabel","beginLabel","endLabel","checkbox","disabledAttr","for","labelAfter","params","mem","haveEndMarker","isLetter","lc","addToUnscopables","_k","Arguments","encodeCache","getEncodeCache","keepEscaped","nextCode","encodeURIComponent","parseTree","baseNode","compatMode","warn","generateParseTree","__parse","isStrong","domTree","greekCapitals","dotlessLetters","makeSymbol","getCharacterMetrics","mathsym","mathDefault","mathit","makeOrd","fontName","fontMap","sizeElementFromChildren","makeFragment","fragment","makeFontSizer","fontSize","fontSizeInner","fontSizer","makeVList","positionType","positionData","currPos","oldChildren","bottom","realChildren","childWrap","baselineFix","vlist","sizingMultiplier","size1","size2","size3","size4","size5","size6","size7","size8","size9","size10","spacingFunctions","variant","sigma5","sigma6","sigma8","sigma9","sigma10","sigma11","sigma12","sigma13","sigma14","sigma15","sigma16","sigma17","sigma18","sigma19","sigma20","sigma21","sigma21Script","sigma21ScriptScript","sigma22","xi8","xi9","xi10","xi11","xi12","xi13","ptPerEm","doubleRuleSep","xHeight","num1","num2","num3","denom1","denom2","sup1","sup2","sup3","sub1","sub2","supDrop","subDrop","axisHeight","defaultRuleThickness","bigOpSpacing1","bigOpSpacing2","bigOpSpacing3","bigOpSpacing4","bigOpSpacing5","emPerEx","delim1","getDelim2","metricMap","character","fails","KEY","buildExpression","prev","groups","buildGroup","groupToType","genfrac","ordgroup","overline","underline","leftright","getTypeOfGroup","shouldHandleSupSub","isCharacterBox","getBaseElem","baseElem","makeNullDelimiter","groupTypes","prevAtom","elements","supmid","submid","supShift","subShift","minSupShift","supsub","scriptspace","ruleWidth","psi","marginLeft","fstyle","numShift","clearance","denomShift","frac","delimSize","nstyle","dstyle","numerreset","denomreset","candiateClearance","mid","midShift","customSizedDelim","nr","nc","pt","arraycolsep","baselineskip","arrayskip","arstrutHeight","arstrutDepth","totalHeight","inrow","outrow","elt","gap","unit","number","colSep","colDescrNum","colDescriptions","colDescr","firstSeparator","verticalAlign","sepwidth","col","supGroup","subGroup","hasLimits","noSuccessor","large","baseShift","slant","supKern","subKern","finalGroup","innerGroup","phi","lineClearance","innerHeight","minDelimiterHeight","delimDepth","delimShift","rootWrap","innerRootHeight","innerRootDepth","toShift","rootVList","rootVListWrap","newStyle","sizedDelim","innerDepth","leftRightDelim","borderRightWidth","borderTopWidth","supsubGroup","baseChar","vecClass","accentBody","accentWrap","groupNode","JSON","stringify","topStrut","bottomStrut","Any","Cf","_endLine","destEndPos","destEndLineNo","aFunction","Bits","subdv_table","quantize_lines_xrpow_01","istep","xrPos","ixPos","compareval0","quantize_lines_xrpow","remaining","x0","x3","rx0","rx1","rx2","rx3","quantize_xrpow","xp","pi","codInfo","prevNoise","prev_data_use","accumulate","accumulate01","xpPos","iData","iDataPos","acc_iData","acc_iDataPos","acc_xp","acc_xpPos","ix_max","endPos","max1","max2","count_bit_ESC","t1","t2","count_bit_noESC","hlen1","count_bit_noESC_from2","count_bit_noESC_from3","sum3","hlen2","hlen3","huf_tbl_noESC","choose_table","choice2","choice","recalc_divide_init","r01_bits","r01_div","r0_tbl","r1_tbl","bigv","r0","a1","r0bits","bi","r0t","r1","a2","r1t","recalc_divide_sub","cod_info2","r2","count1bits","r2t","noquant_count_bits","best_huffman_divide","count_bits","xrpow_max","gain","roundfac","slen1_n","slen2_n","scfsi_calc","all_scalefactors_not_negative","best_scalefac_store","recalc","scale_bitcount","scale_bitcount_lsf","scale_short","scale_mixed","scale_long","max_slen1","max_slen2","max_range_sfac_tab","table_number","row_in_table","nr_sfb","max_sfac","partition_table","slen3","slen4","log2tab","bv_index","scfb_anz","IE8_DOM_DEFINE","toPrimitive","Attributes","Url","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","hostlessProtocol","slashedProtocol","urlParse","slashesDenoteHost","lowerProto","hec","rest","simplePath","atSign","hostEnd","host","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","qm","Quantize","VBRTag","GetAudio","parse2","mpg2","Parse","ver2","id32","pre2","MPGLib","ID3Tag","_bits","Mp3Encoder","channels","samplerate","gaud","qu","id3","enc","lame_init","retcode","lame_init_params","maxSamples","encodeBuffer","_sz","lame_encode_buffer","subarray","flush","lame_encode_flush","WavHeader","dataOffset","dataLen","fourccToInt","fourcc","RIFF","WAVE","fmt_","readHeader","dataView","getUint32","fmtLen","getUint16","tk","init_xrpow_core","psfb21_analogsilence","ath21","ath12","BinSearchDirection","bin_search_StepSize","desired_rate","nBits","flagGoneOver","Direction","BINSEARCH_NONE","BINSEARCH_DOWN","BINSEARCH_UP","loop_break","penalties","get_klemm_noise","klemm_noise","quant_compare","best","calc","better","amp_scalefac_bands","bRefine","ifqstep34","trigger","inc_scalefac_scale","inc_subblock_gain","amp","balance_noise","status","ixwork","trancate_smallspectrums","work","allowedNoise","trancateThreshold","nsame","cod_info_w","save_xrpow","best_noise_info","best_part2_3_length","bEndOfSearch","best_ggain_pass1","age","search_limit","noise_info","maxggain","huff_bits","VBR_encode_granule","min_bits","dbits","bst_cod_info","bst_xrpow","Max_bits","real_bits","this_bits","get_framebits","frameBits","VBR_old_prepare","bands","analog_silence","mxb","bitpressure_strategy","VBR_new_prepare","maximum_framebits","calc_target_bits","analog_silence_bits","max_frame_bits","res_factor","totbits","SHARED","LAME_MAXALBUMART","mpglib","LowPassHighPass","lowerlimit","BandPass","bitrate","lPass","lowpass","_p","_qu","_id3","_mpglib","LAME_ID","lame_init_old","filter_coef","optimum_samplefreq","input_samplefreq","suggested_samplefreq","SmpFrqIndex","sample_freq","gpf","FindNearestBitrate","bRate","BitrateIndex","optimum_bandwidth","lh","freq_map","table_index","lame_init_params_ppflt","lowpass_band","highpass_band","minband","maxband","fc1","fc2","lame_init_qval","lame_init_bitstream","id3tag_write_v2","InitVbrTag","update_inbuffer_size","nsamples","calcNeeded","mf_needed","lame_encode_buffer_sample","buffer_l","buffer_r","mp3out","mp3size","in_buffer","in_bufferPos","in_buffer_ptr","n_in","n_out","inOut","InOut","fill_buffer","buf_size","lame_encode_frame","NumUsed","num_used","gcd","blackman","fcn","wcn","bkwn","sin","fill_buffer_resample","outbuf","outbufPos","desired_len","bpc","intratio","filter_l","BLACKSIZE","time0","joff","xvalue","n_shift","io","numUsed","full_bitrate_table","lower_range","lower_range_kbps","upper_range","upper_range_kbps","map2MP3Frequency","linear_int","hip_decode_exit","hip_decode_init","cmp","LAME_DEFAULT_QUALITY","VBRNewIterationLoop","VBROldIterationLoop","vbrmode","ABRIterationLoop","NSATTACKTHRE","NSATTACKTHRE_S","mp3buffer","mp3bufferPos","mp3buffer_size","mp3buffer_size_remaining","end_padding","frames_left","imp3","samples_to_encode","bunch","frame_num","id3tag_write_v1","disableNested","prevPos","FRAMES_FLAG","BYTES_FLAG","TOC_FLAG","VBR_SCALE_FLAG","NUMTOCENTRIES","MAXFRAMESIZE","VBRHEADERSIZE","LAMEHEADERSIZE","XING_BITRATE1","XING_BITRATE2","XING_BITRATE25","ISO_8859_1","VBRTag0","VBRTag1","crc16Lookup","addVbr","xingSeekTable","act","indx","seek_point","extractInteger","createInteger","createShort","isVbrTag","equals","shiftInBitsValue","setLameTagFrameHeader","bbyte","abyte","crcUpdateLookup","putLameVBR","musicLength","streamBuffer","streamBufferPos","revMethod","abrBitrate","bytesWritten","encDelay","encPadding","revision","vbrTypeTranslator","peakSignalAmplitude","radioReplayGain","audiophileReplayGain","noiseShaping","stereoMode","nonOptimal","sourceFreq","misc","musicCRC","expNPsyTune","safeJoint","noGapMore","noGapPrevious","noGapCount","noGapCurr","athType","skipId3v2","fpStream","seek","id3v2TagSize","id3v2Header","readFully","startsWith","getVbrTag","pTagData","VBRTagData","hId","hSrIndex","hMode","hBitrate","samprate","head_flags","frames","vbrScale","headersize","kbps_header","totalFrameSize","headerSize","getLameTagFrame","streamIndex","streamSize","putVbrTag","_unicodeCategory","allowedChars","spaces","chars","slug","__g","tokenRegex","whitespaceRegex","_innerLex","ignoreWhitespace","cssColor","_innerLexColor","sizeRegex","_innerLexSize","_innerLexWhitespace","mathMLTree","makeText","getVariant","withDelims","leftOp","rightOp","outerNode","leftNode","rightNode","accentNode","styleAttributes","operator","texExpression","wrapper","annotation","semantics","arrayIndexOf","_footnote_ref","subId","_footnote_block_open","_footnote_block_close","_footnote_open","_footnote_close","_footnote_anchor","footnote_def","oldBMark","oldSCount","posAfterColon","footnotes","refs","footnote_inline","footnoteId","footnote_ref","footnoteSubId","footnote_tail","lastParagraph","current","currentLabel","insideRef","refTokens","footnote_block_open","footnote_block_close","footnote_open","footnote_close","footnote_anchor","VERSION","_hasBuffer","_TD","TextDecoder","_TE","TextEncoder","b64ch","b64chs","b64tab","b64re","_fromCC","_U8Afrom","_mkUriSafe","m0","_tidyB64","btoaPolyfill","u32","c0","asc","pad","_btoa","btoa","_fromUint8Array","u8a","maxargs","strs","fromUint8Array","urlsafe","cb_utob","re_utob","utob","_encode","encodeURI","re_btou","cb_btou","cccc","btou","atobPolyfill","u24","_atob","atob","_toUint8Array","toUint8Array","_unURI","_decode","isValid","_noEnum","extendString","_add","extendUint8Array","extendBuiltins","gBase64","fromBase64","toBase64","encodeURL","lastLineEmpty","oldBMarks","getMetrics","mathrmSize","styleWrap","toStyle","makeSmallDelim","center","makeLargeDelim","makeInner","sizeClass","makeStackedDelim","heightTotal","middle","topMetrics","topHeightTotal","repeatMetrics","repeatHeightTotal","bottomMetrics","bottomHeightTotal","middleHeightTotal","middleFactor","middleMetrics","minHeight","repeatCount","realHeightTotal","inners","stackLargeDelimiters","stackAlwaysDelimiters","stackNeverDelimiters","sizeToMaxHeight","makeSizedDelim","stackNeverDelimiterSequence","stackAlwaysDelimiterSequence","stackLargeDelimiterSequence","delimTypeToFont","traverseSequence","sequence","heightDepth","makeCustomSizedDelim","makeLeftRightDelim","delimiterFactor","delimiterExtend","maxDistFromAxis","toParse","meanBits","clone_int","clone_float","other","enwindow","NS","NL","win","tantab_l","cx","cs","order","window_subband","x1Pos","wp","mdct_short","inout","inoutPos","tc0","tc1","tc2","ts0","ts1","ts2","mdct_long","outPos","_in","ct","st","tc3","tc4","ts5","ts6","ts7","ts8","ts3","ts4","tc5","tc6","tc7","tc8","w0","w1","wk","wkPos","mdct_enc","mdct_encPos","samp","sampPos","band0","band1","bu","bd","isRegExp","defaultOptions","fuzzyLink","fuzzyEmail","fuzzyIP","isOptionsObj","defaultSchemas","validate","http","no_http","mailto","tlds_2ch_src_re","tlds_default","resetScanCache","__index__","__text_cache__","createValidator","createNormalizer","compile","tlds","__tlds__","untpl","tpl","src_tlds","__tlds_replaced__","email_fuzzy","link_fuzzy","link_no_ip_fuzzy","host_fuzzy_test","aliases","schemaError","__compiled__","__schemas__","compiled","link","slist","schema_test","schema_search","Match","__last_index__","__schema__","raw","createMatch","schemas","__opts__","definition","ml","me","tld_pos","at_pos","testSchemaAt","keepOld","cnt","arrL","arrS","arr21","arr12","skipMarker","deflist","ddLine","dtLine","oldDDIndent"],"mappings":"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KAAK,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,MAAMC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAKC,IAAI,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAKC,IAAI,CAAC,CAAC,IAAI,MAAMC,IAAI,CAAC,CAAC,IAAI,MAAMC,IAAI,CAAC,CAAC,MAAMC,IAAI,CAAC,CAAC,IAAI,MAAMC,IAAI,CAAC,CAAC,IAAI,MAAMC,IAAI,CAAC,CAAC,IAAI,MAAMC,IAAI,CAAC,CAAC,IAAI,MAAMC,IAAI,CAAC,CAAC,IAAI,MAAMC,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AC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,MAC5bC,KAAK,CAACC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAK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KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,MAC1qBC,KAAK,CAACC,KAAK,CAAC,CAAC,CAAC,CAACC,KAAK,OAAOC,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,CAAC,CAACC,MAAM,QAAQC,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,CAAC,CAACF,MAAM,QAAQG,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,CAAC,CAACJ,MAAM,QAAQK,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,GAAGN,MAAM,CAAC,CAAC,IAC7RO,KAAK,CAACC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,CAAC,CAACC,MAAM,QAAQC,MAAM,CAAC,CAAC,CAAC,CAACD,MAAM,QAAQE,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,IAClLC,KAAK,CAACC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,IAC/CC,KAAK,CAACC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,CAAC,CAACC,MAAM,MAAMC,MAAM,QAAQC,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,MACvSC,KAAK,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,MAAM,MAAMC,MAAM,MAAMC,MAAM,QAAQC,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,IAC3IC,KAAK,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,MAAM,QAAQC,MAAM,CAAC,CAAC,CAAC,CAACD,MAAM,QAAQE,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,MAAM,QAAQC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,IACrHC,KAAK,CAACC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,IACpCC,KAAK,CAACC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,MAC3CC,KAAK,CAACC,KAAK,CAAC,CAAC,MACbC,KAAK,CAACC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,MACrCC,KAAK,CAACC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,MACvTC,KAAK,CAACC,KAAK,CAAC,CAAC,CAAC,CAACC,KAAK,OAAOC,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,CAAC,CAACF,KAAK,OAAOG,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,CAAC,CAACJ,KAAK,OAAOK,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,CAAC,CAACN,KAAK,OAAOO,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,CAAC,CAACR,KAAK,OAAOS,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,CAAC,CAACV,KAAK,OAAOW,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,CAAC,CAACb,KAAK,OAAOc,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,CAAC,CAACf,KAAK,OAAOgB,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,CAAC,CAACjB,KAAK,OAAOkB,KAAK,CAAC,CAAC,CAAC,CAAClB,KAAK,OAAOmB,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,CAAC,CAACrB,KAAK,OAAOsB,KAAK,CAAC,CAAC,KAAK,OAAOC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,IAC7mBC,KAAK,CAACC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,MAC/TC,KAAK,CAACC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,MAC/yEC,KAAK,CAACA,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAACp3C,IAAI,OAAOq3C,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAACr3C,IAAI,OAAOs3C,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IA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D,IAAI,OAAOygD,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAACzgD,IAAI,OAAO0gD,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,GAAG,MAAMC,KAAK,CAAC,CAAC,I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AAC,IAAI,MAAMC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC32C,IAAI,OAAO42C,KAAK,CAAC,CAAC,KAAK,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,IAAI,MAAMC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAChyD,IAAI,KAAKC,IAAI,KAAK2E,IAAI,QACxzKqtD,KAAK,CAACA,KAAK,CAAC,CAAC,OAAOC,KAAK,CAAC,CAAC,OAAOC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,GAAGC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,MAC//CC,KAAK,CAACA,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,KAAK,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAKC,KAAK,CAAC,CAAC,MAAMC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,MAAM,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,MAAM,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,I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,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,IAAI,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,KAAK,KAAKC,KAAK,CAAC,CAAC,IAAI,MAClpFC,MAAM,CAACC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAK,MAC9HC,MAAM,CAACC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,MAC5EC,MAAM,CAACC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,MACjcC,MAAM,CAACC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,MAC1CC,MAAM,CAACA,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,KAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC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AAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,MACphEC,MAAM,CAACA,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,KAAK,KAAK,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,KAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,MACj5KC,MAAM,CAACA,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,MAAM,KAAKC,MAAM,CAAC,CAAC,IAAI,MAAM,KAAKC,MAAM,CAAC,CAAC,IAAI,MAAM,KAAKC,MAAM,CAAC,CAAC,IAAI,MAAM,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAAC,GAAG,OAAO,KAAKC,MAAM,CAAC,CAA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AC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,KAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,MACr5IC,MAAM,CAACC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,MACz5IC,MAAM,CAACC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,MAC7oJC,MAAM,CAACC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,KAAK,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,MAChsJC,MAAM,CAACC,OAAO,CAAC,CAAC,KAAKC,OAAO,CAAC,CAAC,KAAKC,OAAO,CAAC,CAAC,KAAKC,OAAO,CAAC,CAAC,KAAKC,OAAO,CAAC,CAAC,KAAKC,OAAO,CAAC,CAAC,KAAKC,OAAO,CAAC,CAAC,MACpGC,MAAM,CAACC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,KAAKC,OAAO,CAAC,CAAC,MAAM,MACtwFC,MAAM,CAACC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,MAAM,GAAG,OAAO,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,CAAC,GAAG,IAAI,MACzlDC,MAAM,CAACC,OAAO,CAAC,CAAC,MAAM,OAAO,KAAKC,OAAO,CAAC,CAAC,MAAM,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,OAAO,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,OAAO,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,OAAO,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,OAAO,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,OAAO,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,OAAO,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,OAAO,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,OAAO,CAAC,CAAC,MAAM,MAAM,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,KAAKC,OAAO,CAAC,CAAC,OAAO,MACvyCC,MAAM,CAACC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,OAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAC/xIC,MAAM,CAACA,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,OAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,MAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SACj0QC,KAAM,CAACA,KAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,SAASC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,SAASC,MAAM,CAAC,CAAC,SAASC,MAAM,CAAC,CAAC,SAASC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,SAASC,MAAM,CAAC,CAAC,SAASC,MAAM,CAAC,CAAC,SAASC,MAAM,CAAC,CAAC,QAAQC,MAAM,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,MAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,SAASC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,QAAQC,OAAO,CAAC,CAAC,UAC1sHC,MAAM,CAACA,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,IAAIC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,MACriIC,MAAM,CAACA,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,MACniMC,MAAM,CAACA,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,MAC7yKC,MAAM,CAACC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,GAAG,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,KAAKC,MAAM,CAAC,CAAC,KAAK,MAAM,MACxhIC,MAAM,CAACC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,IAAI,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,KAAK,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,CAAC,OAAO,KAAKC,MAAM,CAAC,C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AAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,S,oCCZx/uH5nP,OAAO2d,eAAevZ,EAAS,aAAc,CAC3CuK,OAAO,IAETvK,EAAQyjP,QAAUC,EAElB,IAAIhsO,EAASisO,EAAuB,EAAQ,SAExCC,EAASD,EAAuB,EAAQ,SAExCE,EAASF,EAAuB,EAAQ,SAE5C,SAASA,EAAuBhoP,GAAO,OAAOA,GAAOA,EAAIyV,WAAazV,EAAM,CAAE8nP,QAAS9nP,GAEvF,SAASmoP,EAAQnoP,GAAwT,OAAtOmoP,EAArD,oBAAXC,QAAoD,kBAApBA,OAAOC,SAAmC,SAAiBroP,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXooP,QAAyBpoP,EAAIsoP,cAAgBF,QAAUpoP,IAAQooP,OAAOloP,UAAY,gBAAkBF,GAAiBmoP,EAAQnoP,GAExV,SAASuoP,EAAmBC,GAAO,OAAOC,EAAmBD,IAAQE,EAAiBF,IAAQG,IAE9F,SAASA,IAAuB,MAAM,IAAIznP,UAAU,mDAEpD,SAASwnP,EAAiBE,GAAQ,GAAIR,OAAOC,YAAYpoP,OAAO2oP,IAAkD,uBAAzC3oP,OAAOC,UAAUC,SAASC,KAAKwoP,GAAgC,OAAO/nP,MAAMgoP,KAAKD,GAE1J,SAASH,EAAmBD,GAAO,GAAI3nP,MAAMoM,QAAQu7O,GAAM,CAAE,IAAK,IAAI3iP,EAAI,EAAGijP,EAAO,IAAIjoP,MAAM2nP,EAAI9iP,QAASG,EAAI2iP,EAAI9iP,OAAQG,IAAOijP,EAAKjjP,GAAK2iP,EAAI3iP,GAAM,OAAOijP,GAE7J,SAASC,EAAcC,GAAU,IAAK,IAAInjP,EAAI,EAAGA,EAAI9E,UAAU2E,OAAQG,IAAK,CAAE,IAAI5E,EAAyB,MAAhBF,UAAU8E,GAAa9E,UAAU8E,GAAK,GAAQojP,EAAUhpP,OAAOkB,KAAKF,GAAqD,oBAAjChB,OAAOsd,wBAAwC0rO,EAAUA,EAAQznP,OAAOvB,OAAOsd,sBAAsBtc,GAAQmM,QAAO,SAAU87O,GAAO,OAAOjpP,OAAOqd,yBAAyBrc,EAAQioP,GAAKvrO,gBAAmBsrO,EAAQjoP,SAAQ,SAAUN,GAAOyoP,EAAgBH,EAAQtoP,EAAKO,EAAOP,OAAa,OAAOsoP,EAExd,SAASG,EAAgBnpP,EAAKU,EAAKkO,GAAiK,OAApJlO,KAAOV,EAAOC,OAAO2d,eAAe5d,EAAKU,EAAK,CAAEkO,MAAOA,EAAO+O,YAAY,EAAMijO,cAAc,EAAMC,UAAU,IAAkB7gP,EAAIU,GAAOkO,EAAgB5O,EAE3M,IAAIopP,EAAM,SACNC,EAAS,cAETC,EAA2B,aAE3BC,EAAa,GACbC,EAAU,GAEVC,EAAS,SAAgBvyO,EAAQwyO,GACnC,OAAO,IAAI7oP,MAAM6oP,EAAM,GAAG14O,KAAKkG,IAG7ByyO,EAAW,SAAkBzyO,EAAQqyO,EAAYK,GACnD,IAAIlpP,EAAMkpP,EAAU1yO,GAOpB,OALKqyO,EAAW7oP,KACd6oP,EAAW7oP,GAAO,GAGpB6oP,EAAW7oP,KACJA,GAAO6oP,EAAW7oP,GAAO,EAAI,IAAIc,OAAO+nP,EAAW7oP,IAAQ,KAGhEmpP,EAAQ,WACV,OAAOd,EAAc,GAAI,IAAIb,EAAOJ,QAAQ,OAAQ,GAAI,GAAI,CAC1DljP,QAAS,OAITklP,EAAyB,SAAgCl+O,GAC3D,OAAIA,EAAQm+O,0BACH,CAAChB,EAAc,GAAI,IAAIb,EAAOJ,QAAQ,YAAa,OAAQ,GAAI,CACpE35O,MAAO,CAAC,CAAC,QAASvC,EAAQm+O,8BACxBhB,EAAc,GAAI,IAAIb,EAAOJ,QAAQ,OAAQ,GAAI,GAAI,CACvDljP,QAASgH,EAAQo+O,mBACf,IAAI9B,EAAOJ,QAAQ,aAAc,QAAS,IAEvC,CAACiB,EAAc,GAAI,IAAIb,EAAOJ,QAAQ,OAAQ,GAAI,GAAI,CAC3DljP,QAASgH,EAAQo+O,qBAKnBC,EAAmB,SAA0BC,EAAQt+O,EAASlH,EAAQC,GACxE,IAAIwJ,EAAQ,GAEmB,MAA3BvC,EAAQu+O,iBACVh8O,EAAMrI,KAAK,CAAC,QAAS8F,EAAQu+O,kBAG/Bh8O,EAAMrI,KAAK,CAAC,OAAQ,IAAItE,OAAO0oP,KAE/B,IAAIE,EAAgBrB,EAAc,GAAI,IAAIb,EAAOJ,QAAQ,YAAa,IAAK,GAAI,CAC7E35O,MAAOA,IAGLk8O,EAAiB,IAAInC,EAAOJ,QAAQ,aAAc,KAAM,GAE5D,GAAIl8O,EAAQ0+O,wBACV5lP,EAAOC,EAAM,GAAGiF,SAAS2gP,QAAQH,GACjC1lP,EAAOC,EAAM,GAAGiF,SAAS9D,KAAKukP,OACzB,CACL,IAAIG,EAEAC,EAAa,CAACL,GAAe5oP,OAAO+mP,EAAmBuB,EAAuBl+O,IAAW,CAACy+O,IAG1FK,EAAgB,CAClBC,MAAO,OACPC,KAAM,WAGJh/O,EAAQi/O,iBACVJ,EAAWC,GAAe9+O,EAAQk/O,mBAAmBjB,MAGtDW,EAAmB9lP,EAAOC,EAAM,GAAGiF,UAAU8gP,EAAc9+O,EAAQk/O,mBAAmB5jP,MAAMsjP,EAAkBjC,EAAmBkC,MAIlIM,EAA2B,SAASA,EAAyBC,GAC/D,IAAIC,EAASlqP,UAAU2E,OAAS,QAAsB0N,IAAjBrS,UAAU,GAAmBA,UAAU,GAAK,EACjF,OAAOiqP,EAAKrhP,KAAI,SAAUuhP,GACxB,IAAIC,EAAc,KACd14O,EAAO,GAAGjR,OAAOioP,EAAO0B,EAAaF,GAAS,KAElD,GAAIC,EAAKE,QAAQxmP,QAAS,CACxB,IAAIymP,EAAuBH,EAAKE,QAAQxmP,QAAQ3B,QAAQ,yBAA0B,MAClFwP,GAAQ,IAAM,IAAIjR,OAAO6pP,EAAsB,OAAO7pP,OAAO0pP,EAAKE,QAAQlB,OAAQ,YAElFz3O,GAAQ,KAOV,OAJIy4O,EAAKI,MAAM5lP,SACb+M,GAAQs4O,EAAyBG,EAAKI,MAAOL,EAAS,IAGjDx4O,KACNzB,KAAK,KAGNu6O,EAA+B,SAAsCC,EAAU5/O,GACjF,IAAIo/O,EAAO,CACTM,MAAO,IA2BT,OAxBAE,EAASxqP,SAAQ,SAAUoqP,GACzB,KAAIA,EAAQpiP,MAAQ4C,EAAQ6/O,eAAiBL,EAAQpiP,MAAQ4C,EAAQ8/O,cAArE,CAOA,IAHA,IAAI7lP,EAAI,EACJ8lP,EAAWX,EAERnlP,EAAIulP,EAAQpiP,MAAQ4C,EAAQ6/O,cAAgB,EAAG5lP,IACtB,IAA1B8lP,EAASL,MAAM5lP,QACjBimP,EAASL,MAAMxlP,KAAK,CAClBslP,QAAS,GACTE,MAAO,KAIXK,EAAWA,EAASL,MAAMK,EAASL,MAAM5lP,OAAS,GAGpDimP,EAASL,MAAMxlP,KAAK,CAClBslP,QAASA,EACTE,MAAO,SAGJP,EAAyBC,EAAKM,QAGvC,SAASvD,EAAS/4O,EAAIpD,GACpBA,EAAUm9O,EAAc,CACtB6C,KAAK,EACLC,aAAc,iBACdJ,cAAe,EACfC,aAAc,EACdI,YAAa,KACbC,YAAY,EACZ/B,iBAAkB,IAClBc,kBAAkB,EAClBX,gBAAiB,oBACjB6B,UAAU,EACVnB,iBAAiB,EACjBd,0BAA2B,KAC3BO,yBAAyB,GACxB1+O,GACH09O,GAA2B,EAAIvtO,EAAO+rO,SAAS94O,GAE/Cu6O,EAAa,GACbv6O,EAAGjD,KAAKU,MAAM3G,KAAK,YAAY,SAAU8C,GACvC,IAAIlE,EAASkE,EAAMlE,OAEfkH,EAAQogP,WACVzC,EAAa,IAQf,IALA,IAAI0C,EAAW,GACXC,EAAc,GACdC,EAAY,GACZvC,EAAuC,oBAApBh+O,EAAQwgP,SAA0BxgP,EAAQwgP,SAAWnE,EAAOH,QAE1EjiP,EAAI,EAAGA,EAAInB,EAAOgB,OAAQG,IACjC,GAAuB,kBAAnBnB,EAAOmB,GAAGmI,KAAd,CAIA,IAAIo9O,EAAU1mP,EAAOmB,EAAI,GACrBwmP,EAAgB3nP,EAAOmB,GAE3B,GAAqB,WAAjBulP,EAAQp9O,KAAmB,CAC7B,IAAIpJ,OAAU,EAEVwmP,EAAQxhP,UAAYwhP,EAAQxhP,SAASlE,OAAS,GAAkC,cAA7B0lP,EAAQxhP,SAAS,GAAGoE,MAGzEpJ,EAAUwmP,EAAQxhP,SAAS,GAAGhF,QAC9BwmP,EAAQkB,WAAa3C,EAAS/kP,EAAS2kP,EAAYK,KAEnDhlP,EAAUwmP,EAAQxmP,QAClBwmP,EAAQkB,WAAa3C,EAASyB,EAAQxhP,SAAS2iP,QAAO,SAAUC,EAAK/zO,GACnE,OAAO+zO,EAAM/zO,EAAE7T,UACd,IAAK2kP,EAAYK,IAGlBh+O,EAAQ6gP,mBACVrB,EAAQkB,WAAa1gP,EAAQ6gP,iBAAmBrB,EAAQkB,YAG1DL,EAASnmP,KAAK,CACZlB,QAASA,EACTslP,OAAQkB,EAAQkB,WAChBtjP,OAAQqjP,EAAcp+O,IAAIy+O,OAAO,EAAG,MAQ1C,GAHAR,EAAcX,EAA6BU,EAAUrgP,GACrDugP,EAAY7C,EAAyBt+O,MAAMkhP,EAAa,IAE1B,WAA1B/D,EAAQgE,EAAU,KAA0C,qBAAtBA,EAAU,GAAGn+O,KAA6B,CAClF,IAAIG,EAAQg+O,EAAU,GAAGh+O,MAAQg+O,EAAU,GAAGh+O,OAAS,GAE3B,MAAxBvC,EAAQigP,cACV19O,EAAMrI,KAAK,CAAC,QAAS8F,EAAQigP,eAIjCrC,EAAUF,EAAyBt9O,SAAS2B,OAAOw+O,EAAW7C,EAAyB19O,SAElD,oBAA1BhD,EAAM4E,IAAIs+O,YACnBljP,EAAM4E,IAAIs+O,YAAY1rP,UAAKgT,EAAW84O,EAAaD,EAAUzC,GACrB,oBAAxB59O,EAAQkgP,YACxBlgP,EAAQkgP,YAAY1rP,UAAKgT,EAAW84O,EAAaD,EAAUzC,GAChB,oBAA3Bx6O,EAAGpD,QAAQkgP,aAC3B98O,EAAGpD,QAAQkgP,YAAY1rP,UAAKgT,EAAW84O,EAAaD,EAAUzC,MAGlEx6O,EAAGnD,OAAOY,MAAMkgP,MAAM,WAAY,OAAO,SAAU/jP,EAAOG,GACxD,IAAIG,EACA3G,EAEJ,OACoC,KAApCqG,EAAMvH,IAAIqB,WAAWkG,EAAMtH,MAAyD,KAAxCsH,EAAMvH,IAAIqB,WAAWkG,EAAMtH,IAAM,KAC7EyH,IAKAxG,EAAQ8mP,EAAO30N,KAAK9rB,EAAMvH,KAC1BkB,EAASA,EAAaA,EAAM6K,QAAO,SAAU6L,GAC3C,OAAOA,KADQ,KAIb1W,EAAMmD,OAAS,KAKnBwD,EAAQN,EAAM9C,KAAK,WAAY,MAAO,GACtCoD,EAAMQ,OAAS0/O,EACflgP,EAAQN,EAAM9C,KAAK,WAAY,GAAI,GACnCoD,EAAQN,EAAM9C,KAAK,YAAa,OAAQ,GAExC8C,EAAMtH,IAAMsH,EAAMtH,IAAM,GACjB,OAGT,IAAIsrP,EAAsB59O,EAAGhD,SAASQ,MAAMqgP,cAAgB,WAC1D,IAAK,IAAIC,EAAO/rP,UAAU2E,OAAQD,EAAO,IAAI5E,MAAMisP,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EtnP,EAAKsnP,GAAQhsP,UAAUgsP,GAGzB,IAAIroP,EAASe,EAAK,GACdd,EAAMc,EAAK,GACXmG,EAAUnG,EAAK,GACf4G,EAAO5G,EAAK,GAChB,OAAO4G,EAAK2gP,YAAYtoP,EAAQC,EAAKiH,IAGvCoD,EAAGhD,SAASQ,MAAMqgP,aAAe,WAC/B,IAAK,IAAII,EAAQlsP,UAAU2E,OAAQD,EAAO,IAAI5E,MAAMosP,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFznP,EAAKynP,GAASnsP,UAAUmsP,GAG1B,IAAIxoP,EAASe,EAAK,GACdd,EAAMc,EAAK,GACX0I,EAAQzJ,EAAOC,GAAKwJ,MAAQzJ,EAAOC,GAAKwJ,OAAS,GACjD+7O,EAASxlP,EAAOC,EAAM,GAAG2nP,WAO7B,OANAn+O,EAAMrI,KAAK,CAAC,KAAMokP,IAEdt+O,EAAQmgP,YACV9B,EAAiB/iP,WAAM,EAAQ,CAACgjP,EAAQt+O,GAASpK,OAAOiE,IAGnDmnP,EAAoB1lP,MAAMI,KAAM7B,IAGzCuJ,EAAGhD,SAASQ,MAAM2gP,SAAW,WAC3B,MAAO,IAGTn+O,EAAGhD,SAASQ,MAAM4gP,UAAY,WAC5B,MAAO,IAGTp+O,EAAGhD,SAASQ,MAAM6gP,SAAW,WAC3B,MAAO,IAGLzhP,EAAQggP,MACV58O,EAAGhD,SAASQ,MAAM6gP,SAAW,WAC3B,OAAO7D,M,uBCnUb,IAAI8D,EAAY,EAAQ,QACpBC,EAAc,EAAQ,QACtBC,EAAc,EAAQ,QACtBC,EAAU,EAAQ,QAClBC,EAAW,EAAQ,QACnBC,EAAQ,EAAQ,QAEhBC,EAAWJ,EAAYI,SAEvBC,EAAY,SAAS7C,EAAM8C,EAAYC,GACvCA,EAAWA,GAAY,IAAIL,EAAS,IAEpC,IAAIM,EAAaL,EAAMM,KACnBF,EAASG,cACTF,EAAaL,EAAMQ,SAIvB,IAAIviP,EAAU,IAAI6hP,EAAQ,CACtBp8O,MAAO28O,EACPnvO,KAAM,UAKNuvO,EAAab,EAAYvC,EAAM8C,EAAYliP,GAC3CyiP,EAAWf,EAAUtC,EAAMp/O,GAE3B0iP,EAAYV,EAAS,CAAC,SAAU,CAChCQ,EAAYC,IAGhB,OAAIN,EAASG,YACFN,EAAS,CAAC,iBAAkB,CAACU,IAE7BA,GAIf7pP,EAAOJ,QAAUwpP,G,kCCpCjBppP,EAAOJ,QAAU,SAAeuE,GAC9B,IAAIM,EAEAN,EAAMiF,YACR3E,EAAiB,IAAIN,EAAMmF,MAAM,SAAU,GAAI,GAC/C7E,EAAMtE,QAAWgE,EAAMvH,IACvB6H,EAAMS,IAAW,CAAE,EAAG,GACtBT,EAAMU,SAAW,GACjBhB,EAAMlE,OAAOoB,KAAKoD,IAElBN,EAAMoG,GAAGlD,MAAMd,MAAMpC,EAAMvH,IAAKuH,EAAMoG,GAAIpG,EAAM4E,IAAK5E,EAAMlE,U,uBCb/D,IAAI6pP,EAAK,EAAQ,QACbC,EAAa,EAAQ,QACzB/pP,EAAOJ,QAAU,EAAQ,QAAoB,SAAU5D,EAAQC,EAAKkO,GAClE,OAAO2/O,EAAG5qO,EAAEljB,EAAQC,EAAK8tP,EAAW,EAAG5/O,KACrC,SAAUnO,EAAQC,EAAKkO,GAEzB,OADAnO,EAAOC,GAAOkO,EACPnO,I,oCCHT,IAAIguP,EAAoB,EAAQ,QAC5BC,EAAoB,EAAQ,QAC5BC,EAAoB,EAAQ,QAC5BC,EAAoB,EAAQ,QAC5BC,EAAoB,EAAQ,QAGhCpqP,EAAOJ,QAAU,SAAsB2K,EAAIpD,GACzC,IAAIkjP,EAAW,CACbC,KAAMN,EACNO,UAAWN,EACXO,QAAS,IAGPC,EAAOL,EAAe7/O,EAAGlF,MAAMnJ,OAAO,GAAImuP,EAAUljP,GAAW,KAEnEoD,EAAGhD,SAASQ,MAAM2iP,MAAQR,EAE1B3/O,EAAGjD,KAAKU,MAAM3G,KAAK,QAAS8oP,EAAc5/O,EAAIkgP,EAAKH,KAAMG,EAAKF,UAAWE,EAAKE,OAAQF,EAAKG,c,uBCpB7F,IAAIC,EAAU,EAAQ,QAClB9wO,EAAU,EAAQ,QACtB/Z,EAAOJ,QAAU,SAAUwF,GACzB,OAAOylP,EAAQ9wO,EAAQ3U,M,oCCEzB,SAAS0lP,EAAQxsP,GACf,OAAOA,EAAIE,QAAQ,uBAAwB,QAI7CwB,EAAOJ,QAAU,SAAwBuH,GACvC,IACIojP,EADAQ,EAAU5jP,EAAQmjP,KAIlBnjP,EAAQqjP,QAAQvpP,SAClB8pP,EAAUvvP,OAAOkB,KAAKquP,GAASjD,QAAO,SAAUC,EAAK9rP,GAInD,OAHIkL,EAAQqjP,QAAQjsP,QAAQtC,IAAQ,IAClC8rP,EAAI9rP,GAAO8uP,EAAQ9uP,IAEd8rP,IACN,KAILwC,EAAY/uP,OAAOkB,KAAKyK,EAAQojP,WAAWzC,QAAO,SAAUC,EAAK9rP,GAE/D,OAAK8uP,EAAQ9uP,GAETG,MAAMoM,QAAQrB,EAAQojP,UAAUtuP,KAClCkL,EAAQojP,UAAUtuP,GAAKM,SAAQ,SAAUyuP,GACvCjD,EAAIiD,GAAS/uP,KAER8rP,IAGTA,EAAI5gP,EAAQojP,UAAUtuP,IAAQA,EACvB8rP,GAVqBA,IAW3B,IAGH,IAAIkD,EAAQzvP,OAAOkB,KAAKquP,GACT7lP,KAAI,SAAUnH,GAAQ,MAAO,IAAMA,EAAO,OAC1ChB,OAAOvB,OAAOkB,KAAK6tP,IACnBW,OACAC,UACAjmP,KAAI,SAAUnH,GAAQ,OAAO+sP,EAAQ/sP,MACrCwO,KAAK,KAChBo+O,EAASjtP,OAAOutP,GAChBL,EAAYltP,OAAOutP,EAAO,KAE9B,MAAO,CACLX,KAAMS,EACNR,UAAWA,EACXI,OAAQA,EACRC,UAAWA,K,qBCxDf,IAAI/+O,EAAS,EAAQ,QAEjBnI,GADSmI,EAAO/J,OACN+J,EAAOnI,SACTmI,EAAOpI,MACFoI,EAAOlJ,WACbkJ,EAAOnJ,KACLmJ,EAAOpK,OACFoK,EAAOrK,YACVqK,EAAOzL,SACLyL,EAAOhL,WACRgL,EAAOlL,UACLkL,EAAO9K,YACX8K,EAAOpL,QACLoL,EAAOvK,UACVuK,EAAO3H,OAEpB,SAASknP,IACL,SAASC,EAAWC,EAAMC,EAAMC,EACZpoP,EAAGqoP,EAAaC,EAChBC,EAAKC,EAAUC,EACfC,EAAOC,EAAMC,EACbC,EAAOC,EAAKC,GAC5BtpP,KAAKupP,MAAQd,EACbzoP,KAAKwpP,WAAad,EAClB1oP,KAAKypP,aAAed,EACpB3oP,KAAK0pP,KAAOnpP,EACZP,KAAK2pP,OAASf,EACd5oP,KAAK4pP,KAAOf,EACZ7oP,KAAK6pP,YAAcf,EACnB9oP,KAAK8pP,kBAAoBf,EACzB/oP,KAAK+pP,UAAYf,EACjBhpP,KAAKgqP,UAAYf,EACjBjpP,KAAKiqP,gBAAkBf,EACvBlpP,KAAKkqP,QAAUf,EACfnpP,KAAKmqP,UAAYf,EACjBppP,KAAKoqP,SAAWf,EAChBrpP,KAAK2d,MAAQ2rO,EAGjB,SAASe,EAAWC,EAAM5B,EAAMC,EACZS,EAAOE,EAAKV,EACZC,EAAc0B,EAAMC,EACpBC,EAAMzB,EAAOC,EACbyB,EAASC,GACzB3qP,KAAKwpP,WAAad,EAClB1oP,KAAKypP,aAAed,EACpB3oP,KAAKmqP,UAAYf,EACjBppP,KAAK4qP,QAAUtB,EACftpP,KAAK2pP,OAASf,EACd5oP,KAAK4pP,KAAOf,EACZ7oP,KAAK6qP,OAASN,EACdvqP,KAAK8qP,MAAQN,EACbxqP,KAAK6pP,YAAcY,EACnBzqP,KAAK+pP,UAAYf,EACjBhpP,KAAKgqP,UAAYf,EACjBjpP,KAAKkqP,QAAUQ,EACf1qP,KAAK+qP,QAAUJ,EAGnB,IAAIK,EAEJhrP,KAAKirP,WAAa,SAAUC,GACxBF,EAAOE,GASX,IAAIC,EAAqB,CACrB,IAAI3C,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,KAAQ,KAAM,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,KACzE,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,KAAQ,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,MAC3E,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,KAAQ,KAAM,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,MACzE,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,KAAQ,KAAM,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,MAC1E,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,EAAM,KAAQ,IAAM,IAAK,IAAK,KAAM,EAAG,EAAG,EAAG,EAAG,MAC3E,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,GAAK,IAAM,IAAK,GAAI,GAAI,KAAQ,EAAG,EAAG,MAC9E,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,IAAM,KAAO,KAAM,KAAM,GAAI,KAAQ,EAAG,EAAG,KACnF,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,GAAK,KAAO,KAAM,GAAI,GAAI,KAAQ,EAAG,EAAG,KAChF,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,IAAK,MAAO,KAAM,IAAK,GAAI,KAAQ,EAAG,EAAG,GACjF,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,IAAK,KAAM,GAAI,IAAK,GAAI,KAAQ,EAAG,EAAG,GAC9E,IAAIA,EAAW,GAAI,EAAG,EAAG,EAAG,IAAM,IAAO,EAAK,GAAM,GAAI,IAAK,GAAI,KAAQ,EAAG,EAAG,IAQ/E4C,EAAqB,CACrB,IAAI5C,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,GAAM,EAAK,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,KACxE,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,MAC1E,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,KAAM,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,MACtE,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,KAAM,KAAM,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,MAC1E,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,IAAK,GAAK,EAAG,KAAM,EAAG,EAAG,EAAG,EAAG,MACvE,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,EAAK,MAAO,IAAK,GAAI,GAAI,KAAQ,EAAG,EAAG,MAC/E,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,IAAO,EAAK,MAAO,IAAK,KAAM,GAAI,KAAQ,EAAG,EAAG,GACjF,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,GAAM,GAAK,GAAM,KAAM,GAAI,GAAI,KAAQ,EAAG,EAAG,GAC9E,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,GAAM,EAAK,KAAM,GAAM,IAAK,GAAI,KAAQ,EAAG,EAAG,GAC/E,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAM,GAAM,IAAK,MAAO,GAAM,IAAK,GAAI,KAAQ,EAAG,EAAG,GAChF,IAAIA,EAAW,GAAI,EAAG,EAAG,EAAG,IAAM,GAAM,EAAK,MAAO,GAAM,IAAK,GAAI,KAAQ,EAAG,EAAG,IAGrF,SAAS6C,EAAiB9xO,EAAK1a,EAAGysP,GAC9B,IAAIC,EAAahyO,EAAIyJ,KAAOniB,EAAQI,OAASkqP,EACvCC,EAEFjrP,EAAIoZ,EAAIiyO,WACRtnO,EAAIqnO,EAAW1sP,GACf+S,EAAI25O,EAAW1sP,EAAI,GACnBgG,EAAMqf,EAMVA,EAAEylO,OAASzlO,EAAEylO,OAASxpP,GAAKyR,EAAE+3O,OAASzlO,EAAEylO,QAExCzlO,EAAE0lO,KAAO1lO,EAAE0lO,KAAOzpP,GAAKyR,EAAEg4O,KAAO1lO,EAAE0lO,MAElC1lO,EAAE2lO,YAAc3lO,EAAE2lO,YAAc1pP,GAAKyR,EAAEi4O,YAAc3lO,EAAE2lO,aAEvD3lO,EAAE4lO,kBAAoB5lO,EAAE4lO,kBAAoB3pP,GACrCyR,EAAEk4O,kBAAoB5lO,EAAE4lO,mBAE/B5lO,EAAE6lO,UAAY7lO,EAAE6lO,UAAY5pP,GAAKyR,EAAEm4O,UAAY7lO,EAAE6lO,WAEjD7lO,EAAE8lO,UAAY9lO,EAAE8lO,UAAY7pP,GAAKyR,EAAEo4O,UAAY9lO,EAAE8lO,WAEjD9lO,EAAE+lO,gBAAkB/lO,EAAE+lO,gBAAkB9pP,GACjCyR,EAAEq4O,gBAAkB/lO,EAAE+lO,iBAE7B/lO,EAAEgmO,QAAUhmO,EAAEgmO,QAAU/pP,GAAKyR,EAAEs4O,QAAUhmO,EAAEgmO,SAI3ChmO,EAAEvG,MAAQuG,EAAEvG,MAAQxd,GAAKyR,EAAE+L,MAAQuG,EAAEvG,OAGrC8tO,EAAelyO,EAAK1U,EAAI0kP,OAET,GAAX+B,EACA/xO,EAAIiwO,WAAa3kP,EAAI2kP,WACdppP,KAAK+jB,IAAI5K,EAAIiwO,aAAc,GAAK,IACvCjwO,EAAIiwO,WAAa3kP,EAAI2kP,YAEV,GAAX8B,EACA/xO,EAAImyO,iBAAmB7mP,EAAI4kP,aACpBrpP,KAAK+jB,IAAI5K,EAAImyO,mBAAoB,GAAK,IAC7CnyO,EAAImyO,iBAAmB7mP,EAAI4kP,cAEf,GAAZ5kP,EAAI6kP,OACJnwO,EAAIoyO,cAA4B,GAAZ9mP,EAAI6kP,MAEb,GAAX4B,EACA/xO,EAAIW,eAAe2J,MAAMU,WAAa1f,EAAI8kP,OACnCvpP,KAAK+jB,IAAI5K,EAAIW,eAAe2J,MAAMU,aAAc,GAAK,IAC5DhL,EAAIW,eAAe2J,MAAMU,WAAa1f,EAAI8kP,QAE/B,GAAX2B,EACA/xO,EAAIW,eAAe2J,MAAMS,aAAezf,EAAI+kP,KACrCxpP,KAAK+jB,IAAI5K,EAAIW,eAAe2J,MAAMS,eAAgB,GAAK,IAC9D/K,EAAIW,eAAe2J,MAAMS,aAAezf,EAAI+kP,MAEjC,GAAX0B,EACA/xO,EAAIqyO,cAAgB/mP,EAAIglP,YACjBzpP,KAAK+jB,IAAI5K,EAAIqyO,cAAgB,GAAK,IACzCryO,EAAIqyO,cAAgB/mP,EAAIglP,aAEb,GAAXyB,EACA/xO,EAAIsyO,oBAAsBhnP,EAAIilP,kBACvB1pP,KAAK+jB,IAAI5K,EAAIsyO,oBAAsB,GAAK,IAC/CtyO,EAAIsyO,oBAAsBhnP,EAAIilP,mBAEnB,GAAXwB,EACA/xO,EAAIyL,UAAYngB,EAAIklP,UAAY,GACzB3pP,KAAK+jB,IAAqB,IAAf5K,EAAIyL,SAAmB,GAAK,IAC9CzL,EAAIyL,UAAYngB,EAAIklP,UAAY,IAErB,GAAXuB,EACA/xO,EAAI6S,SAAWvnB,EAAImlP,UACZ5pP,KAAK+jB,IAAI5K,EAAI6S,WAAY,GAAK,IACrC7S,EAAI6S,SAAWvnB,EAAImlP,WAER,GAAXsB,EACA/xO,EAAIuyO,kBAAoBjnP,EAAIolP,gBACrB7pP,KAAK+jB,IAAI5K,EAAIuyO,oBAAqB,GAAK,IAC9CvyO,EAAIuyO,kBAAoBjnP,EAAIolP,iBAE5BplP,EAAIqlP,QAAU,IACC,GAAXoB,EACA/xO,EAAIwL,aAAelgB,EAAIqlP,QAChB9pP,KAAK+jB,IAAI5K,EAAIwL,eAAgB,GAAK,IACzCxL,EAAIwL,aAAelgB,EAAIqlP,UAK3BrlP,EAAIslP,UAAY,IAChB5wO,EAAIsS,cAAgBtS,EAAIsS,cAAgBhnB,EAAIslP,WAE5CtlP,EAAIulP,SAAW,IACf7wO,EAAIsS,cAAgBtS,EAAIsS,cAAiBhnB,EAAIulP,UAAY,IAE9C,GAAXkB,EACA/xO,EAAIoE,MAAQ9Y,EAAI8Y,MACTvd,KAAK+jB,IAAI5K,EAAIoE,QAAS,GAAK,IAClCpE,EAAIoE,MAAQ9Y,EAAI8Y,OAGL,GAAX2tO,IACA/xO,EAAIwyO,MAAQltP,EACZ0a,EAAIiyO,WAAarrP,GAWzB,IAAI6rP,EAAiB,CACjB,IAAI3B,EAAW,EAAG,EAAG,EAAG,EAAG,EAAG,IAAM,IAAK,EAAG,IAAM,GAAI,GAAM,GAAI,MAAQ,GACxE,IAAIA,EAAW,GAAI,EAAG,EAAG,EAAG,EAAG,IAAM,IAAK,EAAG,IAAM,GAAI,GAAM,GAAI,KAAQ,GACzE,IAAIA,EAAW,GAAI,EAAG,EAAG,EAAG,EAAG,IAAM,IAAK,EAAG,IAAM,GAAI,GAAM,GAAI,KAAQ,GACzE,IAAIA,EAAW,GAAI,EAAG,EAAG,EAAG,EAAG,IAAM,IAAK,EAAG,IAAM,GAAI,GAAM,GAAI,KAAQ,GACzE,IAAIA,EAAW,GAAI,EAAG,EAAG,EAAG,EAAG,IAAM,IAAK,EAAG,IAAM,GAAI,GAAM,GAAI,KAAQ,GACzE,IAAIA,EAAW,GAAI,EAAG,EAAG,EAAG,EAAG,IAAM,IAAK,EAAG,IAAM,GAAI,GAAM,GAAI,KAAQ,GACzE,IAAIA,EAAW,GAAI,EAAG,EAAG,EAAG,EAAG,IAAM,IAAK,EAAG,IAAM,GAAI,EAAK,GAAI,KAAQ,GACxE,IAAIA,EAAW,GAAI,EAAG,EAAG,EAAG,EAAG,IAAM,IAAK,EAAG,IAAM,GAAI,EAAK,GAAI,KAAQ,GACxE,IAAIA,EAAW,GAAI,EAAG,EAAG,EAAG,EAAG,IAAM,IAAK,EAAG,IAAM,EAAG,EAAI,EAAG,KAAQ,GACrE,IAAIA,EAAW,GAAI,EAAG,EAAG,EAAG,IAAM,IAAM,IAAK,EAAG,IAAM,EAAG,EAAK,IAAK,KAAQ,GAC3E,IAAIA,EAAW,IAAK,EAAG,EAAG,EAAG,KAAM,IAAM,IAAK,EAAG,IAAM,EAAG,EAAK,IAAK,KAAQ,GAC5E,IAAIA,EAAW,IAAK,EAAG,EAAG,EAAG,KAAM,IAAM,IAAK,EAAG,IAAM,EAAG,EAAK,EAAG,KAAQ,GAC1E,IAAIA,EAAW,IAAK,EAAG,EAAG,EAAG,KAAM,EAAM,IAAK,EAAG,KAAO,EAAG,EAAK,IAAK,EAAG,GACxE,IAAIA,EAAW,IAAK,EAAG,EAAG,EAAG,KAAM,IAAM,IAAK,EAAG,KAAO,EAAG,EAAK,EAAG,EAAG,GACtE,IAAIA,EAAW,IAAK,EAAG,EAAG,EAAG,KAAM,IAAM,IAAK,EAAG,KAAO,EAAG,EAAK,EAAG,EAAG,GACtE,IAAIA,EAAW,IAAK,EAAG,EAAG,EAAG,IAAM,IAAM,IAAK,EAAG,GAAO,EAAG,GAAM,EAAG,EAAG,GACvE,IAAIA,EAAW,IAAK,EAAG,EAAG,EAAG,GAAM,IAAM,IAAK,EAAG,GAAO,GAAI,GAAM,EAAG,EAAG,IAG5E,SAAS4B,EAAiB1yO,EAAK2yO,EAAQZ,GAEnC,IAAIa,EAAiBD,EAEjB7xO,EAAI2wO,EAAKoB,wBAAwBF,GAoBrC,GAlBA3yO,EAAIyJ,IAAMniB,EAAQK,QAClBqY,EAAI8yO,sBAAwBF,EAC5B5yO,EAAI8yO,sBAAwBjsP,KAAKoL,IAAI+N,EAAI8yO,sBAAuB,KAChE9yO,EAAI8yO,sBAAwBjsP,KAAK2B,IAAIwX,EAAI8yO,sBAAuB,GAChE9yO,EAAI+yO,MAAQ/yO,EAAI8yO,sBACZ9yO,EAAI8yO,sBAAwB,MAC5B9yO,EAAIgzO,mBAAoB,GAIxBP,EAAe3xO,GAAG8vO,UAAY,IAC9B5wO,EAAIsS,cAAoC,EAApBtS,EAAIsS,eAGxBmgO,EAAe3xO,GAAG0wO,QAAU,IAC5BxxO,EAAIW,eAAesyO,cAAgB,GAGnCpsP,KAAK+jB,IAAI6nO,EAAe3xO,GAAGwwO,QAAU,EAAG,CACxC,IAAI/5O,EAAI,IAAiC,EAA3Bk7O,EAAe3xO,GAAGwwO,QAC5B/5O,EAAI,IACJA,GAAK,IACTyI,EAAIsS,cAAgBtS,EAAIsS,cAAiB/a,GAAK,EAmFlD,OAhFe,GAAXw6O,EACA/xO,EAAIiwO,WAAawC,EAAe3xO,GAAGmvO,WAC5BppP,KAAK+jB,IAAI5K,EAAIiwO,aAAc,GAAK,IACvCjwO,EAAIiwO,WAAawC,EAAe3xO,GAAGmvO,YAExB,GAAX8B,EACA/xO,EAAImyO,iBAAmBM,EAAe3xO,GAAGovO,aAClCrpP,KAAK+jB,IAAI5K,EAAImyO,mBAAoB,GAAK,IAC7CnyO,EAAImyO,iBAAmBM,EAAe3xO,GAAGovO,cAG9B,GAAX6B,EACA/xO,EAAIoE,MAAQquO,EAAe3xO,GAAGuwO,QACvBxqP,KAAK+jB,IAAI5K,EAAIoE,QAAS,GAAK,IAClCpE,EAAIoE,MAAQquO,EAAe3xO,GAAGuwO,SAGnB,GAAXU,EACA/xO,EAAIW,eAAe2J,MAAMU,WAAaynO,EAAe3xO,GAAGsvO,OACjDvpP,KAAK+jB,IAAI5K,EAAIW,eAAe2J,MAAMU,aAAc,GAAK,IAC5DhL,EAAIW,eAAe2J,MAAMU,WAAaynO,EAAe3xO,GAAGsvO,QAE7C,GAAX2B,EACA/xO,EAAIW,eAAe2J,MAAMS,aAAe0nO,EAAe3xO,GAAGuvO,KACnDxpP,KAAK+jB,IAAI5K,EAAIW,eAAe2J,MAAMS,eAAgB,GAAK,IAC9D/K,EAAIW,eAAe2J,MAAMS,aAAe0nO,EAAe3xO,GAAGuvO,MAW/C,GAAX0B,EACA/xO,EAAIuxO,MAAQkB,EAAe3xO,GAAGywO,MACvB1qP,KAAK+jB,IAAI5K,EAAIuxO,QAAS,GAAK,IAClCvxO,EAAIuxO,MAAQkB,EAAe3xO,GAAGywO,OAGnB,GAAXQ,EACA/xO,EAAIqyO,cAAgBI,EAAe3xO,GAAGwvO,YAC/BzpP,KAAK+jB,IAAI5K,EAAIqyO,cAAgB,GAAK,IACzCryO,EAAIqyO,cAAgBI,EAAe3xO,GAAGwvO,aAEtCmC,EAAe3xO,GAAGwvO,YAAc,EACjB,GAAXyB,EACA/xO,EAAIsyO,oBAAuD,GAAhCG,EAAe3xO,GAAGwvO,YACtCzpP,KAAK+jB,IAAI5K,EAAIsyO,oBAAsB,GAAK,IAC/CtyO,EAAIsyO,oBAAuD,GAAhCG,EAAe3xO,GAAGwvO,aAIlC,GAAXyB,EACA/xO,EAAIsyO,oBAAuD,IAAhCG,EAAe3xO,GAAGwvO,YACtCzpP,KAAK+jB,IAAI5K,EAAIsyO,oBAAsB,GAAK,IAC/CtyO,EAAIsyO,oBAAuD,IAAhCG,EAAe3xO,GAAGwvO,aAKtC,GAAXyB,EACA/xO,EAAIyL,UAAYgnO,EAAe3xO,GAAG0vO,UAAY,GACvC3pP,KAAK+jB,IAAqB,IAAf5K,EAAIyL,SAAkB,GAAK,IAC7CzL,EAAIyL,UAAYgnO,EAAe3xO,GAAG0vO,UAAY,IAEnC,GAAXuB,EACA/xO,EAAI6S,SAAW4/N,EAAe3xO,GAAG2vO,UAC1B5pP,KAAK+jB,IAAI5K,EAAI6S,WAAY,GAAK,IACrC7S,EAAI6S,SAAW4/N,EAAe3xO,GAAG2vO,WAGtB,GAAXsB,EACA/xO,EAAIwL,aAAeinO,EAAe3xO,GAAG6vO,QAC9B9pP,KAAK+jB,IAAI5K,EAAIwL,eAAgB,GAAK,IACzCxL,EAAIwL,aAAeinO,EAAe3xO,GAAG6vO,SAGlCgC,EA+GX,SAAST,EAAelyO,EAAKwyO,GACzB,IAAIt9N,EAAM,EAcV,OAZI,EAAIs9N,IAEJt9N,GAAO,EACPs9N,EAAQ,GAER,EAAIA,IACJt9N,GAAO,EACPs9N,EAAQ,GAGZxyO,EAAIwyO,MAAQA,EACZxyO,EAAIiyO,WAAa,EACV/8N,EA3HXzuB,KAAKysP,aAAe,SAASlzO,EAAK2yO,EAAQZ,GAEtC,OAAQY,GACJ,KAAKQ,KAAKC,MAENT,EAASQ,KAAKE,GACdrzO,EAAIyJ,IAAMniB,EAAQM,SAClB,MAEJ,KAAKurP,KAAKG,OAENX,EAASQ,KAAKI,GACdvzO,EAAIyJ,IAAMniB,EAAQI,OAClB,MAEJ,KAAKyrP,KAAKK,YAENb,EAASQ,KAAKI,GACdvzO,EAAIyJ,IAAMniB,EAAQM,SAClB,MAEJ,KAAKurP,KAAKM,SAENd,EAASQ,KAAKO,GACd1zO,EAAIyJ,IAAMniB,EAAQI,OAClB,MAEJ,KAAKyrP,KAAKQ,cAENhB,EAASQ,KAAKO,GACd1zO,EAAIyJ,IAAMniB,EAAQM,SAClB,MAEJ,KAAKurP,KAAKS,QAENjB,EAASQ,KAAKU,GACd7zO,EAAIyJ,IAAMniB,EAAQI,OAClB,MAEJ,KAAKyrP,KAAKW,aAENnB,EAASQ,KAAKU,GACd7zO,EAAIyJ,IAAMniB,EAAQM,SAClB,MAEJ,KAAKurP,KAAKY,OAMN,OAJApB,EAAS,IACT3yO,EAAI2yO,OAASA,EACbD,EAAiB1yO,EAAK2yO,EAAQZ,GAC9B/xO,EAAIyJ,IAAMniB,EAAQE,QACXmrP,EAMX,OAFJ3yO,EAAI2yO,OAASA,EAEDA,GACJ,KAAKQ,KAAKa,GAEN,OADAlC,EAAiB9xO,EAAK,EAAG+xO,GAClBY,EACX,KAAKQ,KAAKc,GAEN,OADAnC,EAAiB9xO,EAAK,EAAG+xO,GAClBY,EACX,KAAKQ,KAAKe,GAEN,OADApC,EAAiB9xO,EAAK,EAAG+xO,GAClBY,EACX,KAAKQ,KAAKgB,GAEN,OADArC,EAAiB9xO,EAAK,EAAG+xO,GAClBY,EACX,KAAKQ,KAAKiB,GAEN,OADAtC,EAAiB9xO,EAAK,EAAG+xO,GAClBY,EACX,KAAKQ,KAAKI,GAEN,OADAzB,EAAiB9xO,EAAK,EAAG+xO,GAClBY,EACX,KAAKQ,KAAKE,GAEN,OADAvB,EAAiB9xO,EAAK,EAAG+xO,GAClBY,EACX,KAAKQ,KAAKO,GAEN,OADA5B,EAAiB9xO,EAAK,EAAG+xO,GAClBY,EACX,KAAKQ,KAAKkB,GAEN,OADAvC,EAAiB9xO,EAAK,EAAG+xO,GAClBY,EACX,KAAKQ,KAAKU,GAEN,OADA/B,EAAiB9xO,EAAK,EAAG+xO,GAClBY,EACX,QACI,MAGZ,OAAI,GAAKA,GAAUA,GAAU,IAClBD,EAAiB1yO,EAAK2yO,EAAQZ,IAIzC/xO,EAAI2yO,OAAS,EACNA,IA8Bf/uP,EAAOJ,QAAUwrP,G,qBCrejB,IAAItM,EAAO77O,KAAK67O,KACZ3sO,EAAQlP,KAAKkP,MACjBnS,EAAOJ,QAAU,SAAUwF,GACzB,OAAOsrP,MAAMtrP,GAAMA,GAAM,GAAKA,EAAK,EAAI+M,EAAQ2sO,GAAM15O,K,mBCJvDpF,EAAOJ,QAAU,kf,uBCCjB,IAAIsjP,EAAM,EAAQ,QACdd,EAAM,EAAQ,OAAR,CAAkB,eAExBuO,EAAkD,aAA5CzN,EAAI,WAAc,OAAO5mP,UAArB,IAGVs0P,EAAS,SAAUxrP,EAAInJ,GACzB,IACE,OAAOmJ,EAAGnJ,GACV,MAAOi0B,MAGXlwB,EAAOJ,QAAU,SAAUwF,GACzB,IAAIyL,EAAGggP,EAAGtR,EACV,YAAc5wO,IAAPvJ,EAAmB,YAAqB,OAAPA,EAAc,OAEN,iBAApCyrP,EAAID,EAAO//O,EAAIrV,OAAO4J,GAAKg9O,IAAoByO,EAEvDF,EAAMzN,EAAIryO,GAEM,WAAf0uO,EAAI2D,EAAIryO,KAAsC,mBAAZA,EAAEigP,OAAuB,YAAcvR,I,kCCjBhFv/O,EAAOJ,QAAU,SAAiBuE,EAAOG,GACvC,IAAIysP,EAAMnsP,EAAK/H,EAAMsH,EAAMtH,IAE3B,GAAkC,KAA9BsH,EAAMvH,IAAIqB,WAAWpB,GAAyB,OAAO,EAEzDk0P,EAAO5sP,EAAMuG,QAAQzJ,OAAS,EAC9B2D,EAAMT,EAAMsG,OAMPnG,IACCysP,GAAQ,GAAwC,KAAnC5sP,EAAMuG,QAAQzM,WAAW8yP,GACpCA,GAAQ,GAA4C,KAAvC5sP,EAAMuG,QAAQzM,WAAW8yP,EAAO,IAC/C5sP,EAAMuG,QAAUvG,EAAMuG,QAAQlM,QAAQ,MAAO,IAC7C2F,EAAM9C,KAAK,YAAa,KAAM,KAE9B8C,EAAMuG,QAAUvG,EAAMuG,QAAQrO,MAAM,GAAI,GACxC8H,EAAM9C,KAAK,YAAa,KAAM,IAIhC8C,EAAM9C,KAAK,YAAa,KAAM,IAIlCxE,IAGA,MAAOA,EAAM+H,GAAqC,KAA9BT,EAAMvH,IAAIqB,WAAWpB,GAAiBA,IAG1D,OADAsH,EAAMtH,IAAMA,GACL,I,oCChCTmD,EAAOJ,QAAU,CACfuH,QAAS,CACPwO,MAAc,EACdC,UAAc,EACdC,QAAc,EACdC,WAAc,YACdtO,SAAc,EAGduO,aAAc,EAOdC,OAAQ,OAQRC,UAAW,KAEXC,WAAc,IAGhBpO,WAAY,CAEVR,KAAM,CACJS,MAAO,CACL,YACA,QACA,WAIJV,MAAO,CACLU,MAAO,CACL,aACA,OACA,QACA,UACA,KACA,aACA,WACA,OACA,YACA,cAIJX,OAAQ,CACNW,MAAO,CACL,WACA,YACA,WACA,SACA,SACA,cACA,QACA,OACA,UACA,QAEFG,OAAQ,CACN,gBACA,WACA,qB,oCCvERlI,EAAOJ,QAAU,SAAgBuG,GAC/B,IAAIoC,EAAS,GAkBb,OAhBAA,GAAUpC,EAAIM,UAAY,GAC1B8B,GAAUpC,EAAI6qP,QAAU,KAAO,GAC/BzoP,GAAUpC,EAAI8qP,KAAO9qP,EAAI8qP,KAAO,IAAM,GAElC9qP,EAAIK,WAA2C,IAA/BL,EAAIK,SAASjI,QAAQ,KAEvCgK,GAAU,IAAMpC,EAAIK,SAAW,IAE/B+B,GAAUpC,EAAIK,UAAY,GAG5B+B,GAAUpC,EAAI+qP,KAAO,IAAM/qP,EAAI+qP,KAAO,GACtC3oP,GAAUpC,EAAIgrP,UAAY,GAC1B5oP,GAAUpC,EAAIirP,QAAU,GACxB7oP,GAAUpC,EAAIqrB,MAAQ,GAEfjpB,I,oCClBTvI,EAAOJ,QAAU,SAAmBuE,EAAOC,GAOzC,IANA,IAAIjE,EAAS0U,EAAWzT,EAAG0T,EAAGrQ,EAC1BsQ,EAAW3Q,EAAY,EACvB4Q,EAAkB7Q,EAAMoG,GAAGlD,MAAMW,MAAMiN,SAAS,aAChD5Q,EAAUF,EAAMktP,QAGbt8O,EAAW1Q,IAAYF,EAAM+Q,QAAQH,GAAWA,IAGrD,KAAI5Q,EAAMgR,OAAOJ,GAAY5Q,EAAMiR,UAAY,MAG3CjR,EAAMgR,OAAOJ,GAAY,GAA7B,CAIA,IADAF,GAAY,EACPzT,EAAI,EAAG0T,EAAIE,EAAgB/T,OAAQG,EAAI0T,EAAG1T,IAC7C,GAAI4T,EAAgB5T,GAAG+C,EAAO4Q,EAAU1Q,GAAS,GAAO,CACtDwQ,GAAY,EACZ,MAGJ,GAAIA,EAAa,MAiBnB,OAdA1U,EAAUgE,EAAMoR,SAASnR,EAAW2Q,EAAU5Q,EAAMiR,WAAW,GAAO1V,OAEtEyE,EAAMa,KAAO+P,EAEbtQ,EAAiBN,EAAM9C,KAAK,iBAAkB,IAAK,GACnDoD,EAAMS,IAAW,CAAEd,EAAWD,EAAMa,MAEpCP,EAAiBN,EAAM9C,KAAK,SAAU,GAAI,GAC1CoD,EAAMtE,QAAWA,EACjBsE,EAAMS,IAAW,CAAEd,EAAWD,EAAMa,MACpCP,EAAMU,SAAW,GAEjBV,EAAiBN,EAAM9C,KAAK,kBAAmB,KAAM,IAE9C,I,uBC7CT,IAAIiwP,EAAM,EAAQ,QAAgBpyO,EAC9BnjB,EAAM,EAAQ,QACdqmP,EAAM,EAAQ,OAAR,CAAkB,eAE5BpiP,EAAOJ,QAAU,SAAUwF,EAAIoE,EAAK+nP,GAC9BnsP,IAAOrJ,EAAIqJ,EAAKmsP,EAAOnsP,EAAKA,EAAG3J,UAAW2mP,IAAMkP,EAAIlsP,EAAIg9O,EAAK,CAAEjG,cAAc,EAAMhyO,MAAOX,M,uBCLhG,EAAQ,QACR,EAAQ,QACRxJ,EAAOJ,QAAU,EAAQ,S,qBCFzBI,EAAOJ,QAAU,I,kCCuBjB,SAAS4xP,IAUP3uP,KAAK4uP,UAAY,GAOjB5uP,KAAK6uP,UAAY,KASnBF,EAAM/1P,UAAUk2P,SAAW,SAAU5zP,GACnC,IAAK,IAAIqD,EAAI,EAAGA,EAAIyB,KAAK4uP,UAAUxwP,OAAQG,IACzC,GAAIyB,KAAK4uP,UAAUrwP,GAAGrD,OAASA,EAC7B,OAAOqD,EAGX,OAAQ,GAMVowP,EAAM/1P,UAAUm2P,YAAc,WAC5B,IAAIhqP,EAAO/E,KACPgvP,EAAS,CAAE,IAGfjqP,EAAK6pP,UAAUl1P,SAAQ,SAAUu1P,GAC1BA,EAAKtH,SAEVsH,EAAKC,IAAIx1P,SAAQ,SAAUy1P,GACrBH,EAAOtzP,QAAQyzP,GAAW,GAC5BH,EAAOxwP,KAAK2wP,SAKlBpqP,EAAK8pP,UAAY,GAEjBG,EAAOt1P,SAAQ,SAAUkM,GACvBb,EAAK8pP,UAAUjpP,GAAS,GACxBb,EAAK6pP,UAAUl1P,SAAQ,SAAUu1P,GAC1BA,EAAKtH,UAEN/hP,GAASqpP,EAAKC,IAAIxzP,QAAQkK,GAAS,GAEvCb,EAAK8pP,UAAUjpP,GAAOpH,KAAKywP,EAAKv/O,YA+BtCi/O,EAAM/1P,UAAUw2P,GAAK,SAAUl0P,EAAMwU,EAAIpL,GACvC,IAAImH,EAAQzL,KAAK8uP,SAAS5zP,GACtBm0P,EAAM/qP,GAAW,GAErB,IAAe,IAAXmH,EAAgB,MAAM,IAAIzG,MAAM,0BAA4B9J,GAEhE8E,KAAK4uP,UAAUnjP,GAAOiE,GAAKA,EAC3B1P,KAAK4uP,UAAUnjP,GAAOyjP,IAAMG,EAAIH,KAAO,GACvClvP,KAAK6uP,UAAY,MA4BnBF,EAAM/1P,UAAU02P,OAAS,SAAUC,EAAYC,EAAU9/O,EAAIpL,GAC3D,IAAImH,EAAQzL,KAAK8uP,SAASS,GACtBF,EAAM/qP,GAAW,GAErB,IAAe,IAAXmH,EAAgB,MAAM,IAAIzG,MAAM,0BAA4BuqP,GAEhEvvP,KAAK4uP,UAAUnlP,OAAOgC,EAAO,EAAG,CAC9BvQ,KAAMs0P,EACN7H,SAAS,EACTj4O,GAAIA,EACJw/O,IAAKG,EAAIH,KAAO,KAGlBlvP,KAAK6uP,UAAY,MA4BnBF,EAAM/1P,UAAUysP,MAAQ,SAAUoK,EAAWD,EAAU9/O,EAAIpL,GACzD,IAAImH,EAAQzL,KAAK8uP,SAASW,GACtBJ,EAAM/qP,GAAW,GAErB,IAAe,IAAXmH,EAAgB,MAAM,IAAIzG,MAAM,0BAA4ByqP,GAEhEzvP,KAAK4uP,UAAUnlP,OAAOgC,EAAQ,EAAG,EAAG,CAClCvQ,KAAMs0P,EACN7H,SAAS,EACTj4O,GAAIA,EACJw/O,IAAKG,EAAIH,KAAO,KAGlBlvP,KAAK6uP,UAAY,MA0BnBF,EAAM/1P,UAAU4F,KAAO,SAAUgxP,EAAU9/O,EAAIpL,GAC7C,IAAI+qP,EAAM/qP,GAAW,GAErBtE,KAAK4uP,UAAUpwP,KAAK,CAClBtD,KAAMs0P,EACN7H,SAAS,EACTj4O,GAAIA,EACJw/O,IAAKG,EAAIH,KAAO,KAGlBlvP,KAAK6uP,UAAY,MAgBnBF,EAAM/1P,UAAU2M,OAAS,SAAUC,EAAMC,GAClClM,MAAMoM,QAAQH,KAASA,EAAO,CAAEA,IAErC,IAAIE,EAAS,GAeb,OAZAF,EAAK9L,SAAQ,SAAUwB,GACrB,IAAImC,EAAM2C,KAAK8uP,SAAS5zP,GAExB,GAAImC,EAAM,EAAG,CACX,GAAIoI,EAAiB,OACrB,MAAM,IAAIT,MAAM,oCAAsC9J,GAExD8E,KAAK4uP,UAAUvxP,GAAKsqP,SAAU,EAC9BjiP,EAAOlH,KAAKtD,KACX8E,MAEHA,KAAK6uP,UAAY,KACVnpP,GAcTipP,EAAM/1P,UAAUwM,WAAa,SAAUI,EAAMC,GACtClM,MAAMoM,QAAQH,KAASA,EAAO,CAAEA,IAErCxF,KAAK4uP,UAAUl1P,SAAQ,SAAUu1P,GAAQA,EAAKtH,SAAU,KAExD3nP,KAAKuF,OAAOC,EAAMC,IAgBpBkpP,EAAM/1P,UAAUmN,QAAU,SAAUP,EAAMC,GACnClM,MAAMoM,QAAQH,KAASA,EAAO,CAAEA,IAErC,IAAIE,EAAS,GAeb,OAZAF,EAAK9L,SAAQ,SAAUwB,GACrB,IAAImC,EAAM2C,KAAK8uP,SAAS5zP,GAExB,GAAImC,EAAM,EAAG,CACX,GAAIoI,EAAiB,OACrB,MAAM,IAAIT,MAAM,oCAAsC9J,GAExD8E,KAAK4uP,UAAUvxP,GAAKsqP,SAAU,EAC9BjiP,EAAOlH,KAAKtD,KACX8E,MAEHA,KAAK6uP,UAAY,KACVnpP,GAaTipP,EAAM/1P,UAAUwZ,SAAW,SAAUs9O,GAMnC,OALuB,OAAnB1vP,KAAK6uP,WACP7uP,KAAK+uP,cAIA/uP,KAAK6uP,UAAUa,IAAc,IAGtCvyP,EAAOJ,QAAU4xP,G,oCCtVjBxxP,EAAOJ,QAAU,SAAqB2K,EAAIwgP,EAASR,EAAWI,EAAQC,GACpE,IAAIjuP,EAAiB4N,EAAGlF,MAAM1I,eAC1B61P,EAAMjoP,EAAGlF,MAAMxF,IAAIE,QACnB0yP,EAAO,IAAI/0P,OAAO,CAAE80P,EAAIlW,EAAE9/O,OAAQg2P,EAAI3P,EAAErmP,OAAQg2P,EAAIE,GAAGl2P,QAAS+P,KAAK,MAEzE,SAASomP,EAAerjP,EAAM/K,EAAO+E,GACnC,IAAI7E,EAAOmuP,EAAW,EAAG/L,EAAQ,GA2CjC,OAzCAv3O,EAAK9Q,QAAQosP,GAAW,SAAU9sP,EAAO+0P,EAAQj2P,GAC/C,IAAIk2P,EAEJ,GAAIvI,EAAUzuP,eAAegC,GAAQ,CAKnC,GAHAg1P,EAAavI,EAAUzsP,GAGnB+0P,EAAS,IAAMJ,EAAKv0P,KAAKtB,EAAIi2P,EAAS,IACxC,OAIF,GAAIA,EAAS/0P,EAAMmD,OAASrE,EAAIqE,SAAWwxP,EAAKv0P,KAAKtB,EAAIi2P,EAAS/0P,EAAMmD,SACtE,YAGF6xP,EAAah1P,EAAMzB,MAAM,GAAI,GAI3Bw2P,EAASD,IACXnuP,EAAgB,IAAI6E,EAAM,OAAQ,GAAI,GACtC7E,EAAMtE,QAAUmP,EAAKjT,MAAMu2P,EAAUC,GACrChM,EAAMxlP,KAAKoD,IAGbA,EAAgB,IAAI6E,EAAM,QAAS,GAAI,GACvC7E,EAAMQ,OAAU6tP,EAChBruP,EAAMtE,QAAU4qP,EAAQ+H,GACxBjM,EAAMxlP,KAAKoD,GAEXmuP,EAAWC,EAAS/0P,EAAMmD,UAGxB2xP,EAAWtjP,EAAKrO,SAClBwD,EAAgB,IAAI6E,EAAM,OAAQ,GAAI,GACtC7E,EAAMtE,QAAUmP,EAAKjT,MAAMu2P,GAC3B/L,EAAMxlP,KAAKoD,IAGNoiP,EAGT,OAAO,SAAuB1iP,GAC5B,IAAI/C,EAAGyS,EAAGiB,EAAG7U,EAAQwE,EACjBsuP,EAAc5uP,EAAMlE,OACpB+yP,EAAgB,EAEpB,IAAKn/O,EAAI,EAAGiB,EAAIi+O,EAAY9xP,OAAQ4S,EAAIiB,EAAGjB,IACzC,GAA4B,WAAxBk/O,EAAYl/O,GAAGtK,KAKnB,IAJAtJ,EAAS8yP,EAAYl/O,GAAG1O,SAInB/D,EAAInB,EAAOgB,OAAS,EAAGG,GAAK,EAAGA,IAClCqD,EAAQxE,EAAOmB,GAEI,cAAfqD,EAAM8E,MAAuC,eAAf9E,EAAM8E,MACnB,SAAf9E,EAAMkF,OAAmBqpP,GAAiBvuP,EAAMgF,SAGnC,SAAfhF,EAAM8E,MAAqC,IAAlBypP,GAAuBrI,EAAOzsP,KAAKuG,EAAMtE,WAEpE4yP,EAAYl/O,GAAG1O,SAAWlF,EAAStD,EACjCsD,EAAQmB,EAAGuxP,EAAeluP,EAAMtE,QAASsE,EAAMF,MAAOJ,EAAMmF,Y,uBClFxE,IAAIuC,EAAS,EAAQ,QAUjBlL,GATSkL,EAAO/J,OACN+J,EAAOnI,QACTmI,EAAOpI,MACFoI,EAAOlJ,WACbkJ,EAAOnJ,KACLmJ,EAAOpK,OACFoK,EAAOrK,YACVqK,EAAOzL,SACLyL,EAAOhL,WACRgL,EAAOlL,WAEnBF,GADcoL,EAAO9K,YACX8K,EAAOpL,SAEjByD,GADY2H,EAAOvK,UACVuK,EAAO3H,QAEhB+uP,EAAW,EAAQ,QACnBv4O,EAAU,EAAQ,QAClBw4O,EAAS,EAAQ,QACjBC,EAAoB,EAAQ,QAEhC,SAASC,EAAoBC,GACzB,IAAIC,EAAWD,EACfxwP,KAAKywP,SAAWA,EACnBzwP,KAAK0wP,eAAiB,SAASn3O,EAAKwB,EAAI41O,EAAev0O,GACtD,IAImBw0O,EAJf13O,EAAMK,EAAIW,eACJ22O,EAAU/yP,EAAUuyP,EAAOS,QACjCC,EAAQjzP,EAAU,KAClBkzP,EAAYpzP,EAAQ,GACpBqzP,EAAY,EACZC,EAAUh4O,EAAIg4O,QAEdC,EAAK,IAAIf,EAASa,GACtBjxP,KAAKywP,SAASW,GAAGC,eAAe93O,EAAK43O,GACrCF,EAAYE,EAAGG,KAGf,IAAK,IAAIzkO,EAAK,EAAGA,EAAK3T,EAAI6S,QAASc,IAAM,CAKxC+jO,EAAW5wP,KAAKywP,SAASc,MAAMC,MAAMj4O,EAAKwB,EAAIi2O,EAAWC,EACvDpkO,EAAIA,GAEF3T,EAAIu4O,UAAY55O,EAAQ65O,eAC3B1xP,KAAKywP,SAASkB,WAAWz4O,EAAIg4O,QAASrkO,GACtC7sB,KAAKywP,SAASc,MAAMK,YAAYZ,EAAWL,EAAc9jO,GACvDokO,EAAWL,IAGd,IAAK,IAAIz0P,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAAM,CAC7C,IAAIogB,EAAQs1O,EACRC,EAAWZ,EAAQ3kO,GAAGM,GAAI1wB,GAE1B21P,EAASC,YAAcl6O,EAAQmI,YAElCzD,EAAS,EACTs1O,EAAmB34O,EAAI6F,IAAIizO,YAAcz1O,IAEzCA,EAAS,EACTs1O,EAAmB34O,EAAI6F,IAAIkzO,kBAAoB11O,GAEhDrD,EAAI6H,cAAiB3gB,KAAKub,IAAI,GACT,GAAnBk2O,GAKF7xP,KAAKywP,SAASyB,gBAAgBh5O,EAAK44O,GAC/B9xP,KAAKywP,SAAS0B,WAAWj5O,EAAK44O,EAAUf,KAM3C/wP,KAAKywP,SAASc,MAAMa,UAAU74O,EAAK6C,EAAMyQ,GAAI1wB,GAAK21P,EAChDjB,GACF7wP,KAAKywP,SAAS4B,WAAW94O,EAAKu4O,EAAUjB,EAASE,EAAO50P,EACtD60P,EAAU70P,KAGb6D,KAAKywP,SAAS6B,qBAAqBp5O,EAAK2T,EAAI1wB,GAC5CkF,EAAQywP,EAASS,gBAAkBjC,EAAkBkC,sBACrDnxP,EAAQywP,EAASS,gBAAkBvB,EAAU70P,KAI/C6D,KAAKywP,SAASW,GAAGqB,aAAav5O,EAAK+3O,IAGrC9zP,EAAOJ,QAAUwzP,G,oCCvFjBpzP,EAAOJ,QAAU,SAAkBuE,EAAOG,GACxC,IAAI0G,EAAOpG,EAAKgH,EAAQ2pP,EAAYC,EAAU/wP,EAC1C5H,EAAMsH,EAAMtH,IACZmC,EAAKmF,EAAMvH,IAAIqB,WAAWpB,GAE9B,GAAW,KAAPmC,EAAsB,OAAO,EAEjCgM,EAAQnO,EACRA,IACA+H,EAAMT,EAAMsG,OAEZ,MAAO5N,EAAM+H,GAAqC,KAA9BT,EAAMvH,IAAIqB,WAAWpB,GAAwBA,IAEjE+O,EAASzH,EAAMvH,IAAIP,MAAM2O,EAAOnO,GAEhC04P,EAAaC,EAAW34P,EAExB,OAA4D,KAApD04P,EAAapxP,EAAMvH,IAAI2B,QAAQ,IAAKi3P,IAAmB,CAC7DA,EAAWD,EAAa,EAExB,MAAOC,EAAW5wP,GAA0C,KAAnCT,EAAMvH,IAAIqB,WAAWu3P,GAA6BA,IAE3E,GAAIA,EAAWD,IAAe3pP,EAAO3K,OASnC,OARKqD,IACHG,EAAgBN,EAAM9C,KAAK,cAAe,OAAQ,GAClDoD,EAAMQ,OAAU2G,EAChBnH,EAAMtE,QAAUgE,EAAMvH,IAAIP,MAAMQ,EAAK04P,GACX/2P,QAAQ,UAAW,KACnBkB,QAE5ByE,EAAMtH,IAAM24P,GACL,EAMX,OAFKlxP,IAAUH,EAAMuG,SAAWkB,GAChCzH,EAAMtH,KAAO+O,EAAO3K,QACb,I,oCCrCT,IAAI7B,EAAU,EAAQ,QAAmBA,QAKzC,SAASq2P,EAAqBtxP,EAAOC,GACnC,IAAIwH,EAAQ/O,EAAK+H,EAAK5F,EAOtB,OALAnC,EAAMsH,EAAMO,OAAON,GAAaD,EAAMQ,OAAOP,GAC7CQ,EAAMT,EAAMU,OAAOT,GAEnBwH,EAASzH,EAAMvH,IAAIqB,WAAWpB,KAEf,KAAX+O,GACW,KAAXA,GACW,KAAXA,GAIA/O,EAAM+H,IACR5F,EAAKmF,EAAMvH,IAAIqB,WAAWpB,IAErBuC,EAAQJ,KANL,EAYHnC,EAKT,SAAS64P,EAAsBvxP,EAAOC,GACpC,IAAIpF,EACAgM,EAAQ7G,EAAMO,OAAON,GAAaD,EAAMQ,OAAOP,GAC/CvH,EAAMmO,EACNpG,EAAMT,EAAMU,OAAOT,GAGvB,GAAIvH,EAAM,GAAK+H,EAAO,OAAQ,EAI9B,GAFA5F,EAAKmF,EAAMvH,IAAIqB,WAAWpB,KAEtBmC,EAAK,IAAeA,EAAK,GAAe,OAAQ,EAEpD,OAAS,CAEP,GAAInC,GAAO+H,EAAO,OAAQ,EAI1B,GAFA5F,EAAKmF,EAAMvH,IAAIqB,WAAWpB,OAEtBmC,GAAM,IAAeA,GAAM,IAA/B,CAUA,GAAW,KAAPA,GAA6B,KAAPA,EACxB,MAGF,OAAQ,EAVN,GAAInC,EAAMmO,GAAS,GAAM,OAAQ,EAcrC,OAAInO,EAAM+H,IACR5F,EAAKmF,EAAMvH,IAAIqB,WAAWpB,IAErBuC,EAAQJ,KAEH,EAGLnC,EAGT,SAAS84P,EAAoBxxP,EAAOjE,GAClC,IAAIkB,EAAG0T,EACHvQ,EAAQJ,EAAMI,MAAQ,EAE1B,IAAKnD,EAAIlB,EAAM,EAAG4U,EAAI3Q,EAAMlE,OAAOgB,OAAS,EAAGG,EAAI0T,EAAG1T,IAChD+C,EAAMlE,OAAOmB,GAAGmD,QAAUA,GAAkC,mBAAzBJ,EAAMlE,OAAOmB,GAAGmI,OACrDpF,EAAMlE,OAAOmB,EAAI,GAAGyI,QAAS,EAC7B1F,EAAMlE,OAAOmB,GAAGyI,QAAS,EACzBzI,GAAK,GAMXpB,EAAOJ,QAAU,SAAcuE,EAAOC,EAAWC,EAASC,GACxD,IAAIyQ,EACA6gP,EACA/C,EACArM,EACAqP,EACAC,EACAC,EACAC,EACAC,EACAjrP,EACAkrP,EACAl3P,EACAnC,EACA+H,EACAuxP,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEA3hP,EACAvQ,EACArD,EAAG0T,EAAGD,EAHN+hP,GAAQ,EAMZ,IAAKV,EAAiBR,EAAsBvxP,EAAOC,KAAe,EAChEkyP,GAAY,MACP,OAAKJ,EAAiBT,EAAqBtxP,EAAOC,KAAe,GAGtE,OAAO,EAFPkyP,GAAY,EASd,GAHAD,EAAiBlyP,EAAMvH,IAAIqB,WAAWi4P,EAAiB,GAGnD5xP,EAAU,OAAO,EAGrBkyP,EAAaryP,EAAMlE,OAAOgB,OAEtBq1P,GACFtrP,EAAQ7G,EAAMO,OAAON,GAAaD,EAAMQ,OAAOP,GAC/CgyP,EAAcS,OAAO1yP,EAAMvH,IAAIqrP,OAAOj9O,EAAOkrP,EAAiBlrP,EAAQ,IAEtEvG,EAAcN,EAAM9C,KAAK,oBAAqB,KAAM,GAChC,IAAhB+0P,IACF3xP,EAAMiF,MAAQ,CAAE,CAAE,QAAS0sP,MAI7B3xP,EAAcN,EAAM9C,KAAK,mBAAoB,KAAM,GAGrDoD,EAAMS,IAASwxP,EAAY,CAAEtyP,EAAW,GACxCK,EAAMQ,OAAS5H,OAAOC,aAAa+4P,GAMnCthP,EAAW3Q,EACXqyP,GAAe,EACfzhP,EAAkB7Q,EAAMoG,GAAGlD,MAAMW,MAAMiN,SAAS,QAEhD,MAAOF,EAAW1Q,EAAS,CACzBxH,EAAMq5P,EACNtxP,EAAMT,EAAMU,OAAOkQ,GAEnB6gP,EAAU/C,EAAS1uP,EAAMgR,OAAOJ,GAAYmhP,GAAkB/xP,EAAMO,OAAON,GAAaD,EAAMQ,OAAOP,IAErG,MAAOvH,EAAM+H,EAAK,CAGhB,GAFA5F,EAAKmF,EAAMvH,IAAIqB,WAAWpB,IAEtBuC,EAAQJ,GAOV,MANW,IAAPA,EACF6zP,GAAU,EAAIA,EAAS,EAEvBA,IAMJh2P,IAsEF,GAnEA05P,EAAe15P,EAIbs5P,EAFEI,GAAgB3xP,EAEE,EAEAiuP,EAAS+C,EAK3BO,EAAoB,IAAKA,EAAoB,GAIjD3P,EAASoP,EAAUO,EAGnB1xP,EAAeN,EAAM9C,KAAK,iBAAkB,KAAM,GAClDoD,EAAMQ,OAAS5H,OAAOC,aAAa+4P,GACnC5xP,EAAMS,IAASyxP,EAAY,CAAEvyP,EAAW,GAExC0xP,EAAY3xP,EAAMiR,UAClB4gP,EAAW7xP,EAAMyyP,MACjBf,EAAY1xP,EAAMQ,OAAOP,GACzB2xP,EAAa5xP,EAAMgR,OAAO/Q,GAC1B6xP,EAAgB9xP,EAAM2yP,WACtB3yP,EAAMiR,UAAYoxO,EAClBriP,EAAMyyP,OAAQ,EACdzyP,EAAM2yP,WAAa,OACnB3yP,EAAMQ,OAAOP,GAAamyP,EAAepyP,EAAMO,OAAON,GACtDD,EAAMgR,OAAO/Q,GAAayuP,EAEtB0D,GAAgB3xP,GAAOT,EAAM+Q,QAAQ9Q,EAAY,GAQnDD,EAAMa,KAAO/B,KAAKoL,IAAIlK,EAAMa,KAAO,EAAGX,GAEtCF,EAAMoG,GAAGlD,MAAM0vP,SAAS5yP,EAAOC,EAAWC,GAAS,GAIhDF,EAAMyyP,QAASH,IAClBG,GAAQ,GAIVH,EAAgBtyP,EAAMa,KAAOZ,EAAa,GAAKD,EAAM+Q,QAAQ/Q,EAAMa,KAAO,GAE1Eb,EAAMiR,UAAY0gP,EAClB3xP,EAAMQ,OAAOP,GAAayxP,EAC1B1xP,EAAMgR,OAAO/Q,GAAa2xP,EAC1B5xP,EAAMyyP,MAAQZ,EACd7xP,EAAM2yP,WAAab,EAEnBxxP,EAAeN,EAAM9C,KAAK,kBAAmB,MAAO,GACpDoD,EAAMQ,OAAS5H,OAAOC,aAAa+4P,GAEnCthP,EAAW3Q,EAAYD,EAAMa,KAC7B2xP,EAAU,GAAK5hP,EACfwhP,EAAepyP,EAAMO,OAAON,GAExB2Q,GAAY1Q,EAAW,MAE3B,GAAIF,EAAM+Q,QAAQH,GAChB,MAMF,GAAI5Q,EAAMgR,OAAOJ,GAAY5Q,EAAMiR,UAAa,MAIhD,IADAP,GAAY,EACPzT,EAAI,EAAG0T,EAAIE,EAAgB/T,OAAQG,EAAI0T,EAAG1T,IAC7C,GAAI4T,EAAgB5T,GAAG+C,EAAO4Q,EAAU1Q,GAAS,GAAO,CACtDwQ,GAAY,EACZ,MAGJ,GAAIA,EAAa,MAGjB,GAAIyhP,GAEF,GADAJ,EAAiBR,EAAsBvxP,EAAO4Q,GAC1CmhP,EAAiB,EAAK,WAG1B,GADAA,EAAiBT,EAAqBtxP,EAAO4Q,GACzCmhP,EAAiB,EAAK,MAG5B,GAAIG,IAAmBlyP,EAAMvH,IAAIqB,WAAWi4P,EAAiB,GAAM,MAmBrE,OAdEzxP,EADE6xP,EACMnyP,EAAM9C,KAAK,qBAAsB,MAAO,GAExC8C,EAAM9C,KAAK,oBAAqB,MAAO,GAEjDoD,EAAMQ,OAAS5H,OAAOC,aAAa+4P,GAEnCK,EAAU,GAAK3hP,EACf5Q,EAAMa,KAAO+P,EAGT6hP,GACFjB,EAAoBxxP,EAAOqyP,IAGtB,I,uBCpTT,IAAI3qP,EAAS,EAAQ,QACjB/J,EAAS+J,EAAO/J,OAChB4B,EAAUmI,EAAOnI,QAKjBlC,GAJQqK,EAAOpI,MACFoI,EAAOlJ,WACbkJ,EAAOnJ,KACLmJ,EAAOpK,OACFoK,EAAOrK,aAGrBb,GAFWkL,EAAOzL,SACLyL,EAAOhL,WACRgL,EAAOlL,WACnBI,EAAc8K,EAAO9K,YACrBN,EAAUoL,EAAOpL,QAEjByD,GADY2H,EAAOvK,UACVuK,EAAO3H,QA8FpB,SAASwW,IACL,IAAIs8O,EAAU,EAAQ,SAClBC,EAAgB,EAAQ,QAExBC,EAAYx8O,EAAQw8O,UACpB3C,EAAe75O,EAAQ65O,aAKvB4C,EAAK,KACTt0P,KAAKu0P,IAAM,KACX,IAAIA,EAAM,KACNC,EAAM,KACNjD,EAAQ,KAIZvxP,KAAKirP,WAAa,SAAUwJ,EAAKC,EAAMC,EAAQC,GAC3CN,EAAKG,EACLz0P,KAAKu0P,IAAMG,EACXH,EAAMG,EACNF,EAAMI,EACNrD,EAAQoD,GAGZ,IAAIE,EAAU,IAAIV,EA8BlB,SAASW,EAAW57O,GAChB,IAAI67O,EAASC,EAEb,GAAyB,GAArB97O,EAAIE,IAAI67O,UAyCZ,GAhCAD,EAAU97O,EAAI+B,YAAY,GAAG,GAC7B85O,EAAU77O,EAAI+B,YAAY,GAAG,GACL,GAApB/B,EAAI0D,cACJo4O,GAAW97O,EAAI+B,YAAY,GAAG,GAC9B85O,GAAW77O,EAAI+B,YAAY,GAAG,KAE9B+5O,GAAWA,EACXD,GAAWA,GAEI,GAAf77O,EAAI6S,UACJipO,EAAU50P,KAAK2B,IAAIizP,EAASD,IAEhCC,GAAW,GAKXA,GAAW97O,EAAIE,IAAI87O,eAefF,EAAU,OACN97O,EAAIE,IAAImD,QAAU,EAClBrD,EAAIE,IAAImD,OAAS,EAKbrD,EAAIE,IAAImD,OAASrD,EAAIE,IAAI4S,cACzB9S,EAAIE,IAAImD,OAASrD,EAAIE,IAAI4S,aAGjC9S,EAAIE,IAAI4S,YAAc,MACnB,CAEH,IAAImpO,EAAc,MAAQH,EAAU,OAChC97O,EAAIE,IAAImD,QAAU44O,GAClBj8O,EAAIE,IAAImD,QAAwB,KAAd44O,EAAsB,KACpCj8O,EAAIE,IAAImD,OAAS44O,IACjBj8O,EAAIE,IAAImD,OAAS44O,IAGjBj8O,EAAIE,IAAI4S,aAAempO,EACvBj8O,EAAIE,IAAImD,OAAS44O,EAIbj8O,EAAIE,IAAImD,OAASrD,EAAIE,IAAI4S,cACzB9S,EAAIE,IAAImD,OAASrD,EAAIE,IAAI4S,aAIrC9S,EAAIE,IAAI4S,YAAcmpO,OAvEtBj8O,EAAIE,IAAImD,OAAS,EA0FzB,SAAS64O,EAAYl8O,GACjB,IAAI2T,EAAI1wB,EAaR,IAZAkF,EAAO,GAAK6X,EAAIm8O,eAAiBn8O,EAAIm8O,cAAgB,IACrDh0P,EAAO,GAAK6X,EAAIu4O,UAAYv4O,EAAIu4O,SAAW,GAG3Cv4O,EAAIo8O,wBAAwBp8O,EAAIm8O,eAAe,KAC/Cn8O,EAAIo8O,wBAAwB,IAAI,KAGR,GAApBp8O,EAAI0D,eACJ1D,EAAIo8O,wBAAwBp8O,EAAIm8O,eAAen8O,EAAIu4O,YACnDv4O,EAAIo8O,wBAAwB,IAAIp8O,EAAIu4O,aAEnC5kO,EAAK,EAAGA,EAAK3T,EAAI6S,UAAWc,EAC7B,IAAK1wB,EAAK,EAAGA,EAAK+c,EAAI0D,eAAgBzgB,EAAI,CACtC,IAAIo5P,EAAyC,EAApCr8O,EAAIg4O,QAAQ3kO,GAAGM,GAAI1wB,GAAI41P,WACe,GAA3C74O,EAAIg4O,QAAQ3kO,GAAGM,GAAI1wB,GAAIq5P,mBACvBD,EAAK,GACTr8O,EAAIu8O,uBAAuBv8O,EAAIm8O,eAAeE,KAC9Cr8O,EAAIu8O,uBAAuBv8O,EAAIm8O,eAAe,KAC9Cn8O,EAAIu8O,uBAAuB,IAAIF,KAC/Br8O,EAAIu8O,uBAAuB,IAAI,MAK3C,SAASC,EAAuBn8O,EAAKo8O,GACjC,IAEIx5P,EAAI0wB,EAFJ3T,EAAMK,EAAIW,eAId,GAAkC,GAA9BhB,EAAIw8O,uBAA6B,CAEjC,IAAIn3P,EAAGyS,EACH4kP,EAAa93P,EAAU,MACvB+3P,EAAa/3P,EAAU,MAE3B,IADAob,EAAIw8O,uBAAyB,EACxBn3P,EAAI,EAAGyS,EAAI,EAAGzS,EAAI,IAAM,KAAO,EAAI2a,EAAI6S,WAAYxtB,EAChDA,EAAI,IAAM2a,EAAI6S,SACd6pO,EAAWr3P,GAAK,EACQ,GAApB2a,EAAI0D,eACJi5O,EAAWt3P,GAAK,KAEpBq3P,EAAWr3P,GAAKo3P,EAAM,GAAG3kP,GACD,GAApBkI,EAAI0D,eACJi5O,EAAWt3P,GAAKo3P,EAAM,GAAG3kP,MAC3BA,GAIV,IAAK6b,EAAK,EAAGA,EAAK3T,EAAI6S,QAASc,IAC3B,IAAK1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAChC+c,EAAIg4O,QAAQ3kO,GAAGM,GAAI1wB,GAAI41P,WAAal6O,EAAQmI,WAGpD60O,EAAQiB,WAAW58O,EAAK08O,EAAYC,GAGpCx0P,EAAO,KAAOwW,EAAQw8O,WAEtBhzP,EAAO6X,EAAI68O,SAAYl+O,EAAQU,QAAUgB,EAAIy8O,UAAYn+O,EAAQw8O,WAEjEhzP,EAAO6X,EAAI68O,SAAY,IAAMx8O,EAAIy8O,UAAY,KAiErDh2P,KAAKi2P,sBAAwB,SAAU18O,EAAK28O,EAASC,EAASC,EAAQC,EAAWC,GAC7E,IAAIC,EACAC,EAAa73P,EAAY,CAAC,EAAG,IAKjC63P,EAAW,GAAG,GAAK,IAAIpC,EACvBoC,EAAW,GAAG,GAAK,IAAIpC,EACvBoC,EAAW,GAAG,GAAK,IAAIpC,EACvBoC,EAAW,GAAG,GAAK,IAAIpC,EACvB,IAOIqC,EAPAC,EAAa/3P,EAAY,CAAC,EAAG,IAEjC+3P,EAAW,GAAG,GAAK,IAAItC,EACvBsC,EAAW,GAAG,GAAK,IAAItC,EACvBsC,EAAW,GAAG,GAAK,IAAItC,EACvBsC,EAAW,GAAG,GAAK,IAAItC,EAIvB,IASIuC,EAEAx6P,EAAI0wB,EAXJ8oO,EAAQ,CAAC,KAAM,MACfz8O,EAAMK,EAAIW,eAEVS,EAAWzc,EAAY,CAAC,EAAG,IAC3ByyP,EAAgB,CAAC,GAAI,IACrB51O,EAAK,CAAC,CAAC,EAAI,GAAK,CAAC,EAAI,IACrB67O,EAAQ,CAAC,CAAC,EAAI,GAAK,CAAC,EAAI,IAsC5B,GA/BAjB,EAAM,GAAKO,EACXP,EAAM,GAAKQ,EAEuB,GAA9Bj9O,EAAIw8O,wBAEJA,EAAuBn8O,EAAKo8O,GAgBhCz8O,EAAI29O,QAAU,GACT39O,EAAI49O,UAAY59O,EAAI69O,UAAY,IACjC79O,EAAI49O,UAAYv9O,EAAI8R,eACpBnS,EAAI29O,QAAU,GAOE,GAAhB39O,EAAI89O,SAAe,CAKnB,IAAIvoO,EACAwoO,EAAO,CAAC,KAAM,MAEdC,EAAU,EAEV52O,EAAY1iB,EAAQ,GAExB,IAAKivB,EAAK,EAAGA,EAAK3T,EAAI6S,QAASc,IAAM,CAEjC,IAAK1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAChC86P,EAAK96P,GAAMw5P,EAAMx5P,GACjB+6P,EAAU,IAAW,IAALrqO,EAAWhV,EAAQw8O,UAWvC,GARI5lO,EADAlV,EAAIyJ,KAAOniB,EAAQM,UAAYoY,EAAIyJ,KAAOniB,EAAQG,OAC5CuzP,EAAI/pO,kBAAkBjR,EAAK09O,EAAMC,EAASrqO,EAC5C2pO,EAAYE,EAAY37O,EAAG8R,GAAK+pO,EAAM/pO,GACtClS,EAASkS,GAAKvM,GAEZi0O,EAAIxyO,iBAAiBxI,EAAK09O,EAAMC,EAASrqO,EAC3C2pO,EAAYE,EAAY37O,EAAG8R,GAAK+pO,EAAM/pO,GACtClS,EAASkS,GAAKvM,GAEX,GAAPmO,EACA,OAAQ,EASZ,IAPIlV,EAAIlN,MAAQyW,SAASC,eACrB4tO,EAAc9jO,GAAMlS,EAASkS,GAAI,GAAKlS,EAASkS,GAAI,GAC/C8jO,EAAc9jO,GAAM,IACpB8jO,EAAc9jO,GAAMlS,EAASkS,GAAI,GAAK8jO,EAAc9jO,KAIvD1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAAM,CACtC,IAAI21P,EAAW54O,EAAIg4O,QAAQ3kO,GAAGM,GAAI1wB,GAClC21P,EAASC,WAAazxO,EAAUnkB,GAChC21P,EAAS0D,iBAAmB,SAKpC,IAAK3oO,EAAK,EAAGA,EAAK3T,EAAI6S,QAASc,IAC3B,IAAK1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAChC+c,EAAIg4O,QAAQ3kO,GAAGM,GAAI1wB,GAAI41P,WAAal6O,EAAQ2I,UAC5CtH,EAAIg4O,QAAQ3kO,GAAGM,GAAI1wB,GAAIq5P,iBAAmB,EAC1CoB,EAAM/pO,GAAI1wB,GAAM4e,EAAG8R,GAAI1wB,GAAM,IAqBzC,GAhBA24P,EAAW57O,GAOX27O,EAAQiB,WAAW58O,EAAKy8O,EAAM,GAAIA,EAAM,IAOxCz8O,EAAIu4O,SAAW55O,EAAQs/O,aAEnB59O,EAAI69O,SACJl+O,EAAIu4O,SAAW55O,EAAQ65O,kBACpB,GAAIn4O,EAAIlN,MAAQyW,SAASC,aAAc,CAgB1C,IAAIs0O,EAAY,EACZC,EAAY,EAChB,IAAKzqO,EAAK,EAAGA,EAAK3T,EAAI6S,QAASc,IAC3B,IAAK1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAChCk7P,GAAaT,EAAM/pO,GAAI1wB,GACvBm7P,GAAav8O,EAAG8R,GAAI1wB,GAK5B,GAAIk7P,GAAa,EAAOC,EAAW,CAE/B,IAAIC,EAAMr+O,EAAIg4O,QAAQ3kO,GAAG,GACrBirO,EAAMt+O,EAAIg4O,QAAQ3kO,GAAGrT,EAAI6S,QAAU,GAEnCwrO,EAAI,GAAGxF,YAAcwF,EAAI,GAAGxF,YACzByF,EAAI,GAAGzF,YAAcyF,EAAI,GAAGzF,aAE/B74O,EAAIu4O,SAAW55O,EAAQ65O,eAiBnC,GAXIx4O,EAAIu4O,UAAYC,GAChB+E,EAAUC,EAEVC,EAASC,IAETH,EAAUD,EAEVG,EAAS57O,GAITxB,EAAIqB,UAAyB,MAAb1B,EAAI2B,MACpB,IAAKgS,EAAK,EAAGA,EAAK3T,EAAI6S,QAASc,IAC3B,IAAK1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAChC+c,EAAI2B,MAAM48O,SAAS5qO,GAAM3T,EAAIu+O,SAAS5qO,GACtC3T,EAAI2B,MAAM81O,cAAc9jO,GAAM8jO,EAAc9jO,GAC5C3T,EAAI2B,MAAMyF,UAAUuM,GAAI1wB,GAAM+c,EAAIg4O,QAAQ3kO,GAAGM,GAAI1wB,GAAI41P,WACrD74O,EAAI2B,MAAME,GAAG8R,GAAI1wB,GAAMw6P,EAAO9pO,GAAI1wB,GAClC8C,EAAO0+O,UAAUzkO,EAAIg4O,QAAQ3kO,GAAGM,GAAI1wB,GAAIu7P,GAAI,EACxCx+O,EAAI2B,MAAM68O,GAAG7qO,GAAI1wB,GAAK,EAAG,KAKzB+c,EAAIu4O,UAAYC,IAChBx4O,EAAI2B,MAAMuJ,IAAIyI,GAAI1wB,GAAM+c,EAAI2B,MAAMuJ,IAAIyI,GAAI1wB,EAAK,GAC/C8C,EAAO0+O,UAAUzkO,EAAI2B,MAAM5B,OAAO4T,GAAI1wB,EAAK,GAAI,EAC3C+c,EAAI2B,MAAM5B,OAAO4T,GAAI1wB,GAAK,EAC1B+c,EAAI2B,MAAM5B,OAAO4T,GAAI1wB,GAAIiC,SAU7C,GAAImb,EAAIyJ,KAAOniB,EAAQE,SAAWwY,EAAIyJ,KAAOniB,EAAQK,QAAS,CAE1D,IAAI3C,EACA8d,EAEJ,IAAK9d,EAAI,EAAGA,EAAI,GAAIA,IAChB2a,EAAI2K,MAAM8zO,SAASp5P,GAAK2a,EAAI2K,MAAM8zO,SAASp5P,EAAI,GAGnD,IADA8d,EAAI,EACCwQ,EAAK,EAAGA,EAAK3T,EAAI6S,QAASc,IAC3B,IAAK1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAChCkgB,GAAKs6O,EAAO9pO,GAAI1wB,GAIxB,IAHA+c,EAAI2K,MAAM8zO,SAAS,IAAMt7O,EAEzBA,EAAInD,EAAI2K,MAAM8zO,SAAS,GAClBp5P,EAAI,EAAGA,EAAI,EAAGA,IACf8d,IAAMnD,EAAI2K,MAAM8zO,SAASp5P,GAAK2a,EAAI2K,MAAM8zO,SAAS,GAAKp5P,IAChDsZ,EAAQ8J,QAAQpjB,GAG1B,IADA8d,EAAK,KAAUnD,EAAI6S,QAAU7S,EAAI0D,aAAgBP,EAC5CwQ,EAAK,EAAGA,EAAK3T,EAAI6S,QAASc,IAC3B,IAAK1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAChCw6P,EAAO9pO,GAAI1wB,IAAOkgB,EAmB9B,GAfAnD,EAAIw3O,eAAeA,eAAen3O,EAAKo9O,EAAQhG,EAAe8F,GAO9DnC,EAAGsD,iBAAiBr+O,GAGpBg9O,EAAWjC,EAAGuD,YAAY3+O,EAAKk9O,EAAQC,EAAWC,EAAa,GAE3D/8O,EAAIu+O,cACJtD,EAAIuD,YAAYx+O,GAEhBA,EAAIqB,UAAyB,MAAb1B,EAAI2B,MAAe,CACnC,IAAK1e,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAAM,CACtC,IAAI6U,EACJ,IAAKA,EAAI,EAAGA,EAAIqjP,EAAWrjP,IACvBkI,EAAI2B,MAAMm9O,QAAQ77P,GAAI6U,GAAKkI,EAAI2B,MAAMm9O,QAAQ77P,GAAI6U,EAC/CuI,EAAIy8O,WACV,IAAKhlP,EAAIqjP,EAAWrjP,EAAI,KAAMA,IAC1BkI,EAAI2B,MAAMm9O,QAAQ77P,GAAI6U,GAAK2kP,EAAMx5P,GAAI6U,EAAIqjP,GAGjD9C,EAAM0G,gBAAgB1+O,EAAKk9O,GAK/B,OAFArB,EAAYl8O,GAELq9O,GAtnBf1+O,EAAQqgP,SAAW,IAUnBrgP,EAAQsgP,UAAY,KAMpBtgP,EAAQugP,UAAY,GACpBvgP,EAAQw8O,UAAa,IAAMx8O,EAAQugP,UAKnCvgP,EAAQwgP,SAAW,IAKnBxgP,EAAQygP,QAAU,GAKlBzgP,EAAQqI,OAAS,GAKjBrI,EAAQ0gP,QAAU,GAClB1gP,EAAQ2gP,QAAU,GAKlB3gP,EAAQiF,QAAU,GAClBjF,EAAQmF,QAAU,GAClBnF,EAAQ4gP,OAAS,EACjB5gP,EAAQ6gP,OAAS,EAKjB7gP,EAAQU,QAAU,KAClBV,EAAQ6C,SAAY7C,EAAQU,QAAU,EAAI,EAC1CV,EAAQ0C,UAAY,IACpB1C,EAAQ+L,WAAc/L,EAAQ0C,UAAY,EAAI,EAE9C1C,EAAQ2I,UAAY,EACpB3I,EAAQ4I,WAAa,EACrB5I,EAAQmI,WAAa,EACrBnI,EAAQ6I,UAAY,EAcpB7I,EAAQs/O,aAAe,EACvBt/O,EAAQ8gP,YAAc,EACtB9gP,EAAQ65O,aAAe,EACvB75O,EAAQ+gP,YAAc,EAEtB/gP,EAAQ8J,QAAU,EAAC,UAAgB,SAClB,GAAZ,UAAe,QAAe,YAAiB,SAAY,EAC5D,OAAa,QAAc,QAAW,GA2iB1CxkB,EAAOJ,QAAU8a,G,oCClpBjB1a,EAAOJ,QAAU,SAAoB2K,GAGnC,SAASwsP,EAAS5yP,EAAOG,GACvB,IAAIlD,EAAGs6P,EAASj3P,EAAOsF,EAAK/K,EACxBgM,EAAQ7G,EAAMtH,IACd+O,EAASzH,EAAMvH,IAAIqB,WAAW+M,GAElC,GAAI1G,EAAU,OAAO,EAErB,GAAe,KAAXsH,EAA0B,OAAO,EAMrC,GAJA8vP,EAAUv3P,EAAM4G,WAAW5G,EAAMtH,KAAK,GACtCkN,EAAM2xP,EAAQz6P,OACdjC,EAAK3B,OAAOC,aAAasO,GAErB7B,EAAM,EAAK,OAAO,EAQtB,IANIA,EAAM,IACRtF,EAAgBN,EAAM9C,KAAK,OAAQ,GAAI,GACvCoD,EAAMtE,QAAUnB,EAChB+K,KAGG3I,EAAI,EAAGA,EAAI2I,EAAK3I,GAAK,EACxBqD,EAAgBN,EAAM9C,KAAK,OAAQ,GAAI,GACvCoD,EAAMtE,QAAUnB,EAAKA,EAErBmF,EAAM0G,WAAWxJ,KAAK,CACpBuK,OAAQA,EACR+vP,KAAQv6P,EACRqD,MAAQN,EAAMlE,OAAOgB,OAAS,EAC9BsD,MAAQJ,EAAMI,MACdwK,KAAS,EACTgB,KAAQ2rP,EAAQtwP,SAChBuE,MAAQ+rP,EAAQrwP,YAMpB,OAFAlH,EAAMtH,KAAO6+P,EAAQz6P,QAEd,EAMT,SAAS26P,EAAYz3P,GACnB,IAAI/C,EAAGyS,EACHgoP,EACAC,EACAr3P,EACAs3P,EAAc,GACdlxP,EAAa1G,EAAM0G,WACnBjG,EAAMT,EAAM0G,WAAW5J,OAE3B,IAAKG,EAAI,EAAGA,EAAIwD,EAAKxD,IACnBy6P,EAAahxP,EAAWzJ,GAEE,KAAtBy6P,EAAWjwP,SAIS,IAApBiwP,EAAW9sP,MAIf+sP,EAAWjxP,EAAWgxP,EAAW9sP,KAEjCtK,EAAgBN,EAAMlE,OAAO47P,EAAWp3P,OACxCA,EAAM8E,KAAU,YAChB9E,EAAM+E,IAAU,OAChB/E,EAAMgF,QAAU,EAChBhF,EAAMQ,OAAU,KAChBR,EAAMtE,QAAU,GAEhBsE,EAAgBN,EAAMlE,OAAO67P,EAASr3P,OACtCA,EAAM8E,KAAU,aAChB9E,EAAM+E,IAAU,OAChB/E,EAAMgF,SAAW,EACjBhF,EAAMQ,OAAU,KAChBR,EAAMtE,QAAU,GAE8B,SAA1CgE,EAAMlE,OAAO67P,EAASr3P,MAAQ,GAAG8E,MACY,MAA7CpF,EAAMlE,OAAO67P,EAASr3P,MAAQ,GAAGtE,SAEnC47P,EAAY16P,KAAKy6P,EAASr3P,MAAQ,IAUtC,MAAOs3P,EAAY96P,OAAQ,CACzBG,EAAI26P,EAAYC,MAChBnoP,EAAIzS,EAAI,EAER,MAAOyS,EAAI1P,EAAMlE,OAAOgB,QAAmC,eAAzBkD,EAAMlE,OAAO4T,GAAGtK,KAChDsK,IAGFA,IAEIzS,IAAMyS,IACRpP,EAAQN,EAAMlE,OAAO4T,GACrB1P,EAAMlE,OAAO4T,GAAK1P,EAAMlE,OAAOmB,GAC/B+C,EAAMlE,OAAOmB,GAAKqD,IAKxB8F,EAAGnD,OAAOY,MAAMmqP,OAAO,WAAY,OAAQ4E,GAC3CxsP,EAAGnD,OAAOe,OAAOgqP,OAAO,WAAY,OAAQyJ,K,oCCjH9C,IAAIK,EAAe,sCACfC,EAAe,UAGnBl8P,EAAOJ,QAAU,SAAgBuE,GAC/B,IAAI7F,EAGJA,EAAM6F,EAAMvH,IAAI4B,QAAQy9P,EAAa,MAGrC39P,EAAMA,EAAIE,QAAQ09P,EAAS,KAE3B/3P,EAAMvH,IAAM0B,I,oCCVd,IAAIkzP,EAAkB,EAAQ,QAM1B2K,EAAS,CACX,CAAE,OAAmB,EAAQ,SAC7B,CAAE,UAAmB,EAAQ,SAC7B,CAAE,SAAmB,EAAQ,SAC7B,CAAE,YAAmB,EAAQ,SAC7B,CAAE,gBAAmB,EAAQ,QAAgCpF,UAC7D,CAAE,WAAmB,EAAQ,QAA2BA,UACxD,CAAE,OAAmB,EAAQ,SAC7B,CAAE,QAAmB,EAAQ,SAC7B,CAAE,WAAmB,EAAQ,SAC7B,CAAE,cAAmB,EAAQ,SAC7B,CAAE,SAAmB,EAAQ,UAG3BqF,EAAU,CACZ,CAAE,gBAAmB,EAAQ,SAC7B,CAAE,gBAAmB,EAAQ,QAAgCR,aAC7D,CAAE,WAAmB,EAAQ,QAA2BA,aACxD,CAAE,gBAAmB,EAAQ,UAO/B,SAASl2P,IACP,IAAItE,EASJ,IAFAyB,KAAKmF,MAAQ,IAAIwpP,EAEZpwP,EAAI,EAAGA,EAAI+6P,EAAOl7P,OAAQG,IAC7ByB,KAAKmF,MAAM3G,KAAK86P,EAAO/6P,GAAG,GAAI+6P,EAAO/6P,GAAG,IAW1C,IAFAyB,KAAKsF,OAAS,IAAIqpP,EAEbpwP,EAAI,EAAGA,EAAIg7P,EAAQn7P,OAAQG,IAC9ByB,KAAKsF,OAAO9G,KAAK+6P,EAAQh7P,GAAG,GAAIg7P,EAAQh7P,GAAG,IAQ/CsE,EAAajK,UAAU4gQ,UAAY,SAAUl4P,GAC3C,IAAIm4P,EAAIl7P,EAAGvE,EAAMsH,EAAMtH,IACnBkL,EAAQlF,KAAKmF,MAAMiN,SAAS,IAC5BlL,EAAMhC,EAAM9G,OACZiV,EAAa/R,EAAMoG,GAAGpD,QAAQ+O,WAC9BtL,EAAQzG,EAAMyG,MAGlB,GAA0B,qBAAfA,EAAM/N,GAAjB,CAKA,GAAIsH,EAAMI,MAAQ2R,GAChB,IAAK9U,EAAI,EAAGA,EAAI2I,EAAK3I,IASnB,GAJA+C,EAAMI,QACN+3P,EAAKv0P,EAAM3G,GAAG+C,GAAO,GACrBA,EAAMI,QAEF+3P,EAAM,WAcZn4P,EAAMtH,IAAMsH,EAAMsG,OAGf6xP,GAAMn4P,EAAMtH,MACjB+N,EAAM/N,GAAOsH,EAAMtH,SAhCjBsH,EAAMtH,IAAM+N,EAAM/N,IAsCtB6I,EAAajK,UAAUs7P,SAAW,SAAU5yP,GAC1C,IAAIm4P,EAAIl7P,EACJ2G,EAAQlF,KAAKmF,MAAMiN,SAAS,IAC5BlL,EAAMhC,EAAM9G,OACZ8N,EAAM5K,EAAMsG,OACZyL,EAAa/R,EAAMoG,GAAGpD,QAAQ+O,WAElC,MAAO/R,EAAMtH,IAAMkS,EAAK,CAQtB,GAAI5K,EAAMI,MAAQ2R,EAChB,IAAK9U,EAAI,EAAGA,EAAI2I,EAAK3I,IAEnB,GADAk7P,EAAKv0P,EAAM3G,GAAG+C,GAAO,GACjBm4P,EAAM,MAId,GAAIA,GACF,GAAIn4P,EAAMtH,KAAOkS,EAAO,WAI1B5K,EAAMuG,SAAWvG,EAAMvH,IAAIuH,EAAMtH,OAG/BsH,EAAMuG,SACRvG,EAAM2G,eAUVpF,EAAajK,UAAU8K,MAAQ,SAAUjI,EAAKiM,EAAIxB,EAAKyB,GACrD,IAAIpJ,EAAG2G,EAAOgC,EACV5F,EAAQ,IAAItB,KAAKmG,MAAM1K,EAAKiM,EAAIxB,EAAKyB,GAOzC,IALA3H,KAAKk0P,SAAS5yP,GAEd4D,EAAQlF,KAAKsF,OAAO8M,SAAS,IAC7BlL,EAAMhC,EAAM9G,OAEPG,EAAI,EAAGA,EAAI2I,EAAK3I,IACnB2G,EAAM3G,GAAG+C,IAKbuB,EAAajK,UAAUuN,MAAQ,EAAQ,QAGvChJ,EAAOJ,QAAU8F,G,qBChLjB1F,EAAOJ,QAAQ,4D,qBCUf,IAAIyF,EAAQ,EAAQ,QAOpB,SAASk3P,EAAShzP,EAAMpE,GACpBtC,KAAK0G,KAAOA,EACZ1G,KAAKgK,WAAa,GAClBhK,KAAKsC,SAAWA,GAAY,GA4DhC,SAASq3P,EAASltP,GACdzM,KAAKyM,KAAOA,EAtDhBitP,EAAS9gQ,UAAUyR,aAAe,SAASnP,EAAMoM,GAC7CtH,KAAKgK,WAAW9O,GAAQoM,GAM5BoyP,EAAS9gQ,UAAU2R,OAAS,WACxB,IAAIY,EAAOX,SAASovP,gBAChB,qCAAsC55P,KAAK0G,MAE/C,IAAK,IAAIiE,KAAQ3K,KAAKgK,WACdrR,OAAOC,UAAUK,eAAeH,KAAKkH,KAAKgK,WAAYW,IACtDQ,EAAKd,aAAaM,EAAM3K,KAAKgK,WAAWW,IAIhD,IAAK,IAAIpM,EAAI,EAAGA,EAAIyB,KAAKsC,SAASlE,OAAQG,IACtC4M,EAAKP,YAAY5K,KAAKsC,SAAS/D,GAAGgM,UAGtC,OAAOY,GAMXuuP,EAAS9gQ,UAAUiS,SAAW,WAC1B,IAAIzI,EAAS,IAAMpC,KAAK0G,KAGxB,IAAK,IAAIiE,KAAQ3K,KAAKgK,WACdrR,OAAOC,UAAUK,eAAeH,KAAKkH,KAAKgK,WAAYW,KACtDvI,GAAU,IAAMuI,EAAO,KACvBvI,GAAUI,EAAMsI,OAAO9K,KAAKgK,WAAWW,IACvCvI,GAAU,KAIlBA,GAAU,IAEV,IAAK,IAAI7D,EAAI,EAAGA,EAAIyB,KAAKsC,SAASlE,OAAQG,IACtC6D,GAAUpC,KAAKsC,SAAS/D,GAAGsM,WAK/B,OAFAzI,GAAU,KAAOpC,KAAK0G,KAAO,IAEtBtE,GAaXu3P,EAAS/gQ,UAAU2R,OAAS,WACxB,OAAOC,SAASY,eAAepL,KAAKyM,OAMxCktP,EAAS/gQ,UAAUiS,SAAW,WAC1B,OAAOrI,EAAMsI,OAAO9K,KAAKyM,OAG7BtP,EAAOJ,QAAU,CACb28P,SAAUA,EACVC,SAAUA,I,qBCpGdx8P,EAAOJ,QAAU,SAAUkR,EAAM3G,GAC/B,MAAO,CAAEA,MAAOA,EAAO2G,OAAQA,K,kCCIjC9Q,EAAOJ,QAAU,SAAoB2K,GACnC,IAAIpL,EAAkBoL,EAAGlF,MAAMlG,SAC3BxC,EAAkB4N,EAAGlF,MAAM1I,eAK3B+/P,EAAmB,iBAEnBp9P,EAAmBiL,EAAGlF,MAAMxF,IAAIE,QAAQ8iP,EAAErmP,OAC1CmgQ,EAAmBpyP,EAAGlF,MAAMxF,IAAIE,QAAQu8O,EAAE9/O,OAG9C,SAASogQ,EAASz4P,EAAOC,EAAWC,EAASC,GAC3C,IAAIu4P,EAAOC,EAAO99P,EAAI+9P,EAAYC,EAC9BngQ,EAAMsH,EAAMO,OAAON,GAAaD,EAAMQ,OAAOP,GAC7CQ,EAAMT,EAAMU,OAAOT,GAEvB,GAAIvH,EAAM,GAAK+H,EAAO,OAAO,EAE7B,GAAoC,KAAhCT,EAAMvH,IAAIqB,WAAWpB,KAA0B,OAAO,EAC1D,GAAoC,KAAhCsH,EAAMvH,IAAIqB,WAAWpB,KAA0B,OAAO,EAI1D,IAFAkgQ,EAAalgQ,EAENA,EAAM+H,EAAK/H,IAAO,CAEvB,GADAmC,EAAKmF,EAAMvH,IAAIqB,WAAWpB,GACf,KAAPmC,EACF,OAAO,EACF,GAAW,KAAPA,EAAqB,CAC9Bg+P,EAAWngQ,EACX,MACgB,KAAPmC,GACTnC,IAIJ,QAAImgQ,EAAW,GAA4C,KAAvC74P,EAAMvH,IAAIqB,WAAW++P,EAAW,QAIhD14P,IAEJu4P,EAAQ14P,EAAMvH,IAAIP,MAAM0gQ,EAAYC,GAAUx+P,QAAQ,SAAU,MAChEs+P,EAAQ34P,EAAMvH,IAAIP,MAAM2gQ,EAAW,EAAGp4P,GAAKlF,OACtB,IAAjBm9P,EAAM57P,SACW,IAAjB67P,EAAM77P,SACLkD,EAAM4E,IAAIk0P,gBAAiB94P,EAAM4E,IAAIk0P,cAAgB,IAEN,qBAAzC94P,EAAM4E,IAAIk0P,cAAc,IAAMJ,KACvC14P,EAAM4E,IAAIk0P,cAAc,IAAMJ,GAASC,GAGzC34P,EAAMa,KAAOZ,EAAY,GAClB,MAIT,SAAS84P,EAAa/4P,GACpB,IAAI/C,EAAGyS,EAAGiB,EAAG7U,EAAQwE,EAAO6K,EAAMu3O,EAAOhqP,EAAKsgQ,EAAK3oP,EAAG4oP,EAASC,EAC3DC,EACAvK,EAAc5uP,EAAMlE,OAExB,GAAKkE,EAAM4E,IAAIk0P,cAsBf,IApBAI,EAAY,IAAI3/P,OAAO,MACrBlC,OAAOkB,KAAKyH,EAAM4E,IAAIk0P,eAAe/3P,KAAI,SAAUlC,GACjD,OAAOA,EAAEilP,OAAO,MACfiD,MAAK,SAAUxpP,EAAGyb,GACnB,OAAOA,EAAElc,OAASS,EAAET,UACnBiE,IAAI/F,GAAUoN,KAAK,KACxB,KAEA6wP,EAAU,MAAQ99P,EAAmB,IAAMq9P,EAC3B,KAAOD,EAAY3rP,MAAM,IAAI7L,IAAI/F,GAAUoN,KAAK,IADtD,MAEM/Q,OAAOkB,KAAKyH,EAAM4E,IAAIk0P,eAAe/3P,KAAI,SAAUlC,GACjD,OAAOA,EAAEilP,OAAO,MACfiD,MAAK,SAAUxpP,EAAGyb,GACnB,OAAOA,EAAElc,OAASS,EAAET,UACnBiE,IAAI/F,GAAUoN,KAAK,KAN5B,OAOQjN,EAAmB,IAAMq9P,EAC3B,KAAOD,EAAY3rP,MAAM,IAAI7L,IAAI/F,GAAUoN,KAAK,IAAM,KAEtE4wP,EAAM,IAAIz/P,OAAO0/P,EAAS,KAErBvpP,EAAI,EAAGiB,EAAIi+O,EAAY9xP,OAAQ4S,EAAIiB,EAAGjB,IACzC,GAA4B,WAAxBk/O,EAAYl/O,GAAGtK,KAInB,IAHAtJ,EAAS8yP,EAAYl/O,GAAG1O,SAGnB/D,EAAInB,EAAOgB,OAAS,EAAGG,GAAK,EAAGA,IAElC,GADAk8P,EAAer9P,EAAOmB,GACI,SAAtBk8P,EAAa/zP,OAEjB1M,EAAM,EACNyS,EAAOguP,EAAan9P,QACpBg9P,EAAInlP,UAAY,EAChB6uO,EAAQ,GAIHwW,EAAUn/P,KAAKoR,IAApB,CAEA,MAAQkF,EAAI2oP,EAAIltO,KAAK3gB,IACfkF,EAAElG,MAAQ,GAAKkG,EAAE,GAAGvT,OAAS,KAC/BwD,EAAgB,IAAIN,EAAMmF,MAAM,OAAQ,GAAI,GAC5C7E,EAAMtE,QAAUmP,EAAKjT,MAAMQ,EAAK2X,EAAElG,MAAQkG,EAAE,GAAGvT,QAC/C4lP,EAAMxlP,KAAKoD,IAGbA,EAAgB,IAAIN,EAAMmF,MAAM,YAAa,OAAQ,GACrD7E,EAAMiF,MAAU,CAAE,CAAE,QAASvF,EAAM4E,IAAIk0P,cAAc,IAAMzoP,EAAE,MAC7DqyO,EAAMxlP,KAAKoD,GAEXA,EAAgB,IAAIN,EAAMmF,MAAM,OAAQ,GAAI,GAC5C7E,EAAMtE,QAAUqU,EAAE,GAClBqyO,EAAMxlP,KAAKoD,GAEXA,EAAgB,IAAIN,EAAMmF,MAAM,aAAc,QAAS,GACvDu9O,EAAMxlP,KAAKoD,GAEX04P,EAAInlP,WAAaxD,EAAE,GAAGvT,OACtBpE,EAAMsgQ,EAAInlP,UAGP6uO,EAAM5lP,SAEPpE,EAAMyS,EAAKrO,SACbwD,EAAgB,IAAIN,EAAMmF,MAAM,OAAQ,GAAI,GAC5C7E,EAAMtE,QAAUmP,EAAKjT,MAAMQ,GAC3BgqP,EAAMxlP,KAAKoD,IAIbsuP,EAAYl/O,GAAG1O,SAAWlF,EAAStD,EAAesD,EAAQmB,EAAGylP,KAKnEt8O,EAAGlD,MAAMW,MAAMmqP,OAAO,YAAa,WAAYyK,EAAU,CAAE7K,IAAK,CAAE,YAAa,eAE/ExnP,EAAGjD,KAAKU,MAAMkgP,MAAM,UAAW,eAAgBgV,K,qBClJjD,IAAIK,EAAQ,EAAQ,OAAR,CAAqB,OAC7BC,EAAM,EAAQ,QACd7Z,EAAS,EAAQ,QAAaA,OAC9B8Z,EAA8B,mBAAV9Z,EAEpB+Z,EAAW19P,EAAOJ,QAAU,SAAU7B,GACxC,OAAOw/P,EAAMx/P,KAAUw/P,EAAMx/P,GAC3B0/P,GAAc9Z,EAAO5lP,KAAU0/P,EAAa9Z,EAAS6Z,GAAK,UAAYz/P,KAG1E2/P,EAASH,MAAQA,G,uBCTjB,IAAIxhQ,EAAM,EAAQ,QACdgnP,EAAW,EAAQ,QACnB4a,EAAW,EAAQ,OAAR,CAAyB,YACpCC,EAAcpiQ,OAAOC,UAEzBuE,EAAOJ,QAAUpE,OAAOgd,gBAAkB,SAAU3H,GAElD,OADAA,EAAIkyO,EAASlyO,GACT9U,EAAI8U,EAAG8sP,GAAkB9sP,EAAE8sP,GACH,mBAAjB9sP,EAAEgzO,aAA6BhzO,aAAaA,EAAEgzO,YAChDhzO,EAAEgzO,YAAYpoP,UACdoV,aAAarV,OAASoiQ,EAAc,O,oCCN/C,IAAIC,EAAc,8CAGlB,SAASC,EAAU35P,EAAOG,GACxB,IAAIy5P,EACA59P,EACAsE,EACAG,EAAMT,EAAMsG,OACZO,EAAQ7G,EAAMtH,IAElB,GAAoC,MAAhCsH,EAAMvH,IAAIqB,WAAW+M,GAA0B,OAAO,EAC1D,GAAI1G,EAAU,OAAO,EACrB,GAAI0G,EAAQ,GAAKpG,EAAO,OAAO,EAE/BT,EAAMtH,IAAMmO,EAAQ,EAEpB,MAAO7G,EAAMtH,IAAM+H,EAAK,CACtB,GAAwC,MAApCT,EAAMvH,IAAIqB,WAAWkG,EAAMtH,KAAsB,CACnDkhQ,GAAQ,EACR,MAGF55P,EAAMoG,GAAGnD,OAAOi1P,UAAUl4P,GAG5B,OAAK45P,GAAS/yP,EAAQ,IAAM7G,EAAMtH,KAKlCsD,EAAUgE,EAAMvH,IAAIP,MAAM2O,EAAQ,EAAG7G,EAAMtH,KAGvCsD,EAAQrC,MAAM,uBAChBqG,EAAMtH,IAAMmO,GACL,IAIT7G,EAAMsG,OAAStG,EAAMtH,IACrBsH,EAAMtH,IAAMmO,EAAQ,EAGpBvG,EAAgBN,EAAM9C,KAAK,WAAY,MAAO,GAC9CoD,EAAMQ,OAAU,IAEhBR,EAAgBN,EAAM9C,KAAK,OAAQ,GAAI,GACvCoD,EAAMtE,QAAUA,EAAQ3B,QAAQq/P,EAAa,MAE7Cp5P,EAAgBN,EAAM9C,KAAK,YAAa,OAAQ,GAChDoD,EAAMQ,OAAU,IAEhBd,EAAMtH,IAAMsH,EAAMsG,OAAS,EAC3BtG,EAAMsG,OAAS7F,GACR,KA5BLT,EAAMtH,IAAMmO,GACL,GA+BXhL,EAAOJ,QAAU,SAAoB2K,GACnCA,EAAGnD,OAAOY,MAAMkgP,MAAM,WAAY,MAAO4V,K,qBChE3C,IAAIE,EAAS,EAAQ,OAAR,CAAqB,QAC9BR,EAAM,EAAQ,QAClBx9P,EAAOJ,QAAU,SAAU3D,GACzB,OAAO+hQ,EAAO/hQ,KAAS+hQ,EAAO/hQ,GAAOuhQ,EAAIvhQ,M,oCCC3C2D,EAAQq+P,eAAuB,EAAQ,QACvCr+P,EAAQs+P,qBAAuB,EAAQ,QACvCt+P,EAAQu+P,eAAuB,EAAQ,S,kCCFvC,IAAIC,EAAgB,6BAEhBC,EAAgB,yBAChBC,EAAgB,UAChBC,EAAgB,UAEhBC,EAAc,MAAQH,EAAW,IAAMC,EAAgB,IAAMC,EAAgB,IAE7EpxP,EAAc,UAAYixP,EAAY,eAAiBI,EAAa,MAEpEC,EAAc,2BAA6BtxP,EAAY,aAEvDuxP,EAAc,mCACdC,EAAc,oDACdC,EAAc,cACdC,EAAc,qBACdC,EAAc,iCAEdC,EAAc,IAAIrhQ,OAAO,OAAS+gQ,EAAW,IAAMC,EAAY,IAAMC,EACjD,IAAMC,EAAa,IAAMC,EAAc,IAAMC,EAAQ,KACzEE,EAAyB,IAAIthQ,OAAO,OAAS+gQ,EAAW,IAAMC,EAAY,KAE9E1+P,EAAOJ,QAAQm/P,YAAcA,EAC7B/+P,EAAOJ,QAAQo/P,uBAAyBA,G,qBC3BxC,IAAI13P,EAAOtH,EAAOJ,QAAU,CAAEq/P,QAAS,UACrB,iBAAPC,MAAiBA,IAAM53P,I,uBCiElC,IAAIuE,EAAS,EAAQ,QACjB3H,EAAS2H,EAAO3H,OAEpB,SAASi7P,IACR,IAAIhI,EAEJt0P,KAAKirP,WAAc,SAASwJ,GAC3BH,EAAKG,GAGNz0P,KAAKqxP,eAAiB,SAAS93O,EAAK03O,GACnC,IACIsL,EADArjP,EAAMK,EAAIW,eAEVg3O,EAAUh4O,EAAIg4O,QAEdsL,EAAclI,EAAGmI,aAAaljP,GAClC03O,EAAUK,MAAQkL,EAAiC,EAAnBtjP,EAAIwjP,cAAoBxjP,EAAI6S,QA6C5D,IAAI4wO,EAAY,KAAYzjP,EAAI6S,QAAU,EAMtCxS,EAAI+yO,MAAQ,IAEfiQ,EAAY,EAAK,IAAoB,IAAZhjP,EAAI+yO,OACxB/yO,EAAI8R,eAAiB,MAAQ,EAAI,KAMtCkxO,EAAY,MAORhjP,EAAIqjP,aACPL,EAAY,EAAK,IAAO,MAAUhjP,EAAI8R,eAAiB,MAAQ,EAAI,MAIrEnS,EAAI+J,QAAUs5O,EAAYC,EACtBtjP,EAAI+J,QAAU05O,IACjBzjP,EAAI+J,QAAU05O,IACXzjP,EAAI+J,QAAU,GAAK1J,EAAIgzO,qBAC1BrzO,EAAI+J,QAAU,GAEf,IAAI45O,EAAgB5L,EAAUK,KAAOp4O,EAAI6S,QACrC3rB,KAAKoL,IAAI0N,EAAI4jP,SAAU5jP,EAAI+J,SAoB/B,OAlBI45O,EAAgBN,IACnBM,EAAgBN,GAEjBl7P,EAAQ,GAAK6X,EAAI+J,QAAU,GAC3B5hB,EAAQ6X,EAAI+J,SAAW,GAEvBiuO,EAAQxkO,cAAgB,EAGP,MAAbxT,EAAI2B,QAKP3B,EAAI2B,MAAMo2O,UAAYA,EAAUK,KAAO,EACvCp4O,EAAI2B,MAAMkiP,SAAW7jP,EAAI4jP,UAGnBD,GAQR78P,KAAKg9P,YAAc,SAASzjP,EAAK03O,EAAWD,EAAWiM,GACtD,IACIC,EADAhkP,EAAMK,EAAIW,eAEJ4iP,EAAW5jP,EAAI4jP,SAAU75O,EAAU/J,EAAI+J,QAGtC,GAAPg6O,IACHH,GAAY7L,GAEoB,IAAN,EAAtB/3O,EAAIikP,mBACRl6O,GAAW,IAEZ+tO,EAAUM,KAAOL,EAGF,GAAX6L,EAA0B,EAAV75O,GACnBi6O,EAAWJ,EAAsB,EAAV75O,EAAe,GACtC+tO,EAAUM,MAAQ4L,EAClBhkP,EAAIikP,iBAAmB,MAEvBD,EAAW,EACXhkP,EAAIikP,iBAAmB,IAMlB5jP,EAAIgzO,mBAAqB,IAA4B,EAAtBrzO,EAAIikP,mBACvCnM,EAAUM,MAAQ,GAAKL,IAIzB,IAAImM,EAAcN,EAA0B,EAAd5jP,EAAI+J,QAAe,GAAK65O,EACnC,EAAd5jP,EAAI+J,QAAe,GAKxB,OAJAm6O,GAAcF,EAEVE,EAAa,IAChBA,EAAa,GACPA,GAORp9P,KAAKq9P,WAAa,SAASnkP,EAAKokP,GAC/BpkP,EAAI4jP,UAAYQ,EAAG/K,eAAiB+K,EAAGC,cAOxCv9P,KAAKyyP,aAAe,SAASv5O,EAAK+3O,GACjC,IAAIuM,EACAtM,EAAUh4O,EAAIg4O,QAElBh4O,EAAI4jP,UAAY7L,EAAY/3O,EAAI6S,QAChC,IAAI0xO,EAAe,EACnBvM,EAAQvkO,eAAiB,EACzBukO,EAAQxkO,cAAgB,EAGc,IAAjC8wO,EAAYtkP,EAAI4jP,SAAW,KAC/BW,GAAgBD,GAEjBA,EAAatkP,EAAI4jP,SAAWW,EAAgBvkP,EAAI+J,QAC5Cu6O,EAAY,IACfn8P,EAAQ,GAAKm8P,EAAY,GACzBn8P,EAAQm8P,GAAa,GACrBC,GAAgBD,GAyBhB,IAAIE,EAAYt9P,KAAKoL,IAA8B,EAA1B0lP,EAAQ1kO,gBAAqBixO,GAAgB,EACtEvM,EAAQxkO,eAAiB,EAAIgxO,EAC7BD,GAAgB,EAAIC,EACpBxkP,EAAI4jP,UAAY,EAAIY,EACpBxM,EAAQ1kO,iBAAmBkxO,EAG5BxM,EAAQvkO,gBAAkB8wO,EAC1BvkP,EAAI4jP,UAAYW,GAIlBtgQ,EAAOJ,QAAUu/P,G,qBCxRjB,SAASnW,EAAQwX,GACb39P,KAAK+J,MAAQ4zP,EAAK5zP,MAClB/J,KAAK49P,MAAQD,EAAKC,MAClB59P,KAAKuX,KAAOomP,EAAKpmP,KACjBvX,KAAK69P,QAAUF,EAAKE,QACpB79P,KAAKsM,KAAOqxP,EAAKrxP,UAEQR,IAArB6xP,EAAKG,YACL99P,KAAK89P,YAAcH,EAAK5zP,MAExB/J,KAAK89P,YAAcH,EAAKG,iBAGJhyP,IAApB6xP,EAAKI,WACL/9P,KAAK+9P,WAAaJ,EAAKpmP,KAEvBvX,KAAK+9P,WAAaJ,EAAKI,WAQ/B5X,EAAQvtP,UAAUolQ,OAAS,SAASC,GAChC,IAAIN,EAAO,CACP5zP,MAAO/J,KAAK+J,MACZwN,KAAMvX,KAAKuX,KACXqmP,MAAO59P,KAAK49P,MACZE,YAAa99P,KAAK+J,MAClBg0P,WAAY/9P,KAAKuX,KACjBsmP,QAAS79P,KAAK69P,QACdvxP,KAAMtM,KAAKsM,MAGf,IAAK,IAAIlT,KAAO6kQ,EACRA,EAAUhlQ,eAAeG,KACzBukQ,EAAKvkQ,GAAO6kQ,EAAU7kQ,IAI9B,OAAO,IAAI+sP,EAAQwX,IAMvBxX,EAAQvtP,UAAUslQ,UAAY,SAASn0P,GACnC,OAAO/J,KAAKg+P,OAAO,CACfj0P,MAAOA,KAOfo8O,EAAQvtP,UAAUulQ,SAAW,SAAS5mP,GAClC,OAAOvX,KAAKg+P,OAAO,CACfzmP,KAAMA,KAOd4uO,EAAQvtP,UAAUwlQ,UAAY,SAASR,GACnC,OAAO59P,KAAKg+P,OAAO,CACfJ,MAAOA,KAOfzX,EAAQvtP,UAAUylQ,YAAc,WAC5B,OAAOr+P,KAAKg+P,OAAO,CACfH,SAAS,KAOjB1X,EAAQvtP,UAAU0lQ,SAAW,SAAShyP,GAClC,OAAOtM,KAAKg+P,OAAO,CACf1xP,KAAMA,KAQd65O,EAAQvtP,UAAU2lQ,MAAQ,WACtB,OAAOv+P,KAAKg+P,OAAO,KAOvB,IAAIQ,EAAW,CACX,aAAc,UACd,eAAgB,UAChB,aAAc,UACd,YAAa,UACb,cAAe,UACf,aAAc,OACd,eAAgB,UAChB,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,eAAgB,UAChB,eAAgB,UAChB,eAAgB,UAChB,eAAgB,UAChB,eAAgB,UAChB,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,aAAc,UACd,aAAc,UACd,aAAc,UACd,aAAc,UACd,aAAc,UACd,gBAAiB,UACjB,gBAAiB,UACjB,gBAAiB,UACjB,gBAAiB,UACjB,gBAAiB,UACjB,gBAAiB,UACjB,gBAAiB,UACjB,gBAAiB,UACjB,gBAAiB,UACjB,gBAAiB,UACjB,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,eAAgB,UAChB,gBAAiB,WAOrBrY,EAAQvtP,UAAU6lQ,SAAW,WACzB,OAAIz+P,KAAK69P,QACE,cAEAW,EAASx+P,KAAK49P,QAAU59P,KAAK49P,OAI5CzgQ,EAAOJ,QAAUopP,G,uBC1LjB,IAAIuY,EAAY,EAAQ,QACpBC,EAAW,EAAQ,QACnBC,EAAkB,EAAQ,QAC9BzhQ,EAAOJ,QAAU,SAAU8hQ,GACzB,OAAO,SAAUC,EAAOp/O,EAAI5gB,GAC1B,IAGIwI,EAHA0G,EAAI0wP,EAAUI,GACd1gQ,EAASugQ,EAAS3wP,EAAE5P,QACpBqN,EAAQmzP,EAAgB9/P,EAAWV,GAIvC,GAAIygQ,GAAen/O,GAAMA,GAAI,MAAOthB,EAASqN,EAG3C,GAFAnE,EAAQ0G,EAAEvC,KAENnE,GAASA,EAAO,OAAO,OAEtB,KAAMlJ,EAASqN,EAAOA,IAAS,IAAIozP,GAAepzP,KAASuC,IAC5DA,EAAEvC,KAAWiU,EAAI,OAAOm/O,GAAepzP,GAAS,EACpD,OAAQozP,IAAgB,K,oCChB9B,IAAI9jQ,EAAoB,EAAQ,QAC5B7B,EAAoB,EAAQ,QAAmBA,IAC/CiB,EAAoB,EAAQ,QAAmBA,kBAC/CE,EAAoB,EAAQ,QAAmBA,cAG/C0kQ,EAAa,uCACbC,EAAa,4BAGjB7hQ,EAAOJ,QAAU,SAAgBuE,EAAOG,GACtC,IAAItF,EAAIhB,EAAMF,EAAOjB,EAAMsH,EAAMtH,IAAK+H,EAAMT,EAAMsG,OAElD,GAAkC,KAA9BtG,EAAMvH,IAAIqB,WAAWpB,GAAwB,OAAO,EAExD,GAAIA,EAAM,EAAI+H,EAGZ,GAFA5F,EAAKmF,EAAMvH,IAAIqB,WAAWpB,EAAM,GAErB,KAAPmC,GAEF,GADAlB,EAAQqG,EAAMvH,IAAIP,MAAMQ,GAAKiB,MAAM8jQ,GAC/B9jQ,EAMF,OALKwG,IACHtG,EAAqC,MAA9BF,EAAM,GAAG,GAAGK,cAAwBC,SAASN,EAAM,GAAGzB,MAAM,GAAI,IAAM+B,SAASN,EAAM,GAAI,IAChGqG,EAAMuG,SAAW1N,EAAkBgB,GAAQd,EAAcc,GAAQd,EAAc,QAEjFiH,EAAMtH,KAAOiB,EAAM,GAAGmD,QACf,OAIT,GADAnD,EAAQqG,EAAMvH,IAAIP,MAAMQ,GAAKiB,MAAM+jQ,GAC/B/jQ,GACE/B,EAAI6B,EAAUE,EAAM,IAGtB,OAFKwG,IAAUH,EAAMuG,SAAW9M,EAASE,EAAM,KAC/CqG,EAAMtH,KAAOiB,EAAM,GAAGmD,QACf,EAQf,OAFKqD,IAAUH,EAAMuG,SAAW,KAChCvG,EAAMtH,OACC,I,qBC9CT,SAASilQ,EAAY/3P,EAAKnF,EAAK0Z,EAAKyjP,GAChCl/P,KAAKm/P,KAAOj4P,EACZlH,KAAKo/P,OAASr9P,EACd/B,KAAKq/P,MAAQ5jP,EACbzb,KAAKs/P,KAAOJ,EAGhB,IAAIK,EAAS,CAGb,KAAc,CACV,EAAG,EACH,EAAG,GAGP,KAAc,CACV,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,GAGV,KAAc,CACV,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,GAGV,KAAc,CACV,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAGb,KAAc,CACV,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAGb,KAAc,CACV,EAAG,EAAG,GAAI,GAAI,GAAI,GAClB,EAAG,EAAG,EAAG,GAAI,EAAG,EAChB,GAAI,EAAG,GAAI,GAAI,EAAG,EAClB,GAAI,GAAI,GAAI,GAAI,GAAI,EACpB,EAAG,EAAG,EAAG,GAAI,EAAG,EAChB,EAAG,EAAG,EAAG,EAAG,EAAG,GAGnB,KAAc,CACV,EAAG,EAAG,EAAG,GAAI,GAAI,EACjB,EAAG,EAAG,EAAG,GAAI,EAAG,EAChB,EAAG,EAAG,EAAG,GAAI,EAAG,EAChB,GAAI,GAAI,GAAI,GAAI,GAAI,EACpB,GAAI,EAAG,EAAG,GAAI,EAAG,EACjB,GAAI,EAAG,EAAG,EAAG,EAAG,GAGpB,KAAc,CACV,EAAG,EAAG,EAAG,GAAI,GAAI,EACjB,EAAG,EAAG,EAAG,EAAG,EAAG,EACf,EAAG,EAAG,EAAG,EAAG,EAAG,EACf,GAAI,EAAG,EAAG,GAAI,EAAG,EACjB,GAAI,EAAG,EAAG,EAAG,EAAG,EAChB,GAAI,EAAG,EAAG,EAAG,EAAG,GAGpB,MAAe,CACX,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1B,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EACzB,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAC3B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAC3B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAC3B,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAC1B,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGzB,MAAe,CACX,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1B,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GACzB,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAC3B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAC3B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAC3B,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EACzB,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAG1B,MAAe,CACX,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1B,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GACxB,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAC3B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAC3B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAC3B,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAC1B,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAG5B,MAAe,CACX,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1D,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC7D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC7D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAC1D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EACzD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAG5D,MAAe,CACX,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClE,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC7D,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC9D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAC7D,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC7D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC7D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAC1D,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAG5D,MAAe,CACX,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClE,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,EAC9D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnE,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACpE,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EACvE,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACvE,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACzE,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EACvE,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EACxE,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACzE,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAC1E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,EAC5E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,EAC7E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,EAC7E,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAG1D,MAAe,CACX,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACtE,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACtE,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACvE,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACzE,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC1E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAC3E,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAC5E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGxD,MAAe,CACX,EAAQ,GAAQ,EAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GACxD,GAAQ,GAAQ,GAAQ,EAAQ,GAAQ,GAAQ,GAAQ,IAG5D,MAAe,CACX,GAAS,GAAS,GAAS,GAAS,GAAS,GAAS,GAAQ,GAC9D,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,EAAQ,GAG5D,IAAa,CACT,EAAG,EACH,EAAG,GAGP,IAAa,CACT,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,GAGV,IAAa,CACT,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,GAGV,IAAa,CACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GACT,EAAG,EAAG,EAAG,IAGb,IAAa,CACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAGb,IAAa,CACT,EAAG,EAAG,EAAG,EAAG,EAAG,GACf,EAAG,EAAG,EAAG,EAAG,EAAG,GACf,EAAG,EAAG,EAAG,GAAI,GAAI,GACjB,EAAG,EAAG,GAAI,GAAI,GAAI,GAClB,EAAG,EAAG,GAAI,GAAI,GAAI,GAClB,EAAG,GAAI,GAAI,GAAI,GAAI,IAGvB,IAAa,CACT,EAAG,EAAG,EAAG,EAAG,EAAG,GACf,EAAG,EAAG,EAAG,GAAI,GAAI,GACjB,EAAG,EAAG,EAAG,GAAI,GAAI,GACjB,EAAG,GAAI,GAAI,GAAI,GAAI,GACnB,EAAG,EAAG,GAAI,GAAI,GAAI,GAClB,GAAI,GAAI,GAAI,GAAI,GAAI,IAGxB,IAAa,CACT,EAAG,EAAG,EAAG,EAAG,EAAG,GACf,EAAG,EAAG,EAAG,EAAG,EAAG,GACf,EAAG,EAAG,EAAG,EAAG,EAAG,GACf,EAAG,EAAG,EAAG,EAAG,EAAG,GACf,EAAG,EAAG,EAAG,EAAG,GAAI,GAChB,EAAG,EAAG,GAAI,GAAI,GAAI,IAGtB,KAAc,CACV,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GACxB,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GACxB,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GACzB,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1B,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5B,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhC,KAAc,CACV,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GACtB,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GACvB,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GACxB,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GACzB,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3B,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3B,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GACzB,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAG9B,KAAc,CACV,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GACtB,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GACtB,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GACvB,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GACxB,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1B,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GACzB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhC,KAAc,CACV,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACvD,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACzD,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1D,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhE,KAAc,CACV,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACtD,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACtD,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACtD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACvD,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACzD,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhE,OAAgB,CACZ,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACzD,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhE,KAAc,CACV,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACzD,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,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,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,S,qBCTz2S,SAAS/gP,EAAS/iB,GACd,IAAI+jQ,EAAW/jQ,EACfC,KAAKD,QAAU,WACX,OAAO+jQ,GAIfhhP,EAASgC,OAAS,IAAIhC,EAAS,GAC/BA,EAASC,aAAe,IAAID,EAAS,GACrCA,EAASihP,aAAe,IAAIjhP,EAAS,GACrCA,EAASkhP,KAAO,IAAIlhP,EAAS,GAC7BA,EAASmhP,QAAU,IAAInhP,EAAS,GAEhC3lB,EAAOJ,QAAU+lB,G,qBCFjB,SAASujO,EAAMgc,EAAI9qP,EAAM2sP,EAAYC,GACjCnkQ,KAAKqiQ,GAAKA,EACVriQ,KAAKuX,KAAOA,EACZvX,KAAKmkQ,QAAUA,EACfnkQ,KAAKokQ,eAAiBF,EAM1B7d,EAAMztP,UAAUyrQ,IAAM,WAClB,OAAOt5P,EAAOs5P,EAAIrkQ,KAAKqiQ,MAM3Bhc,EAAMztP,UAAU0rQ,IAAM,WAClB,OAAOv5P,EAAOu5P,EAAItkQ,KAAKqiQ,MAO3Bhc,EAAMztP,UAAU2rQ,QAAU,WACtB,OAAOx5P,EAAOw5P,EAAQvkQ,KAAKqiQ,MAO/Bhc,EAAMztP,UAAU4rQ,QAAU,WACtB,OAAOz5P,EAAOy5P,EAAQxkQ,KAAKqiQ,MAO/Bhc,EAAMztP,UAAU6rQ,MAAQ,WACpB,OAAO15P,EAAO05P,EAAMzkQ,KAAKqiQ,MAM7Bhc,EAAMztP,UAAU8rQ,IAAM,WAClB,OAAOC,EAAU3kQ,KAAKuX,OAASvX,KAAKmkQ,QAAU,WAAa,eAM/D9d,EAAMztP,UAAU2lQ,MAAQ,WACpB,OAAOqG,EAAW5kQ,KAAKuX,OAI3B,IAAIstP,EAAI,EACJC,EAAK,EACL9W,EAAI,EACJ+W,EAAK,EACLnyP,EAAI,EACJoyP,EAAK,EACLC,EAAK,EACLC,EAAM,EAGNP,EAAY,CACZ,yBACA,YACA,cACA,qBAIAC,EAAa,CACb,kBACA,kBACA,oBACA,2BAIA75P,EAAS,CACT,IAAIs7O,EAAMwe,EAAG,EAAG,GAAK,GACrB,IAAIxe,EAAMye,EAAI,EAAG,GAAK,GACtB,IAAIze,EAAM2H,EAAG,EAAG,GAAK,GACrB,IAAI3H,EAAM0e,EAAI,EAAG,GAAK,GACtB,IAAI1e,EAAMzzO,EAAG,EAAG,IAAK,GACrB,IAAIyzO,EAAM2e,EAAI,EAAG,IAAK,GACtB,IAAI3e,EAAM4e,EAAI,EAAG,IAAK,GACtB,IAAI5e,EAAM6e,EAAK,EAAG,IAAK,IAIvBb,EAAM,CAACzxP,EAAGoyP,EAAIpyP,EAAGoyP,EAAIC,EAAIC,EAAKD,EAAIC,GAClCZ,EAAM,CAACU,EAAIA,EAAIA,EAAIA,EAAIE,EAAKA,EAAKA,EAAKA,GACtCX,EAAU,CAACvW,EAAG+W,EAAInyP,EAAGoyP,EAAIC,EAAIC,EAAKD,EAAIC,GACtCV,EAAU,CAACO,EAAIA,EAAIC,EAAIA,EAAIE,EAAKA,EAAKA,EAAKA,GAC1CT,EAAQ,CAACK,EAAIA,EAAIC,EAAIA,EAAIC,EAAIA,EAAIE,EAAKA,GAI1C/nQ,EAAOJ,QAAU,CACb8pP,QAAS97O,EAAO85P,GAChBle,KAAM57O,EAAOijP,GACbmX,OAAQp6P,EAAO6H,GACfwyP,aAAcr6P,EAAOk6P,K,uBC5HzB,IAAIj8P,EAAS,EAAQ,QACjB/J,EAAS+J,EAAO/J,OAKhBL,GAJUoK,EAAOnI,QACTmI,EAAOpI,MACFoI,EAAOlJ,WACbkJ,EAAOnJ,KACLmJ,EAAOpK,QAEhBrB,GADcyL,EAAOrK,YACVqK,EAAOzL,UAGlBW,GAFa8K,EAAOhL,WACRgL,EAAOlL,UACLkL,EAAO9K,aACrBN,EAAUoL,EAAOpL,QAEjByD,GADY2H,EAAOvK,UACVuK,EAAO3H,QAEhBgkQ,EAAW,EAAQ,QACnB9F,EAAS,EAAQ,QACjB1nP,EAAU,EAAQ,QAClBy4O,EAAoB,EAAQ,QAYhC,SAASgV,IACL,IAAIvgQ,EAAO/E,KACPulQ,EAAmB,MAMnBC,EAAa,GAMbC,EAAK,KACLC,EAAM,KACNC,EAAM,KACNnR,EAAM,KAKVx0P,KAAKirP,WAAa,SAAU2a,EAAKC,EAAMC,EAAMlR,GACzC6Q,EAAKG,EACLF,EAAMG,EACNF,EAAMG,EACNtR,EAAMI,GAOV,IAAImR,EAAM,KAINC,EAAS,EAITC,EAAa,EAIbC,EAAY,EAsBhB,SAASC,EAAejtP,GACpBja,EAAO0+O,UAAUzkO,EAAIktP,OAAOltP,EAAImtP,OAAON,IAAK,EAAGA,EAAKE,EAAY/sP,EAAIwjP,cACpEuJ,GAAc/sP,EAAIwjP,aAClBsJ,GAA6B,EAAnB9sP,EAAIwjP,aACdxjP,EAAImtP,MAASntP,EAAImtP,MAAQ,EAAM/V,EAAkBgW,eAAiB,EAMtE,SAASC,EAASrtP,EAAKla,EAAKgS,GACxB3P,EAAO2P,EAAIw0P,EAAa,GAExB,MAAOx0P,EAAI,EAAG,CACV,IAAIF,EACa,GAAbo1P,IACAA,EAAY,EACZD,IACA5kQ,EAAO4kQ,EAAavZ,KAAK8Z,mBACzBnlQ,EAAO6X,EAAIktP,OAAOltP,EAAImtP,OAAOI,cAAgBT,GACzC9sP,EAAIktP,OAAOltP,EAAImtP,OAAOI,cAAgBT,GACtCG,EAAejtP,GAEnB6sP,EAAIE,GAAc,GAGtBn1P,EAAI1Q,KAAKoL,IAAIwF,EAAGk1P,GAChBl1P,GAAKF,EAELo1P,GAAap1P,EAEbzP,EAAO2P,EAAIw0P,GAEXnkQ,EAAO6kQ,EAAYV,GAEnBO,EAAIE,IAAiBjnQ,GAAOgS,GAAMk1P,EAClCF,GAAUl1P,GAOlB,SAAS41P,EAAkBxtP,EAAKla,EAAKgS,GACjC3P,EAAO2P,EAAIw0P,EAAa,GAExB,MAAOx0P,EAAI,EAAG,CACV,IAAIF,EACa,GAAbo1P,IACAA,EAAY,EACZD,IACA5kQ,EAAO4kQ,EAAavZ,KAAK8Z,mBACzBT,EAAIE,GAAc,GAGtBn1P,EAAI1Q,KAAKoL,IAAIwF,EAAGk1P,GAChBl1P,GAAKF,EAELo1P,GAAap1P,EAEbzP,EAAO2P,EAAIw0P,GAEXnkQ,EAAO6kQ,EAAYV,GAEnBO,EAAIE,IAAiBjnQ,GAAOgS,GAAMk1P,EAClCF,GAAUl1P,GAUlB,SAAS61P,EAAqBptP,EAAKqtP,GAC/B,IACIroQ,EADA2a,EAAMK,EAAIW,eAqBd,GAnBA7Y,EAAOulQ,GAAiB,GAEpBA,GAAiB,IACjBL,EAASrtP,EAAK,GAAM,GACpB0tP,GAAiB,GAEjBA,GAAiB,IACjBL,EAASrtP,EAAK,GAAM,GACpB0tP,GAAiB,GAEjBA,GAAiB,IACjBL,EAASrtP,EAAK,GAAM,GACpB0tP,GAAiB,GAEjBA,GAAiB,IACjBL,EAASrtP,EAAK,GAAM,GACpB0tP,GAAiB,GAGjBA,GAAiB,GAAI,CACrB,IAAIxK,EAAUuJ,EAAIkB,sBAClB,GAAID,GAAiB,GACjB,IAAKroQ,EAAI,EAAGA,EAAI69P,EAAQh+P,QAAUwoQ,GAAiB,IAAKroQ,EACpDqoQ,GAAiB,EACjBL,EAASrtP,EAAKkjP,EAAQ5uP,OAAOjP,GAAI,GAI7C,KAAOqoQ,GAAiB,EAAGA,GAAiB,EACxCL,EAASrtP,EAAKA,EAAI4tP,eAAgB,GAClC5tP,EAAI4tP,gBAAoBvtP,EAAIgzO,kBAAwB,EAAJ,EAGpDlrP,EAAwB,GAAjBulQ,GAOX,SAASG,EAAY7tP,EAAKla,EAAKgS,GAC3B,IAAIg2P,EAAM9tP,EAAIktP,OAAOltP,EAAI+tP,OAAOD,IAEhC,MAAOh2P,EAAI,EAAG,CACV,IAAIF,EAAI1Q,KAAKoL,IAAIwF,EAAG,GAAW,EAANg2P,IACzBh2P,GAAKF,EACLzP,EAAO2P,EAAIw0P,GAGXtsP,EAAIktP,OAAOltP,EAAI+tP,OAAOlB,IAAIiB,GAAO,IAAQhoQ,GAAOgS,GAAQ,GAAW,EAANg2P,GAAWl2P,EACxEk2P,GAAOl2P,EAEXoI,EAAIktP,OAAOltP,EAAI+tP,OAAOD,IAAMA,EAGhC,SAASE,EAAW5/P,EAAO6/P,GACvB7/P,IAAU,EACV,IAAK,IAAI/I,EAAI,EAAGA,EAAI,EAAGA,IACnB+I,IAAU,EACV6/P,IAAQ,EAE0B,IAAZ,OAAfA,EAAM7/P,MACT6/P,GAAO5B,GAEf,OAAO4B,EAiBX,SAASC,EAAgB7tP,EAAK8tP,GAC1B,IACInW,EACArkO,EAAI1wB,EAFJ+c,EAAMK,EAAIW,eA4Bd,GAxBAg3O,EAAUh4O,EAAIg4O,QACdh4O,EAAIktP,OAAOltP,EAAI+tP,OAAOD,IAAM,EAC5BpoQ,EAAOikB,KAAK3J,EAAIktP,OAAOltP,EAAI+tP,OAAOlB,IAAK,EAAG7sP,EAAIwjP,aAAc,GACxDnjP,EAAI8R,eAAiB,KACrB07O,EAAY7tP,EAAK,KAAO,IAExB6tP,EAAY7tP,EAAK,KAAO,IAC5B6tP,EAAY7tP,EAAMK,EAAW,QAAG,GAChCwtP,EAAY7tP,EAAK,EAAO,GACxB6tP,EAAY7tP,EAAOK,EAAI+tP,iBAAuB,EAAJ,EAAQ,GAClDP,EAAY7tP,EAAMA,EAAiB,cAAG,GACtC6tP,EAAY7tP,EAAMA,EAAoB,iBAAG,GACzC6tP,EAAY7tP,EAAMA,EAAW,QAAG,GAChC6tP,EAAY7tP,EAAMK,EAAa,UAAG,GAClCwtP,EAAY7tP,EAAMK,EAAIlN,KAAKtM,UAAY,GACvCgnQ,EAAY7tP,EAAMA,EAAY,SAAG,GACjC6tP,EAAY7tP,EAAMK,EAAa,UAAG,GAClCwtP,EAAY7tP,EAAMK,EAAY,SAAG,GACjCwtP,EAAY7tP,EAAMK,EAAY,SAAG,GAC7BA,EAAI+tP,kBACJP,EAAY7tP,EAAK,EAAG,IAIL,GAAfK,EAAI6iP,QAAc,CAUlB,IARA/6P,EAAO6vP,EAAQ1kO,iBAAmB,GAClCu6O,EAAY7tP,EAAMg4O,EAAuB,gBAAG,GAEpB,GAApBh4O,EAAI0D,aACJmqP,EAAY7tP,EAAKg4O,EAAQzkO,aAAc,GAEvCs6O,EAAY7tP,EAAKg4O,EAAQzkO,aAAc,GAEtCtwB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAAM,CACtC,IAAIorQ,EACJ,IAAKA,EAAO,EAAGA,EAAO,EAAGA,IACrBR,EAAY7tP,EAAKg4O,EAAQtkO,MAAMzwB,GAAIorQ,GAAO,GAIlD,IAAK16O,EAAK,EAAGA,EAAK,EAAGA,IACjB,IAAK1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAAM,CACtC,IAAImhQ,EAAKpM,EAAQ3kO,GAAGM,GAAI1wB,GACxB4qQ,EAAY7tP,EAAKokP,EAAG/K,eAAiB+K,EAAGC,aAAc,IACtDwJ,EAAY7tP,EAAKokP,EAAGkK,WAAa,EAAG,GACpCT,EAAY7tP,EAAKokP,EAAGp0P,YAAa,GACjC69P,EAAY7tP,EAAKokP,EAAGmK,kBAAmB,GAEnCnK,EAAGvL,YAAcl6O,EAAQ2I,WACzBumP,EAAY7tP,EAAK,EAAG,GAEpB6tP,EAAY7tP,EAAKokP,EAAGvL,WAAY,GAChCgV,EAAY7tP,EAAKokP,EAAG9H,iBAAkB,GAEZ,IAAtB8H,EAAGoK,aAAa,KAChBpK,EAAGoK,aAAa,GAAK,IACzBX,EAAY7tP,EAAKokP,EAAGoK,aAAa,GAAI,GACX,IAAtBpK,EAAGoK,aAAa,KAChBpK,EAAGoK,aAAa,GAAK,IACzBX,EAAY7tP,EAAKokP,EAAGoK,aAAa,GAAI,GAErCX,EAAY7tP,EAAKokP,EAAGqK,cAAc,GAAI,GACtCZ,EAAY7tP,EAAKokP,EAAGqK,cAAc,GAAI,GACtCZ,EAAY7tP,EAAKokP,EAAGqK,cAAc,GAAI,KAEtCZ,EAAY7tP,EAAK,EAAG,GAEM,IAAtBokP,EAAGoK,aAAa,KAChBpK,EAAGoK,aAAa,GAAK,IACzBX,EAAY7tP,EAAKokP,EAAGoK,aAAa,GAAI,GACX,IAAtBpK,EAAGoK,aAAa,KAChBpK,EAAGoK,aAAa,GAAK,IACzBX,EAAY7tP,EAAKokP,EAAGoK,aAAa,GAAI,GACX,IAAtBpK,EAAGoK,aAAa,KAChBpK,EAAGoK,aAAa,GAAK,IACzBX,EAAY7tP,EAAKokP,EAAGoK,aAAa,GAAI,GAErCrmQ,EAAO,GAAKi8P,EAAGsK,eAAiBtK,EAAGsK,cAAgB,IACnDvmQ,EAAO,GAAKi8P,EAAGuK,eAAiBvK,EAAGuK,cAAgB,GACnDd,EAAY7tP,EAAKokP,EAAGsK,cAAe,GACnCb,EAAY7tP,EAAKokP,EAAGuK,cAAe,IAEvCd,EAAY7tP,EAAKokP,EAAGwK,QAAS,GAC7Bf,EAAY7tP,EAAKokP,EAAGyK,eAAgB,GACpChB,EAAY7tP,EAAKokP,EAAG0K,mBAAoB,SAUhD,IALA3mQ,EAAO6vP,EAAQ1kO,iBAAmB,GAClCu6O,EAAY7tP,EAAMg4O,EAAuB,gBAAG,GAC5C6V,EAAY7tP,EAAKg4O,EAAQzkO,aAAcvT,EAAI0D,cAE3CiQ,EAAK,EACA1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAAM,CAClCmhQ,EAAKpM,EAAQ3kO,GAAGM,GAAI1wB,GACxB4qQ,EAAY7tP,EAAKokP,EAAG/K,eAAiB+K,EAAGC,aAAc,IACtDwJ,EAAY7tP,EAAKokP,EAAGkK,WAAa,EAAG,GACpCT,EAAY7tP,EAAKokP,EAAGp0P,YAAa,GACjC69P,EAAY7tP,EAAKokP,EAAGmK,kBAAmB,GAEnCnK,EAAGvL,YAAcl6O,EAAQ2I,WACzBumP,EAAY7tP,EAAK,EAAG,GAEpB6tP,EAAY7tP,EAAKokP,EAAGvL,WAAY,GAChCgV,EAAY7tP,EAAKokP,EAAG9H,iBAAkB,GAEZ,IAAtB8H,EAAGoK,aAAa,KAChBpK,EAAGoK,aAAa,GAAK,IACzBX,EAAY7tP,EAAKokP,EAAGoK,aAAa,GAAI,GACX,IAAtBpK,EAAGoK,aAAa,KAChBpK,EAAGoK,aAAa,GAAK,IACzBX,EAAY7tP,EAAKokP,EAAGoK,aAAa,GAAI,GAErCX,EAAY7tP,EAAKokP,EAAGqK,cAAc,GAAI,GACtCZ,EAAY7tP,EAAKokP,EAAGqK,cAAc,GAAI,GACtCZ,EAAY7tP,EAAKokP,EAAGqK,cAAc,GAAI,KAEtCZ,EAAY7tP,EAAK,EAAG,GAEM,IAAtBokP,EAAGoK,aAAa,KAChBpK,EAAGoK,aAAa,GAAK,IACzBX,EAAY7tP,EAAKokP,EAAGoK,aAAa,GAAI,GACX,IAAtBpK,EAAGoK,aAAa,KAChBpK,EAAGoK,aAAa,GAAK,IACzBX,EAAY7tP,EAAKokP,EAAGoK,aAAa,GAAI,GACX,IAAtBpK,EAAGoK,aAAa,KAChBpK,EAAGoK,aAAa,GAAK,IACzBX,EAAY7tP,EAAKokP,EAAGoK,aAAa,GAAI,GAErCrmQ,EAAO,GAAKi8P,EAAGsK,eAAiBtK,EAAGsK,cAAgB,IACnDvmQ,EAAO,GAAKi8P,EAAGuK,eAAiBvK,EAAGuK,cAAgB,GACnDd,EAAY7tP,EAAKokP,EAAGsK,cAAe,GACnCb,EAAY7tP,EAAKokP,EAAGuK,cAAe,IAGvCd,EAAY7tP,EAAKokP,EAAGyK,eAAgB,GACpChB,EAAY7tP,EAAKokP,EAAG0K,mBAAoB,GAI5CzuP,EAAI+tP,kBAEJW,gBAAgB/uP,EAAKA,EAAIktP,OAAOltP,EAAI+tP,OAAOlB,KAI3C,IAAImC,EAAMhvP,EAAI+tP,MACd5lQ,EAAO6X,EAAIktP,OAAO8B,GAAKlB,KAA0B,EAAnB9tP,EAAIwjP,cAElCxjP,EAAI+tP,MAASiB,EAAM,EAAM5X,EAAkBgW,eAAiB,EAC5DptP,EAAIktP,OAAOltP,EAAI+tP,OAAOR,aAAevtP,EAAIktP,OAAO8B,GAAKzB,aAC/CY,EAEFnuP,EAAI+tP,OAAS/tP,EAAImtP,OAEjBpnQ,EAAO8V,IACFxV,QAAQ,qDAMzB,SAAS4oQ,EAAqBjvP,EAAKokP,GAE/B,IACI/+P,EADAupB,EAAIy3O,EAAOC,GAAGlC,EAAG0K,mBAAqB,IACnC1W,EAAO,EAEV8W,EAAK9K,EAAGkK,WACR9P,EAAK4F,EAAGkK,WAGZ,IAFAnmQ,EAAOi8P,EAAG0K,mBAAqB,GAE1BzpQ,GAAK++P,EAAG+K,OAAS/K,EAAGkK,YAAc,EAAGjpQ,EAAI,IAAKA,EAAG,CAClD,IACWmnB,EADP4iP,EAAW,EACXpkP,EAAI,EAERwB,EAAI43O,EAAGiL,OAAOH,EAAK,GACV,GAAL1iP,IACAxB,GAAK,EACDo5O,EAAG5F,GAAGA,EAAK,GAAK,GAChB4Q,IACJjnQ,EAAOqkB,GAAK,IAGhBA,EAAI43O,EAAGiL,OAAOH,EAAK,GACV,GAAL1iP,IACAxB,GAAK,EACLokP,GAAY,EACRhL,EAAG5F,GAAGA,EAAK,GAAK,GAChB4Q,IACJjnQ,EAAOqkB,GAAK,IAGhBA,EAAI43O,EAAGiL,OAAOH,EAAK,GACV,GAAL1iP,IACAxB,GAAK,EACLokP,GAAY,EACRhL,EAAG5F,GAAGA,EAAK,GAAK,GAChB4Q,IACJjnQ,EAAOqkB,GAAK,IAGhBA,EAAI43O,EAAGiL,OAAOH,EAAK,GACV,GAAL1iP,IACAxB,IACAokP,GAAY,EACRhL,EAAG5F,GAAGA,EAAK,GAAK,GAChB4Q,IACJjnQ,EAAOqkB,GAAK,IAGhB0iP,GAAM,EACN1Q,GAAM,EACN6O,EAASrtP,EAAKovP,EAAWxgP,EAAEu3O,MAAMn7O,GAAI4D,EAAEw3O,KAAKp7O,IAC5CotO,GAAQxpO,EAAEw3O,KAAKp7O,GAEnB,OAAOotO,EAMX,SAASkX,EAAYtvP,EAAKuvP,EAAYtgQ,EAAO+D,EAAKoxP,GAC9C,IAAIx1O,EAAIy3O,EAAOC,GAAGiJ,GACdnX,EAAO,EAGX,GADAjwP,EAAOonQ,EAAa,IAChB,GAAKA,EACL,OAAOnX,EAEX,IAAK,IAAI/yP,EAAI4J,EAAO5J,EAAI2N,EAAK3N,GAAK,EAAG,CACjC,IAAImqQ,EAAQ,EACRC,EAAQ,EACRC,EAAU9gP,EAAEq3O,KACZA,EAAOr3O,EAAEq3O,KACT0J,EAAM,EACNC,EAAKxL,EAAGiL,OAAOhqQ,GACfwqQ,EAAKzL,EAAGiL,OAAOhqQ,EAAI,GAQvB,GANU,GAANuqQ,IACIxL,EAAG5F,GAAGn5P,GAAK,GACXsqQ,IACJH,KAGAD,EAAa,GAAI,CAEjB,GAAIK,EAAK,GAAI,CACT,IAAIE,EAAaF,EAAK,GACtBznQ,EAAO2nQ,GAAclhP,EAAEs3O,QACvByJ,GAAOG,GAAc,EACrBL,EAAQC,EACRE,EAAK,GAGT,GAAIC,EAAK,GAAI,CACT,IAAIE,EAAaF,EAAK,GACtB1nQ,EAAO4nQ,GAAcnhP,EAAEs3O,QACvByJ,IAAQD,EACRC,GAAOI,EACPN,GAASC,EACTG,EAAK,GAET5J,EAAO,GAGD,GAAN4J,IACAF,IAAQ,EACJvL,EAAG5F,GAAGn5P,EAAI,GAAK,GACfsqQ,IACJH,KAGJrnQ,GAAQynQ,EAAKC,GAAM,IAEnBD,EAAKA,EAAK3J,EAAO4J,EACjBJ,GAASD,EACTA,GAAS5gP,EAAEw3O,KAAKwJ,GAEhBznQ,EAAOqnQ,GAASlD,GAChBnkQ,EAAOsnQ,GAASnD,GAEhBe,EAASrtP,EAAK4O,EAAEu3O,MAAMyJ,GAAKJ,GAC3BnC,EAASrtP,EAAK2vP,EAAKF,GACnBrX,GAAQoX,EAAQC,EAEpB,OAAOrX,EAOX,SAAS4X,EAAqBhwP,EAAKokP,GAC/B,IAAI6L,EAAe,EAAIjwP,EAAIsS,cAActO,EAAE,GACvCisP,EAAe7L,EAAGkK,aAClB2B,EAAe7L,EAAGkK,YAGtB,IAAIlW,EAAOkX,EAAYtvP,EAAKokP,EAAGoK,aAAa,GAAI,EAAGyB,EAAc7L,GAGjE,OAFAhM,GAAQkX,EAAYtvP,EAAKokP,EAAGoK,aAAa,GAAIyB,EACzC7L,EAAGkK,WAAYlK,GACZhM,EAGX,SAAS8X,EAAoBlwP,EAAKokP,GAC9B,IAAI+L,EAAW/X,EACX6X,EAAcG,EAElBD,EAAY/L,EAAGkK,WACfnmQ,EAAO,GAAKgoQ,GAAaA,GAAa,KAEtC,IAAI9qQ,EAAI++P,EAAGsK,cAAgB,EAoB3B,OAnBAvmQ,EAAO,GAAK9C,GACZ8C,EAAO9C,EAAI2a,EAAIsS,cAAcvZ,EAAE7T,QAC/B+qQ,EAAejwP,EAAIsS,cAAcvZ,EAAE1T,GACnCA,GAAK++P,EAAGuK,cAAgB,EACxBxmQ,EAAO,GAAK9C,GACZ8C,EAAO9C,EAAI2a,EAAIsS,cAAcvZ,EAAE7T,QAC/BkrQ,EAAepwP,EAAIsS,cAAcvZ,EAAE1T,GAE/B4qQ,EAAeE,IACfF,EAAeE,GAEfC,EAAeD,IACfC,EAAeD,GAEnB/X,EAAOkX,EAAYtvP,EAAKokP,EAAGoK,aAAa,GAAI,EAAGyB,EAAc7L,GAC7DhM,GAAQkX,EAAYtvP,EAAKokP,EAAGoK,aAAa,GAAIyB,EACzCG,EAAchM,GAClBhM,GAAQkX,EAAYtvP,EAAKokP,EAAGoK,aAAa,GAAI4B,EAAcD,EACvD/L,GACGhM,EAGX,SAASiY,EAAchwP,GACnB,IAAIsT,EAAI1wB,EAAIqtB,EAAKggP,EAAWC,EAAW,EACnCvwP,EAAMK,EAAIW,eACVg3O,EAAUh4O,EAAIg4O,QAElB,GAAmB,GAAf33O,EAAI6iP,QAEJ,IAAKvvO,EAAK,EAAGA,EAAK,EAAGA,IACjB,IAAK1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAAM,CACtC,IAAImhQ,EAAKpM,EAAQ3kO,GAAGM,GAAI1wB,GACpButQ,EAAQrE,EAASsE,UAAUrM,EAAGmK,mBAC9BmC,EAAQvE,EAASwE,UAAUvM,EAAGmK,mBAElC,IADA+B,EAAY,EACPhgP,EAAM,EAAGA,EAAM8zO,EAAGwM,UAAWtgP,KACL,GAArB8zO,EAAGyM,SAASvgP,KAGhB+8O,EAASrtP,EAAKokP,EAAGyM,SAASvgP,GAAMkgP,GAChCF,GAAaE,GAEjB,KAAOlgP,EAAM8zO,EAAG0M,OAAQxgP,KACK,GAArB8zO,EAAGyM,SAASvgP,KAGhB+8O,EAASrtP,EAAKokP,EAAGyM,SAASvgP,GAAMogP,GAChCJ,GAAaI,GAEjBvoQ,EAAOmoQ,GAAalM,EAAGC,cAEnBD,EAAGvL,YAAcl6O,EAAQmI,WACzBwpP,GAAaN,EAAqBhwP,EAAKokP,GAEvCkM,GAAaJ,EAAoBlwP,EAAKokP,GAE1CkM,GAAarB,EAAqBjvP,EAAKokP,GAEvCj8P,EAAOmoQ,GAAalM,EAAG/K,eAAiB+K,EAAGC,cAC3CkM,GAAYD,OAQpB,IADA38O,EAAK,EACA1wB,EAAK,EAAGA,EAAK+c,EAAI0D,aAAczgB,IAAM,CAClCmhQ,EAAKpM,EAAQ3kO,GAAGM,GAAI1wB,GAAxB,IACIoC,EAAG0rQ,EAAeC,EAAa,EAMnC,GALA7oQ,EAAiC,MAA1Bi8P,EAAG6M,qBACVX,EAAY,EACZhgP,EAAM,EACNygP,EAAgB,EAEZ3M,EAAGvL,YAAcl6O,EAAQmI,WAAY,CACrC,KAAOiqP,EAAgB,EAAGA,IAAiB,CACvC,IAAIG,EAAO9M,EAAG6M,oBAAoBF,GAAiB,EAC/CI,EAAO/M,EAAG+M,KAAKJ,GACnB,IAAK1rQ,EAAI,EAAGA,EAAI6rQ,EAAM7rQ,IAAKirB,IACvB+8O,EAASrtP,EACL9Y,KAAK2B,IAAIu7P,EAAGyM,SAAe,EAANvgP,EAAU,GAAI,GAAI6gP,GAC3C9D,EAASrtP,EACL9Y,KAAK2B,IAAIu7P,EAAGyM,SAAe,EAANvgP,EAAU,GAAI,GAAI6gP,GAC3C9D,EAASrtP,EACL9Y,KAAK2B,IAAIu7P,EAAGyM,SAAe,EAANvgP,EAAU,GAAI,GAAI6gP,GAC3CH,GAAc,EAAIG,EAG1Bb,GAAaN,EAAqBhwP,EAAKokP,OACpC,CACH,KAAO2M,EAAgB,EAAGA,IAAiB,CACnCG,EAAO9M,EAAG6M,oBAAoBF,GAC9BI,EAAO/M,EAAG+M,KAAKJ,GACnB,IAAK1rQ,EAAI,EAAGA,EAAI6rQ,EAAM7rQ,IAAKirB,IACvB+8O,EAASrtP,EAAK9Y,KAAK2B,IAAIu7P,EAAGyM,SAASvgP,GAAM,GAAI6gP,GAC7CH,GAAcG,EAGtBb,GAAaJ,EAAoBlwP,EAAKokP,GAE1CkM,GAAarB,EAAqBjvP,EAAKokP,GAEvCj8P,EAAOmoQ,GAAalM,EAAG/K,gBACvBlxP,EAAO6oQ,GAAc5M,EAAGC,cACxBkM,GAAYS,EAAaV,EAKjC,OAAOC,EAKX,SAASa,IACLtqQ,KAAKuqQ,MAAQ,EAgBjB,SAASC,EAAkBjxP,EAAKkxP,GAC5B,IACIC,EAAWC,EACXtD,EACAuD,EAAUC,EAHV3xP,EAAMK,EAAIW,eA2Cd,OAvCA2wP,EAAY3xP,EAAImtP,MAEhBuE,EAAW1xP,EAAI+tP,MAAQ,GAEN,GAAb2D,IACAA,EAAWta,EAAkBgW,eAAiB,GAGlDoE,EAAYxxP,EAAIktP,OAAOwE,GAAUnE,aAAeT,EAChDyE,EAAmBF,MAAQG,EAEvBA,GAAa,IAGbC,EAAoB,EAAIC,EAAWC,EAC/BD,EAAWC,IACXF,EAAoB,EAAIC,EAAWC,EAC7Bva,EAAkBgW,gBAC5BoE,GAAiC,EAApBC,EAAwBzxP,EAAIwjP,cAQ7C2K,EAAetiQ,EAAK03P,aAAaljP,GACjCmxP,GAAarD,EACboD,EAAmBF,OAASlD,EAEvBoD,EAAmBF,MAAQ,GAAM,EAClCE,EAAmBF,MAAQ,EAAKE,EAAmBF,MAAQ,EAE3DE,EAAmBF,MAASE,EAAmBF,MAAQ,EAC3DE,EAAmBF,OAAStE,EAAa,EAErCyE,EAAY,GACZzrQ,EAAO8V,IAAIxV,QAAQ,wCAEhBmrQ,EA/pBX1qQ,KAAKy8P,aAAe,SAAUljP,GAC1B,IACIuxP,EADA5xP,EAAMK,EAAIW,eAKV4wP,EADqB,GAArB5xP,EAAIm8O,cACOkK,EAAOwC,cAAcxoP,EAAI6iP,SAASljP,EAAIm8O,eAEtC97O,EAAI+yO,MACnBjrP,EAAO,GAAKypQ,GAAYA,GAAY,KAIpC,IAAIC,EAAQ,EAAwB,MAAnBxxP,EAAI6iP,QAAU,GAAa0O,EAAWvxP,EAAI8R,eAAiBnS,EAAI29O,QAChF,OAAO,EAAIkU,GAoJf/qQ,KAAKioQ,gBAAkB,SAAU/uP,EAAKktP,GAClC,IAAIe,EAAM,MAGVA,EAAMD,EAAuB,IAAZd,EAAO,GAAWe,GACnCA,EAAMD,EAAuB,IAAZd,EAAO,GAAWe,GACnC,IAAK,IAAI5oQ,EAAI,EAAGA,EAAI2a,EAAIwjP,aAAcn+P,IAClC4oQ,EAAMD,EAAuB,IAAZd,EAAO7nQ,GAAW4oQ,GAGvCf,EAAO,GAAK,KAAOe,GAAO,GAC1Bf,EAAO,GAAK,KAAa,IAANe,IAqfvBnnQ,KAAKgrQ,gBAAkB,SAAUzxP,GAC7B,IACI23O,EACAwZ,EAFAxxP,EAAMK,EAAIW,eAGV0wP,EAAW1xP,EAAI+tP,MAAQ,EAM3B,IAJiB,GAAb2D,IACAA,EAAWta,EAAkBgW,eAAiB,GAClDpV,EAAUh4O,EAAIg4O,WAETwZ,EAAYF,EAAkBjxP,EAAK,IAAI+wP,IAAiB,GAA7D,CAeA,GAbA3D,EAAqBptP,EAAKmxP,GAG1BrpQ,EAAO6X,EAAIktP,OAAOwE,GAAUnE,aAAezmQ,KAAKy8P,aAAaljP,IAAQysP,GAMrE9sP,EAAI4jP,SAAW,EACf5L,EAAQ1kO,gBAAkB,EAGtBtT,EAAI+xP,eAAgB,CACpB,IAAIC,EAAYzF,EAAG5nB,aAAa3kO,EAAIiyP,QACpC9pQ,EAAO+pQ,IAAIF,EAAWxxB,aAAaqC,0BACnC7iO,EAAIgyP,UAAiD,EAArC9qQ,KAAKkP,MAAkB,GAAZ47P,EAAmB,IAK9ChyP,EAAImyP,iBACJnyP,EAAIoyP,iBAC0D,EADvClrQ,KAAK67O,KACmB,GADd77O,KACpBC,MAAM6Y,EAAIqyP,WAAa,OAAkB,IAGlDryP,EAAIoyP,iBAAmB,IAEnBE,GAAGjyP,EAAIuxO,MAAO,IAAQ0gB,GAAGjyP,EAAIuxO,MAAO,IACpC5xO,EAAIuyP,YAAerrQ,KACdkP,MAAO,MAAU4J,EAAIqyP,WAAc,KAAS,IAcrDryP,EAAIuyP,aAAe,KAI/BzrQ,KAAK0rQ,eAAiB,SAAUnyP,EAAKva,EAAKsS,GACtC,IACI/S,EADA2a,EAAMK,EAAIW,eAGd,MAAO5I,KAAM,EAGT,IAFAo1P,EAAkBxtP,EAAKla,EAAK,GAEvBT,EAAI,EAAGA,EAAI+xP,EAAkBgW,iBAAkB/nQ,EAChD2a,EAAIktP,OAAO7nQ,GAAGkoQ,cAAgB,GAW1CzmQ,KAAK43P,iBAAmB,SAAUr+O,GAC9B,IACI23O,EADAh4O,EAAMK,EAAIW,eAEdg3O,EAAUh4O,EAAIg4O,QAEd,IAAImW,EAAernQ,KAAKy8P,aAAaljP,GACrCotP,EAAqBptP,EAAK23O,EAAQxkO,eAElC06O,EAAgB7tP,EAAK8tP,GACrB,IAAI/V,EAAO,EAAIp4O,EAAIwjP,aA4CnB,GA3CApL,GAAQiY,EAAchwP,GACtBotP,EAAqBptP,EAAK23O,EAAQvkO,gBAClC2kO,GAAQJ,EAAQvkO,eAEhBukO,EAAQ1kO,kBAAoB66O,EAAe/V,GAAQ,EAM/CkZ,EAAkBjxP,EAAK,IAAI+wP,IAAiBpxP,EAAI4jP,UAChD79P,EAAO8V,IAAIxV,QAAQ,wDAOQ,EAA1B2xP,EAAQ1kO,iBAAwBtT,EAAI4jP,WACrC79P,EAAO8V,IAAIpV,OAAO,iSASd,EAAIuxP,EAAQ1kO,gBAAiBtT,EAAI4jP,SACjC5L,EAAQvkO,eAAgBukO,EAAQxkO,cAChC,EAAIxT,EAAIwjP,aAAcpL,EAAOJ,EAAQvkO,eAAiB,EACpDzT,EAAIwjP,aAAcpL,EAAMA,EAAO,EAAG+V,GAExCpoQ,EAAO8V,IAAIxV,QAAQ,2DACnBN,EAAO8V,IAAIxV,QAAQ,8EACnBN,EAAO8V,IAAIxV,QAAQ,oCACnBN,EAAO8V,IAAIxV,QAAQ,sCAEnB2Z,EAAI4jP,SAAqC,EAA1B5L,EAAQ1kO,iBAG3BnrB,EAAO2kQ,EAAS,GAAK,GAEjBA,EAAS,IAAY,CAKrB,IAAIznQ,EACJ,IAAKA,EAAI,EAAGA,EAAI+xP,EAAkBgW,iBAAkB/nQ,EAChD2a,EAAIktP,OAAO7nQ,GAAGkoQ,cAAgBT,EAClCA,EAAS,EAGb,OAAO,GAYXhmQ,KAAK63P,YAAc,SAAU3+O,EAAKc,EAAQ2xP,EAAWp0P,EAAMq0P,GACvD,IAAIC,EAAU5F,EAAa,EAC3B,GAAI4F,GAAW,EACX,OAAO,EACX,GAAY,GAARt0P,GAAas0P,EAAUt0P,EAEvB,OAAQ,EAMZ,GAJAtY,EAAO0+O,UAAUooB,EAAK,EAAG/rP,EAAQ2xP,EAAWE,GAC5C5F,GAAc,EACdC,EAAY,EAEG,GAAX0F,EAAc,CACd,IAAIzE,EAAMvpQ,EAAQ,GAalB,GAZAupQ,EAAI,GAAKjuP,EAAI4yP,UACbtX,EAAIuX,eAAe5E,EAAKntP,EAAQ2xP,EAAWE,GAC3C3yP,EAAI4yP,UAAY3E,EAAI,GAMhB0E,EAAU,IACV3yP,EAAI8yP,eAAet0P,eAAiBm0P,GAGpC3yP,EAAI+yP,kBAAmB,CACvB,IAGI1tQ,EAHA2tQ,EAAUhuQ,EAAY,CAAC,EAAG,OAC1BiuQ,EAASN,EACTO,GAAe,EAInB,MAAsB,GAAfA,EAwBH,GAtBAA,EAAc1G,EAAI2G,sBAAsBnzP,EAAIozP,IAAKtyP,EAC7C2xP,EAAWQ,EAAQD,EAAQ,GAAIA,EAAQ,IAY3CC,EAAS,GAEW,GAAhBC,IAKAA,EAAc,GAEdA,EAAc,EAAG,CASjB,GAFA/qQ,EAAO+qQ,GAAe,MAElBlzP,EAAImyP,eAAgB,CACpB,IAAK9sQ,EAAI,EAAGA,EAAI6tQ,EAAa7tQ,IACrB2tQ,EAAQ,GAAG3tQ,GAAK2a,EAAIqyP,WACpBryP,EAAIqyP,WAAaW,EAAQ,GAAG3tQ,IACtB2tQ,EAAQ,GAAG3tQ,GAAK2a,EAAIqyP,aAC1BryP,EAAIqyP,YAAcW,EAAQ,GAAG3tQ,IAErC,GAAI2a,EAAI0D,aAAe,EACnB,IAAKre,EAAI,EAAGA,EAAI6tQ,EAAa7tQ,IACrB2tQ,EAAQ,GAAG3tQ,GAAK2a,EAAIqyP,WACpBryP,EAAIqyP,WAAaW,EAAQ,GAAG3tQ,IACtB2tQ,EAAQ,GAAG3tQ,GAAK2a,EAAIqyP,aAC1BryP,EAAIqyP,YAAcW,EAAQ,GAAG3tQ,IAI7C,GAAI2a,EAAI+xP,gBACAxF,EAAG9oB,eAAezjO,EAAIiyP,OAAQe,EAAQ,GAAI,EACtCA,EAAQ,GAAI,EAAGE,EACflzP,EAAI0D,eAAiB88N,aAAagE,oBACtC,OAAQ,IAWhC,OAAOmuB,GAGX7rQ,KAAKusQ,kBAAoB,SAAUrzP,GAC/B6sP,EAAMxoQ,EAASmvP,KAAK8Z,mBAEpBttP,EAAI+tP,MAAQ/tP,EAAImtP,MAAQ,EACxBntP,EAAIktP,OAAOltP,EAAI+tP,OAAOR,aAAe,EACrCR,GAAc,EACdC,EAAY,EACZF,EAAS,GAp+BjBV,EAAUkG,GAAK,SAAU3sQ,EAAGyb,GACxB,OAAQla,KAAK+jB,IAAItlB,GAAKuB,KAAK+jB,IAAI7J,GAAOla,KAAK+jB,IAAI,EAAM,IACvC,KADgD/jB,KACzD+jB,IAAItlB,GACFuB,KAAK+jB,IAAI,EAAM,IAAuB,KAAd/jB,KAAK+jB,IAAI7J,IAG5CgrP,EAAU8F,IAAM,SAAUvsQ,EAAGyb,GACzB,OAAQgrP,EAAUkG,GAAG3sQ,EAAGyb,IAq+B5Bnd,EAAOJ,QAAUuoQ,G,qBCjgCjB,IAAIzsQ,EAAW,GAAGA,SAElBsE,EAAOJ,QAAU,SAAUwF,GACzB,OAAO1J,EAASC,KAAKyJ,GAAI/I,MAAM,GAAI,K,uBCHrC,EAAQ,QAYR,IAXA,IAAI+U,EAAS,EAAQ,QACjB4vO,EAAO,EAAQ,QACfC,EAAY,EAAQ,QACpBouB,EAAgB,EAAQ,OAAR,CAAkB,eAElCC,EAAe,wbAIUv+P,MAAM,KAE1B3P,EAAI,EAAGA,EAAIkuQ,EAAaruQ,OAAQG,IAAK,CAC5C,IAAIugP,EAAO2tB,EAAaluQ,GACpBmuQ,EAAan+P,EAAOuwO,GACpBnqO,EAAQ+3P,GAAcA,EAAW9zQ,UACjC+b,IAAUA,EAAM63P,IAAgBruB,EAAKxpO,EAAO63P,EAAe1tB,GAC/DV,EAAUU,GAAQV,EAAU7kP,Q,oCCT9B,IAJA,IAAIgD,EAAU,EAAQ,QAAmBA,QAErCowQ,EAAU,GAELpuQ,EAAI,EAAGA,EAAI,IAAKA,IAAOouQ,EAAQnuQ,KAAK,GAE7C,qCACG0P,MAAM,IAAIxU,SAAQ,SAAUyC,GAAMwwQ,EAAQxwQ,EAAGf,WAAW,IAAM,KAGjE+B,EAAOJ,QAAU,SAAgBuE,EAAOG,GACtC,IAAItF,EAAInC,EAAMsH,EAAMtH,IAAK+H,EAAMT,EAAMsG,OAErC,GAAkC,KAA9BtG,EAAMvH,IAAIqB,WAAWpB,GAAwB,OAAO,EAIxD,GAFAA,IAEIA,EAAM+H,EAAK,CAGb,GAFA5F,EAAKmF,EAAMvH,IAAIqB,WAAWpB,GAEtBmC,EAAK,KAAuB,IAAhBwwQ,EAAQxwQ,GAGtB,OAFKsF,IAAUH,EAAMuG,SAAWvG,EAAMvH,IAAIC,IAC1CsH,EAAMtH,KAAO,GACN,EAGT,GAAW,KAAPmC,EAAa,CACVsF,GACHH,EAAM9C,KAAK,YAAa,KAAM,GAGhCxE,IAEA,MAAOA,EAAM+H,EAAK,CAEhB,GADA5F,EAAKmF,EAAMvH,IAAIqB,WAAWpB,IACrBuC,EAAQJ,GAAO,MACpBnC,IAIF,OADAsH,EAAMtH,IAAMA,GACL,GAMX,OAFKyH,IAAUH,EAAMuG,SAAW,MAChCvG,EAAMtH,OACC,I,uBCjDT,IAAI4yQ,EAAY,EAAQ,QACpBC,EAAe,EAAQ,QACvBC,EAAQ,EAAQ,QAChB52P,EAAU,EAAQ,QAClB1T,EAAQ,EAAQ,QAEhBuqQ,EAAY,EAAQ,QACpBrhQ,EAAa,EAAQ,QAuCzB,SAASshQ,EAAOjhQ,EAAO06O,GAEnBzmP,KAAK2L,MAAQ,IAAImhQ,EAAM/gQ,GAEvB/L,KAAKymP,SAAWA,EAGpB,IAAIwmB,EAAYF,EAAUE,UAM1B,SAASC,EAAoBxnQ,EAAQynQ,GACjCntQ,KAAK0F,OAASA,EAEd1F,KAAKmtQ,WAAaA,EAUtBH,EAAOp0Q,UAAUw0Q,OAAS,SAAS3gQ,EAAM4gQ,GACrC,GAAIrtQ,KAAKstQ,UAAU7gQ,OAASA,EACxB,MAAM,IAAIf,EACN,aAAee,EAAO,WAAazM,KAAKstQ,UAAU7gQ,KAAO,IACzDzM,KAAK2L,MAAO3L,KAAKstQ,UAAU1hQ,WAGnB,IAAZyhQ,GACArtQ,KAAKqtQ,WAQbL,EAAOp0Q,UAAUy0Q,QAAU,WACvBrtQ,KAAKhG,IAAMgG,KAAKstQ,UAAU1hQ,SAC1B5L,KAAKstQ,UAAYttQ,KAAK2L,MAAM4hQ,IAAIvtQ,KAAKhG,IAAKgG,KAAKqM,OAQnD2gQ,EAAOp0Q,UAAU8K,MAAQ,WAErB1D,KAAKqM,KAAO,OACZrM,KAAKhG,IAAM,EACXgG,KAAKstQ,UAAYttQ,KAAK2L,MAAM4hQ,IAAIvtQ,KAAKhG,IAAKgG,KAAKqM,MAC/C,IAAI3I,EAAQ1D,KAAKwtQ,aACjB,OAAO9pQ,GAMXspQ,EAAOp0Q,UAAU40Q,WAAa,WAE1B,IAAIhnB,EAAaxmP,KAAKytQ,iBAAgB,GAGtC,OADAztQ,KAAKotQ,OAAO,OAAO,GACZ5mB,GAGX,IAAIknB,EAAkB,CAAC,IAAK,QAAS,UAAW,IAAK,OAAQ,QAc7DV,EAAOp0Q,UAAU60Q,gBAAkB,SAASE,EAAcC,GACtD,IAAIC,EAAO,GAGX,MAAO,EAAM,CACT,IAAIN,EAAMvtQ,KAAKstQ,UACXtzQ,EAAMgG,KAAKhG,IACf,IAA2C,IAAvC0zQ,EAAgBhyQ,QAAQ6xQ,EAAI9gQ,MAC5B,MAEJ,GAAImhQ,GAAgBL,EAAI9gQ,OAASmhQ,EAC7B,MAEJ,IAAIE,EAAO9tQ,KAAK+tQ,YAChB,IAAKD,EAAM,CACP,IAAK9tQ,KAAKymP,SAASunB,cAAgC,OAAhBT,EAAI9gQ,KAAK,GAAa,CACrD,IAAIwhQ,EAAYjuQ,KAAKkuQ,uBACrBL,EAAKrvQ,KAAKyvQ,GAEVj0Q,EAAMuzQ,EAAI3hQ,SACV,SAGJ,MAEJ,GAAI+hQ,GAA8B,UAAdG,EAAKpnQ,KAAkB,CAEvC1G,KAAKhG,IAAMA,EACXgG,KAAKstQ,UAAYC,EACjB,MAEJM,EAAKrvQ,KAAKsvQ,GAEd,OAAO9tQ,KAAKmuQ,iBAAiBN,IAYjCb,EAAOp0Q,UAAUu1Q,iBAAmB,SAASN,GAIzC,IAHA,IACIO,EADAC,GAAa,EAGR9vQ,EAAI,EAAGA,EAAIsvQ,EAAKzvQ,OAAQG,IAAK,CAClC,IAAI4M,EAAO0iQ,EAAKtvQ,GAChB,GAAkB,UAAd4M,EAAKzE,KAAkB,CACvB,IAAmB,IAAf2nQ,EACA,MAAM,IAAI3iQ,EAAW,oCACjB1L,KAAK2L,OAAQ,GAErB0iQ,EAAY9vQ,EACZ6vQ,EAAWjjQ,EAAK7D,MAAMgnQ,aAI9B,IAAmB,IAAfD,EAAkB,CAClB,IAAIE,EACAC,EAEAC,EAAYZ,EAAKr0Q,MAAM,EAAG60Q,GAC1BK,EAAYb,EAAKr0Q,MAAM60Q,EAAY,GAGnCE,EADqB,IAArBE,EAAUrwQ,QAAsC,aAAtBqwQ,EAAU,GAAG/nQ,KAC3B+nQ,EAAU,GAEV,IAAIxB,EAAU,WAAYwB,EAAWzuQ,KAAKqM,MAItDmiQ,EADqB,IAArBE,EAAUtwQ,QAAsC,aAAtBswQ,EAAU,GAAGhoQ,KAC3BgoQ,EAAU,GAEV,IAAIzB,EAAU,WAAYyB,EAAW1uQ,KAAKqM,MAG1D,IAAI/E,EAAQtH,KAAK2uQ,aACbP,EAAU,CAACG,EAAWC,GAAY,MACtC,MAAO,CAAC,IAAIvB,EAAU3lQ,EAAMZ,KAAMY,EAAOtH,KAAKqM,OAE9C,OAAOwhQ,GAKf,IAAIe,EAAoB,EAKxB5B,EAAOp0Q,UAAUi2Q,mBAAqB,SAAS3zQ,GAC3C,IAAIib,EAASnW,KAAKstQ,UAAU7gQ,KACxBqiQ,EAAS9uQ,KAAKhG,IAClBgG,KAAKqtQ,UACL,IAAI9gQ,EAAQvM,KAAK+uQ,aAEjB,GAAKxiQ,EAUE,IAAIA,EAAM4gQ,WAAY,CAGzB,IAAI6B,EAAiBpC,EAAUrgQ,EAAM7G,QAAQupQ,WAC7C,GAAID,EAAiBJ,EACjB,OAAO5uQ,KAAKkvQ,cAAc3iQ,GAE1B,MAAM,IAAIb,EACN,iBAAmBa,EAAM7G,OAAzB,0BACYxK,EACZ8E,KAAK2L,MAAOmjQ,EAAS,GAG7B,OAAOviQ,EAAM7G,OAtBb,GAAK1F,KAAKymP,SAASunB,cAA2C,OAA3BhuQ,KAAKstQ,UAAU7gQ,KAAK,GAGnD,MAAM,IAAIf,EACN,yBAA2ByK,EAAS,IACpCnW,KAAK2L,MACLmjQ,EAAS,GALb,OAAO9uQ,KAAKkuQ,wBA6BxBlB,EAAOp0Q,UAAUs1Q,qBAAuB,WAIpC,IAHA,IAAIzhQ,EAAOzM,KAAKstQ,UAAU7gQ,KACtB0iQ,EAAe,GAEV5wQ,EAAI,EAAGA,EAAIkO,EAAKrO,OAAQG,IAC7B4wQ,EAAa3wQ,KAAK,IAAIyuQ,EAAU,UAAWxgQ,EAAKlO,GAAI,SAGxD,IAAI6wQ,EAAW,IAAInC,EACf,OACA,CACIY,KAAMsB,EACNzoQ,KAAM,QAEV1G,KAAKqM,MAELgjQ,EAAY,IAAIpC,EAChB,QACA,CACIrP,MAAO59P,KAAKymP,SAAS6oB,WACrBhoQ,MAAO,CAAC8nQ,GACR1oQ,KAAM,SAEV1G,KAAKqM,MAGT,OADArM,KAAKqtQ,UACEgC,GAQXrC,EAAOp0Q,UAAUm1Q,UAAY,WAGzB,IASIwB,EACAtU,EAVAvsP,EAAO1O,KAAKwvQ,qBAGhB,GAAkB,SAAdxvQ,KAAKqM,KACL,OAAOqC,EAOX,MAAO,EAAM,CAET,IAAI6+P,EAAMvtQ,KAAKstQ,UAEf,GAAiB,aAAbC,EAAI9gQ,MAAoC,eAAb8gQ,EAAI9gQ,KAAuB,CAEtD,IAAKiC,GAAsB,OAAdA,EAAKhI,KACd,MAAM,IAAIgF,EACN,6CACA1L,KAAK2L,MAAO3L,KAAKhG,KAErB,IAAIy1Q,EAAsB,aAAblC,EAAI9gQ,KACjBiC,EAAKpH,MAAMmoQ,OAASA,EACpB/gQ,EAAKpH,MAAMooQ,oBAAqB,EAEpC1vQ,KAAKqtQ,eACF,GAAiB,MAAbE,EAAI9gQ,KAAc,CAEzB,GAAI8iQ,EACA,MAAM,IAAI7jQ,EACN,qBAAsB1L,KAAK2L,MAAO3L,KAAKhG,KAE/Cu1Q,EAAcvvQ,KAAK6uQ,mBAAmB,oBACnC,GAAiB,MAAbtB,EAAI9gQ,KAAc,CAEzB,GAAIwuP,EACA,MAAM,IAAIvvP,EACN,mBAAoB1L,KAAK2L,MAAO3L,KAAKhG,KAE7CihQ,EAAYj7P,KAAK6uQ,mBAAmB,iBACjC,IAAiB,MAAbtB,EAAI9gQ,KAiBX,MAfA,IAAIkjQ,EAAQ,IAAI1C,EAAU,UAAW,UAAWjtQ,KAAKqM,MAGjDujQ,EAAS,CAACD,GACd3vQ,KAAKqtQ,UAEL,MAA+B,MAAxBrtQ,KAAKstQ,UAAU7gQ,KAElBmjQ,EAAOpxQ,KAAKmxQ,GACZ3vQ,KAAKqtQ,UAGTkC,EAAc,IAAItC,EAAU,WAAY2C,EAAQ5vQ,KAAKqM,OAO7D,OAAIkjQ,GAAetU,EAER,IAAIgS,EAAU,SAAU,CAC3Bv+P,KAAMA,EACN21P,IAAKkL,EACLjL,IAAKrJ,GACNj7P,KAAKqM,MAGDqC,GAKf,IAAImhQ,EAAY,CACZ,SAAU,eAAgB,iBAAkB,UAAW,eACvD,UAAW,UAAW,UAAW,SAAU,UAI3CC,EAAa,CACb,iBAAkB,cAAe,gBAAiB,uBActD9C,EAAOp0Q,UAAU42Q,mBAAqB,WAClC,IAAIrnQ,EAAQnI,KAAK+vQ,cAEjB,GAAa,MAAT5nQ,EAEA,OAAOnI,KAAKkvQ,gBAGhB,IACIrB,EADAmC,EAAO7nQ,EAAMzC,OAGjB,GAAa,WAATsqQ,EAAmB,CAGnB,IAAIC,EAAOjwQ,KAAKkvQ,cAAc/mQ,GAE9B0lQ,EAAO7tQ,KAAKytQ,iBAAgB,GAE5BztQ,KAAKotQ,OAAO,WAAW,GACvB,IAAI8C,EAAQlwQ,KAAKkvQ,gBACjB,OAAO,IAAIjC,EAAU,YAAa,CAC9BY,KAAMA,EACNoC,KAAMA,EAAK3oQ,MAAMA,MACjB4oQ,MAAOA,EAAM5oQ,MAAMA,OACpBtH,KAAKqM,MACL,GAAa,YAAT2jQ,EAAoB,CAE3B,IAAI/jQ,EAAQjM,KAAKkvQ,cAAc/mQ,GAC3BgoQ,EAAUlkQ,EAAM3E,MAAMpM,KAC1B,IAAK2xQ,EAAa5zQ,eAAek3Q,GAC7B,MAAM,IAAIzkQ,EACN,wBAA0BykQ,EAC1BnwQ,KAAK2L,MAAOM,EAAM3E,MAAM8oQ,SAIhC,IAAIlqQ,EAAM2mQ,EAAasD,GACnBhyQ,EAAO6B,KAAKqwQ,eAAe,WAAaF,EAAU,IAAKjqQ,GACvDoqQ,EAAU,CACVjkQ,KAAMrM,KAAKqM,KACX8jQ,QAASA,EACTI,OAAQvwQ,KACR2L,MAAO3L,KAAK2L,MACZ6kQ,UAAWryQ,EAAKg7P,OAEhBzzP,EAASQ,EAAIuqQ,QAAQH,EAASnyQ,GAClC6B,KAAKotQ,OAAO,SAAS,GACrB,IAAIlhQ,EAAMlM,KAAKkvQ,gBACf,GAAIhjQ,EAAI5E,MAAMpM,OAASi1Q,EACnB,MAAM,IAAIzkQ,EACN,qBAAuBykQ,EAAvB,sBACcjkQ,EAAI5E,MAAMpM,KAAO,IAC/B8E,KAAK2L,OAKb,OADAjG,EAAOkG,SAAWM,EAAIN,SACflG,EACJ,OAAIlD,EAAMkuQ,SAASb,EAAWG,IAEjCnC,EAAO7tQ,KAAKytQ,iBAAgB,GACrB,IAAIR,EAAU,SAAU,CAE3B11P,KAAM,QAAU/U,EAAM9G,QAAQm0Q,EAAWG,GAAQ,GACjD1oQ,MAAOumQ,GACR7tQ,KAAKqM,OACD7J,EAAMkuQ,SAASZ,EAAYE,IAElCnC,EAAO7tQ,KAAKytQ,iBAAgB,GACrB,IAAIR,EAAU,UAAW,CAG5BljQ,MAAOimQ,EAAKx2Q,MAAM,EAAGw2Q,EAAK5xQ,OAAS,GACnCkJ,MAAOumQ,GACR7tQ,KAAKqM,OAGDrM,KAAKkvQ,cAAc/mQ,IAYlC6kQ,EAAOp0Q,UAAUs2Q,cAAgB,SAASyB,GAKtC,GAJKA,IACDA,EAAY3wQ,KAAK+uQ,cAGjB4B,EAAW,CACX,GAAIA,EAAUxD,WAAY,CACtB,IAAI6C,EAAOW,EAAUjrQ,OACjBkrQ,EAAWhE,EAAUoD,GACzB,GAAkB,SAAdhwQ,KAAKqM,OAAoBukQ,EAASC,cAClC,MAAM,IAAInlQ,EACN,uBAAyBskQ,EAAO,iBAChChwQ,KAAK2L,MAAOglQ,EAAU/kQ,UAG9B,IAAIzN,EAAO6B,KAAKqwQ,eAAeL,EAAMY,GACjClrQ,EAAS1F,KAAK2uQ,aAAaqB,EAAM7xQ,EAAMA,EAAKg7P,OAChD,OAAO,IAAI8T,EAAUvnQ,EAAOgB,KAAMhB,EAAQ1F,KAAKqM,MAE/C,OAAOskQ,EAAUjrQ,OAGrB,OAAO,MAOfsnQ,EAAOp0Q,UAAU+1Q,aAAe,SAASzzQ,EAAMiD,EAAMqyQ,GACjD,IAAIF,EAAU,CACVlC,SAAUlzQ,EACVq1Q,OAAQvwQ,KACR2L,MAAO3L,KAAK2L,MACZ6kQ,UAAWA,GAEf,OAAO5D,EAAU1xQ,GAAMu1Q,QAAQH,EAASnyQ,IAU5C6uQ,EAAOp0Q,UAAUy3Q,eAAiB,SAASL,EAAMY,GAC7C,IAAIE,EAAYF,EAASG,QAAUH,EAASI,gBAC5C,GAAkB,IAAdF,EACA,MAAO,CAAC,CAAC9wQ,KAAKhG,MAOlB,IAJA,IAAIi3Q,EAAiBL,EAAS3B,WAC1BuB,EAAY,CAACxwQ,KAAKhG,KAClBmE,EAAO,GAEFI,EAAI,EAAGA,EAAIuyQ,EAAWvyQ,IAAK,CAChC,IACIorB,EA+BAunP,EAhCAC,EAAUP,EAASQ,UAAYR,EAASQ,SAAS7yQ,GAErD,GAAIA,EAAIqyQ,EAASI,iBAMb,GAJIrnP,EADAwnP,EACMnxQ,KAAKqxQ,kBAAkBF,GAAS,GAEhCnxQ,KAAKsxQ,sBAEV3nP,EAAK,CACNxrB,EAAKK,KAAK,MACVgyQ,EAAUhyQ,KAAKwB,KAAKhG,KACpB,eAQJ,GAJI2vB,EADAwnP,EACMnxQ,KAAKqxQ,kBAAkBF,GAEvBnxQ,KAAK+uQ,cAEVplP,EAAK,CACN,GAAK3pB,KAAKymP,SAASunB,cACY,OAA3BhuQ,KAAKstQ,UAAU7gQ,KAAK,GAKpB,MAAM,IAAIf,EACN,yBAA2BskQ,EAAO,IAClChwQ,KAAK2L,MAAO3L,KAAKhG,KANrB2vB,EAAM,IAAIujP,EACNltQ,KAAKkuQ,qBAAqBluQ,KAAKstQ,UAAU7gQ,OACzC,GAShB,GAAIkd,EAAIwjP,WAAY,CAChB,IAAIoE,EACA3E,EAAUjjP,EAAIjkB,QAAQupQ,WAC1B,KAAIsC,EAAgBN,GAGhB,MAAM,IAAIvlQ,EACN,iBAAmBie,EAAIjkB,OAAvB,qBACkBsqQ,EAAO,IACzBhwQ,KAAK2L,MAAO3L,KAAKhG,IAAM,GAL3Bk3Q,EAAUlxQ,KAAKkvQ,cAAcvlP,QAQjCunP,EAAUvnP,EAAIjkB,OAElBvH,EAAKK,KAAK0yQ,GACVV,EAAUhyQ,KAAKwB,KAAKhG,KAKxB,OAFAmE,EAAKK,KAAKgyQ,GAEHryQ,GAUX6uQ,EAAOp0Q,UAAUy4Q,kBAAoB,SAASG,EAAWC,GACrD,IAyCIC,EAzCAC,EAAY3xQ,KAAKqM,KAMrB,GAJkB,aAAdmlQ,IACAA,EAAYG,GAGE,UAAdH,GAAuC,SAAdA,EAAsB,CAG/C,IAAII,EAAY5xQ,KAAKstQ,UACrB,GAAImE,GAA+B,MAAnBG,EAAUnlQ,KAEtB,OAAO,KAGXzM,KAAKqM,KAAOmlQ,EACZxxQ,KAAKotQ,OAAOqE,EAAW,IAAM,KAC7B,IAEI9T,EAFA5wP,EAAQ/M,KAAKstQ,UAUjB,OATAttQ,KAAKqM,KAAOslQ,EAGRhU,EADc,UAAd6T,EACOzkQ,EAAMN,KAENM,EAAM4wP,KAEjB39P,KAAKqtQ,UACLrtQ,KAAKotQ,OAAOqE,EAAW,IAAM,KACtB,IAAIvE,EACP,IAAID,EAAUuE,EAAW7T,EAAMgU,IAC/B,GACD,GAAkB,SAAdH,EAAsB,CAG7B,IAAIK,EAAa7xQ,KAAK2L,MAAM4hQ,IAAIvtQ,KAAKhG,IAAK,cAC1CgG,KAAKhG,IAAM63Q,EAAWjmQ,SAe1B,OAVA5L,KAAKqM,KAAOmlQ,EACZxxQ,KAAKstQ,UAAYttQ,KAAK2L,MAAM4hQ,IAAIvtQ,KAAKhG,IAAKw3Q,GAGtCE,EADAD,EACMzxQ,KAAKsxQ,qBAELtxQ,KAAK+uQ,aAEf/uQ,KAAKqM,KAAOslQ,EACZ3xQ,KAAKstQ,UAAYttQ,KAAK2L,MAAM4hQ,IAAIvtQ,KAAKhG,IAAK23Q,GACnCD,GASX1E,EAAOp0Q,UAAUm2Q,WAAa,WAE1B,GAA4B,MAAxB/uQ,KAAKstQ,UAAU7gQ,KAAc,CAE7BzM,KAAKqtQ,UACL,IAAI7mB,EAAaxmP,KAAKytQ,iBAAgB,GAGtC,OADAztQ,KAAKotQ,OAAO,KACL,IAAIF,EACP,IAAID,EAAU,WAAYzmB,EAAYxmP,KAAKqM,OAC3C,GAGJ,OAAOrM,KAAK+vQ,eASpB/C,EAAOp0Q,UAAU04Q,mBAAqB,WAElC,GAA4B,MAAxBtxQ,KAAKstQ,UAAU7gQ,KAAc,CAE7BzM,KAAKqtQ,UACL,IAAI7mB,EAAaxmP,KAAKytQ,iBAAgB,EAAO,KAG7C,OADAztQ,KAAKotQ,OAAO,KACL,IAAIF,EACP,IAAID,EAAU,WAAYzmB,EAAYxmP,KAAKqM,OAC3C,GAGJ,OAAO,MAUf2gQ,EAAOp0Q,UAAUm3Q,YAAc,WAC3B,IAAI+B,EAAU9xQ,KAAKstQ,UAEnB,OAAIV,EAAUkF,EAAQrlQ,OAClBzM,KAAKqtQ,UAGE,IAAIH,EACP4E,EAAQrlQ,MACR,IACGyJ,EAAQlW,KAAKqM,MAAMylQ,EAAQrlQ,OAClCzM,KAAKqtQ,UAGE,IAAIH,EACP,IAAID,EAAU/2P,EAAQlW,KAAKqM,MAAMylQ,EAAQrlQ,MAAMF,MACjCulQ,EAAQrlQ,KAAMzM,KAAKqM,OACjC,IAEG,MAIf2gQ,EAAOp0Q,UAAUq0Q,UAAYA,EAE7B9vQ,EAAOJ,QAAUiwQ,G,qBChuBjB7vQ,EAAOJ,QAAQ,yN,kCCIf,IAAI0J,EAAQ,EAAQ,QAGpB,SAASsrQ,EAAUh4Q,EAAK2N,EAAIxB,GAC1BlG,KAAKjG,IAAMA,EACXiG,KAAKkG,IAAMA,EACXlG,KAAK5C,OAAS,GACd4C,KAAKuG,YAAa,EAClBvG,KAAK0H,GAAKA,EAIZqqQ,EAAUn5Q,UAAU6N,MAAQA,EAG5BtJ,EAAOJ,QAAUg1Q,G,uBCnBjB,IAAIxmQ,EAAY,EAAQ,QACpB2L,EAAU,EAAQ,QAGtB/Z,EAAOJ,QAAU,SAAUi1Q,GACzB,OAAO,SAAUC,EAAMj4Q,GACrB,IAGI6E,EAAGyb,EAHH4C,EAAI1iB,OAAO0c,EAAQ+6P,IACnB1zQ,EAAIgN,EAAUvR,GACdiY,EAAIiL,EAAE9e,OAEV,OAAIG,EAAI,GAAKA,GAAK0T,EAAU+/P,EAAY,QAAKlmQ,GAC7CjN,EAAIqe,EAAE9hB,WAAWmD,GACVM,EAAI,OAAUA,EAAI,OAAUN,EAAI,IAAM0T,IAAMqI,EAAI4C,EAAE9hB,WAAWmD,EAAI,IAAM,OAAU+b,EAAI,MACxF03P,EAAY90P,EAAE1P,OAAOjP,GAAKM,EAC1BmzQ,EAAY90P,EAAE1jB,MAAM+E,EAAGA,EAAI,GAA2B+b,EAAI,OAAzBzb,EAAI,OAAU,IAAqB,U,uBCd5E,IAAImK,EAAS,EAAQ,QAUjBlL,GATSkL,EAAO/J,OACN+J,EAAOnI,QACTmI,EAAOpI,MACFoI,EAAOlJ,WACbkJ,EAAOnJ,KACLmJ,EAAOpK,OACFoK,EAAOrK,YACVqK,EAAOzL,SACLyL,EAAOhL,WACRgL,EAAOlL,WAEnBF,GADcoL,EAAO9K,YACX8K,EAAOpL,SAIjB87O,GAHY1wO,EAAOvK,UACVuK,EAAO3H,OAED,EAAQ,UAE3B,SAAS6wQ,IACLlyQ,KAAK86O,UAAYh9O,EAAmC,EAAzB47O,EAAamB,WAIxC76O,KAAKo8O,OAAS,EACdp8O,KAAK+6O,SAAWj9O,EAAU47O,EAAaQ,uBAAyBR,EAAamB,WAI7E76O,KAAKs8O,MAAQ,EACbt8O,KAAKg7O,QAAUl9O,EAAU47O,EAAaQ,uBAAyBR,EAAamB,WAI5E76O,KAAKw8O,KAAO,EACZx8O,KAAKi7O,UAAYn9O,EAAmC,EAAzB47O,EAAamB,WAIxC76O,KAAKq8O,OAAS,EACdr8O,KAAKk7O,SAAWp9O,EAAU47O,EAAaQ,uBAAyBR,EAAamB,WAC7E76O,KAAKu8O,MAAQ,EACbv8O,KAAKm7O,QAAUr9O,EAAU47O,EAAaQ,uBAAyBR,EAAamB,WAC5E76O,KAAKy8O,KAAO,EAKZz8O,KAAKs7O,aAAe,EACpBt7O,KAAKy7O,QAAU,EACfz7O,KAAKu7O,KAAO,EACZv7O,KAAKw7O,KAAO,EACZx7O,KAAKmyQ,UAAY,EACjBnyQ,KAAKoyQ,MAAQ,EACbpyQ,KAAK1B,EAAIV,EAAQ,EAAK87O,EAAawC,aAAexC,EAAaqE,QAC/D/9O,KAAK08O,EAAI9+O,EAAQ,EAAK87O,EAAawC,aAAexC,EAAaqE,QAInE5gP,EAAOJ,QAAUm1Q,G,mBCxDjB,SAASG,IAILryQ,KAAKsyQ,WAAa,EAIlBtyQ,KAAKuyQ,UAAY,EAIjBvyQ,KAAKwyQ,UAAY,EAIjBxyQ,KAAKyyQ,WAAa,EAIlBzyQ,KAAK0yQ,SAAW,EAChB1yQ,KAAKsxP,KAAO,EAGhBn0P,EAAOJ,QAAUs1Q,G,qBC1BjBl1Q,EAAOJ,QAAU,CACb,cAAe,CACX,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,KAAO,KAAO,GACzB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,KAAO,EAAG,GACrB,IAAO,CAAC,EAAG,GAAK,EAAG,GACnB,IAAO,CAAC,EAAG,KAAO,EAAG,GACrB,IAAO,CAAC,EAAG,GAAK,EAAG,GACnB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,KAAQ,CAAC,EAAG,OAAS,OAAS,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,MAAQ,KAAO,EAAG,GAC3B,KAAQ,CAAC,MAAQ,KAAO,EAAG,GAC3B,KAAQ,CAAC,MAAQ,KAAO,EAAG,GAC3B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,MAAQ,KAAO,EAAG,GAC3B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,KAAO,KAAO,EAAG,GAC3B,KAAQ,EAAE,KAAO,KAAO,EAAG,GAC3B,KAAQ,CAAC,EAAG,KAAO,EAAG,GACtB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,MAAQ,KAAO,EAAG,GAC3B,KAAQ,CAAC,MAAQ,KAAO,EAAG,GAC3B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,KAAO,EAAG,GACtB,KAAQ,CAAC,EAAG,KAAO,EAAG,GACtB,KAAQ,CAAC,EAAG,KAAO,EAAG,GACtB,KAAQ,CAAC,EAAG,KAAO,EAAG,GACtB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,MAAQ,MAAQ,EAAG,GAC5B,KAAQ,CAAC,MAAQ,MAAQ,EAAG,GAC5B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,KAAO,EAAG,GACtB,KAAQ,CAAC,EAAG,KAAO,EAAG,GACtB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,MAAS,CAAC,EAAG,OAAS,EAAG,GACzB,MAAS,CAAC,EAAG,OAAS,EAAG,GACzB,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,EAAG,OAAS,OAAS,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,IAEnC,sBAAuB,CACnB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,QACtB,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,OAAS,OAAS,MAAQ,QACjC,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,GAC5B,GAAM,CAAC,OAAS,OAAS,OAAS,QAClC,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,QACtB,GAAM,CAAC,EAAG,OAAS,EAAG,QACtB,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,QAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,QACtB,GAAM,CAAC,EAAG,OAAS,KAAO,QAC1B,GAAM,CAAC,EAAG,OAAS,OAAS,GAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,GAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,QAC5B,GAAM,CAAC,OAAS,OAAS,OAAS,QAClC,GAAM,CAAC,EAAG,OAAS,OAAS,SAEhC,kBAAmB,CACf,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,EAAE,OAAS,OAAS,EAAG,GAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GA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AAS,GAC7B,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,IAAM,IAAM,EAAG,GACvB,IAAO,CAAC,IAAM,IAAM,EAAG,GACvB,IAAO,CAAC,IAAM,IAAM,EAAG,GACvB,IAAO,CAAC,IAAM,OAAS,EAAG,GAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,KAAQ,CAAC,EAAG,OAAS,OAAS,GAC9B,KAAQ,CAAC,EAAG,OAAS,OAAS,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,OAAS,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAA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,IAAO,CAAC,EAAG,OAAS,MAAQ,GAC5B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,O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AS,OAAS,GAC7B,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,IAAM,OAAS,EAAG,GAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAA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CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,EAAG,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GA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K,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAA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oBACA,oBACA,kBACA,kBAAuB,mBAEvB,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBAAuB,mBAEvB,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACA,oBACA,mBACA,mBACA,kBAAuB,mBAEvB,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBAAuB,mBAEvB,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,iBACA,kBAAuB,mBAEvB,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,oBACA,mBACA,oBACA,oBACA,mBACA,mBACA,mBAEA,mBACA,mBACA,oBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,kBAAuB,mBAEvB,kBACA,iBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,kBACA,kBACA,mBACA,oBACA,oBACA,oBACA,iBACA,mBACA,kBAAuB,kBAEvB,kBACA,kBACA,oBACA,kBACA,kBACA,mBACA,kBACA,mBACA,oBACA,iBACA,kBACA,mBACA,oBACA,oBACA,mBACA,kBACA,kBAAuB,kBAEvB,kBACA,kBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBACA,kBACA,iBAAuB,mBAEvB,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,mBACA,mBACA,kBACA,kBAAuB,mBAEvB,kBACA,iBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,oBACA,oBACA,mBACA,kBACA,mBAAuB,mBAEvB,iBACA,kBACA,oBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,oBACA,oBACA,oBACA,kBACA,mBAAuB,kBAEvB,WAAgBtzT,EAAKI,MAAQ,GAAM,QACnC,WAAgBJ,EAAKI,MAAQ,GAAM,QACnC,WAAeJ,EAAKI,MAAQ,GAAM,QAClC,WAAeJ,EAAKI,MAAQ,GAAM,QAClC,UAAcJ,EAAKI,MAAQ,GAAM,QACjC,UAAcJ,EAAKI,MAAQ,GAAM,QACjC,UAAcJ,EAAKI,MAAQ,GAAM,QACjC,SAAaJ,EAAKI,MAAQ,GAAM,QAEhC,mBAA2B,mBAC3B,kBAAyB,mBACzB,mBAA0B,mBAC1B,mBAGEmzT,EAAK,GACLC,EAAK,GAELC,EAAM,CACN,CACC,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBAEA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,sBAEF,CACC,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,qBAED,EACA,EACA,EACA,EACA,EACA,GACC,sBACA,sBACA,sBAEF,CACC,kBACA,iBACA,kBAEA,kBACA,kBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBAEA,iBACA,kBACA,kBACA,mBACC,mBACA,kBACD,kBACA,IAEC,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBAED,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,mBAED,CACC,EACA,EACA,EACA,EACA,EACA,EACA,qBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,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4P,EACb74P,EAAE,IAAM64P,EACRA,EAAK74P,EAAE,IAAM64P,EACb74P,EAAE,IAAM64P,EAERA,EAAK74P,EAAE,GAAKA,EAAE,GACdA,EAAE,GAAK64P,EACPA,EAAK74P,EAAE,IAAM64P,EACb74P,EAAE,IAAM64P,EACRA,EAAK74P,EAAE,IAAM64P,EACb74P,EAAE,IAAM64P,EACRA,EAAK74P,EAAE,GAAK64P,EACZ74P,EAAE,GAAK64P,EACPA,EAAK74P,EAAE,GAAK64P,EACZ74P,EAAE,GAAK64P,EACPA,EAAK74P,EAAE,IAAM64P,EACb74P,EAAE,IAAM64P,EACRA,EAAK74P,EAAE,IAAM64P,EACb74P,EAAE,IAAM64P,EACRA,EAAK74P,EAAE,GAAK64P,EACZ74P,EAAE,GAAK64P,EACPA,EAAK74P,EAAE,GAAK64P,EACZ74P,EAAE,GAAK64P,EACPA,EAAK74P,EAAE,IAAM64P,EACb74P,EAAE,IAAM64P,EACRA,EAAK74P,EAAE,IAAM64P,EACb74P,EAAE,IAAM64P,EACRA,EAAK74P,EAAE,IAAM64P,EACb74P,EAAE,IAAM64P,EACRA,EAAK74P,EAAE,IAAM64P,EACb74P,EAAE,IAAM64P,EACRA,EAAK74P,EAAE,IAAM64P,EACb74P,EAAE,IAAM64P,EACRA,EAAK74P,EAAE,IAAM64P,EACb74P,EAAE,IAAM64P,EAERA,EAAK74P,EAAE,GACPA,EAAE,IAAMA,EAAE,IACVA,EAAE,KAAO64P,EACTA,EAAK74P,EAAE,GACPA,EAAE,IAAMA,EAAE,IACVA,EAAE,KAAO64P,EACTA,EAAK74P,EAAE,IACPA,EAAE,KAAOA,EAAE,IACXA,EAAE,KAAO64P,EACTA,EAAK74P,EAAE,IACPA,EAAE,KAAOA,EAAE,IACXA,EAAE,KAAO64P,EACTA,EAAK74P,EAAE,GACPA,EAAE,IAAMA,EAAE,IACVA,EAAE,KAAO64P,EACTA,EAAK74P,EAAE,GACPA,EAAE,IAAMA,EAAE,IACVA,EAAE,KAAO64P,EACTA,EAAK74P,EAAE,IACPA,EAAE,KAAOA,EAAE,GACXA,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","file":"js/chunk-be7359ba.f62c1c80.js","sourcesContent":["// Utilities\n//\n'use strict';\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction isString(obj) { return _class(obj) === '[object String]'; }\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction has(object, key) {\n return _hasOwnProperty.call(object, key);\n}\n\n// Merge objects\n//\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n\n sources.forEach(function (source) {\n if (!source) { return; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object');\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n\n return obj;\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt(src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction isValidEntityCode(c) {\n /*eslint no-bitwise:0*/\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) { return false; }\n // never used\n if (c >= 0xFDD0 && c <= 0xFDEF) { return false; }\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; }\n // control codes\n if (c >= 0x00 && c <= 0x08) { return false; }\n if (c === 0x0B) { return false; }\n if (c >= 0x0E && c <= 0x1F) { return false; }\n if (c >= 0x7F && c <= 0x9F) { return false; }\n // out of range\n if (c > 0x10FFFF) { return false; }\n return true;\n}\n\nfunction fromCodePoint(c) {\n /*eslint no-bitwise:0*/\n if (c > 0xffff) {\n c -= 0x10000;\n var surrogate1 = 0xd800 + (c >> 10),\n surrogate2 = 0xdc00 + (c & 0x3ff);\n\n return String.fromCharCode(surrogate1, surrogate2);\n }\n return String.fromCharCode(c);\n}\n\n\nvar UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g;\nvar ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\nvar UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi');\n\nvar DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;\n\nvar entities = require('./entities');\n\nfunction replaceEntityPattern(match, name) {\n var code = 0;\n\n if (has(entities, name)) {\n return entities[name];\n }\n\n if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n code = name[1].toLowerCase() === 'x' ?\n parseInt(name.slice(2), 16)\n :\n parseInt(name.slice(1), 10);\n if (isValidEntityCode(code)) {\n return fromCodePoint(code);\n }\n }\n\n return match;\n}\n\n/*function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n\n return str.replace(ENTITY_RE, replaceEntityPattern);\n}*/\n\nfunction unescapeMd(str) {\n if (str.indexOf('\\\\') < 0) { return str; }\n return str.replace(UNESCAPE_MD_RE, '$1');\n}\n\nfunction unescapeAll(str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str; }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) { return escaped; }\n return replaceEntityPattern(match, entity);\n });\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nvar HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nvar HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n};\n\nfunction replaceUnsafeChar(ch) {\n return HTML_REPLACEMENTS[ch];\n}\n\nfunction escapeHtml(str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n }\n return str;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\n\nfunction escapeRE(str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&');\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction isSpace(code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true;\n }\n return false;\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace(code) {\n if (code >= 0x2000 && code <= 0x200A) { return true; }\n switch (code) {\n case 0x09: // \\t\n case 0x0A: // \\n\n case 0x0B: // \\v\n case 0x0C: // \\f\n case 0x0D: // \\r\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true;\n }\n return false;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n/*eslint-disable max-len*/\nvar UNICODE_PUNCT_RE = require('uc.micro/categories/P/regex');\n\n// Currently without astral characters support.\nfunction isPunctChar(ch) {\n return UNICODE_PUNCT_RE.test(ch);\n}\n\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct(ch) {\n switch (ch) {\n case 0x21/* ! */:\n case 0x22/* \" */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x27/* ' */:\n case 0x28/* ( */:\n case 0x29/* ) */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2C/* , */:\n case 0x2D/* - */:\n case 0x2E/* . */:\n case 0x2F/* / */:\n case 0x3A/* : */:\n case 0x3B/* ; */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x3F/* ? */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7C/* | */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true;\n default:\n return false;\n }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference(str) {\n // use .toUpperCase() instead of .toLowerCase()\n // here to avoid a conflict with Object.prototype\n // members (most notably, `__proto__`)\n return str.trim().replace(/\\s+/g, ' ').toUpperCase();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nexports.lib = {};\nexports.lib.mdurl = require('mdurl');\nexports.lib.ucmicro = require('uc.micro');\n\nexports.assign = assign;\nexports.isString = isString;\nexports.has = has;\nexports.unescapeMd = unescapeMd;\nexports.unescapeAll = unescapeAll;\nexports.isValidEntityCode = isValidEntityCode;\nexports.fromCodePoint = fromCodePoint;\n// exports.replaceEntities = replaceEntities;\nexports.escapeHtml = escapeHtml;\nexports.arrayReplaceAt = arrayReplaceAt;\nexports.isSpace = isSpace;\nexports.isWhiteSpace = isWhiteSpace;\nexports.isMdAsciiPunct = isMdAsciiPunct;\nexports.isPunctChar = isPunctChar;\nexports.escapeRE = escapeRE;\nexports.normalizeReference = normalizeReference;\n","'use strict';\n\nmodule.exports = function emoji_html(tokens, idx /*, options, env */) {\n return tokens[idx].content;\n};\n","function new_byte(count) {\n return new Int8Array(count);\n}\n\nfunction new_short(count) {\n return new Int16Array(count);\n}\n\nfunction new_int(count) {\n return new Int32Array(count);\n}\n\nfunction new_float(count) {\n return new Float32Array(count);\n}\n\nfunction new_double(count) {\n return new Float64Array(count);\n}\n\nfunction new_float_n(args) {\n if (args.length == 1) {\n return new_float(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_float_n(args));\n }\n return A;\n}\nfunction new_int_n(args) {\n if (args.length == 1) {\n return new_int(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_int_n(args));\n }\n return A;\n}\n\nfunction new_short_n(args) {\n if (args.length == 1) {\n return new_short(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_short_n(args));\n }\n return A;\n}\n\nfunction new_array_n(args) {\n if (args.length == 1) {\n return new Array(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_array_n(args));\n }\n return A;\n}\n\n\nvar Arrays = {};\n\nArrays.fill = function (a, fromIndex, toIndex, val) {\n if (arguments.length == 2) {\n for (var i = 0; i < a.length; i++) {\n a[i] = arguments[1];\n }\n } else {\n for (var i = fromIndex; i < toIndex; i++) {\n a[i] = val;\n }\n }\n};\n\nvar System = {};\n\nSystem.arraycopy = function (src, srcPos, dest, destPos, length) {\n var srcEnd = srcPos + length;\n while (srcPos < srcEnd)\n dest[destPos++] = src[srcPos++];\n};\n\nSystem.out = {};\nSystem.out.println = function (message) {\n console.log(message);\n}\n\nSystem.out.printf = function () {\n console.log.apply(console, arguments);\n}\n\n\nvar Util = {};\nUtil.SQRT2 = 1.41421356237309504880;\nUtil.FAST_LOG10 = function (x) {\n return Math.log10(x);\n};\n\nUtil.FAST_LOG10_X = function (x, y) {\n return Math.log10(x) * y;\n};\n\nfunction ShortBlock(ordinal) {\n this.ordinal = ordinal;\n}\n/**\n * LAME may use them, even different block types for L/R.\n */\nShortBlock.short_block_allowed = new ShortBlock(0);\n/**\n * LAME may use them, but always same block types in L/R.\n */\nShortBlock.short_block_coupled = new ShortBlock(1);\n/**\n * LAME will not use short blocks, long blocks only.\n */\nShortBlock.short_block_dispensed = new ShortBlock(2);\n/**\n * LAME will not use long blocks, short blocks only.\n */\nShortBlock.short_block_forced = new ShortBlock(3);\n\nvar Float = {};\nFloat.MAX_VALUE = 3.4028235e+38;\n\nfunction VbrMode(ordinal) {\n this.ordinal = ordinal;\n}\nVbrMode.vbr_off = new VbrMode(0);\nVbrMode.vbr_mt = new VbrMode(1);\nVbrMode.vbr_rh = new VbrMode(2);\nVbrMode.vbr_abr = new VbrMode(3);\nVbrMode.vbr_mtrh = new VbrMode(4);\nVbrMode.vbr_default = VbrMode.vbr_mtrh;\n\nvar assert = function (x) {\n //console.assert(x);\n};\n\nmodule.exports = {\n \"System\": System,\n \"VbrMode\": VbrMode,\n \"Float\": Float,\n \"ShortBlock\": ShortBlock,\n \"Util\": Util,\n \"Arrays\": Arrays,\n \"new_array_n\": new_array_n,\n \"new_byte\": new_byte,\n \"new_double\": new_double,\n \"new_float\": new_float,\n \"new_float_n\": new_float_n,\n \"new_int\": new_int,\n \"new_int_n\": new_int_n,\n \"new_short\": new_short,\n \"new_short_n\": new_short_n,\n \"assert\": assert\n};\n","// heading (#, ##, ...)\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function heading(state, startLine, endLine, silent) {\n var ch, level, tmp, token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x23/* # */ || pos >= max) { return false; }\n\n // count heading level\n level = 1;\n ch = state.src.charCodeAt(++pos);\n while (ch === 0x23/* # */ && pos < max && level <= 6) {\n level++;\n ch = state.src.charCodeAt(++pos);\n }\n\n if (level > 6 || (pos < max && ch !== 0x20/* space */)) { return false; }\n\n if (silent) { return true; }\n\n // Let's cut tails like ' ### ' from the end of string\n\n max = state.skipSpacesBack(max, pos);\n tmp = state.skipCharsBack(max, 0x23, pos); // #\n if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n max = tmp;\n }\n\n state.line = startLine + 1;\n\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = '########'.slice(0, level);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = state.src.slice(pos, max).trim();\n token.map = [ startLine, state.line ];\n token.children = [];\n\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = '########'.slice(0, level);\n\n return true;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// Main parser class\n\n'use strict';\n\n\nvar utils = require('./common/utils');\nvar helpers = require('./helpers');\nvar Renderer = require('./renderer');\nvar ParserCore = require('./parser_core');\nvar ParserBlock = require('./parser_block');\nvar ParserInline = require('./parser_inline');\nvar LinkifyIt = require('linkify-it');\nvar mdurl = require('mdurl');\nvar punycode = require('punycode');\n\n\nvar config = {\n 'default': require('./presets/default'),\n zero: require('./presets/zero'),\n commonmark: require('./presets/commonmark')\n};\n\n////////////////////////////////////////////////////////////////////////////////\n//\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n//\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n//\n\nvar BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\nvar GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\n\nfunction validateLink(url) {\n // url should be normalized at this point, and existing entities are decoded\n var str = url.trim().toLowerCase();\n\n return BAD_PROTO_RE.test(str) ? (GOOD_DATA_RE.test(str) ? true : false) : true;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar RECODE_HOSTNAME_FOR = [ 'http:', 'https:', 'mailto:' ];\n\nfunction normalizeLink(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname);\n } catch (er) { /**/ }\n }\n }\n\n return mdurl.encode(mdurl.format(parsed));\n}\n\nfunction normalizeLinkText(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname);\n } catch (er) { /**/ }\n }\n }\n\n return mdurl.decode(mdurl.format(parsed));\n}\n\n\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n * md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) -\n * configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) -\n * similar to GFM, used when no preset name given. Enables all available rules,\n * but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) -\n * all rules disabled. Useful to quickly setup your config via `.enable()`.\n * For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n * That's not safe! You may need external sanitizer to protect output from XSS.\n * It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n * (`
`). This is needed only for full CommonMark compatibility. In real\n * world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `
`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n * Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__ - `false`. Set `true` to enable [some language-neutral\n * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +\n * quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n * pairs, when typographer enabled and smartquotes on. For example, you can\n * use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n * `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n * Highlighter `function (str, lang)` should return escaped HTML. It can also\n * return empty string if the source was not changed and should be escaped\n * externaly. If result starts with `):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return '
' +\n *                hljs.highlight(lang, str, true).value +\n *                '
';\n * } catch (__) {}\n * }\n *\n * return '
' + md.utils.escapeHtml(str) + '
';\n * }\n * });\n * ```\n *\n **/\nfunction MarkdownIt(presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options);\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {};\n presetName = 'default';\n }\n }\n\n /**\n * MarkdownIt#inline -> ParserInline\n *\n * Instance of [[ParserInline]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.inline = new ParserInline();\n\n /**\n * MarkdownIt#block -> ParserBlock\n *\n * Instance of [[ParserBlock]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.block = new ParserBlock();\n\n /**\n * MarkdownIt#core -> Core\n *\n * Instance of [[Core]] chain executor. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.core = new ParserCore();\n\n /**\n * MarkdownIt#renderer -> Renderer\n *\n * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n * rules for new token types, generated by plugins.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * function myToken(tokens, idx, options, env, self) {\n * //...\n * return result;\n * };\n *\n * md.renderer.rules['my_token'] = myToken\n * ```\n *\n * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).\n **/\n this.renderer = new Renderer();\n\n /**\n * MarkdownIt#linkify -> LinkifyIt\n *\n * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)\n * rule.\n **/\n this.linkify = new LinkifyIt();\n\n /**\n * MarkdownIt#validateLink(url) -> Boolean\n *\n * Link validation function. CommonMark allows too much in links. By default\n * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n * except some embedded image types.\n *\n * You can change this behaviour:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * // enable everything\n * md.validateLink = function () { return true; }\n * ```\n **/\n this.validateLink = validateLink;\n\n /**\n * MarkdownIt#normalizeLink(url) -> String\n *\n * Function used to encode link url to a machine-readable format,\n * which includes url-encoding, punycode, etc.\n **/\n this.normalizeLink = normalizeLink;\n\n /**\n * MarkdownIt#normalizeLinkText(url) -> String\n *\n * Function used to decode link url to a human-readable format`\n **/\n this.normalizeLinkText = normalizeLinkText;\n\n\n // Expose utils & helpers for easy acces from plugins\n\n /**\n * MarkdownIt#utils -> utils\n *\n * Assorted utility functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js).\n **/\n this.utils = utils;\n\n /**\n * MarkdownIt#helpers -> helpers\n *\n * Link components parser functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n **/\n this.helpers = helpers;\n\n\n this.options = {};\n this.configure(presetName);\n\n if (options) { this.set(options); }\n}\n\n\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .set({ html: true, breaks: true })\n * .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\nMarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options);\n return this;\n};\n\n\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you with - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\nMarkdownIt.prototype.configure = function (presets) {\n var self = this, presetName;\n\n if (utils.isString(presets)) {\n presetName = presets;\n presets = config[presetName];\n if (!presets) { throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name'); }\n }\n\n if (!presets) { throw new Error('Wrong `markdown-it` preset, can\\'t be empty'); }\n\n if (presets.options) { self.set(presets.options); }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enableOnly(presets.components[name].rules);\n }\n if (presets.components[name].rules2) {\n self[name].ruler2.enableOnly(presets.components[name].rules2);\n }\n });\n }\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .enable(['sub', 'sup'])\n * .disable('smartquotes');\n * ```\n **/\nMarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) { list = [ list ]; }\n\n [ 'core', 'block', 'inline' ].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list, true));\n }, this);\n\n result = result.concat(this.inline.ruler2.enable(list, true));\n\n var missed = list.filter(function (name) { return result.indexOf(name) < 0; });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed);\n }\n\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\nMarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) { list = [ list ]; }\n\n [ 'core', 'block', 'inline' ].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list, true));\n }, this);\n\n result = result.concat(this.inline.ruler2.disable(list, true));\n\n var missed = list.filter(function (name) { return result.indexOf(name) < 0; });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed);\n }\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n * });\n * ```\n **/\nMarkdownIt.prototype.use = function (plugin /*, params, ... */) {\n var args = [ this ].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n};\n\n\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and returns list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\nMarkdownIt.prototype.parse = function (src, env) {\n var state = new this.core.State(src, this, env);\n\n this.core.process(state);\n\n return state.tokens;\n};\n\n\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\nMarkdownIt.prototype.render = function (src, env) {\n env = env || {};\n\n return this.renderer.render(this.parse(src, env), this.options, env);\n};\n\n\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\nMarkdownIt.prototype.parseInline = function (src, env) {\n var state = new this.core.State(src, this, env);\n\n state.inlineMode = true;\n this.core.process(state);\n\n return state.tokens;\n};\n\n\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `

` tags.\n **/\nMarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {};\n\n return this.renderer.render(this.parseInline(src, env), this.options, env);\n};\n\n\nmodule.exports = MarkdownIt;\n","// Token class\n\n'use strict';\n\n\n/**\n * class Token\n **/\n\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\nfunction Token(type, tag, nesting) {\n /**\n * Token#type -> String\n *\n * Type of the token (string, e.g. \"paragraph_open\")\n **/\n this.type = type;\n\n /**\n * Token#tag -> String\n *\n * html tag name, e.g. \"p\"\n **/\n this.tag = tag;\n\n /**\n * Token#attrs -> Array\n *\n * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n **/\n this.attrs = null;\n\n /**\n * Token#map -> Array\n *\n * Source map info. Format: `[ line_begin, line_end ]`\n **/\n this.map = null;\n\n /**\n * Token#nesting -> Number\n *\n * Level change (number in {-1, 0, 1} set), where:\n *\n * - `1` means the tag is opening\n * - `0` means the tag is self-closing\n * - `-1` means the tag is closing\n **/\n this.nesting = nesting;\n\n /**\n * Token#level -> Number\n *\n * nesting level, the same as `state.level`\n **/\n this.level = 0;\n\n /**\n * Token#children -> Array\n *\n * An array of child nodes (inline and img tokens)\n **/\n this.children = null;\n\n /**\n * Token#content -> String\n *\n * In a case of self-closing tag (code, html, fence, etc.),\n * it has contents of this tag.\n **/\n this.content = '';\n\n /**\n * Token#markup -> String\n *\n * '*' or '_' for emphasis, fence string for fence, etc.\n **/\n this.markup = '';\n\n /**\n * Token#info -> String\n *\n * fence infostring\n **/\n this.info = '';\n\n /**\n * Token#meta -> Object\n *\n * A place for plugins to store an arbitrary data\n **/\n this.meta = null;\n\n /**\n * Token#block -> Boolean\n *\n * True for block-level tokens, false for inline tokens.\n * Used in renderer to calculate line breaks\n **/\n this.block = false;\n\n /**\n * Token#hidden -> Boolean\n *\n * If it's true, ignore this element when rendering. Used for tight lists\n * to hide paragraphs.\n **/\n this.hidden = false;\n}\n\n\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\nToken.prototype.attrIndex = function attrIndex(name) {\n var attrs, i, len;\n\n if (!this.attrs) { return -1; }\n\n attrs = this.attrs;\n\n for (i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name) { return i; }\n }\n return -1;\n};\n\n\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\nToken.prototype.attrPush = function attrPush(attrData) {\n if (this.attrs) {\n this.attrs.push(attrData);\n } else {\n this.attrs = [ attrData ];\n }\n};\n\n\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\nToken.prototype.attrSet = function attrSet(name, value) {\n var idx = this.attrIndex(name),\n attrData = [ name, value ];\n\n if (idx < 0) {\n this.attrPush(attrData);\n } else {\n this.attrs[idx] = attrData;\n }\n};\n\n\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\nToken.prototype.attrGet = function attrGet(name) {\n var idx = this.attrIndex(name), value = null;\n if (idx >= 0) {\n value = this.attrs[idx][1];\n }\n return value;\n};\n\n\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\nToken.prototype.attrJoin = function attrJoin(name, value) {\n var idx = this.attrIndex(name);\n\n if (idx < 0) {\n this.attrPush([ name, value ]);\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value;\n }\n};\n\n\nmodule.exports = Token;\n","// Inline parser state\n\n'use strict';\n\n\nvar Token = require('../token');\nvar isWhiteSpace = require('../common/utils').isWhiteSpace;\nvar isPunctChar = require('../common/utils').isPunctChar;\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\n\nfunction StateInline(src, md, env, outTokens) {\n this.src = src;\n this.env = env;\n this.md = md;\n this.tokens = outTokens;\n\n this.pos = 0;\n this.posMax = this.src.length;\n this.level = 0;\n this.pending = '';\n this.pendingLevel = 0;\n\n this.cache = {}; // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n\n this.delimiters = []; // Emphasis-like delimiters\n}\n\n\n// Flush pending text\n//\nStateInline.prototype.pushPending = function () {\n var token = new Token('text', '', 0);\n token.content = this.pending;\n token.level = this.pendingLevel;\n this.tokens.push(token);\n this.pending = '';\n return token;\n};\n\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\nStateInline.prototype.push = function (type, tag, nesting) {\n if (this.pending) {\n this.pushPending();\n }\n\n var token = new Token(type, tag, nesting);\n\n if (nesting < 0) { this.level--; }\n token.level = this.level;\n if (nesting > 0) { this.level++; }\n\n this.pendingLevel = this.level;\n this.tokens.push(token);\n return token;\n};\n\n\n// Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n//\n// - start - position to scan from (it should point at a valid marker);\n// - canSplitWord - determine if these markers can be found inside a word\n//\nStateInline.prototype.scanDelims = function (start, canSplitWord) {\n var pos = start, lastChar, nextChar, count, can_open, can_close,\n isLastWhiteSpace, isLastPunctChar,\n isNextWhiteSpace, isNextPunctChar,\n left_flanking = true,\n right_flanking = true,\n max = this.posMax,\n marker = this.src.charCodeAt(start);\n\n // treat beginning of the line as a whitespace\n lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;\n\n while (pos < max && this.src.charCodeAt(pos) === marker) { pos++; }\n\n count = pos - start;\n\n // treat end of the line as a whitespace\n nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n left_flanking = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n left_flanking = false;\n }\n }\n\n if (isLastWhiteSpace) {\n right_flanking = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n right_flanking = false;\n }\n }\n\n if (!canSplitWord) {\n can_open = left_flanking && (!right_flanking || isLastPunctChar);\n can_close = right_flanking && (!left_flanking || isNextPunctChar);\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n\n return {\n can_open: can_open,\n can_close: can_close,\n length: count\n };\n};\n\n\n// re-export Token class to use in block rules\nStateInline.prototype.Token = Token;\n\n\nmodule.exports = StateInline;\n","var common = require('./common.js');\nvar new_float = common.new_float;\nvar new_int = common.new_int;\nvar assert = common.assert;\n\nfunction CalcNoiseData() {\n this.global_gain = 0;\n this.sfb_count1 = 0;\n this.step = new_int(39);\n this.noise = new_float(39);\n this.noise_log = new_float(39);\n}\n\nmodule.exports = CalcNoiseData;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABIJJREFUeF7tmkuMFEUYx///ZuJizIbEi4kmyirGozvTQ0RNNmswPjA+DuIjXNDs9pAoiRJJOBDFEDT4ioqS6Z6B4EE0+IiKDzwIu/EJdvUiGk10DwaQg5GDQsyiS3+mCYuwOzPVPTs9j+6pa/2/r//fb6qqp6qaSHljyutHF0B3BKScQNtNgf4VMj8ziflumSPN+G3aCoBpyQ4AS08XfgzALgredUt8My4YbQPAtOQ3ABdXKlSAhz2Hr8YBoS0A5CxZR+CJWgUSWOs63NBoCG0BwByWPSAGNcVN0kDWLfKHRkJoOYDrH5TeiQz+ClUU8ZyyuTqUNqSo5QDyQzIoBvaE9PtHxkd2b5mHQ+q1spYDMIdlFYjntU7/FyxTDrdH0NeUth6AJSUAQ2ELEmCD53BtWL1O13IAOUv2EVioMzrVL8A7nsO7w+p1upYCyBfkThG8pzN5Tr9gRJV4Q6SYGuKWAshZ8gaB+yIVkxQA2YIMGILRSMUH4qQAMC35FMBNkQEA25XDZXXEVQxpyRQwC7IKEunVd7b59crh4x0LIFuQxQawC4JMPUWI4AGvxG31xFaKaeoI6C/IlXME3wC4sN4CxMeAV+bn9cZPj2sagAUrpWfeCfwEoG825v1JXDK2lUdmk+Ps2KYBMC3ZD+Dq2Ro/aaBvf5G/zjbPVHxTAOQtGRVgoBGmCeyEjxd0ucTAoT97cHh8E0/U0oYCcGr4TuApEDeDuByC8yEYF+LH4KBCOfy+2kNylnxM4Fad4dj6idflJF7xygzWnhlNC+D03P0KQK6aSZ+4bszm19P7c0Ni0oAbW3HhEx8XA/d7RX4YeRE0LVkD4GnNs95SDu+ZrjELshKCl8P7jE8ZTB3X4R2RAYTdrRmC7LclBgvdmRbmrC++kmdmVg5njHjtFDAtOQ7gAp1RAR71HL6YRACiKz7oF+BJz+G6LoB2nQLEIWXz0shrgGlJMkYAsUPZvDfNAB5RNl9KLQAauMYtcl9aAfytHFZ8k4V5DXb8GiDAqOew4tVbKgCA2KhsBv9oo+8FkvAWIHGXa/P91AL418BFB4r8PZ0ABAdUiVUPYpK/Bgi2qBKr3j0mHgCBFa5Du9p+JvEAfKJ/zOZ3aQVwUDm8rNZuNtEjIMxVeqIBgFijbG5M7wjwsdgrc3daARydO4m+L7cy+OK0akvyFHhNOVyuO85LLAASS12bb7cawGoCz+hMxNB/sPcfXDWyjRO63PoRMCy/gFigSySCW7wSg68+zrR8QZaI4CNdbMP7ic3K5kNh8moB5C35QIDbNcl+zvRg4d5NPOeT18HlMvfYeQh2Yb1hzDRKQ8ESt8RPwuTTAjAtuQLAeK1kPnHjmM3PKmnMgjwLwWNhzDRCE/VDSi2AwJRpSXCevhnAbdNMHgGxXtks1jKft8QWwGpEgTVzECVlM9JzQgGYemi2INfOESzygXmGj5EeH0r3np2KDW6KYWARiSzk1E1ztkFAjoLYSeAL1+aWqDkjAYiavBP0XQCd8CvF6bE7AuKk2wm5uyOgE36lOD3+B0HrC188fc7yAAAAAElFTkSuQmCC\"","/**\n * These objects store the data about the DOM nodes we create, as well as some\n * extra data. They can then be transformed into real DOM nodes with the\n * `toNode` function or HTML markup using `toMarkup`. They are useful for both\n * storing extra properties on the nodes, as well as providing a way to easily\n * work with the DOM.\n *\n * Similar functions for working with MathML nodes exist in mathMLTree.js.\n */\n\nvar utils = require(\"./utils\");\n\n/**\n * Create an HTML className based on a list of classes. In addition to joining\n * with spaces, we also remove null or empty classes.\n */\nvar createClass = function(classes) {\n classes = classes.slice();\n for (var i = classes.length - 1; i >= 0; i--) {\n if (!classes[i]) {\n classes.splice(i, 1);\n }\n }\n\n return classes.join(\" \");\n};\n\n/**\n * This node represents a span node, with a className, a list of children, and\n * an inline style. It also contains information about its height, depth, and\n * maxFontSize.\n */\nfunction span(classes, children, height, depth, maxFontSize, style) {\n this.classes = classes || [];\n this.children = children || [];\n this.height = height || 0;\n this.depth = depth || 0;\n this.maxFontSize = maxFontSize || 0;\n this.style = style || {};\n this.attributes = {};\n}\n\n/**\n * Sets an arbitrary attribute on the span. Warning: use this wisely. Not all\n * browsers support attributes the same, and having too many custom attributes\n * is probably bad.\n */\nspan.prototype.setAttribute = function(attribute, value) {\n this.attributes[attribute] = value;\n};\n\n/**\n * Convert the span into an HTML node\n */\nspan.prototype.toNode = function() {\n var span = document.createElement(\"span\");\n\n // Apply the class\n span.className = createClass(this.classes);\n\n // Apply inline styles\n for (var style in this.style) {\n if (Object.prototype.hasOwnProperty.call(this.style, style)) {\n span.style[style] = this.style[style];\n }\n }\n\n // Apply attributes\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n span.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n // Append the children, also as HTML nodes\n for (var i = 0; i < this.children.length; i++) {\n span.appendChild(this.children[i].toNode());\n }\n\n return span;\n};\n\n/**\n * Convert the span into an HTML markup string\n */\nspan.prototype.toMarkup = function() {\n var markup = \"\";\n\n // Add the markup of the children, also as markup\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n markup += \"\";\n\n return markup;\n};\n\n/**\n * This node represents a document fragment, which contains elements, but when\n * placed into the DOM doesn't have any representation itself. Thus, it only\n * contains children and doesn't have any HTML properties. It also keeps track\n * of a height, depth, and maxFontSize.\n */\nfunction documentFragment(children, height, depth, maxFontSize) {\n this.children = children || [];\n this.height = height || 0;\n this.depth = depth || 0;\n this.maxFontSize = maxFontSize || 0;\n}\n\n/**\n * Convert the fragment into a node\n */\ndocumentFragment.prototype.toNode = function() {\n // Create a fragment\n var frag = document.createDocumentFragment();\n\n // Append the children\n for (var i = 0; i < this.children.length; i++) {\n frag.appendChild(this.children[i].toNode());\n }\n\n return frag;\n};\n\n/**\n * Convert the fragment into HTML markup\n */\ndocumentFragment.prototype.toMarkup = function() {\n var markup = \"\";\n\n // Simply concatenate the markup for the children together\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n return markup;\n};\n\n/**\n * A symbol node contains information about a single symbol. It either renders\n * to a single text node, or a span with a single text node in it, depending on\n * whether it has CSS classes, styles, or needs italic correction.\n */\nfunction symbolNode(value, height, depth, italic, skew, classes, style) {\n this.value = value || \"\";\n this.height = height || 0;\n this.depth = depth || 0;\n this.italic = italic || 0;\n this.skew = skew || 0;\n this.classes = classes || [];\n this.style = style || {};\n this.maxFontSize = 0;\n}\n\n/**\n * Creates a text node or span from a symbol node. Note that a span is only\n * created if it is needed.\n */\nsymbolNode.prototype.toNode = function() {\n var node = document.createTextNode(this.value);\n var span = null;\n\n if (this.italic > 0) {\n span = document.createElement(\"span\");\n span.style.marginRight = this.italic + \"em\";\n }\n\n if (this.classes.length > 0) {\n span = span || document.createElement(\"span\");\n span.className = createClass(this.classes);\n }\n\n for (var style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n span = span || document.createElement(\"span\");\n span.style[style] = this.style[style];\n }\n }\n\n if (span) {\n span.appendChild(node);\n return span;\n } else {\n return node;\n }\n};\n\n/**\n * Creates markup for a symbol node.\n */\nsymbolNode.prototype.toMarkup = function() {\n // TODO(alpert): More duplication than I'd like from\n // span.prototype.toMarkup and symbolNode.prototype.toNode...\n var needsSpan = false;\n\n var markup = \" 0) {\n styles += \"margin-right:\" + this.italic + \"em;\";\n }\n for (var style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n styles += utils.hyphenate(style) + \":\" + this.style[style] + \";\";\n }\n }\n\n if (styles) {\n needsSpan = true;\n markup += \" style=\\\"\" + utils.escape(styles) + \"\\\"\";\n }\n\n var escaped = utils.escape(this.value);\n if (needsSpan) {\n markup += \">\";\n markup += escaped;\n markup += \"\";\n return markup;\n } else {\n return escaped;\n }\n};\n\nmodule.exports = {\n span: span,\n documentFragment: documentFragment,\n symbolNode: symbolNode,\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","/**\n * This is the ParseError class, which is the main error thrown by KaTeX\n * functions when something has gone wrong. This is used to distinguish internal\n * errors from errors in the expression that the user provided.\n */\nfunction ParseError(message, lexer, position) {\n var error = \"KaTeX parse error: \" + message;\n\n if (lexer !== undefined && position !== undefined) {\n // If we have the input and a position, make the error a bit fancier\n\n // Prepend some information\n error += \" at position \" + position + \": \";\n\n // Get the input\n var input = lexer._input;\n // Insert a combining underscore at the correct position\n input = input.slice(0, position) + \"\\u0332\" +\n input.slice(position);\n\n // Extract some context from the input and add it to the error\n var begin = Math.max(0, position - 15);\n var end = position + 15;\n error += input.slice(begin, end);\n }\n\n // Some hackery to make ParseError a prototype of Error\n // See http://stackoverflow.com/a/8460753\n var self = new Error(error);\n self.name = \"ParseError\";\n self.__proto__ = ParseError.prototype;\n\n self.position = position;\n return self;\n}\n\n// More hackery\nParseError.prototype.__proto__ = Error.prototype;\n\nmodule.exports = ParseError;\n","/**\n * This file holds a list of all no-argument functions and single-character\n * symbols (like 'a' or ';').\n *\n * For each of the symbols, there are three properties they can have:\n * - font (required): the font to be used for this symbol. Either \"main\" (the\n normal font), or \"ams\" (the ams fonts).\n * - group (required): the ParseNode group type the symbol should have (i.e.\n \"textord\", \"mathord\", etc).\n See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types\n * - replace: the character that this symbol or function should be\n * replaced with (i.e. \"\\phi\" has a replace value of \"\\u03d5\", the phi\n * character in the main font).\n *\n * The outermost map in the table indicates what mode the symbols should be\n * accepted in (e.g. \"math\" or \"text\").\n */\n\nmodule.exports = {\n math: {},\n text: {},\n};\n\nfunction defineSymbol(mode, font, group, replace, name) {\n module.exports[mode][name] = {\n font: font,\n group: group,\n replace: replace,\n };\n}\n\n// Some abbreviations for commonly used strings.\n// This helps minify the code, and also spotting typos using jshint.\n\n// modes:\nvar math = \"math\";\nvar text = \"text\";\n\n// fonts:\nvar main = \"main\";\nvar ams = \"ams\";\n\n// groups:\nvar accent = \"accent\";\nvar bin = \"bin\";\nvar close = \"close\";\nvar inner = \"inner\";\nvar mathord = \"mathord\";\nvar op = \"op\";\nvar open = \"open\";\nvar punct = \"punct\";\nvar rel = \"rel\";\nvar spacing = \"spacing\";\nvar textord = \"textord\";\n\n// Now comes the symbol table\n\n// Relation Symbols\ndefineSymbol(math, main, rel, \"\\u2261\", \"\\\\equiv\");\ndefineSymbol(math, main, rel, \"\\u227a\", \"\\\\prec\");\ndefineSymbol(math, main, rel, \"\\u227b\", \"\\\\succ\");\ndefineSymbol(math, main, rel, \"\\u223c\", \"\\\\sim\");\ndefineSymbol(math, main, rel, \"\\u22a5\", \"\\\\perp\");\ndefineSymbol(math, main, rel, \"\\u2aaf\", \"\\\\preceq\");\ndefineSymbol(math, main, rel, \"\\u2ab0\", \"\\\\succeq\");\ndefineSymbol(math, main, rel, \"\\u2243\", \"\\\\simeq\");\ndefineSymbol(math, main, rel, \"\\u2223\", \"\\\\mid\");\ndefineSymbol(math, main, rel, \"\\u226a\", \"\\\\ll\");\ndefineSymbol(math, main, rel, \"\\u226b\", \"\\\\gg\");\ndefineSymbol(math, main, rel, \"\\u224d\", \"\\\\asymp\");\ndefineSymbol(math, main, rel, \"\\u2225\", \"\\\\parallel\");\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\bowtie\");\ndefineSymbol(math, main, rel, \"\\u2323\", \"\\\\smile\");\ndefineSymbol(math, main, rel, \"\\u2291\", \"\\\\sqsubseteq\");\ndefineSymbol(math, main, rel, \"\\u2292\", \"\\\\sqsupseteq\");\ndefineSymbol(math, main, rel, \"\\u2250\", \"\\\\doteq\");\ndefineSymbol(math, main, rel, \"\\u2322\", \"\\\\frown\");\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\ni\");\ndefineSymbol(math, main, rel, \"\\u221d\", \"\\\\propto\");\ndefineSymbol(math, main, rel, \"\\u22a2\", \"\\\\vdash\");\ndefineSymbol(math, main, rel, \"\\u22a3\", \"\\\\dashv\");\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\owns\");\n\n// Punctuation\ndefineSymbol(math, main, punct, \"\\u002e\", \"\\\\ldotp\");\ndefineSymbol(math, main, punct, \"\\u22c5\", \"\\\\cdotp\");\n\n// Misc Symbols\ndefineSymbol(math, main, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(math, main, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(math, main, textord, \"\\u2135\", \"\\\\aleph\");\ndefineSymbol(math, main, textord, \"\\u2200\", \"\\\\forall\");\ndefineSymbol(math, main, textord, \"\\u210f\", \"\\\\hbar\");\ndefineSymbol(math, main, textord, \"\\u2203\", \"\\\\exists\");\ndefineSymbol(math, main, textord, \"\\u2207\", \"\\\\nabla\");\ndefineSymbol(math, main, textord, \"\\u266d\", \"\\\\flat\");\ndefineSymbol(math, main, textord, \"\\u2113\", \"\\\\ell\");\ndefineSymbol(math, main, textord, \"\\u266e\", \"\\\\natural\");\ndefineSymbol(math, main, textord, \"\\u2663\", \"\\\\clubsuit\");\ndefineSymbol(math, main, textord, \"\\u2118\", \"\\\\wp\");\ndefineSymbol(math, main, textord, \"\\u266f\", \"\\\\sharp\");\ndefineSymbol(math, main, textord, \"\\u2662\", \"\\\\diamondsuit\");\ndefineSymbol(math, main, textord, \"\\u211c\", \"\\\\Re\");\ndefineSymbol(math, main, textord, \"\\u2661\", \"\\\\heartsuit\");\ndefineSymbol(math, main, textord, \"\\u2111\", \"\\\\Im\");\ndefineSymbol(math, main, textord, \"\\u2660\", \"\\\\spadesuit\");\n\n// Math and Text\ndefineSymbol(math, main, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(math, main, textord, \"\\u2021\", \"\\\\ddag\");\n\n// Large Delimiters\ndefineSymbol(math, main, close, \"\\u23b1\", \"\\\\rmoustache\");\ndefineSymbol(math, main, open, \"\\u23b0\", \"\\\\lmoustache\");\ndefineSymbol(math, main, close, \"\\u27ef\", \"\\\\rgroup\");\ndefineSymbol(math, main, open, \"\\u27ee\", \"\\\\lgroup\");\n\n// Binary Operators\ndefineSymbol(math, main, bin, \"\\u2213\", \"\\\\mp\");\ndefineSymbol(math, main, bin, \"\\u2296\", \"\\\\ominus\");\ndefineSymbol(math, main, bin, \"\\u228e\", \"\\\\uplus\");\ndefineSymbol(math, main, bin, \"\\u2293\", \"\\\\sqcap\");\ndefineSymbol(math, main, bin, \"\\u2217\", \"\\\\ast\");\ndefineSymbol(math, main, bin, \"\\u2294\", \"\\\\sqcup\");\ndefineSymbol(math, main, bin, \"\\u25ef\", \"\\\\bigcirc\");\ndefineSymbol(math, main, bin, \"\\u2219\", \"\\\\bullet\");\ndefineSymbol(math, main, bin, \"\\u2021\", \"\\\\ddagger\");\ndefineSymbol(math, main, bin, \"\\u2240\", \"\\\\wr\");\ndefineSymbol(math, main, bin, \"\\u2a3f\", \"\\\\amalg\");\n\n// Arrow Symbols\ndefineSymbol(math, main, rel, \"\\u27f5\", \"\\\\longleftarrow\");\ndefineSymbol(math, main, rel, \"\\u21d0\", \"\\\\Leftarrow\");\ndefineSymbol(math, main, rel, \"\\u27f8\", \"\\\\Longleftarrow\");\ndefineSymbol(math, main, rel, \"\\u27f6\", \"\\\\longrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21d2\", \"\\\\Rightarrow\");\ndefineSymbol(math, main, rel, \"\\u27f9\", \"\\\\Longrightarrow\");\ndefineSymbol(math, main, rel, \"\\u2194\", \"\\\\leftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u27f7\", \"\\\\longleftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21d4\", \"\\\\Leftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u27fa\", \"\\\\Longleftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21a6\", \"\\\\mapsto\");\ndefineSymbol(math, main, rel, \"\\u27fc\", \"\\\\longmapsto\");\ndefineSymbol(math, main, rel, \"\\u2197\", \"\\\\nearrow\");\ndefineSymbol(math, main, rel, \"\\u21a9\", \"\\\\hookleftarrow\");\ndefineSymbol(math, main, rel, \"\\u21aa\", \"\\\\hookrightarrow\");\ndefineSymbol(math, main, rel, \"\\u2198\", \"\\\\searrow\");\ndefineSymbol(math, main, rel, \"\\u21bc\", \"\\\\leftharpoonup\");\ndefineSymbol(math, main, rel, \"\\u21c0\", \"\\\\rightharpoonup\");\ndefineSymbol(math, main, rel, \"\\u2199\", \"\\\\swarrow\");\ndefineSymbol(math, main, rel, \"\\u21bd\", \"\\\\leftharpoondown\");\ndefineSymbol(math, main, rel, \"\\u21c1\", \"\\\\rightharpoondown\");\ndefineSymbol(math, main, rel, \"\\u2196\", \"\\\\nwarrow\");\ndefineSymbol(math, main, rel, \"\\u21cc\", \"\\\\rightleftharpoons\");\n\n// AMS Negated Binary Relations\ndefineSymbol(math, ams, rel, \"\\u226e\", \"\\\\nless\");\ndefineSymbol(math, ams, rel, \"\\ue010\", \"\\\\nleqslant\");\ndefineSymbol(math, ams, rel, \"\\ue011\", \"\\\\nleqq\");\ndefineSymbol(math, ams, rel, \"\\u2a87\", \"\\\\lneq\");\ndefineSymbol(math, ams, rel, \"\\u2268\", \"\\\\lneqq\");\ndefineSymbol(math, ams, rel, \"\\ue00c\", \"\\\\lvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e6\", \"\\\\lnsim\");\ndefineSymbol(math, ams, rel, \"\\u2a89\", \"\\\\lnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2280\", \"\\\\nprec\");\ndefineSymbol(math, ams, rel, \"\\u22e0\", \"\\\\npreceq\");\ndefineSymbol(math, ams, rel, \"\\u22e8\", \"\\\\precnsim\");\ndefineSymbol(math, ams, rel, \"\\u2ab9\", \"\\\\precnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2241\", \"\\\\nsim\");\ndefineSymbol(math, ams, rel, \"\\ue006\", \"\\\\nshortmid\");\ndefineSymbol(math, ams, rel, \"\\u2224\", \"\\\\nmid\");\ndefineSymbol(math, ams, rel, \"\\u22ac\", \"\\\\nvdash\");\ndefineSymbol(math, ams, rel, \"\\u22ad\", \"\\\\nvDash\");\ndefineSymbol(math, ams, rel, \"\\u22ea\", \"\\\\ntriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22ec\", \"\\\\ntrianglelefteq\");\ndefineSymbol(math, ams, rel, \"\\u228a\", \"\\\\subsetneq\");\ndefineSymbol(math, ams, rel, \"\\ue01a\", \"\\\\varsubsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acb\", \"\\\\subsetneqq\");\ndefineSymbol(math, ams, rel, \"\\ue017\", \"\\\\varsubsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u226f\", \"\\\\ngtr\");\ndefineSymbol(math, ams, rel, \"\\ue00f\", \"\\\\ngeqslant\");\ndefineSymbol(math, ams, rel, \"\\ue00e\", \"\\\\ngeqq\");\ndefineSymbol(math, ams, rel, \"\\u2a88\", \"\\\\gneq\");\ndefineSymbol(math, ams, rel, \"\\u2269\", \"\\\\gneqq\");\ndefineSymbol(math, ams, rel, \"\\ue00d\", \"\\\\gvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e7\", \"\\\\gnsim\");\ndefineSymbol(math, ams, rel, \"\\u2a8a\", \"\\\\gnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2281\", \"\\\\nsucc\");\ndefineSymbol(math, ams, rel, \"\\u22e1\", \"\\\\nsucceq\");\ndefineSymbol(math, ams, rel, \"\\u22e9\", \"\\\\succnsim\");\ndefineSymbol(math, ams, rel, \"\\u2aba\", \"\\\\succnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2246\", \"\\\\ncong\");\ndefineSymbol(math, ams, rel, \"\\ue007\", \"\\\\nshortparallel\");\ndefineSymbol(math, ams, rel, \"\\u2226\", \"\\\\nparallel\");\ndefineSymbol(math, ams, rel, \"\\u22af\", \"\\\\nVDash\");\ndefineSymbol(math, ams, rel, \"\\u22eb\", \"\\\\ntriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22ed\", \"\\\\ntrianglerighteq\");\ndefineSymbol(math, ams, rel, \"\\ue018\", \"\\\\nsupseteqq\");\ndefineSymbol(math, ams, rel, \"\\u228b\", \"\\\\supsetneq\");\ndefineSymbol(math, ams, rel, \"\\ue01b\", \"\\\\varsupsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acc\", \"\\\\supsetneqq\");\ndefineSymbol(math, ams, rel, \"\\ue019\", \"\\\\varsupsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u22ae\", \"\\\\nVdash\");\ndefineSymbol(math, ams, rel, \"\\u2ab5\", \"\\\\precneqq\");\ndefineSymbol(math, ams, rel, \"\\u2ab6\", \"\\\\succneqq\");\ndefineSymbol(math, ams, rel, \"\\ue016\", \"\\\\nsubseteqq\");\ndefineSymbol(math, ams, bin, \"\\u22b4\", \"\\\\unlhd\");\ndefineSymbol(math, ams, bin, \"\\u22b5\", \"\\\\unrhd\");\n\n// AMS Negated Arrows\ndefineSymbol(math, ams, rel, \"\\u219a\", \"\\\\nleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u219b\", \"\\\\nrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21cd\", \"\\\\nLeftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21cf\", \"\\\\nRightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21ae\", \"\\\\nleftrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21ce\", \"\\\\nLeftrightarrow\");\n\n// AMS Misc\ndefineSymbol(math, ams, rel, \"\\u25b3\", \"\\\\vartriangle\");\ndefineSymbol(math, ams, textord, \"\\u210f\", \"\\\\hslash\");\ndefineSymbol(math, ams, textord, \"\\u25bd\", \"\\\\triangledown\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\lozenge\");\ndefineSymbol(math, ams, textord, \"\\u24c8\", \"\\\\circledS\");\ndefineSymbol(math, ams, textord, \"\\u00ae\", \"\\\\circledR\");\ndefineSymbol(math, ams, textord, \"\\u2221\", \"\\\\measuredangle\");\ndefineSymbol(math, ams, textord, \"\\u2204\", \"\\\\nexists\");\ndefineSymbol(math, ams, textord, \"\\u2127\", \"\\\\mho\");\ndefineSymbol(math, ams, textord, \"\\u2132\", \"\\\\Finv\");\ndefineSymbol(math, ams, textord, \"\\u2141\", \"\\\\Game\");\ndefineSymbol(math, ams, textord, \"\\u006b\", \"\\\\Bbbk\");\ndefineSymbol(math, ams, textord, \"\\u2035\", \"\\\\backprime\");\ndefineSymbol(math, ams, textord, \"\\u25b2\", \"\\\\blacktriangle\");\ndefineSymbol(math, ams, textord, \"\\u25bc\", \"\\\\blacktriangledown\");\ndefineSymbol(math, ams, textord, \"\\u25a0\", \"\\\\blacksquare\");\ndefineSymbol(math, ams, textord, \"\\u29eb\", \"\\\\blacklozenge\");\ndefineSymbol(math, ams, textord, \"\\u2605\", \"\\\\bigstar\");\ndefineSymbol(math, ams, textord, \"\\u2222\", \"\\\\sphericalangle\");\ndefineSymbol(math, ams, textord, \"\\u2201\", \"\\\\complement\");\ndefineSymbol(math, ams, textord, \"\\u00f0\", \"\\\\eth\");\ndefineSymbol(math, ams, textord, \"\\u2571\", \"\\\\diagup\");\ndefineSymbol(math, ams, textord, \"\\u2572\", \"\\\\diagdown\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\square\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\Box\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\Diamond\");\ndefineSymbol(math, ams, textord, \"\\u00a5\", \"\\\\yen\");\ndefineSymbol(math, ams, textord, \"\\u2713\", \"\\\\checkmark\");\n\n// AMS Hebrew\ndefineSymbol(math, ams, textord, \"\\u2136\", \"\\\\beth\");\ndefineSymbol(math, ams, textord, \"\\u2138\", \"\\\\daleth\");\ndefineSymbol(math, ams, textord, \"\\u2137\", \"\\\\gimel\");\n\n// AMS Greek\ndefineSymbol(math, ams, textord, \"\\u03dd\", \"\\\\digamma\");\ndefineSymbol(math, ams, textord, \"\\u03f0\", \"\\\\varkappa\");\n\n// AMS Delimiters\ndefineSymbol(math, ams, open, \"\\u250c\", \"\\\\ulcorner\");\ndefineSymbol(math, ams, close, \"\\u2510\", \"\\\\urcorner\");\ndefineSymbol(math, ams, open, \"\\u2514\", \"\\\\llcorner\");\ndefineSymbol(math, ams, close, \"\\u2518\", \"\\\\lrcorner\");\n\n// AMS Binary Relations\ndefineSymbol(math, ams, rel, \"\\u2266\", \"\\\\leqq\");\ndefineSymbol(math, ams, rel, \"\\u2a7d\", \"\\\\leqslant\");\ndefineSymbol(math, ams, rel, \"\\u2a95\", \"\\\\eqslantless\");\ndefineSymbol(math, ams, rel, \"\\u2272\", \"\\\\lesssim\");\ndefineSymbol(math, ams, rel, \"\\u2a85\", \"\\\\lessapprox\");\ndefineSymbol(math, ams, rel, \"\\u224a\", \"\\\\approxeq\");\ndefineSymbol(math, ams, bin, \"\\u22d6\", \"\\\\lessdot\");\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\lll\");\ndefineSymbol(math, ams, rel, \"\\u2276\", \"\\\\lessgtr\");\ndefineSymbol(math, ams, rel, \"\\u22da\", \"\\\\lesseqgtr\");\ndefineSymbol(math, ams, rel, \"\\u2a8b\", \"\\\\lesseqqgtr\");\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\doteqdot\");\ndefineSymbol(math, ams, rel, \"\\u2253\", \"\\\\risingdotseq\");\ndefineSymbol(math, ams, rel, \"\\u2252\", \"\\\\fallingdotseq\");\ndefineSymbol(math, ams, rel, \"\\u223d\", \"\\\\backsim\");\ndefineSymbol(math, ams, rel, \"\\u22cd\", \"\\\\backsimeq\");\ndefineSymbol(math, ams, rel, \"\\u2ac5\", \"\\\\subseteqq\");\ndefineSymbol(math, ams, rel, \"\\u22d0\", \"\\\\Subset\");\ndefineSymbol(math, ams, rel, \"\\u228f\", \"\\\\sqsubset\");\ndefineSymbol(math, ams, rel, \"\\u227c\", \"\\\\preccurlyeq\");\ndefineSymbol(math, ams, rel, \"\\u22de\", \"\\\\curlyeqprec\");\ndefineSymbol(math, ams, rel, \"\\u227e\", \"\\\\precsim\");\ndefineSymbol(math, ams, rel, \"\\u2ab7\", \"\\\\precapprox\");\ndefineSymbol(math, ams, rel, \"\\u22b2\", \"\\\\vartriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22b4\", \"\\\\trianglelefteq\");\ndefineSymbol(math, ams, rel, \"\\u22a8\", \"\\\\vDash\");\ndefineSymbol(math, ams, rel, \"\\u22aa\", \"\\\\Vvdash\");\ndefineSymbol(math, ams, rel, \"\\u2323\", \"\\\\smallsmile\");\ndefineSymbol(math, ams, rel, \"\\u2322\", \"\\\\smallfrown\");\ndefineSymbol(math, ams, rel, \"\\u224f\", \"\\\\bumpeq\");\ndefineSymbol(math, ams, rel, \"\\u224e\", \"\\\\Bumpeq\");\ndefineSymbol(math, ams, rel, \"\\u2267\", \"\\\\geqq\");\ndefineSymbol(math, ams, rel, \"\\u2a7e\", \"\\\\geqslant\");\ndefineSymbol(math, ams, rel, \"\\u2a96\", \"\\\\eqslantgtr\");\ndefineSymbol(math, ams, rel, \"\\u2273\", \"\\\\gtrsim\");\ndefineSymbol(math, ams, rel, \"\\u2a86\", \"\\\\gtrapprox\");\ndefineSymbol(math, ams, bin, \"\\u22d7\", \"\\\\gtrdot\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\ggg\");\ndefineSymbol(math, ams, rel, \"\\u2277\", \"\\\\gtrless\");\ndefineSymbol(math, ams, rel, \"\\u22db\", \"\\\\gtreqless\");\ndefineSymbol(math, ams, rel, \"\\u2a8c\", \"\\\\gtreqqless\");\ndefineSymbol(math, ams, rel, \"\\u2256\", \"\\\\eqcirc\");\ndefineSymbol(math, ams, rel, \"\\u2257\", \"\\\\circeq\");\ndefineSymbol(math, ams, rel, \"\\u225c\", \"\\\\triangleq\");\ndefineSymbol(math, ams, rel, \"\\u223c\", \"\\\\thicksim\");\ndefineSymbol(math, ams, rel, \"\\u2248\", \"\\\\thickapprox\");\ndefineSymbol(math, ams, rel, \"\\u2ac6\", \"\\\\supseteqq\");\ndefineSymbol(math, ams, rel, \"\\u22d1\", \"\\\\Supset\");\ndefineSymbol(math, ams, rel, \"\\u2290\", \"\\\\sqsupset\");\ndefineSymbol(math, ams, rel, \"\\u227d\", \"\\\\succcurlyeq\");\ndefineSymbol(math, ams, rel, \"\\u22df\", \"\\\\curlyeqsucc\");\ndefineSymbol(math, ams, rel, \"\\u227f\", \"\\\\succsim\");\ndefineSymbol(math, ams, rel, \"\\u2ab8\", \"\\\\succapprox\");\ndefineSymbol(math, ams, rel, \"\\u22b3\", \"\\\\vartriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22b5\", \"\\\\trianglerighteq\");\ndefineSymbol(math, ams, rel, \"\\u22a9\", \"\\\\Vdash\");\ndefineSymbol(math, ams, rel, \"\\u2223\", \"\\\\shortmid\");\ndefineSymbol(math, ams, rel, \"\\u2225\", \"\\\\shortparallel\");\ndefineSymbol(math, ams, rel, \"\\u226c\", \"\\\\between\");\ndefineSymbol(math, ams, rel, \"\\u22d4\", \"\\\\pitchfork\");\ndefineSymbol(math, ams, rel, \"\\u221d\", \"\\\\varpropto\");\ndefineSymbol(math, ams, rel, \"\\u25c0\", \"\\\\blacktriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u2234\", \"\\\\therefore\");\ndefineSymbol(math, ams, rel, \"\\u220d\", \"\\\\backepsilon\");\ndefineSymbol(math, ams, rel, \"\\u25b6\", \"\\\\blacktriangleright\");\ndefineSymbol(math, ams, rel, \"\\u2235\", \"\\\\because\");\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\llless\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\gggtr\");\ndefineSymbol(math, ams, bin, \"\\u22b2\", \"\\\\lhd\");\ndefineSymbol(math, ams, bin, \"\\u22b3\", \"\\\\rhd\");\ndefineSymbol(math, ams, rel, \"\\u2242\", \"\\\\eqsim\");\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\Join\");\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\Doteq\");\n\n// AMS Binary Operators\ndefineSymbol(math, ams, bin, \"\\u2214\", \"\\\\dotplus\");\ndefineSymbol(math, ams, bin, \"\\u2216\", \"\\\\smallsetminus\");\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\Cap\");\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\Cup\");\ndefineSymbol(math, ams, bin, \"\\u2a5e\", \"\\\\doublebarwedge\");\ndefineSymbol(math, ams, bin, \"\\u229f\", \"\\\\boxminus\");\ndefineSymbol(math, ams, bin, \"\\u229e\", \"\\\\boxplus\");\ndefineSymbol(math, ams, bin, \"\\u22c7\", \"\\\\divideontimes\");\ndefineSymbol(math, ams, bin, \"\\u22c9\", \"\\\\ltimes\");\ndefineSymbol(math, ams, bin, \"\\u22ca\", \"\\\\rtimes\");\ndefineSymbol(math, ams, bin, \"\\u22cb\", \"\\\\leftthreetimes\");\ndefineSymbol(math, ams, bin, \"\\u22cc\", \"\\\\rightthreetimes\");\ndefineSymbol(math, ams, bin, \"\\u22cf\", \"\\\\curlywedge\");\ndefineSymbol(math, ams, bin, \"\\u22ce\", \"\\\\curlyvee\");\ndefineSymbol(math, ams, bin, \"\\u229d\", \"\\\\circleddash\");\ndefineSymbol(math, ams, bin, \"\\u229b\", \"\\\\circledast\");\ndefineSymbol(math, ams, bin, \"\\u22c5\", \"\\\\centerdot\");\ndefineSymbol(math, ams, bin, \"\\u22ba\", \"\\\\intercal\");\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\doublecap\");\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\doublecup\");\ndefineSymbol(math, ams, bin, \"\\u22a0\", \"\\\\boxtimes\");\n\n// AMS Arrows\ndefineSymbol(math, ams, rel, \"\\u21e2\", \"\\\\dashrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21e0\", \"\\\\dashleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21c7\", \"\\\\leftleftarrows\");\ndefineSymbol(math, ams, rel, \"\\u21c6\", \"\\\\leftrightarrows\");\ndefineSymbol(math, ams, rel, \"\\u21da\", \"\\\\Lleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u219e\", \"\\\\twoheadleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21a2\", \"\\\\leftarrowtail\");\ndefineSymbol(math, ams, rel, \"\\u21ab\", \"\\\\looparrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21cb\", \"\\\\leftrightharpoons\");\ndefineSymbol(math, ams, rel, \"\\u21b6\", \"\\\\curvearrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21ba\", \"\\\\circlearrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21b0\", \"\\\\Lsh\");\ndefineSymbol(math, ams, rel, \"\\u21c8\", \"\\\\upuparrows\");\ndefineSymbol(math, ams, rel, \"\\u21bf\", \"\\\\upharpoonleft\");\ndefineSymbol(math, ams, rel, \"\\u21c3\", \"\\\\downharpoonleft\");\ndefineSymbol(math, ams, rel, \"\\u22b8\", \"\\\\multimap\");\ndefineSymbol(math, ams, rel, \"\\u21ad\", \"\\\\leftrightsquigarrow\");\ndefineSymbol(math, ams, rel, \"\\u21c9\", \"\\\\rightrightarrows\");\ndefineSymbol(math, ams, rel, \"\\u21c4\", \"\\\\rightleftarrows\");\ndefineSymbol(math, ams, rel, \"\\u21a0\", \"\\\\twoheadrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21a3\", \"\\\\rightarrowtail\");\ndefineSymbol(math, ams, rel, \"\\u21ac\", \"\\\\looparrowright\");\ndefineSymbol(math, ams, rel, \"\\u21b7\", \"\\\\curvearrowright\");\ndefineSymbol(math, ams, rel, \"\\u21bb\", \"\\\\circlearrowright\");\ndefineSymbol(math, ams, rel, \"\\u21b1\", \"\\\\Rsh\");\ndefineSymbol(math, ams, rel, \"\\u21ca\", \"\\\\downdownarrows\");\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\upharpoonright\");\ndefineSymbol(math, ams, rel, \"\\u21c2\", \"\\\\downharpoonright\");\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\rightsquigarrow\");\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\leadsto\");\ndefineSymbol(math, ams, rel, \"\\u21db\", \"\\\\Rrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\restriction\");\n\ndefineSymbol(math, main, textord, \"\\u2018\", \"`\");\ndefineSymbol(math, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(math, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(math, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(math, main, textord, \"\\u2220\", \"\\\\angle\");\ndefineSymbol(math, main, textord, \"\\u221e\", \"\\\\infty\");\ndefineSymbol(math, main, textord, \"\\u2032\", \"\\\\prime\");\ndefineSymbol(math, main, textord, \"\\u25b3\", \"\\\\triangle\");\ndefineSymbol(math, main, textord, \"\\u0393\", \"\\\\Gamma\");\ndefineSymbol(math, main, textord, \"\\u0394\", \"\\\\Delta\");\ndefineSymbol(math, main, textord, \"\\u0398\", \"\\\\Theta\");\ndefineSymbol(math, main, textord, \"\\u039b\", \"\\\\Lambda\");\ndefineSymbol(math, main, textord, \"\\u039e\", \"\\\\Xi\");\ndefineSymbol(math, main, textord, \"\\u03a0\", \"\\\\Pi\");\ndefineSymbol(math, main, textord, \"\\u03a3\", \"\\\\Sigma\");\ndefineSymbol(math, main, textord, \"\\u03a5\", \"\\\\Upsilon\");\ndefineSymbol(math, main, textord, \"\\u03a6\", \"\\\\Phi\");\ndefineSymbol(math, main, textord, \"\\u03a8\", \"\\\\Psi\");\ndefineSymbol(math, main, textord, \"\\u03a9\", \"\\\\Omega\");\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\neg\");\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\lnot\");\ndefineSymbol(math, main, textord, \"\\u22a4\", \"\\\\top\");\ndefineSymbol(math, main, textord, \"\\u22a5\", \"\\\\bot\");\ndefineSymbol(math, main, textord, \"\\u2205\", \"\\\\emptyset\");\ndefineSymbol(math, ams, textord, \"\\u2205\", \"\\\\varnothing\");\ndefineSymbol(math, main, mathord, \"\\u03b1\", \"\\\\alpha\");\ndefineSymbol(math, main, mathord, \"\\u03b2\", \"\\\\beta\");\ndefineSymbol(math, main, mathord, \"\\u03b3\", \"\\\\gamma\");\ndefineSymbol(math, main, mathord, \"\\u03b4\", \"\\\\delta\");\ndefineSymbol(math, main, mathord, \"\\u03f5\", \"\\\\epsilon\");\ndefineSymbol(math, main, mathord, \"\\u03b6\", \"\\\\zeta\");\ndefineSymbol(math, main, mathord, \"\\u03b7\", \"\\\\eta\");\ndefineSymbol(math, main, mathord, \"\\u03b8\", \"\\\\theta\");\ndefineSymbol(math, main, mathord, \"\\u03b9\", \"\\\\iota\");\ndefineSymbol(math, main, mathord, \"\\u03ba\", \"\\\\kappa\");\ndefineSymbol(math, main, mathord, \"\\u03bb\", \"\\\\lambda\");\ndefineSymbol(math, main, mathord, \"\\u03bc\", \"\\\\mu\");\ndefineSymbol(math, main, mathord, \"\\u03bd\", \"\\\\nu\");\ndefineSymbol(math, main, mathord, \"\\u03be\", \"\\\\xi\");\ndefineSymbol(math, main, mathord, \"o\", \"\\\\omicron\");\ndefineSymbol(math, main, mathord, \"\\u03c0\", \"\\\\pi\");\ndefineSymbol(math, main, mathord, \"\\u03c1\", \"\\\\rho\");\ndefineSymbol(math, main, mathord, \"\\u03c3\", \"\\\\sigma\");\ndefineSymbol(math, main, mathord, \"\\u03c4\", \"\\\\tau\");\ndefineSymbol(math, main, mathord, \"\\u03c5\", \"\\\\upsilon\");\ndefineSymbol(math, main, mathord, \"\\u03d5\", \"\\\\phi\");\ndefineSymbol(math, main, mathord, \"\\u03c7\", \"\\\\chi\");\ndefineSymbol(math, main, mathord, \"\\u03c8\", \"\\\\psi\");\ndefineSymbol(math, main, mathord, \"\\u03c9\", \"\\\\omega\");\ndefineSymbol(math, main, mathord, \"\\u03b5\", \"\\\\varepsilon\");\ndefineSymbol(math, main, mathord, \"\\u03d1\", \"\\\\vartheta\");\ndefineSymbol(math, main, mathord, \"\\u03d6\", \"\\\\varpi\");\ndefineSymbol(math, main, mathord, \"\\u03f1\", \"\\\\varrho\");\ndefineSymbol(math, main, mathord, \"\\u03c2\", \"\\\\varsigma\");\ndefineSymbol(math, main, mathord, \"\\u03c6\", \"\\\\varphi\");\ndefineSymbol(math, main, bin, \"\\u2217\", \"*\");\ndefineSymbol(math, main, bin, \"+\", \"+\");\ndefineSymbol(math, main, bin, \"\\u2212\", \"-\");\ndefineSymbol(math, main, bin, \"\\u22c5\", \"\\\\cdot\");\ndefineSymbol(math, main, bin, \"\\u2218\", \"\\\\circ\");\ndefineSymbol(math, main, bin, \"\\u00f7\", \"\\\\div\");\ndefineSymbol(math, main, bin, \"\\u00b1\", \"\\\\pm\");\ndefineSymbol(math, main, bin, \"\\u00d7\", \"\\\\times\");\ndefineSymbol(math, main, bin, \"\\u2229\", \"\\\\cap\");\ndefineSymbol(math, main, bin, \"\\u222a\", \"\\\\cup\");\ndefineSymbol(math, main, bin, \"\\u2216\", \"\\\\setminus\");\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\land\");\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\lor\");\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\wedge\");\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\vee\");\ndefineSymbol(math, main, textord, \"\\u221a\", \"\\\\surd\");\ndefineSymbol(math, main, open, \"(\", \"(\");\ndefineSymbol(math, main, open, \"[\", \"[\");\ndefineSymbol(math, main, open, \"\\u27e8\", \"\\\\langle\");\ndefineSymbol(math, main, open, \"\\u2223\", \"\\\\lvert\");\ndefineSymbol(math, main, open, \"\\u2225\", \"\\\\lVert\");\ndefineSymbol(math, main, close, \")\", \")\");\ndefineSymbol(math, main, close, \"]\", \"]\");\ndefineSymbol(math, main, close, \"?\", \"?\");\ndefineSymbol(math, main, close, \"!\", \"!\");\ndefineSymbol(math, main, close, \"\\u27e9\", \"\\\\rangle\");\ndefineSymbol(math, main, close, \"\\u2223\", \"\\\\rvert\");\ndefineSymbol(math, main, close, \"\\u2225\", \"\\\\rVert\");\ndefineSymbol(math, main, rel, \"=\", \"=\");\ndefineSymbol(math, main, rel, \"<\", \"<\");\ndefineSymbol(math, main, rel, \">\", \">\");\ndefineSymbol(math, main, rel, \":\", \":\");\ndefineSymbol(math, main, rel, \"\\u2248\", \"\\\\approx\");\ndefineSymbol(math, main, rel, \"\\u2245\", \"\\\\cong\");\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\ge\");\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\geq\");\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\gets\");\ndefineSymbol(math, main, rel, \">\", \"\\\\gt\");\ndefineSymbol(math, main, rel, \"\\u2208\", \"\\\\in\");\ndefineSymbol(math, main, rel, \"\\u2209\", \"\\\\notin\");\ndefineSymbol(math, main, rel, \"\\u2282\", \"\\\\subset\");\ndefineSymbol(math, main, rel, \"\\u2283\", \"\\\\supset\");\ndefineSymbol(math, main, rel, \"\\u2286\", \"\\\\subseteq\");\ndefineSymbol(math, main, rel, \"\\u2287\", \"\\\\supseteq\");\ndefineSymbol(math, ams, rel, \"\\u2288\", \"\\\\nsubseteq\");\ndefineSymbol(math, ams, rel, \"\\u2289\", \"\\\\nsupseteq\");\ndefineSymbol(math, main, rel, \"\\u22a8\", \"\\\\models\");\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\leftarrow\");\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\le\");\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\leq\");\ndefineSymbol(math, main, rel, \"<\", \"\\\\lt\");\ndefineSymbol(math, main, rel, \"\\u2260\", \"\\\\ne\");\ndefineSymbol(math, main, rel, \"\\u2260\", \"\\\\neq\");\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\rightarrow\");\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\to\");\ndefineSymbol(math, ams, rel, \"\\u2271\", \"\\\\ngeq\");\ndefineSymbol(math, ams, rel, \"\\u2270\", \"\\\\nleq\");\ndefineSymbol(math, main, spacing, null, \"\\\\!\");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"~\");\ndefineSymbol(math, main, spacing, null, \"\\\\,\");\ndefineSymbol(math, main, spacing, null, \"\\\\:\");\ndefineSymbol(math, main, spacing, null, \"\\\\;\");\ndefineSymbol(math, main, spacing, null, \"\\\\enspace\");\ndefineSymbol(math, main, spacing, null, \"\\\\qquad\");\ndefineSymbol(math, main, spacing, null, \"\\\\quad\");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\space\");\ndefineSymbol(math, main, punct, \",\", \",\");\ndefineSymbol(math, main, punct, \";\", \";\");\ndefineSymbol(math, main, punct, \":\", \"\\\\colon\");\ndefineSymbol(math, ams, bin, \"\\u22bc\", \"\\\\barwedge\");\ndefineSymbol(math, ams, bin, \"\\u22bb\", \"\\\\veebar\");\ndefineSymbol(math, main, bin, \"\\u2299\", \"\\\\odot\");\ndefineSymbol(math, main, bin, \"\\u2295\", \"\\\\oplus\");\ndefineSymbol(math, main, bin, \"\\u2297\", \"\\\\otimes\");\ndefineSymbol(math, main, textord, \"\\u2202\", \"\\\\partial\");\ndefineSymbol(math, main, bin, \"\\u2298\", \"\\\\oslash\");\ndefineSymbol(math, ams, bin, \"\\u229a\", \"\\\\circledcirc\");\ndefineSymbol(math, ams, bin, \"\\u22a1\", \"\\\\boxdot\");\ndefineSymbol(math, main, bin, \"\\u25b3\", \"\\\\bigtriangleup\");\ndefineSymbol(math, main, bin, \"\\u25bd\", \"\\\\bigtriangledown\");\ndefineSymbol(math, main, bin, \"\\u2020\", \"\\\\dagger\");\ndefineSymbol(math, main, bin, \"\\u22c4\", \"\\\\diamond\");\ndefineSymbol(math, main, bin, \"\\u22c6\", \"\\\\star\");\ndefineSymbol(math, main, bin, \"\\u25c3\", \"\\\\triangleleft\");\ndefineSymbol(math, main, bin, \"\\u25b9\", \"\\\\triangleright\");\ndefineSymbol(math, main, open, \"{\", \"\\\\{\");\ndefineSymbol(math, main, close, \"}\", \"\\\\}\");\ndefineSymbol(math, main, open, \"{\", \"\\\\lbrace\");\ndefineSymbol(math, main, close, \"}\", \"\\\\rbrace\");\ndefineSymbol(math, main, open, \"[\", \"\\\\lbrack\");\ndefineSymbol(math, main, close, \"]\", \"\\\\rbrack\");\ndefineSymbol(math, main, open, \"\\u230a\", \"\\\\lfloor\");\ndefineSymbol(math, main, close, \"\\u230b\", \"\\\\rfloor\");\ndefineSymbol(math, main, open, \"\\u2308\", \"\\\\lceil\");\ndefineSymbol(math, main, close, \"\\u2309\", \"\\\\rceil\");\ndefineSymbol(math, main, textord, \"\\\\\", \"\\\\backslash\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"|\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"\\\\vert\");\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\|\");\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\Vert\");\ndefineSymbol(math, main, rel, \"\\u2191\", \"\\\\uparrow\");\ndefineSymbol(math, main, rel, \"\\u21d1\", \"\\\\Uparrow\");\ndefineSymbol(math, main, rel, \"\\u2193\", \"\\\\downarrow\");\ndefineSymbol(math, main, rel, \"\\u21d3\", \"\\\\Downarrow\");\ndefineSymbol(math, main, rel, \"\\u2195\", \"\\\\updownarrow\");\ndefineSymbol(math, main, rel, \"\\u21d5\", \"\\\\Updownarrow\");\ndefineSymbol(math, math, op, \"\\u2210\", \"\\\\coprod\");\ndefineSymbol(math, math, op, \"\\u22c1\", \"\\\\bigvee\");\ndefineSymbol(math, math, op, \"\\u22c0\", \"\\\\bigwedge\");\ndefineSymbol(math, math, op, \"\\u2a04\", \"\\\\biguplus\");\ndefineSymbol(math, math, op, \"\\u22c2\", \"\\\\bigcap\");\ndefineSymbol(math, math, op, \"\\u22c3\", \"\\\\bigcup\");\ndefineSymbol(math, math, op, \"\\u222b\", \"\\\\int\");\ndefineSymbol(math, math, op, \"\\u222b\", \"\\\\intop\");\ndefineSymbol(math, math, op, \"\\u222c\", \"\\\\iint\");\ndefineSymbol(math, math, op, \"\\u222d\", \"\\\\iiint\");\ndefineSymbol(math, math, op, \"\\u220f\", \"\\\\prod\");\ndefineSymbol(math, math, op, \"\\u2211\", \"\\\\sum\");\ndefineSymbol(math, math, op, \"\\u2a02\", \"\\\\bigotimes\");\ndefineSymbol(math, math, op, \"\\u2a01\", \"\\\\bigoplus\");\ndefineSymbol(math, math, op, \"\\u2a00\", \"\\\\bigodot\");\ndefineSymbol(math, math, op, \"\\u222e\", \"\\\\oint\");\ndefineSymbol(math, math, op, \"\\u2a06\", \"\\\\bigsqcup\");\ndefineSymbol(math, math, op, \"\\u222b\", \"\\\\smallint\");\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\ldots\");\ndefineSymbol(math, main, inner, \"\\u22ef\", \"\\\\cdots\");\ndefineSymbol(math, main, inner, \"\\u22f1\", \"\\\\ddots\");\ndefineSymbol(math, main, textord, \"\\u22ee\", \"\\\\vdots\");\ndefineSymbol(math, main, accent, \"\\u00b4\", \"\\\\acute\");\ndefineSymbol(math, main, accent, \"\\u0060\", \"\\\\grave\");\ndefineSymbol(math, main, accent, \"\\u00a8\", \"\\\\ddot\");\ndefineSymbol(math, main, accent, \"\\u007e\", \"\\\\tilde\");\ndefineSymbol(math, main, accent, \"\\u00af\", \"\\\\bar\");\ndefineSymbol(math, main, accent, \"\\u02d8\", \"\\\\breve\");\ndefineSymbol(math, main, accent, \"\\u02c7\", \"\\\\check\");\ndefineSymbol(math, main, accent, \"\\u005e\", \"\\\\hat\");\ndefineSymbol(math, main, accent, \"\\u20d7\", \"\\\\vec\");\ndefineSymbol(math, main, accent, \"\\u02d9\", \"\\\\dot\");\ndefineSymbol(math, main, mathord, \"\\u0131\", \"\\\\imath\");\ndefineSymbol(math, main, mathord, \"\\u0237\", \"\\\\jmath\");\n\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \" \");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"~\");\n\n// There are lots of symbols which are the same, so we add them in afterwards.\nvar i;\nvar ch;\n\n// All of these are textords in math mode\nvar mathTextSymbols = \"0123456789/@.\\\"\";\nfor (i = 0; i < mathTextSymbols.length; i++) {\n ch = mathTextSymbols.charAt(i);\n defineSymbol(math, main, textord, ch, ch);\n}\n\n// All of these are textords in text mode\nvar textSymbols = \"0123456789`!@*()-=+[]'\\\";:?/.,\";\nfor (i = 0; i < textSymbols.length; i++) {\n ch = textSymbols.charAt(i);\n defineSymbol(text, main, textord, ch, ch);\n}\n\n// All of these are textords in text mode, and mathords in math mode\nvar letters = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";\nfor (i = 0; i < letters.length; i++) {\n ch = letters.charAt(i);\n defineSymbol(math, main, mathord, ch, ch);\n defineSymbol(text, main, textord, ch, ch);\n}\n","module.exports = __webpack_public_path__ + \"img/sending2.97d2057b.gif\";","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// lheading (---, ===)\n\n'use strict';\n\n\nmodule.exports = function lheading(state, startLine, endLine/*, silent*/) {\n var content, terminate, i, l, token, pos, max, level, marker,\n nextLine = startLine + 1,\n terminatorRules = state.md.block.ruler.getRules('paragraph');\n\n // jump line-by-line until empty one or EOF\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n //\n // Check for underline in setext header\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max) {\n marker = state.src.charCodeAt(pos);\n\n if (marker === 0x2D/* - */ || marker === 0x3D/* = */) {\n pos = state.skipChars(pos, marker);\n pos = state.skipSpaces(pos);\n\n if (pos >= max) {\n level = (marker === 0x3D/* = */ ? 1 : 2);\n break;\n }\n }\n }\n }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue; }\n\n // Some tags can terminate paragraph without empty line.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n }\n\n if (!level) {\n // Didn't find valid underline\n return false;\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n state.line = nextLine + 1;\n\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = String.fromCharCode(marker);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [ startLine, state.line - 1 ];\n token.children = [];\n\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = String.fromCharCode(marker);\n\n return true;\n};\n","module.exports = require('./lib/uslug');","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// \"Zero\" preset, with nothing enabled. Useful for manual configuring of simple\n// modes. For example, to parse bold/italic only.\n\n'use strict';\n\n\nmodule.exports = {\n options: {\n html: false, // Enable HTML tags in source\n xhtmlOut: false, // Use '/' to close single tags (
)\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with = 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","//package mp3;\n\nfunction VBRSeekInfo() {\n /**\n * What we have seen so far.\n */\n this.sum = 0;\n /**\n * How many frames we have seen in this chunk.\n */\n this.seen = 0;\n /**\n * How many frames we want to collect into one chunk.\n */\n this.want = 0;\n /**\n * Actual position in our bag.\n */\n this.pos = 0;\n /**\n * Size of our bag.\n */\n this.size = 0;\n /**\n * Pointer to our bag.\n */\n this.bag = null;\n this.nVbrNumFrames = 0;\n this.nBytesWritten = 0;\n /* VBR tag data */\n this.TotalFrameSize = 0;\n}\n\nmodule.exports = VBRSeekInfo;\n","/*\n * psymodel.c\n *\n * Copyright (c) 1999-2000 Mark Taylor\n * Copyright (c) 2001-2002 Naoki Shibata\n * Copyright (c) 2000-2003 Takehiro Tominaga\n * Copyright (c) 2000-2008 Robert Hegemann\n * Copyright (c) 2000-2005 Gabriel Bouvigne\n * Copyright (c) 2000-2005 Alexander Leidinger\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: PsyModel.java,v 1.27 2011/05/24 20:48:06 kenchis Exp $ */\n\n\n/*\n PSYCHO ACOUSTICS\n\n\n This routine computes the psycho acoustics, delayed by one granule.\n\n Input: buffer of PCM data (1024 samples).\n\n This window should be centered over the 576 sample granule window.\n The routine will compute the psycho acoustics for\n this granule, but return the psycho acoustics computed\n for the *previous* granule. This is because the block\n type of the previous granule can only be determined\n after we have computed the psycho acoustics for the following\n granule.\n\n Output: maskings and energies for each scalefactor band.\n block type, PE, and some correlation measures.\n The PE is used by CBR modes to determine if extra bits\n from the bit reservoir should be used. The correlation\n measures are used to determine mid/side or regular stereo.\n */\n/*\n Notation:\n\n barks: a non-linear frequency scale. Mapping from frequency to\n barks is given by freq2bark()\n\n scalefactor bands: The spectrum (frequencies) are broken into\n SBMAX \"scalefactor bands\". Thes bands\n are determined by the MPEG ISO spec. In\n the noise shaping/quantization code, we allocate\n bits among the partition bands to achieve the\n best possible quality\n\n partition bands: The spectrum is also broken into about\n 64 \"partition bands\". Each partition\n band is about .34 barks wide. There are about 2-5\n partition bands for each scalefactor band.\n\n LAME computes all psycho acoustic information for each partition\n band. Then at the end of the computations, this information\n is mapped to scalefactor bands. The energy in each scalefactor\n band is taken as the sum of the energy in all partition bands\n which overlap the scalefactor band. The maskings can be computed\n in the same way (and thus represent the average masking in that band)\n or by taking the minmum value multiplied by the number of\n partition bands used (which represents a minimum masking in that band).\n */\n/*\n The general outline is as follows:\n\n 1. compute the energy in each partition band\n 2. compute the tonality in each partition band\n 3. compute the strength of each partion band \"masker\"\n 4. compute the masking (via the spreading function applied to each masker)\n 5. Modifications for mid/side masking.\n\n Each partition band is considiered a \"masker\". The strength\n of the i'th masker in band j is given by:\n\n s3(bark(i)-bark(j))*strength(i)\n\n The strength of the masker is a function of the energy and tonality.\n The more tonal, the less masking. LAME uses a simple linear formula\n (controlled by NMT and TMN) which says the strength is given by the\n energy divided by a linear function of the tonality.\n */\n/*\n s3() is the \"spreading function\". It is given by a formula\n determined via listening tests.\n\n The total masking in the j'th partition band is the sum over\n all maskings i. It is thus given by the convolution of\n the strength with s3(), the \"spreading function.\"\n\n masking(j) = sum_over_i s3(i-j)*strength(i) = s3 o strength\n\n where \"o\" = convolution operator. s3 is given by a formula determined\n via listening tests. It is normalized so that s3 o 1 = 1.\n\n Note: instead of a simple convolution, LAME also has the\n option of using \"additive masking\"\n\n The most critical part is step 2, computing the tonality of each\n partition band. LAME has two tonality estimators. The first\n is based on the ISO spec, and measures how predictiable the\n signal is over time. The more predictable, the more tonal.\n The second measure is based on looking at the spectrum of\n a single granule. The more peaky the spectrum, the more\n tonal. By most indications, the latter approach is better.\n\n Finally, in step 5, the maskings for the mid and side\n channel are possibly increased. Under certain circumstances,\n noise in the mid & side channels is assumed to also\n be masked by strong maskers in the L or R channels.\n\n\n Other data computed by the psy-model:\n\n ms_ratio side-channel / mid-channel masking ratio (for previous granule)\n ms_ratio_next side-channel / mid-channel masking ratio for this granule\n\n percep_entropy[2] L and R values (prev granule) of PE - A measure of how\n much pre-echo is in the previous granule\n percep_entropy_MS[2] mid and side channel values (prev granule) of percep_entropy\n energy[4] L,R,M,S energy in each channel, prev granule\n blocktype_d[2] block type to use for previous granule\n */\n//package mp3;\n\n//import java.util.Arrays;\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar FFT = require(\"./FFT.js\");\nvar Encoder = require(\"./Encoder.js\");\n\nfunction PsyModel() {\n\n var fft = new FFT();\n\n var LOG10 = 2.30258509299404568402;\n\n var rpelev = 2;\n var rpelev2 = 16;\n var rpelev_s = 2;\n var rpelev2_s = 16;\n\n /* size of each partition band, in barks: */\n var DELBARK = .34;\n\n /* tuned for output level (sensitive to energy scale) */\n var VO_SCALE = (1. / (14752 * 14752) / (Encoder.BLKSIZE / 2));\n\n var temporalmask_sustain_sec = 0.01;\n\n var NS_PREECHO_ATT0 = 0.8;\n var NS_PREECHO_ATT1 = 0.6;\n var NS_PREECHO_ATT2 = 0.3;\n\n var NS_MSFIX = 3.5;\n\n var NSATTACKTHRE = 4.4;\n var NSATTACKTHRE_S = 25;\n\n var NSFIRLEN = 21;\n\n /* size of each partition band, in barks: */\n var LN_TO_LOG10 = 0.2302585093;\n\n function NON_LINEAR_SCALE_ENERGY(x) {\n return x;\n }\n\n /**\n *

\n     *       L3psycho_anal.  Compute psycho acoustics.\n     *\n     *       Data returned to the calling program must be delayed by one\n     *       granule.\n     *\n     *       This is done in two places.\n     *       If we do not need to know the blocktype, the copying\n     *       can be done here at the top of the program: we copy the data for\n     *       the last granule (computed during the last call) before it is\n     *       overwritten with the new data.  It looks like this:\n     *\n     *       0. static psymodel_data\n     *       1. calling_program_data = psymodel_data\n     *       2. compute psymodel_data\n     *\n     *       For data which needs to know the blocktype, the copying must be\n     *       done at the end of this loop, and the old values must be saved:\n     *\n     *       0. static psymodel_data_old\n     *       1. compute psymodel_data\n     *       2. compute possible block type of this granule\n     *       3. compute final block type of previous granule based on #2.\n     *       4. calling_program_data = psymodel_data_old\n     *       5. psymodel_data_old = psymodel_data\n     *     psycho_loudness_approx\n     *       jd - 2001 mar 12\n     *    in:  energy   - BLKSIZE/2 elements of frequency magnitudes ^ 2\n     *         gfp      - uses out_samplerate, ATHtype (also needed for ATHformula)\n     *    returns: loudness^2 approximation, a positive value roughly tuned for a value\n     *             of 1.0 for signals near clipping.\n     *    notes:   When calibrated, feeding this function binary white noise at sample\n     *             values +32767 or -32768 should return values that approach 3.\n     *             ATHformula is used to approximate an equal loudness curve.\n     *    future:  Data indicates that the shape of the equal loudness curve varies\n     *             with intensity.  This function might be improved by using an equal\n     *             loudness curve shaped for typical playback levels (instead of the\n     *             ATH, that is shaped for the threshold).  A flexible realization might\n     *             simply bend the existing ATH curve to achieve the desired shape.\n     *             However, the potential gain may not be enough to justify an effort.\n     * 
\n */\n function psycho_loudness_approx(energy, gfc) {\n var loudness_power = 0.0;\n /* apply weights to power in freq. bands */\n for (var i = 0; i < Encoder.BLKSIZE / 2; ++i)\n loudness_power += energy[i] * gfc.ATH.eql_w[i];\n loudness_power *= VO_SCALE;\n\n return loudness_power;\n }\n\n function compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, wsamp_lPos, wsamp_s, wsamp_sPos, gr_out, chn, buffer, bufPos) {\n var gfc = gfp.internal_flags;\n if (chn < 2) {\n fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n }\n /* FFT data for mid and side channel is derived from L & R */\n else if (chn == 2) {\n for (var j = Encoder.BLKSIZE - 1; j >= 0; --j) {\n var l = wsamp_l[wsamp_lPos + 0][j];\n var r = wsamp_l[wsamp_lPos + 1][j];\n wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util.SQRT2 * 0.5;\n wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util.SQRT2 * 0.5;\n }\n for (var b = 2; b >= 0; --b) {\n for (var j = Encoder.BLKSIZE_s - 1; j >= 0; --j) {\n var l = wsamp_s[wsamp_sPos + 0][b][j];\n var r = wsamp_s[wsamp_sPos + 1][b][j];\n wsamp_s[wsamp_sPos + 0][b][j] = (l + r) * Util.SQRT2 * 0.5;\n wsamp_s[wsamp_sPos + 1][b][j] = (l - r) * Util.SQRT2 * 0.5;\n }\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n fftenergy[0] *= fftenergy[0];\n\n for (var j = Encoder.BLKSIZE / 2 - 1; j >= 0; --j) {\n var re = (wsamp_l[wsamp_lPos + 0])[Encoder.BLKSIZE / 2 - j];\n var im = (wsamp_l[wsamp_lPos + 0])[Encoder.BLKSIZE / 2 + j];\n fftenergy[Encoder.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n for (var b = 2; b >= 0; --b) {\n fftenergy_s[b][0] = (wsamp_s[wsamp_sPos + 0])[b][0];\n fftenergy_s[b][0] *= fftenergy_s[b][0];\n for (var j = Encoder.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n var re = (wsamp_s[wsamp_sPos + 0])[b][Encoder.BLKSIZE_s\n / 2 - j];\n var im = (wsamp_s[wsamp_sPos + 0])[b][Encoder.BLKSIZE_s\n / 2 + j];\n fftenergy_s[b][Encoder.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n }\n /* total energy */\n {\n var totalenergy = 0.0;\n for (var j = 11; j < Encoder.HBLKSIZE; j++)\n totalenergy += fftenergy[j];\n\n gfc.tot_ener[chn] = totalenergy;\n }\n\n if (gfp.analysis) {\n for (var j = 0; j < Encoder.HBLKSIZE; j++) {\n gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n }\n gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n }\n\n /*********************************************************************\n * compute loudness approximation (used for ATH auto-level adjustment)\n *********************************************************************/\n if (gfp.athaa_loudapprox == 2 && chn < 2) {\n // no loudness for mid/side ch\n gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n }\n }\n\n /* mask_add optimization */\n /* init the limit values used to avoid computing log in mask_add when it is not necessary */\n\n /**\n *
\n     *  For example, with i = 10*log10(m2/m1)/10*16         (= log10(m2/m1)*16)\n     *\n     * abs(i)>8 is equivalent (as i is an integer) to\n     * abs(i)>=9\n     * i>=9 || i<=-9\n     * equivalent to (as i is the biggest integer smaller than log10(m2/m1)*16\n     * or the smallest integer bigger than log10(m2/m1)*16 depending on the sign of log10(m2/m1)*16)\n     * log10(m2/m1)>=9/16 || log10(m2/m1)<=-9/16\n     * exp10 is strictly increasing thus this is equivalent to\n     * m2/m1 >= 10^(9/16) || m2/m1<=10^(-9/16) which are comparisons to constants\n     * 
\n */\n\n /**\n * as in if(i>8)\n */\n var I1LIMIT = 8;\n /**\n * as in if(i>24) . changed 23\n */\n var I2LIMIT = 23;\n /**\n * as in if(m<15)\n */\n var MLIMIT = 15;\n\n var ma_max_i1;\n var ma_max_i2;\n var ma_max_m;\n\n /**\n * This is the masking table:
\n * According to tonality, values are going from 0dB (TMN) to 9.3dB (NMT).
\n * After additive masking computation, 8dB are added, so final values are\n * going from 8dB to 17.3dB\n *\n * pow(10, -0.0..-0.6)\n */\n var tab = [1.0, 0.79433, 0.63096, 0.63096,\n 0.63096, 0.63096, 0.63096, 0.25119, 0.11749];\n\n function init_mask_add_max_values() {\n ma_max_i1 = Math.pow(10, (I1LIMIT + 1) / 16.0);\n ma_max_i2 = Math.pow(10, (I2LIMIT + 1) / 16.0);\n ma_max_m = Math.pow(10, (MLIMIT) / 10.0);\n }\n\n var table1 = [3.3246 * 3.3246,\n 3.23837 * 3.23837, 3.15437 * 3.15437, 3.00412 * 3.00412,\n 2.86103 * 2.86103, 2.65407 * 2.65407, 2.46209 * 2.46209,\n 2.284 * 2.284, 2.11879 * 2.11879, 1.96552 * 1.96552,\n 1.82335 * 1.82335, 1.69146 * 1.69146, 1.56911 * 1.56911,\n 1.46658 * 1.46658, 1.37074 * 1.37074, 1.31036 * 1.31036,\n 1.25264 * 1.25264, 1.20648 * 1.20648, 1.16203 * 1.16203,\n 1.12765 * 1.12765, 1.09428 * 1.09428, 1.0659 * 1.0659,\n 1.03826 * 1.03826, 1.01895 * 1.01895, 1];\n\n var table2 = [1.33352 * 1.33352,\n 1.35879 * 1.35879, 1.38454 * 1.38454, 1.39497 * 1.39497,\n 1.40548 * 1.40548, 1.3537 * 1.3537, 1.30382 * 1.30382,\n 1.22321 * 1.22321, 1.14758 * 1.14758, 1];\n\n var table3 = [2.35364 * 2.35364,\n 2.29259 * 2.29259, 2.23313 * 2.23313, 2.12675 * 2.12675,\n 2.02545 * 2.02545, 1.87894 * 1.87894, 1.74303 * 1.74303,\n 1.61695 * 1.61695, 1.49999 * 1.49999, 1.39148 * 1.39148,\n 1.29083 * 1.29083, 1.19746 * 1.19746, 1.11084 * 1.11084,\n 1.03826 * 1.03826];\n\n /**\n * addition of simultaneous masking Naoki Shibata 2000/7\n */\n function mask_add(m1, m2, kk, b, gfc, shortblock) {\n var ratio;\n\n if (m2 > m1) {\n if (m2 < (m1 * ma_max_i2))\n ratio = m2 / m1;\n else\n return (m1 + m2);\n } else {\n if (m1 >= (m2 * ma_max_i2))\n return (m1 + m2);\n ratio = m1 / m2;\n }\n\n /* Should always be true, just checking */\n assert(m1 >= 0);\n assert(m2 >= 0);\n\n m1 += m2;\n //if (((long)(b + 3) & 0xffffffff) <= 3 + 3) {\n if ((b + 3) <= 3 + 3) {\n /* approximately, 1 bark = 3 partitions */\n /* 65% of the cases */\n /* originally 'if(i > 8)' */\n if (ratio >= ma_max_i1) {\n /* 43% of the total */\n return m1;\n }\n\n /* 22% of the total */\n var i = 0 | (Util.FAST_LOG10_X(ratio, 16.0));\n return m1 * table2[i];\n }\n\n /**\n *
\n         * m<15 equ log10((m1+m2)/gfc.ATH.cb[k])<1.5\n         * equ (m1+m2)/gfc.ATH.cb[k]<10^1.5\n         * equ (m1+m2)<10^1.5 * gfc.ATH.cb[k]\n         * 
\n */\n var i = 0 | Util.FAST_LOG10_X(ratio, 16.0);\n if (shortblock != 0) {\n m2 = gfc.ATH.cb_s[kk] * gfc.ATH.adjust;\n } else {\n m2 = gfc.ATH.cb_l[kk] * gfc.ATH.adjust;\n }\n assert(m2 >= 0);\n if (m1 < ma_max_m * m2) {\n /* 3% of the total */\n /* Originally if (m > 0) { */\n if (m1 > m2) {\n var f, r;\n\n f = 1.0;\n if (i <= 13)\n f = table3[i];\n\n r = Util.FAST_LOG10_X(m1 / m2, 10.0 / 15.0);\n return m1 * ((table1[i] - f) * r + f);\n }\n\n if (i > 13)\n return m1;\n\n return m1 * table3[i];\n }\n\n /* 10% of total */\n return m1 * table1[i];\n }\n\n var table2_ = [1.33352 * 1.33352,\n 1.35879 * 1.35879, 1.38454 * 1.38454, 1.39497 * 1.39497,\n 1.40548 * 1.40548, 1.3537 * 1.3537, 1.30382 * 1.30382,\n 1.22321 * 1.22321, 1.14758 * 1.14758, 1];\n\n /**\n * addition of simultaneous masking Naoki Shibata 2000/7\n */\n function vbrpsy_mask_add(m1, m2, b) {\n var ratio;\n\n if (m1 < 0) {\n m1 = 0;\n }\n if (m2 < 0) {\n m2 = 0;\n }\n if (m1 <= 0) {\n return m2;\n }\n if (m2 <= 0) {\n return m1;\n }\n if (m2 > m1) {\n ratio = m2 / m1;\n } else {\n ratio = m1 / m2;\n }\n if (-2 <= b && b <= 2) {\n /* approximately, 1 bark = 3 partitions */\n /* originally 'if(i > 8)' */\n if (ratio >= ma_max_i1) {\n return m1 + m2;\n } else {\n var i = 0 | (Util.FAST_LOG10_X(ratio, 16.0));\n return (m1 + m2) * table2_[i];\n }\n }\n if (ratio < ma_max_i2) {\n return m1 + m2;\n }\n if (m1 < m2) {\n m1 = m2;\n }\n return m1;\n }\n\n /**\n * compute interchannel masking effects\n */\n function calc_interchannel_masking(gfp, ratio) {\n var gfc = gfp.internal_flags;\n if (gfc.channels_out > 1) {\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n var l = gfc.thm[0].l[sb];\n var r = gfc.thm[1].l[sb];\n gfc.thm[0].l[sb] += r * ratio;\n gfc.thm[1].l[sb] += l * ratio;\n }\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var l = gfc.thm[0].s[sb][sblock];\n var r = gfc.thm[1].s[sb][sblock];\n gfc.thm[0].s[sb][sblock] += r * ratio;\n gfc.thm[1].s[sb][sblock] += l * ratio;\n }\n }\n }\n }\n\n /**\n * compute M/S thresholds from Johnston & Ferreira 1992 ICASSP paper\n */\n function msfix1(gfc) {\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n /* use this fix if L & R masking differs by 2db or less */\n /* if db = 10*log10(x2/x1) < 2 */\n /* if (x2 < 1.58*x1) { */\n if (gfc.thm[0].l[sb] > 1.58 * gfc.thm[1].l[sb]\n || gfc.thm[1].l[sb] > 1.58 * gfc.thm[0].l[sb])\n continue;\n var mld = gfc.mld_l[sb] * gfc.en[3].l[sb];\n var rmid = Math.max(gfc.thm[2].l[sb],\n Math.min(gfc.thm[3].l[sb], mld));\n\n mld = gfc.mld_l[sb] * gfc.en[2].l[sb];\n var rside = Math.max(gfc.thm[3].l[sb],\n Math.min(gfc.thm[2].l[sb], mld));\n gfc.thm[2].l[sb] = rmid;\n gfc.thm[3].l[sb] = rside;\n }\n\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n if (gfc.thm[0].s[sb][sblock] > 1.58 * gfc.thm[1].s[sb][sblock]\n || gfc.thm[1].s[sb][sblock] > 1.58 * gfc.thm[0].s[sb][sblock])\n continue;\n var mld = gfc.mld_s[sb] * gfc.en[3].s[sb][sblock];\n var rmid = Math.max(gfc.thm[2].s[sb][sblock],\n Math.min(gfc.thm[3].s[sb][sblock], mld));\n\n mld = gfc.mld_s[sb] * gfc.en[2].s[sb][sblock];\n var rside = Math.max(gfc.thm[3].s[sb][sblock],\n Math.min(gfc.thm[2].s[sb][sblock], mld));\n\n gfc.thm[2].s[sb][sblock] = rmid;\n gfc.thm[3].s[sb][sblock] = rside;\n }\n }\n }\n\n /**\n * Adjust M/S maskings if user set \"msfix\"\n *\n * Naoki Shibata 2000\n */\n function ns_msfix(gfc, msfix, athadjust) {\n var msfix2 = msfix;\n var athlower = Math.pow(10, athadjust);\n\n msfix *= 2.0;\n msfix2 *= 2.0;\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n var thmLR, thmM, thmS, ath;\n ath = (gfc.ATH.cb_l[gfc.bm_l[sb]]) * athlower;\n thmLR = Math.min(Math.max(gfc.thm[0].l[sb], ath),\n Math.max(gfc.thm[1].l[sb], ath));\n thmM = Math.max(gfc.thm[2].l[sb], ath);\n thmS = Math.max(gfc.thm[3].l[sb], ath);\n if (thmLR * msfix < thmM + thmS) {\n var f = thmLR * msfix2 / (thmM + thmS);\n thmM *= f;\n thmS *= f;\n assert(thmM + thmS > 0);\n }\n gfc.thm[2].l[sb] = Math.min(thmM, gfc.thm[2].l[sb]);\n gfc.thm[3].l[sb] = Math.min(thmS, gfc.thm[3].l[sb]);\n }\n\n athlower *= ( Encoder.BLKSIZE_s / Encoder.BLKSIZE);\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var thmLR, thmM, thmS, ath;\n ath = (gfc.ATH.cb_s[gfc.bm_s[sb]]) * athlower;\n thmLR = Math.min(Math.max(gfc.thm[0].s[sb][sblock], ath),\n Math.max(gfc.thm[1].s[sb][sblock], ath));\n thmM = Math.max(gfc.thm[2].s[sb][sblock], ath);\n thmS = Math.max(gfc.thm[3].s[sb][sblock], ath);\n\n if (thmLR * msfix < thmM + thmS) {\n var f = thmLR * msfix / (thmM + thmS);\n thmM *= f;\n thmS *= f;\n assert(thmM + thmS > 0);\n }\n gfc.thm[2].s[sb][sblock] = Math.min(gfc.thm[2].s[sb][sblock],\n thmM);\n gfc.thm[3].s[sb][sblock] = Math.min(gfc.thm[3].s[sb][sblock],\n thmS);\n }\n }\n }\n\n /**\n * short block threshold calculation (part 2)\n *\n * partition band bo_s[sfb] is at the transition from scalefactor band sfb\n * to the next one sfb+1; enn and thmm have to be split between them\n */\n function convert_partition2scalefac_s(gfc, eb, thr, chn, sblock) {\n var sb, b;\n var enn = 0.0;\n var thmm = 0.0;\n for (sb = b = 0; sb < Encoder.SBMAX_s; ++b, ++sb) {\n var bo_s_sb = gfc.bo_s[sb];\n var npart_s = gfc.npart_s;\n var b_lim = bo_s_sb < npart_s ? bo_s_sb : npart_s;\n while (b < b_lim) {\n assert(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert(thr[b] >= 0);\n enn += eb[b];\n thmm += thr[b];\n b++;\n }\n gfc.en[chn].s[sb][sblock] = enn;\n gfc.thm[chn].s[sb][sblock] = thmm;\n\n if (b >= npart_s) {\n ++sb;\n break;\n }\n assert(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert(thr[b] >= 0);\n {\n /* at transition sfb . sfb+1 */\n var w_curr = gfc.PSY.bo_s_weight[sb];\n var w_next = 1.0 - w_curr;\n enn = w_curr * eb[b];\n thmm = w_curr * thr[b];\n gfc.en[chn].s[sb][sblock] += enn;\n gfc.thm[chn].s[sb][sblock] += thmm;\n enn = w_next * eb[b];\n thmm = w_next * thr[b];\n }\n }\n /* zero initialize the rest */\n for (; sb < Encoder.SBMAX_s; ++sb) {\n gfc.en[chn].s[sb][sblock] = 0;\n gfc.thm[chn].s[sb][sblock] = 0;\n }\n }\n\n /**\n * longblock threshold calculation (part 2)\n */\n function convert_partition2scalefac_l(gfc, eb, thr, chn) {\n var sb, b;\n var enn = 0.0;\n var thmm = 0.0;\n for (sb = b = 0; sb < Encoder.SBMAX_l; ++b, ++sb) {\n var bo_l_sb = gfc.bo_l[sb];\n var npart_l = gfc.npart_l;\n var b_lim = bo_l_sb < npart_l ? bo_l_sb : npart_l;\n while (b < b_lim) {\n assert(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert(thr[b] >= 0);\n enn += eb[b];\n thmm += thr[b];\n b++;\n }\n gfc.en[chn].l[sb] = enn;\n gfc.thm[chn].l[sb] = thmm;\n\n if (b >= npart_l) {\n ++sb;\n break;\n }\n assert(eb[b] >= 0);\n assert(thr[b] >= 0);\n {\n /* at transition sfb . sfb+1 */\n var w_curr = gfc.PSY.bo_l_weight[sb];\n var w_next = 1.0 - w_curr;\n enn = w_curr * eb[b];\n thmm = w_curr * thr[b];\n gfc.en[chn].l[sb] += enn;\n gfc.thm[chn].l[sb] += thmm;\n enn = w_next * eb[b];\n thmm = w_next * thr[b];\n }\n }\n /* zero initialize the rest */\n for (; sb < Encoder.SBMAX_l; ++sb) {\n gfc.en[chn].l[sb] = 0;\n gfc.thm[chn].l[sb] = 0;\n }\n }\n\n function compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n var gfc = gfp.internal_flags;\n var j, b;\n\n for (b = j = 0; b < gfc.npart_s; ++b) {\n var ebb = 0, m = 0;\n var n = gfc.numlines_s[b];\n for (var i = 0; i < n; ++i, ++j) {\n var el = fftenergy_s[sblock][j];\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n }\n assert(b == gfc.npart_s);\n assert(j == 129);\n for (j = b = 0; b < gfc.npart_s; b++) {\n var kk = gfc.s3ind_s[b][0];\n var ecb = gfc.s3_ss[j++] * eb[kk];\n ++kk;\n while (kk <= gfc.s3ind_s[b][1]) {\n ecb += gfc.s3_ss[j] * eb[kk];\n ++j;\n ++kk;\n }\n\n { /* limit calculated threshold by previous granule */\n var x = rpelev_s * gfc.nb_s1[chn][b];\n thr[b] = Math.min(ecb, x);\n }\n if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE) {\n /* limit calculated threshold by even older granule */\n var x = rpelev2_s * gfc.nb_s2[chn][b];\n var y = thr[b];\n thr[b] = Math.min(x, y);\n }\n\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = ecb;\n assert(thr[b] >= 0);\n }\n for (; b <= Encoder.CBANDS; ++b) {\n eb[b] = 0;\n thr[b] = 0;\n }\n }\n\n function block_type_set(gfp, uselongblock, blocktype_d, blocktype) {\n var gfc = gfp.internal_flags;\n\n if (gfp.short_blocks == ShortBlock.short_block_coupled\n /* force both channels to use the same block type */\n /* this is necessary if the frame is to be encoded in ms_stereo. */\n /* But even without ms_stereo, FhG does this */\n && !(uselongblock[0] != 0 && uselongblock[1] != 0))\n uselongblock[0] = uselongblock[1] = 0;\n\n /*\n * update the blocktype of the previous granule, since it depends on\n * what happend in this granule\n */\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n blocktype[chn] = Encoder.NORM_TYPE;\n /* disable short blocks */\n if (gfp.short_blocks == ShortBlock.short_block_dispensed)\n uselongblock[chn] = 1;\n if (gfp.short_blocks == ShortBlock.short_block_forced)\n uselongblock[chn] = 0;\n\n if (uselongblock[chn] != 0) {\n /* no attack : use long blocks */\n assert(gfc.blocktype_old[chn] != Encoder.START_TYPE);\n if (gfc.blocktype_old[chn] == Encoder.SHORT_TYPE)\n blocktype[chn] = Encoder.STOP_TYPE;\n } else {\n /* attack : use short blocks */\n blocktype[chn] = Encoder.SHORT_TYPE;\n if (gfc.blocktype_old[chn] == Encoder.NORM_TYPE) {\n gfc.blocktype_old[chn] = Encoder.START_TYPE;\n }\n if (gfc.blocktype_old[chn] == Encoder.STOP_TYPE)\n gfc.blocktype_old[chn] = Encoder.SHORT_TYPE;\n }\n\n blocktype_d[chn] = gfc.blocktype_old[chn];\n // value returned to calling program\n gfc.blocktype_old[chn] = blocktype[chn];\n // save for next call to l3psy_anal\n }\n }\n\n function NS_INTERP(x, y, r) {\n /* was pow((x),(r))*pow((y),1-(r)) */\n if (r >= 1.0) {\n /* 99.7% of the time */\n return x;\n }\n if (r <= 0.0)\n return y;\n if (y > 0.0) {\n /* rest of the time */\n return (Math.pow(x / y, r) * y);\n }\n /* never happens */\n return 0.0;\n }\n\n /**\n * these values are tuned only for 44.1kHz...\n */\n var regcoef_s = [11.8, 13.6, 17.2, 32, 46.5,\n 51.3, 57.5, 67.1, 71.5, 84.6, 97.6, 130,\n /* 255.8 */\n ];\n\n function pecalc_s(mr, masking_lower) {\n var pe_s = 1236.28 / 4;\n for (var sb = 0; sb < Encoder.SBMAX_s - 1; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var thm = mr.thm.s[sb][sblock];\n assert(sb < regcoef_s.length);\n if (thm > 0.0) {\n var x = thm * masking_lower;\n var en = mr.en.s[sb][sblock];\n if (en > x) {\n if (en > x * 1e10) {\n pe_s += regcoef_s[sb] * (10.0 * LOG10);\n } else {\n assert(x > 0);\n pe_s += regcoef_s[sb] * Util.FAST_LOG10(en / x);\n }\n }\n }\n }\n }\n\n return pe_s;\n }\n\n /**\n * these values are tuned only for 44.1kHz...\n */\n var regcoef_l = [6.8, 5.8, 5.8, 6.4, 6.5, 9.9,\n 12.1, 14.4, 15, 18.9, 21.6, 26.9, 34.2, 40.2, 46.8, 56.5,\n 60.7, 73.9, 85.7, 93.4, 126.1,\n /* 241.3 */\n ];\n\n function pecalc_l(mr, masking_lower) {\n var pe_l = 1124.23 / 4;\n for (var sb = 0; sb < Encoder.SBMAX_l - 1; sb++) {\n var thm = mr.thm.l[sb];\n assert(sb < regcoef_l.length);\n if (thm > 0.0) {\n var x = thm * masking_lower;\n var en = mr.en.l[sb];\n if (en > x) {\n if (en > x * 1e10) {\n pe_l += regcoef_l[sb] * (10.0 * LOG10);\n } else {\n assert(x > 0);\n pe_l += regcoef_l[sb] * Util.FAST_LOG10(en / x);\n }\n }\n }\n }\n return pe_l;\n }\n\n function calc_energy(gfc, fftenergy, eb, max, avg) {\n var b, j;\n\n for (b = j = 0; b < gfc.npart_l; ++b) {\n var ebb = 0, m = 0;\n var i;\n for (i = 0; i < gfc.numlines_l[b]; ++i, ++j) {\n var el = fftenergy[j];\n assert(el >= 0);\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n max[b] = m;\n avg[b] = ebb * gfc.rnumlines_l[b];\n assert(gfc.rnumlines_l[b] >= 0);\n assert(ebb >= 0);\n assert(eb[b] >= 0);\n assert(max[b] >= 0);\n assert(avg[b] >= 0);\n }\n }\n\n function calc_mask_index_l(gfc, max, avg, mask_idx) {\n var last_tab_entry = tab.length - 1;\n var b = 0;\n var a = avg[b] + avg[b + 1];\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert((gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n\n for (b = 1; b < gfc.npart_l - 1; b++) {\n a = avg[b - 1] + avg[b] + avg[b + 1];\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert((gfc.numlines_l[b - 1] + gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1) > 0);\n a = 20.0\n * (m * 3.0 - a)\n / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b]\n + gfc.numlines_l[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n }\n assert(b > 0);\n assert(b == gfc.npart_l - 1);\n\n a = avg[b - 1] + avg[b];\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n assert((gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n assert(b == (gfc.npart_l - 1));\n }\n\n var fircoef = [\n -8.65163e-18 * 2, -0.00851586 * 2, -6.74764e-18 * 2, 0.0209036 * 2,\n -3.36639e-17 * 2, -0.0438162 * 2, -1.54175e-17 * 2, 0.0931738 * 2,\n -5.52212e-17 * 2, -0.313819 * 2\n ];\n\n this.L3psycho_anal_ns = function (gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n /*\n * to get a good cache performance, one has to think about the sequence,\n * in which the variables are used.\n */\n var gfc = gfp.internal_flags;\n\n /* fft and energy calculation */\n var wsamp_L = new_float_n([2, Encoder.BLKSIZE]);\n var wsamp_S = new_float_n([2, 3, Encoder.BLKSIZE_s]);\n\n /* convolution */\n var eb_l = new_float(Encoder.CBANDS + 1);\n var eb_s = new_float(Encoder.CBANDS + 1);\n var thr = new_float(Encoder.CBANDS + 2);\n\n /* block type */\n var blocktype = new_int(2), uselongblock = new_int(2);\n\n /* usual variables like loop indices, etc.. */\n var numchn, chn;\n var b, i, j, k;\n var sb, sblock;\n\n /* variables used for --nspsytune */\n var ns_hpfsmpl = new_float_n([2, 576]);\n var pcfact;\n var mask_idx_l = new_int(Encoder.CBANDS + 2), mask_idx_s = new_int(Encoder.CBANDS + 2);\n\n Arrays.fill(mask_idx_s, 0);\n\n numchn = gfc.channels_out;\n /* chn=2 and 3 = Mid and Side channels */\n if (gfp.mode == MPEGMode.JOINT_STEREO)\n numchn = 4;\n\n if (gfp.VBR == VbrMode.vbr_off)\n pcfact = gfc.ResvMax == 0 ? 0 : ( gfc.ResvSize)\n / gfc.ResvMax * 0.5;\n else if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh\n || gfp.VBR == VbrMode.vbr_mt) {\n pcfact = 0.6;\n } else\n pcfact = 1.0;\n\n /**********************************************************************\n * Apply HPF of fs/4 to the input signal. This is used for attack\n * detection / handling.\n **********************************************************************/\n /* Don't copy the input buffer into a temporary buffer */\n /* unroll the loop 2 times */\n for (chn = 0; chn < gfc.channels_out; chn++) {\n /* apply high pass filter of fs/4 */\n var firbuf = buffer[chn];\n var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n assert(fircoef.length == ((NSFIRLEN - 1) / 2));\n for (i = 0; i < 576; i++) {\n var sum1, sum2;\n sum1 = firbuf[firbufPos + i + 10];\n sum2 = 0.0;\n for (j = 0; j < ((NSFIRLEN - 1) / 2) - 1; j += 2) {\n sum1 += fircoef[j]\n * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i\n + NSFIRLEN - j]);\n sum2 += fircoef[j + 1]\n * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos\n + i + NSFIRLEN - j - 1]);\n }\n ns_hpfsmpl[chn][i] = sum1 + sum2;\n }\n masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n if (numchn > 2) {\n /* MS maskings */\n /* percep_MS_entropy [chn-2] = gfc . pe [chn]; */\n masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n }\n }\n\n for (chn = 0; chn < numchn; chn++) {\n var wsamp_l;\n var wsamp_s;\n var en_subshort = new_float(12);\n var en_short = [0, 0, 0, 0];\n var attack_intensity = new_float(12);\n var ns_uselongblock = 1;\n var attackThreshold;\n var max = new_float(Encoder.CBANDS), avg = new_float(Encoder.CBANDS);\n var ns_attacks = [0, 0, 0, 0];\n var fftenergy = new_float(Encoder.HBLKSIZE);\n var fftenergy_s = new_float_n([3, Encoder.HBLKSIZE_s]);\n\n /*\n * rh 20040301: the following loops do access one off the limits so\n * I increase the array dimensions by one and initialize the\n * accessed values to zero\n */\n assert(gfc.npart_s <= Encoder.CBANDS);\n assert(gfc.npart_l <= Encoder.CBANDS);\n\n /***************************************************************\n * determine the block type (window type)\n ***************************************************************/\n /* calculate energies of each sub-shortblocks */\n for (i = 0; i < 3; i++) {\n en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n assert(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n attack_intensity[i] = en_subshort[i]\n / gfc.nsPsy.last_en_subshort[chn][i + 4];\n en_short[0] += en_subshort[i];\n }\n\n if (chn == 2) {\n for (i = 0; i < 576; i++) {\n var l, r;\n l = ns_hpfsmpl[0][i];\n r = ns_hpfsmpl[1][i];\n ns_hpfsmpl[0][i] = l + r;\n ns_hpfsmpl[1][i] = l - r;\n }\n }\n {\n var pf = ns_hpfsmpl[chn & 1];\n var pfPos = 0;\n for (i = 0; i < 9; i++) {\n var pfe = pfPos + 576 / 9;\n var p = 1.;\n for (; pfPos < pfe; pfPos++)\n if (p < Math.abs(pf[pfPos]))\n p = Math.abs(pf[pfPos]);\n\n gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p;\n en_short[1 + i / 3] += p;\n if (p > en_subshort[i + 3 - 2]) {\n assert(en_subshort[i + 3 - 2] > 0);\n p = p / en_subshort[i + 3 - 2];\n } else if (en_subshort[i + 3 - 2] > p * 10.0) {\n assert(p > 0);\n p = en_subshort[i + 3 - 2] / (p * 10.0);\n } else\n p = 0.0;\n attack_intensity[i + 3] = p;\n }\n }\n\n if (gfp.analysis) {\n var x = attack_intensity[0];\n for (i = 1; i < 12; i++)\n if (x < attack_intensity[i])\n x = attack_intensity[i];\n gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n gfc.pinfo.ers_save[chn] = x;\n }\n\n /* compare energies between sub-shortblocks */\n attackThreshold = (chn == 3) ? gfc.nsPsy.attackthre_s\n : gfc.nsPsy.attackthre;\n for (i = 0; i < 12; i++)\n if (0 == ns_attacks[i / 3]\n && attack_intensity[i] > attackThreshold)\n ns_attacks[i / 3] = (i % 3) + 1;\n\n /*\n * should have energy change between short blocks, in order to avoid\n * periodic signals\n */\n for (i = 1; i < 4; i++) {\n var ratio;\n if (en_short[i - 1] > en_short[i]) {\n assert(en_short[i] > 0);\n ratio = en_short[i - 1] / en_short[i];\n } else {\n assert(en_short[i - 1] > 0);\n ratio = en_short[i] / en_short[i - 1];\n }\n if (ratio < 1.7) {\n ns_attacks[i] = 0;\n if (i == 1)\n ns_attacks[0] = 0;\n }\n }\n\n if (ns_attacks[0] != 0 && gfc.nsPsy.lastAttacks[chn] != 0)\n ns_attacks[0] = 0;\n\n if (gfc.nsPsy.lastAttacks[chn] == 3\n || (ns_attacks[0] + ns_attacks[1] + ns_attacks[2] + ns_attacks[3]) != 0) {\n ns_uselongblock = 0;\n\n if (ns_attacks[1] != 0 && ns_attacks[0] != 0)\n ns_attacks[1] = 0;\n if (ns_attacks[2] != 0 && ns_attacks[1] != 0)\n ns_attacks[2] = 0;\n if (ns_attacks[3] != 0 && ns_attacks[2] != 0)\n ns_attacks[3] = 0;\n }\n\n if (chn < 2) {\n uselongblock[chn] = ns_uselongblock;\n } else {\n if (ns_uselongblock == 0) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n }\n\n /*\n * there is a one granule delay. Copy maskings computed last call\n * into masking_ratio to return to calling program.\n */\n energy[chn] = gfc.tot_ener[chn];\n\n /*********************************************************************\n * compute FFTs\n *********************************************************************/\n wsamp_s = wsamp_S;\n wsamp_l = wsamp_L;\n compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, (chn & 1),\n wsamp_s, (chn & 1), gr_out, chn, buffer, bufPos);\n\n /*********************************************************************\n * Calculate the energy and the tonality of each partition.\n *********************************************************************/\n calc_energy(gfc, fftenergy, eb_l, max, avg);\n calc_mask_index_l(gfc, max, avg, mask_idx_l);\n /* compute masking thresholds for short blocks */\n for (sblock = 0; sblock < 3; sblock++) {\n var enn, thmm;\n compute_masking_s(gfp, fftenergy_s, eb_s, thr, chn, sblock);\n convert_partition2scalefac_s(gfc, eb_s, thr, chn, sblock);\n /**** short block pre-echo control ****/\n for (sb = 0; sb < Encoder.SBMAX_s; sb++) {\n thmm = gfc.thm[chn].s[sb][sblock];\n\n thmm *= NS_PREECHO_ATT0;\n if (ns_attacks[sblock] >= 2 || ns_attacks[sblock + 1] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT1 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n if (ns_attacks[sblock] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n } else if ((sblock != 0 && ns_attacks[sblock - 1] == 3)\n || (sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3)) {\n var idx = (sblock != 2) ? sblock + 1 : 0;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n /* pulse like signal detection for fatboy.wav and so on */\n enn = en_subshort[sblock * 3 + 3]\n + en_subshort[sblock * 3 + 4]\n + en_subshort[sblock * 3 + 5];\n if (en_subshort[sblock * 3 + 5] * 6 < enn) {\n thmm *= 0.5;\n if (en_subshort[sblock * 3 + 4] * 6 < enn)\n thmm *= 0.5;\n }\n\n gfc.thm[chn].s[sb][sblock] = thmm;\n }\n }\n gfc.nsPsy.lastAttacks[chn] = ns_attacks[2];\n\n /*********************************************************************\n * convolve the partitioned energy and unpredictability with the\n * spreading function, s3_l[b][k]\n ********************************************************************/\n k = 0;\n {\n for (b = 0; b < gfc.npart_l; b++) {\n /*\n * convolve the partitioned energy with the spreading\n * function\n */\n var kk = gfc.s3ind[b][0];\n var eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n var ecb = gfc.s3_ll[k++] * eb2;\n while (++kk <= gfc.s3ind[b][1]) {\n eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n ecb = mask_add(ecb, gfc.s3_ll[k++] * eb2, kk, kk - b,\n gfc, 0);\n }\n ecb *= 0.158489319246111;\n /* pow(10,-0.8) */\n\n /**** long block pre-echo control ****/\n /**\n *
\n                     * dont use long block pre-echo control if previous granule was\n                     * a short block.  This is to avoid the situation:\n                     * frame0:  quiet (very low masking)\n                     * frame1:  surge  (triggers short blocks)\n                     * frame2:  regular frame.  looks like pre-echo when compared to\n                     *          frame0, but all pre-echo was in frame1.\n                     * 
\n */\n /*\n * chn=0,1 L and R channels\n *\n * chn=2,3 S and M channels.\n */\n\n if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE)\n thr[b] = ecb;\n else\n thr[b] = NS_INTERP(\n Math.min(ecb, Math.min(rpelev\n * gfc.nb_1[chn][b], rpelev2\n * gfc.nb_2[chn][b])), ecb, pcfact);\n\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = ecb;\n }\n }\n for (; b <= Encoder.CBANDS; ++b) {\n eb_l[b] = 0;\n thr[b] = 0;\n }\n /* compute masking thresholds for long blocks */\n convert_partition2scalefac_l(gfc, eb_l, thr, chn);\n }\n /* end loop over chn */\n\n if (gfp.mode == MPEGMode.STEREO || gfp.mode == MPEGMode.JOINT_STEREO) {\n if (gfp.interChRatio > 0.0) {\n calc_interchannel_masking(gfp, gfp.interChRatio);\n }\n }\n\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n var msfix;\n msfix1(gfc);\n msfix = gfp.msfix;\n if (Math.abs(msfix) > 0.0)\n ns_msfix(gfc, msfix, gfp.ATHlower * gfc.ATH.adjust);\n }\n\n /***************************************************************\n * determine final block type\n ***************************************************************/\n block_type_set(gfp, uselongblock, blocktype_d, blocktype);\n\n /*********************************************************************\n * compute the value of PE to return ... no delay and advance\n *********************************************************************/\n for (chn = 0; chn < numchn; chn++) {\n var ppe;\n var ppePos = 0;\n var type;\n var mr;\n\n if (chn > 1) {\n ppe = percep_MS_entropy;\n ppePos = -2;\n type = Encoder.NORM_TYPE;\n if (blocktype_d[0] == Encoder.SHORT_TYPE\n || blocktype_d[1] == Encoder.SHORT_TYPE)\n type = Encoder.SHORT_TYPE;\n mr = masking_MS_ratio[gr_out][chn - 2];\n } else {\n ppe = percep_entropy;\n ppePos = 0;\n type = blocktype_d[chn];\n mr = masking_ratio[gr_out][chn];\n }\n\n if (type == Encoder.SHORT_TYPE)\n ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n else\n ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n\n if (gfp.analysis)\n gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n\n }\n return 0;\n }\n\n function vbrpsy_compute_fft_l(gfp, buffer, bufPos, chn, gr_out, fftenergy, wsamp_l, wsamp_lPos) {\n var gfc = gfp.internal_flags;\n if (chn < 2) {\n fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n } else if (chn == 2) {\n /* FFT data for mid and side channel is derived from L & R */\n for (var j = Encoder.BLKSIZE - 1; j >= 0; --j) {\n var l = wsamp_l[wsamp_lPos + 0][j];\n var r = wsamp_l[wsamp_lPos + 1][j];\n wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util.SQRT2 * 0.5;\n wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util.SQRT2 * 0.5;\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n fftenergy[0] *= fftenergy[0];\n\n for (var j = Encoder.BLKSIZE / 2 - 1; j >= 0; --j) {\n var re = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 - j];\n var im = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 + j];\n fftenergy[Encoder.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n /* total energy */\n {\n var totalenergy = 0.0;\n for (var j = 11; j < Encoder.HBLKSIZE; j++)\n totalenergy += fftenergy[j];\n\n gfc.tot_ener[chn] = totalenergy;\n }\n\n if (gfp.analysis) {\n for (var j = 0; j < Encoder.HBLKSIZE; j++) {\n gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n }\n gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n }\n }\n\n function vbrpsy_compute_fft_s(gfp, buffer, bufPos, chn, sblock, fftenergy_s, wsamp_s, wsamp_sPos) {\n var gfc = gfp.internal_flags;\n\n if (sblock == 0 && chn < 2) {\n fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n }\n if (chn == 2) {\n /* FFT data for mid and side channel is derived from L & R */\n for (var j = Encoder.BLKSIZE_s - 1; j >= 0; --j) {\n var l = wsamp_s[wsamp_sPos + 0][sblock][j];\n var r = wsamp_s[wsamp_sPos + 1][sblock][j];\n wsamp_s[wsamp_sPos + 0][sblock][j] = (l + r) * Util.SQRT2 * 0.5;\n wsamp_s[wsamp_sPos + 1][sblock][j] = (l - r) * Util.SQRT2 * 0.5;\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy_s[sblock][0] = wsamp_s[wsamp_sPos + 0][sblock][0];\n fftenergy_s[sblock][0] *= fftenergy_s[sblock][0];\n for (var j = Encoder.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n var re = wsamp_s[wsamp_sPos + 0][sblock][Encoder.BLKSIZE_s / 2 - j];\n var im = wsamp_s[wsamp_sPos + 0][sblock][Encoder.BLKSIZE_s / 2 + j];\n fftenergy_s[sblock][Encoder.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n }\n\n /**\n * compute loudness approximation (used for ATH auto-level adjustment)\n */\n function vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn, fftenergy) {\n var gfc = gfp.internal_flags;\n if (gfp.athaa_loudapprox == 2 && chn < 2) {\n // no loudness for mid/side ch\n gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n }\n }\n\n var fircoef_ = [-8.65163e-18 * 2,\n -0.00851586 * 2, -6.74764e-18 * 2, 0.0209036 * 2,\n -3.36639e-17 * 2, -0.0438162 * 2, -1.54175e-17 * 2,\n 0.0931738 * 2, -5.52212e-17 * 2, -0.313819 * 2];\n\n /**\n * Apply HPF of fs/4 to the input signal. This is used for attack detection\n * / handling.\n */\n function vbrpsy_attack_detection(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, energy, sub_short_factor, ns_attacks, uselongblock) {\n var ns_hpfsmpl = new_float_n([2, 576]);\n var gfc = gfp.internal_flags;\n var n_chn_out = gfc.channels_out;\n /* chn=2 and 3 = Mid and Side channels */\n var n_chn_psy = (gfp.mode == MPEGMode.JOINT_STEREO) ? 4 : n_chn_out;\n /* Don't copy the input buffer into a temporary buffer */\n /* unroll the loop 2 times */\n for (var chn = 0; chn < n_chn_out; chn++) {\n /* apply high pass filter of fs/4 */\n firbuf = buffer[chn];\n var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n assert(fircoef_.length == ((NSFIRLEN - 1) / 2));\n for (var i = 0; i < 576; i++) {\n var sum1, sum2;\n sum1 = firbuf[firbufPos + i + 10];\n sum2 = 0.0;\n for (var j = 0; j < ((NSFIRLEN - 1) / 2) - 1; j += 2) {\n sum1 += fircoef_[j]\n * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i\n + NSFIRLEN - j]);\n sum2 += fircoef_[j + 1]\n * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos\n + i + NSFIRLEN - j - 1]);\n }\n ns_hpfsmpl[chn][i] = sum1 + sum2;\n }\n masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n if (n_chn_psy > 2) {\n /* MS maskings */\n /* percep_MS_entropy [chn-2] = gfc . pe [chn]; */\n masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var attack_intensity = new_float(12);\n var en_subshort = new_float(12);\n var en_short = [0, 0, 0, 0];\n var pf = ns_hpfsmpl[chn & 1];\n var pfPos = 0;\n var attackThreshold = (chn == 3) ? gfc.nsPsy.attackthre_s\n : gfc.nsPsy.attackthre;\n var ns_uselongblock = 1;\n\n if (chn == 2) {\n for (var i = 0, j = 576; j > 0; ++i, --j) {\n var l = ns_hpfsmpl[0][i];\n var r = ns_hpfsmpl[1][i];\n ns_hpfsmpl[0][i] = l + r;\n ns_hpfsmpl[1][i] = l - r;\n }\n }\n /***************************************************************\n * determine the block type (window type)\n ***************************************************************/\n /* calculate energies of each sub-shortblocks */\n for (var i = 0; i < 3; i++) {\n en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n assert(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n attack_intensity[i] = en_subshort[i]\n / gfc.nsPsy.last_en_subshort[chn][i + 4];\n en_short[0] += en_subshort[i];\n }\n\n for (var i = 0; i < 9; i++) {\n var pfe = pfPos + 576 / 9;\n var p = 1.;\n for (; pfPos < pfe; pfPos++)\n if (p < Math.abs(pf[pfPos]))\n p = Math.abs(pf[pfPos]);\n\n gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p;\n en_short[1 + i / 3] += p;\n if (p > en_subshort[i + 3 - 2]) {\n assert(en_subshort[i + 3 - 2] > 0);\n p = p / en_subshort[i + 3 - 2];\n } else if (en_subshort[i + 3 - 2] > p * 10.0) {\n assert(p > 0);\n p = en_subshort[i + 3 - 2] / (p * 10.0);\n } else {\n p = 0.0;\n }\n attack_intensity[i + 3] = p;\n }\n /* pulse like signal detection for fatboy.wav and so on */\n for (var i = 0; i < 3; ++i) {\n var enn = en_subshort[i * 3 + 3]\n + en_subshort[i * 3 + 4] + en_subshort[i * 3 + 5];\n var factor = 1.;\n if (en_subshort[i * 3 + 5] * 6 < enn) {\n factor *= 0.5;\n if (en_subshort[i * 3 + 4] * 6 < enn) {\n factor *= 0.5;\n }\n }\n sub_short_factor[chn][i] = factor;\n }\n\n if (gfp.analysis) {\n var x = attack_intensity[0];\n for (var i = 1; i < 12; i++) {\n if (x < attack_intensity[i]) {\n x = attack_intensity[i];\n }\n }\n gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n gfc.pinfo.ers_save[chn] = x;\n }\n\n /* compare energies between sub-shortblocks */\n for (var i = 0; i < 12; i++) {\n if (0 == ns_attacks[chn][i / 3]\n && attack_intensity[i] > attackThreshold) {\n ns_attacks[chn][i / 3] = (i % 3) + 1;\n }\n }\n\n /*\n * should have energy change between short blocks, in order to avoid\n * periodic signals\n */\n /* Good samples to show the effect are Trumpet test songs */\n /*\n * GB: tuned (1) to avoid too many short blocks for test sample\n * TRUMPET\n */\n /*\n * RH: tuned (2) to let enough short blocks through for test sample\n * FSOL and SNAPS\n */\n for (var i = 1; i < 4; i++) {\n var u = en_short[i - 1];\n var v = en_short[i];\n var m = Math.max(u, v);\n if (m < 40000) { /* (2) */\n if (u < 1.7 * v && v < 1.7 * u) { /* (1) */\n if (i == 1 && ns_attacks[chn][0] <= ns_attacks[chn][i]) {\n ns_attacks[chn][0] = 0;\n }\n ns_attacks[chn][i] = 0;\n }\n }\n }\n\n if (ns_attacks[chn][0] <= gfc.nsPsy.lastAttacks[chn]) {\n ns_attacks[chn][0] = 0;\n }\n\n if (gfc.nsPsy.lastAttacks[chn] == 3\n || (ns_attacks[chn][0] + ns_attacks[chn][1]\n + ns_attacks[chn][2] + ns_attacks[chn][3]) != 0) {\n ns_uselongblock = 0;\n\n if (ns_attacks[chn][1] != 0 && ns_attacks[chn][0] != 0) {\n ns_attacks[chn][1] = 0;\n }\n if (ns_attacks[chn][2] != 0 && ns_attacks[chn][1] != 0) {\n ns_attacks[chn][2] = 0;\n }\n if (ns_attacks[chn][3] != 0 && ns_attacks[chn][2] != 0) {\n ns_attacks[chn][3] = 0;\n }\n }\n if (chn < 2) {\n uselongblock[chn] = ns_uselongblock;\n } else {\n if (ns_uselongblock == 0) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n }\n\n /*\n * there is a one granule delay. Copy maskings computed last call\n * into masking_ratio to return to calling program.\n */\n energy[chn] = gfc.tot_ener[chn];\n }\n }\n\n function vbrpsy_skip_masking_s(gfc, chn, sblock) {\n if (sblock == 0) {\n for (var b = 0; b < gfc.npart_s; b++) {\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = 0;\n }\n }\n }\n\n function vbrpsy_skip_masking_l(gfc, chn) {\n for (var b = 0; b < gfc.npart_l; b++) {\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = 0;\n }\n }\n\n function psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx) {\n var last_tab_entry = tab.length - 1;\n var b = 0;\n var a = avg[b] + avg[b + 1];\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert((gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n\n for (b = 1; b < gfc.npart_s - 1; b++) {\n a = avg[b - 1] + avg[b] + avg[b + 1];\n assert(b + 1 < gfc.npart_s);\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert((gfc.numlines_s[b - 1] + gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1) > 0);\n a = 20.0\n * (m * 3.0 - a)\n / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b]\n + gfc.numlines_s[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n }\n assert(b > 0);\n assert(b == gfc.npart_s - 1);\n\n a = avg[b - 1] + avg[b];\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n assert((gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n assert(b == (gfc.npart_s - 1));\n }\n\n function vbrpsy_compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n var gfc = gfp.internal_flags;\n var max = new float[Encoder.CBANDS], avg = new_float(Encoder.CBANDS);\n var i, j, b;\n var mask_idx_s = new int[Encoder.CBANDS];\n\n for (b = j = 0; b < gfc.npart_s; ++b) {\n var ebb = 0, m = 0;\n var n = gfc.numlines_s[b];\n for (i = 0; i < n; ++i, ++j) {\n var el = fftenergy_s[sblock][j];\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n assert(ebb >= 0);\n max[b] = m;\n assert(n > 0);\n avg[b] = ebb / n;\n assert(avg[b] >= 0);\n }\n assert(b == gfc.npart_s);\n assert(j == 129);\n for (; b < Encoder.CBANDS; ++b) {\n max[b] = 0;\n avg[b] = 0;\n }\n psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx_s);\n for (j = b = 0; b < gfc.npart_s; b++) {\n var kk = gfc.s3ind_s[b][0];\n var last = gfc.s3ind_s[b][1];\n var dd, dd_n;\n var x, ecb, avg_mask;\n dd = mask_idx_s[kk];\n dd_n = 1;\n ecb = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n ++j;\n ++kk;\n while (kk <= last) {\n dd += mask_idx_s[kk];\n dd_n += 1;\n x = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n ecb = vbrpsy_mask_add(ecb, x, kk - b);\n ++j;\n ++kk;\n }\n dd = (1 + 2 * dd) / (2 * dd_n);\n avg_mask = tab[dd] * 0.5;\n ecb *= avg_mask;\n thr[b] = ecb;\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = ecb;\n {\n /*\n * if THR exceeds EB, the quantization routines will take the\n * difference from other bands. in case of strong tonal samples\n * (tonaltest.wav) this leads to heavy distortions. that's why\n * we limit THR here.\n */\n x = max[b];\n x *= gfc.minval_s[b];\n x *= avg_mask;\n if (thr[b] > x) {\n thr[b] = x;\n }\n }\n if (gfc.masking_lower > 1) {\n thr[b] *= gfc.masking_lower;\n }\n if (thr[b] > eb[b]) {\n thr[b] = eb[b];\n }\n if (gfc.masking_lower < 1) {\n thr[b] *= gfc.masking_lower;\n }\n\n assert(thr[b] >= 0);\n }\n for (; b < Encoder.CBANDS; ++b) {\n eb[b] = 0;\n thr[b] = 0;\n }\n }\n\n function vbrpsy_compute_masking_l(gfc, fftenergy, eb_l, thr, chn) {\n var max = new_float(Encoder.CBANDS), avg = new_float(Encoder.CBANDS);\n var mask_idx_l = new_int(Encoder.CBANDS + 2);\n var b;\n\n /*********************************************************************\n * Calculate the energy and the tonality of each partition.\n *********************************************************************/\n calc_energy(gfc, fftenergy, eb_l, max, avg);\n calc_mask_index_l(gfc, max, avg, mask_idx_l);\n\n /*********************************************************************\n * convolve the partitioned energy and unpredictability with the\n * spreading function, s3_l[b][k]\n ********************************************************************/\n var k = 0;\n for (b = 0; b < gfc.npart_l; b++) {\n var x, ecb, avg_mask, t;\n /* convolve the partitioned energy with the spreading function */\n var kk = gfc.s3ind[b][0];\n var last = gfc.s3ind[b][1];\n var dd = 0, dd_n = 0;\n dd = mask_idx_l[kk];\n dd_n += 1;\n ecb = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n ++k;\n ++kk;\n while (kk <= last) {\n dd += mask_idx_l[kk];\n dd_n += 1;\n x = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n t = vbrpsy_mask_add(ecb, x, kk - b);\n ecb = t;\n ++k;\n ++kk;\n }\n dd = (1 + 2 * dd) / (2 * dd_n);\n avg_mask = tab[dd] * 0.5;\n ecb *= avg_mask;\n\n /**** long block pre-echo control ****/\n /**\n *
\n             * dont use long block pre-echo control if previous granule was\n             * a short block.  This is to avoid the situation:\n             * frame0:  quiet (very low masking)\n             * frame1:  surge  (triggers short blocks)\n             * frame2:  regular frame.  looks like pre-echo when compared to\n             *          frame0, but all pre-echo was in frame1.\n             * 
\n */\n /*\n * chn=0,1 L and R channels chn=2,3 S and M channels.\n */\n if (gfc.blocktype_old[chn & 0x01] == Encoder.SHORT_TYPE) {\n var ecb_limit = rpelev * gfc.nb_1[chn][b];\n if (ecb_limit > 0) {\n thr[b] = Math.min(ecb, ecb_limit);\n } else {\n /**\n *
\n                     * Robert 071209:\n                     * Because we don't calculate long block psy when we know a granule\n                     * should be of short blocks, we don't have any clue how the granule\n                     * before would have looked like as a long block. So we have to guess\n                     * a little bit for this END_TYPE block.\n                     * Most of the time we get away with this sloppyness. (fingers crossed :)\n                     * The speed increase is worth it.\n                     * 
\n */\n thr[b] = Math.min(ecb, eb_l[b] * NS_PREECHO_ATT2);\n }\n } else {\n var ecb_limit_2 = rpelev2 * gfc.nb_2[chn][b];\n var ecb_limit_1 = rpelev * gfc.nb_1[chn][b];\n var ecb_limit;\n if (ecb_limit_2 <= 0) {\n ecb_limit_2 = ecb;\n }\n if (ecb_limit_1 <= 0) {\n ecb_limit_1 = ecb;\n }\n if (gfc.blocktype_old[chn & 0x01] == Encoder.NORM_TYPE) {\n ecb_limit = Math.min(ecb_limit_1, ecb_limit_2);\n } else {\n ecb_limit = ecb_limit_1;\n }\n thr[b] = Math.min(ecb, ecb_limit);\n }\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = ecb;\n {\n /*\n * if THR exceeds EB, the quantization routines will take the\n * difference from other bands. in case of strong tonal samples\n * (tonaltest.wav) this leads to heavy distortions. that's why\n * we limit THR here.\n */\n x = max[b];\n x *= gfc.minval_l[b];\n x *= avg_mask;\n if (thr[b] > x) {\n thr[b] = x;\n }\n }\n if (gfc.masking_lower > 1) {\n thr[b] *= gfc.masking_lower;\n }\n if (thr[b] > eb_l[b]) {\n thr[b] = eb_l[b];\n }\n if (gfc.masking_lower < 1) {\n thr[b] *= gfc.masking_lower;\n }\n assert(thr[b] >= 0);\n }\n for (; b < Encoder.CBANDS; ++b) {\n eb_l[b] = 0;\n thr[b] = 0;\n }\n }\n\n function vbrpsy_compute_block_type(gfp, uselongblock) {\n var gfc = gfp.internal_flags;\n\n if (gfp.short_blocks == ShortBlock.short_block_coupled\n /* force both channels to use the same block type */\n /* this is necessary if the frame is to be encoded in ms_stereo. */\n /* But even without ms_stereo, FhG does this */\n && !(uselongblock[0] != 0 && uselongblock[1] != 0))\n uselongblock[0] = uselongblock[1] = 0;\n\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n /* disable short blocks */\n if (gfp.short_blocks == ShortBlock.short_block_dispensed) {\n uselongblock[chn] = 1;\n }\n if (gfp.short_blocks == ShortBlock.short_block_forced) {\n uselongblock[chn] = 0;\n }\n }\n }\n\n function vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d) {\n var gfc = gfp.internal_flags;\n\n /*\n * update the blocktype of the previous granule, since it depends on\n * what happend in this granule\n */\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n var blocktype = Encoder.NORM_TYPE;\n /* disable short blocks */\n\n if (uselongblock[chn] != 0) {\n /* no attack : use long blocks */\n assert(gfc.blocktype_old[chn] != Encoder.START_TYPE);\n if (gfc.blocktype_old[chn] == Encoder.SHORT_TYPE)\n blocktype = Encoder.STOP_TYPE;\n } else {\n /* attack : use short blocks */\n blocktype = Encoder.SHORT_TYPE;\n if (gfc.blocktype_old[chn] == Encoder.NORM_TYPE) {\n gfc.blocktype_old[chn] = Encoder.START_TYPE;\n }\n if (gfc.blocktype_old[chn] == Encoder.STOP_TYPE)\n gfc.blocktype_old[chn] = Encoder.SHORT_TYPE;\n }\n\n blocktype_d[chn] = gfc.blocktype_old[chn];\n // value returned to calling program\n gfc.blocktype_old[chn] = blocktype;\n // save for next call to l3psy_anal\n }\n }\n\n /**\n * compute M/S thresholds from Johnston & Ferreira 1992 ICASSP paper\n */\n function vbrpsy_compute_MS_thresholds(eb, thr, cb_mld, ath_cb, athadjust, msfix, n) {\n var msfix2 = msfix * 2;\n var athlower = msfix > 0 ? Math.pow(10, athadjust) : 1;\n var rside, rmid;\n for (var b = 0; b < n; ++b) {\n var ebM = eb[2][b];\n var ebS = eb[3][b];\n var thmL = thr[0][b];\n var thmR = thr[1][b];\n var thmM = thr[2][b];\n var thmS = thr[3][b];\n\n /* use this fix if L & R masking differs by 2db or less */\n if (thmL <= 1.58 * thmR && thmR <= 1.58 * thmL) {\n var mld_m = cb_mld[b] * ebS;\n var mld_s = cb_mld[b] * ebM;\n rmid = Math.max(thmM, Math.min(thmS, mld_m));\n rside = Math.max(thmS, Math.min(thmM, mld_s));\n } else {\n rmid = thmM;\n rside = thmS;\n }\n if (msfix > 0) {\n /***************************************************************/\n /* Adjust M/S maskings if user set \"msfix\" */\n /***************************************************************/\n /* Naoki Shibata 2000 */\n var thmLR, thmMS;\n var ath = ath_cb[b] * athlower;\n thmLR = Math.min(Math.max(thmL, ath), Math.max(thmR, ath));\n thmM = Math.max(rmid, ath);\n thmS = Math.max(rside, ath);\n thmMS = thmM + thmS;\n if (thmMS > 0 && (thmLR * msfix2) < thmMS) {\n var f = thmLR * msfix2 / thmMS;\n thmM *= f;\n thmS *= f;\n assert(thmMS > 0);\n }\n rmid = Math.min(thmM, rmid);\n rside = Math.min(thmS, rside);\n }\n if (rmid > ebM) {\n rmid = ebM;\n }\n if (rside > ebS) {\n rside = ebS;\n }\n thr[2][b] = rmid;\n thr[3][b] = rside;\n }\n }\n\n this.L3psycho_anal_vbr = function (gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n var gfc = gfp.internal_flags;\n\n /* fft and energy calculation */\n var wsamp_l;\n var wsamp_s;\n var fftenergy = new_float(Encoder.HBLKSIZE);\n var fftenergy_s = new_float_n([3, Encoder.HBLKSIZE_s]);\n var wsamp_L = new_float_n([2, Encoder.BLKSIZE]);\n var wsamp_S = new_float_n([2, 3, Encoder.BLKSIZE_s]);\n var eb = new_float_n([4, Encoder.CBANDS]), thr = new_float_n([4, Encoder.CBANDS]);\n var sub_short_factor = new_float_n([4, 3]);\n var pcfact = 0.6;\n\n /* block type */\n var ns_attacks = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0],\n [0, 0, 0, 0]];\n var uselongblock = new_int(2);\n\n /* usual variables like loop indices, etc.. */\n\n /* chn=2 and 3 = Mid and Side channels */\n var n_chn_psy = (gfp.mode == MPEGMode.JOINT_STEREO) ? 4\n : gfc.channels_out;\n\n vbrpsy_attack_detection(gfp, buffer, bufPos, gr_out, masking_ratio,\n masking_MS_ratio, energy, sub_short_factor, ns_attacks,\n uselongblock);\n\n vbrpsy_compute_block_type(gfp, uselongblock);\n\n /* LONG BLOCK CASE */\n {\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n wsamp_l = wsamp_L;\n vbrpsy_compute_fft_l(gfp, buffer, bufPos, chn, gr_out,\n fftenergy, wsamp_l, ch01);\n\n vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn,\n fftenergy);\n\n if (uselongblock[ch01] != 0) {\n vbrpsy_compute_masking_l(gfc, fftenergy, eb[chn], thr[chn],\n chn);\n } else {\n vbrpsy_skip_masking_l(gfc, chn);\n }\n }\n if ((uselongblock[0] + uselongblock[1]) == 2) {\n /* M/S channel */\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n vbrpsy_compute_MS_thresholds(eb, thr, gfc.mld_cb_l,\n gfc.ATH.cb_l, gfp.ATHlower * gfc.ATH.adjust,\n gfp.msfix, gfc.npart_l);\n }\n }\n /* TODO: apply adaptive ATH masking here ?? */\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n if (uselongblock[ch01] != 0) {\n convert_partition2scalefac_l(gfc, eb[chn], thr[chn], chn);\n }\n }\n }\n\n /* SHORT BLOCKS CASE */\n {\n for (var sblock = 0; sblock < 3; sblock++) {\n for (var chn = 0; chn < n_chn_psy; ++chn) {\n var ch01 = chn & 0x01;\n\n if (uselongblock[ch01] != 0) {\n vbrpsy_skip_masking_s(gfc, chn, sblock);\n } else {\n /* compute masking thresholds for short blocks */\n wsamp_s = wsamp_S;\n vbrpsy_compute_fft_s(gfp, buffer, bufPos, chn, sblock,\n fftenergy_s, wsamp_s, ch01);\n vbrpsy_compute_masking_s(gfp, fftenergy_s, eb[chn],\n thr[chn], chn, sblock);\n }\n }\n if ((uselongblock[0] + uselongblock[1]) == 0) {\n /* M/S channel */\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n vbrpsy_compute_MS_thresholds(eb, thr, gfc.mld_cb_s,\n gfc.ATH.cb_s, gfp.ATHlower * gfc.ATH.adjust,\n gfp.msfix, gfc.npart_s);\n }\n /* L/R channel */\n }\n /* TODO: apply adaptive ATH masking here ?? */\n for (var chn = 0; chn < n_chn_psy; ++chn) {\n var ch01 = chn & 0x01;\n if (0 == uselongblock[ch01]) {\n convert_partition2scalefac_s(gfc, eb[chn], thr[chn],\n chn, sblock);\n }\n }\n }\n\n /**** short block pre-echo control ****/\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n\n if (uselongblock[ch01] != 0) {\n continue;\n }\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n var new_thmm = new_float(3);\n for (var sblock = 0; sblock < 3; sblock++) {\n var thmm = gfc.thm[chn].s[sb][sblock];\n thmm *= NS_PREECHO_ATT0;\n\n if (ns_attacks[chn][sblock] >= 2\n || ns_attacks[chn][sblock + 1] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT1 * pcfact);\n thmm = Math.min(thmm, p);\n } else if (ns_attacks[chn][sblock] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n } else if ((sblock != 0 && ns_attacks[chn][sblock - 1] == 3)\n || (sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3)) {\n var idx = (sblock != 2) ? sblock + 1 : 0;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n /* pulse like signal detection for fatboy.wav and so on */\n thmm *= sub_short_factor[chn][sblock];\n\n new_thmm[sblock] = thmm;\n }\n for (var sblock = 0; sblock < 3; sblock++) {\n gfc.thm[chn].s[sb][sblock] = new_thmm[sblock];\n }\n }\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n gfc.nsPsy.lastAttacks[chn] = ns_attacks[chn][2];\n }\n\n /***************************************************************\n * determine final block type\n ***************************************************************/\n vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d);\n\n /*********************************************************************\n * compute the value of PE to return ... no delay and advance\n *********************************************************************/\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ppe;\n var ppePos;\n var type;\n var mr;\n\n if (chn > 1) {\n ppe = percep_MS_entropy;\n ppePos = -2;\n type = Encoder.NORM_TYPE;\n if (blocktype_d[0] == Encoder.SHORT_TYPE\n || blocktype_d[1] == Encoder.SHORT_TYPE)\n type = Encoder.SHORT_TYPE;\n mr = masking_MS_ratio[gr_out][chn - 2];\n } else {\n ppe = percep_entropy;\n ppePos = 0;\n type = blocktype_d[chn];\n mr = masking_ratio[gr_out][chn];\n }\n\n if (type == Encoder.SHORT_TYPE) {\n ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n } else {\n ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n }\n\n if (gfp.analysis) {\n gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n }\n }\n return 0;\n }\n\n function s3_func_x(bark, hf_slope) {\n var tempx = bark, tempy;\n\n if (tempx >= 0) {\n tempy = -tempx * 27;\n } else {\n tempy = tempx * hf_slope;\n }\n if (tempy <= -72.0) {\n return 0;\n }\n return Math.exp(tempy * LN_TO_LOG10);\n }\n\n function norm_s3_func_x(hf_slope) {\n var lim_a = 0, lim_b = 0;\n {\n var x = 0, l, h;\n for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x -= 1)\n ;\n l = x;\n h = 0;\n while (Math.abs(h - l) > 1e-12) {\n x = (h + l) / 2;\n if (s3_func_x(x, hf_slope) > 0) {\n h = x;\n } else {\n l = x;\n }\n }\n lim_a = l;\n }\n {\n var x = 0, l, h;\n for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x += 1)\n ;\n l = 0;\n h = x;\n while (Math.abs(h - l) > 1e-12) {\n x = (h + l) / 2;\n if (s3_func_x(x, hf_slope) > 0) {\n l = x;\n } else {\n h = x;\n }\n }\n lim_b = h;\n }\n {\n var sum = 0;\n var m = 1000;\n var i;\n for (i = 0; i <= m; ++i) {\n var x = lim_a + i * (lim_b - lim_a) / m;\n var y = s3_func_x(x, hf_slope);\n sum += y;\n }\n {\n var norm = (m + 1) / (sum * (lim_b - lim_a));\n /* printf( \"norm = %lf\\n\",norm); */\n return norm;\n }\n }\n }\n\n /**\n * The spreading function. Values returned in units of energy\n */\n function s3_func(bark) {\n var tempx, x, tempy, temp;\n tempx = bark;\n if (tempx >= 0)\n tempx *= 3;\n else\n tempx *= 1.5;\n\n if (tempx >= 0.5 && tempx <= 2.5) {\n temp = tempx - 0.5;\n x = 8.0 * (temp * temp - 2.0 * temp);\n } else\n x = 0.0;\n tempx += 0.474;\n tempy = 15.811389 + 7.5 * tempx - 17.5\n * Math.sqrt(1.0 + tempx * tempx);\n\n if (tempy <= -60.0)\n return 0.0;\n\n tempx = Math.exp((x + tempy) * LN_TO_LOG10);\n\n /**\n *
\n         * Normalization.  The spreading function should be normalized so that:\n         * +inf\n         * /\n         * |  s3 [ bark ]  d(bark)   =  1\n         * /\n         * -inf\n         * 
\n */\n tempx /= .6609193;\n return tempx;\n }\n\n /**\n * see for example \"Zwicker: Psychoakustik, 1982; ISBN 3-540-11401-7\n */\n function freq2bark(freq) {\n /* input: freq in hz output: barks */\n if (freq < 0)\n freq = 0;\n freq = freq * 0.001;\n return 13.0 * Math.atan(.76 * freq) + 3.5\n * Math.atan(freq * freq / (7.5 * 7.5));\n }\n\n function init_numline(numlines, bo, bm, bval, bval_width, mld, bo_w, sfreq, blksize, scalepos, deltafreq, sbmax) {\n var b_frq = new_float(Encoder.CBANDS + 1);\n var sample_freq_frac = sfreq / (sbmax > 15 ? 2 * 576 : 2 * 192);\n var partition = new_int(Encoder.HBLKSIZE);\n var i;\n sfreq /= blksize;\n var j = 0;\n var ni = 0;\n /* compute numlines, the number of spectral lines in each partition band */\n /* each partition band should be about DELBARK wide. */\n for (i = 0; i < Encoder.CBANDS; i++) {\n var bark1;\n var j2;\n bark1 = freq2bark(sfreq * j);\n\n b_frq[i] = sfreq * j;\n\n for (j2 = j; freq2bark(sfreq * j2) - bark1 < DELBARK\n && j2 <= blksize / 2; j2++)\n ;\n\n numlines[i] = j2 - j;\n ni = i + 1;\n\n while (j < j2) {\n assert(j < Encoder.HBLKSIZE);\n partition[j++] = i;\n }\n if (j > blksize / 2) {\n j = blksize / 2;\n ++i;\n break;\n }\n }\n assert(i < Encoder.CBANDS);\n b_frq[i] = sfreq * j;\n\n for (var sfb = 0; sfb < sbmax; sfb++) {\n var i1, i2, start, end;\n var arg;\n start = scalepos[sfb];\n end = scalepos[sfb + 1];\n\n i1 = 0 | Math.floor(.5 + deltafreq * (start - .5));\n if (i1 < 0)\n i1 = 0;\n i2 = 0 | Math.floor(.5 + deltafreq * (end - .5));\n\n if (i2 > blksize / 2)\n i2 = blksize / 2;\n\n bm[sfb] = (partition[i1] + partition[i2]) / 2;\n bo[sfb] = partition[i2];\n var f_tmp = sample_freq_frac * end;\n /*\n * calculate how much of this band belongs to current scalefactor\n * band\n */\n bo_w[sfb] = (f_tmp - b_frq[bo[sfb]])\n / (b_frq[bo[sfb] + 1] - b_frq[bo[sfb]]);\n if (bo_w[sfb] < 0) {\n bo_w[sfb] = 0;\n } else {\n if (bo_w[sfb] > 1) {\n bo_w[sfb] = 1;\n }\n }\n /* setup stereo demasking thresholds */\n /* formula reverse enginerred from plot in paper */\n arg = freq2bark(sfreq * scalepos[sfb] * deltafreq);\n arg = ( Math.min(arg, 15.5) / 15.5);\n\n mld[sfb] = Math.pow(10.0,\n 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n }\n\n /* compute bark values of each critical band */\n j = 0;\n for (var k = 0; k < ni; k++) {\n var w = numlines[k];\n var bark1, bark2;\n\n bark1 = freq2bark(sfreq * (j));\n bark2 = freq2bark(sfreq * (j + w - 1));\n bval[k] = .5 * (bark1 + bark2);\n\n bark1 = freq2bark(sfreq * (j - .5));\n bark2 = freq2bark(sfreq * (j + w - .5));\n bval_width[k] = bark2 - bark1;\n j += w;\n }\n\n return ni;\n }\n\n function init_s3_values(s3ind, npart, bval, bval_width, norm, use_old_s3) {\n var s3 = new_float_n([Encoder.CBANDS, Encoder.CBANDS]);\n /*\n * The s3 array is not linear in the bark scale.\n *\n * bval[x] should be used to get the bark value.\n */\n var j;\n var numberOfNoneZero = 0;\n\n /**\n *
\n         * s[i][j], the value of the spreading function,\n         * centered at band j (masker), for band i (maskee)\n         *\n         * i.e.: sum over j to spread into signal barkval=i\n         * NOTE: i and j are used opposite as in the ISO docs\n         * 
\n */\n if (use_old_s3) {\n for (var i = 0; i < npart; i++) {\n for (j = 0; j < npart; j++) {\n var v = s3_func(bval[i] - bval[j]) * bval_width[j];\n s3[i][j] = v * norm[i];\n }\n }\n } else {\n for (j = 0; j < npart; j++) {\n var hf_slope = 15 + Math.min(21 / bval[j], 12);\n var s3_x_norm = norm_s3_func_x(hf_slope);\n for (var i = 0; i < npart; i++) {\n var v = s3_x_norm\n * s3_func_x(bval[i] - bval[j], hf_slope)\n * bval_width[j];\n s3[i][j] = v * norm[i];\n }\n }\n }\n for (var i = 0; i < npart; i++) {\n for (j = 0; j < npart; j++) {\n if (s3[i][j] > 0.0)\n break;\n }\n s3ind[i][0] = j;\n\n for (j = npart - 1; j > 0; j--) {\n if (s3[i][j] > 0.0)\n break;\n }\n s3ind[i][1] = j;\n numberOfNoneZero += (s3ind[i][1] - s3ind[i][0] + 1);\n }\n\n var p = new_float(numberOfNoneZero);\n var k = 0;\n for (var i = 0; i < npart; i++)\n for (j = s3ind[i][0]; j <= s3ind[i][1]; j++)\n p[k++] = s3[i][j];\n\n return p;\n }\n\n function stereo_demask(f) {\n /* setup stereo demasking thresholds */\n /* formula reverse enginerred from plot in paper */\n var arg = freq2bark(f);\n arg = (Math.min(arg, 15.5) / 15.5);\n\n return Math.pow(10.0,\n 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n }\n\n /**\n * NOTE: the bitrate reduction from the inter-channel masking effect is low\n * compared to the chance of getting annyoing artefacts. L3psycho_anal_vbr\n * does not use this feature. (Robert 071216)\n */\n this.psymodel_init = function (gfp) {\n var gfc = gfp.internal_flags;\n var i;\n var useOldS3 = true;\n var bvl_a = 13, bvl_b = 24;\n var snr_l_a = 0, snr_l_b = 0;\n var snr_s_a = -8.25, snr_s_b = -4.5;\n var bval = new_float(Encoder.CBANDS);\n var bval_width = new_float(Encoder.CBANDS);\n var norm = new_float(Encoder.CBANDS);\n var sfreq = gfp.out_samplerate;\n\n switch (gfp.experimentalZ) {\n default:\n case 0:\n useOldS3 = true;\n break;\n case 1:\n useOldS3 = (gfp.VBR == VbrMode.vbr_mtrh || gfp.VBR == VbrMode.vbr_mt) ? false\n : true;\n break;\n case 2:\n useOldS3 = false;\n break;\n case 3:\n bvl_a = 8;\n snr_l_a = -1.75;\n snr_l_b = -0.0125;\n snr_s_a = -8.25;\n snr_s_b = -2.25;\n break;\n }\n gfc.ms_ener_ratio_old = .25;\n gfc.blocktype_old[0] = gfc.blocktype_old[1] = Encoder.NORM_TYPE;\n // the vbr header is long blocks\n\n for (i = 0; i < 4; ++i) {\n for (var j = 0; j < Encoder.CBANDS; ++j) {\n gfc.nb_1[i][j] = 1e20;\n gfc.nb_2[i][j] = 1e20;\n gfc.nb_s1[i][j] = gfc.nb_s2[i][j] = 1.0;\n }\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n gfc.en[i].l[sb] = 1e20;\n gfc.thm[i].l[sb] = 1e20;\n }\n for (var j = 0; j < 3; ++j) {\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n gfc.en[i].s[sb][j] = 1e20;\n gfc.thm[i].s[sb][j] = 1e20;\n }\n gfc.nsPsy.lastAttacks[i] = 0;\n }\n for (var j = 0; j < 9; j++)\n gfc.nsPsy.last_en_subshort[i][j] = 10.;\n }\n\n /* init. for loudness approx. -jd 2001 mar 27 */\n gfc.loudness_sq_save[0] = gfc.loudness_sq_save[1] = 0.0;\n\n /*************************************************************************\n * now compute the psychoacoustic model specific constants\n ************************************************************************/\n /* compute numlines, bo, bm, bval, bval_width, mld */\n\n gfc.npart_l = init_numline(gfc.numlines_l, gfc.bo_l, gfc.bm_l, bval,\n bval_width, gfc.mld_l, gfc.PSY.bo_l_weight, sfreq,\n Encoder.BLKSIZE, gfc.scalefac_band.l, Encoder.BLKSIZE\n / (2.0 * 576), Encoder.SBMAX_l);\n assert(gfc.npart_l < Encoder.CBANDS);\n /* compute the spreading function */\n for (i = 0; i < gfc.npart_l; i++) {\n var snr = snr_l_a;\n if (bval[i] >= bvl_a) {\n snr = snr_l_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_l_a\n * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n }\n norm[i] = Math.pow(10.0, snr / 10.0);\n if (gfc.numlines_l[i] > 0) {\n gfc.rnumlines_l[i] = 1.0 / gfc.numlines_l[i];\n } else {\n gfc.rnumlines_l[i] = 0;\n }\n }\n gfc.s3_ll = init_s3_values(gfc.s3ind, gfc.npart_l, bval, bval_width,\n norm, useOldS3);\n\n /* compute long block specific values, ATH and MINVAL */\n var j = 0;\n for (i = 0; i < gfc.npart_l; i++) {\n var x;\n\n /* ATH */\n x = Float.MAX_VALUE;\n for (var k = 0; k < gfc.numlines_l[i]; k++, j++) {\n var freq = sfreq * j / (1000.0 * Encoder.BLKSIZE);\n var level;\n /*\n * ATH below 100 Hz constant, not further climbing\n */\n level = this.ATHformula(freq * 1000, gfp) - 20;\n // scale to FFT units; returned value is in dB\n level = Math.pow(10., 0.1 * level);\n // convert from dB . energy\n level *= gfc.numlines_l[i];\n if (x > level)\n x = level;\n }\n gfc.ATH.cb_l[i] = x;\n\n /*\n * MINVAL. For low freq, the strength of the masking is limited by\n * minval this is an ISO MPEG1 thing, dont know if it is really\n * needed\n */\n /*\n * FIXME: it does work to reduce low-freq problems in S53-Wind-Sax\n * and lead-voice samples, but introduces some 3 kbps bit bloat too.\n * TODO: Further refinement of the shape of this hack.\n */\n x = -20 + bval[i] * 20 / 10;\n if (x > 6) {\n x = 100;\n }\n if (x < -15) {\n x = -15;\n }\n x -= 8.;\n gfc.minval_l[i] = (Math.pow(10.0, x / 10.) * gfc.numlines_l[i]);\n }\n\n /************************************************************************\n * do the same things for short blocks\n ************************************************************************/\n gfc.npart_s = init_numline(gfc.numlines_s, gfc.bo_s, gfc.bm_s, bval,\n bval_width, gfc.mld_s, gfc.PSY.bo_s_weight, sfreq,\n Encoder.BLKSIZE_s, gfc.scalefac_band.s, Encoder.BLKSIZE_s\n / (2.0 * 192), Encoder.SBMAX_s);\n assert(gfc.npart_s < Encoder.CBANDS);\n\n /* SNR formula. short block is normalized by SNR. is it still right ? */\n j = 0;\n for (i = 0; i < gfc.npart_s; i++) {\n var x;\n var snr = snr_s_a;\n if (bval[i] >= bvl_a) {\n snr = snr_s_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_s_a\n * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n }\n norm[i] = Math.pow(10.0, snr / 10.0);\n\n /* ATH */\n x = Float.MAX_VALUE;\n for (var k = 0; k < gfc.numlines_s[i]; k++, j++) {\n var freq = sfreq * j / (1000.0 * Encoder.BLKSIZE_s);\n var level;\n /* freq = Min(.1,freq); */\n /*\n * ATH below 100 Hz constant, not\n * further climbing\n */\n level = this.ATHformula(freq * 1000, gfp) - 20;\n // scale to FFT units; returned value is in dB\n level = Math.pow(10., 0.1 * level);\n // convert from dB . energy\n level *= gfc.numlines_s[i];\n if (x > level)\n x = level;\n }\n gfc.ATH.cb_s[i] = x;\n\n /*\n * MINVAL. For low freq, the strength of the masking is limited by\n * minval this is an ISO MPEG1 thing, dont know if it is really\n * needed\n */\n x = (-7.0 + bval[i] * 7.0 / 12.0);\n if (bval[i] > 12) {\n x *= 1 + Math.log(1 + x) * 3.1;\n }\n if (bval[i] < 12) {\n x *= 1 + Math.log(1 - x) * 2.3;\n }\n if (x < -15) {\n x = -15;\n }\n x -= 8;\n gfc.minval_s[i] = Math.pow(10.0, x / 10)\n * gfc.numlines_s[i];\n }\n\n gfc.s3_ss = init_s3_values(gfc.s3ind_s, gfc.npart_s, bval, bval_width,\n norm, useOldS3);\n\n init_mask_add_max_values();\n fft.init_fft(gfc);\n\n /* setup temporal masking */\n gfc.decay = Math.exp(-1.0 * LOG10\n / (temporalmask_sustain_sec * sfreq / 192.0));\n\n {\n var msfix;\n msfix = NS_MSFIX;\n if ((gfp.exp_nspsytune & 2) != 0)\n msfix = 1.0;\n if (Math.abs(gfp.msfix) > 0.0)\n msfix = gfp.msfix;\n gfp.msfix = msfix;\n\n /*\n * spread only from npart_l bands. Normally, we use the spreading\n * function to convolve from npart_l down to npart_l bands\n */\n for (var b = 0; b < gfc.npart_l; b++)\n if (gfc.s3ind[b][1] > gfc.npart_l - 1)\n gfc.s3ind[b][1] = gfc.npart_l - 1;\n }\n\n /*\n * prepare for ATH auto adjustment: we want to decrease the ATH by 12 dB\n * per second\n */\n var frame_duration = (576. * gfc.mode_gr / sfreq);\n gfc.ATH.decay = Math.pow(10., -12. / 10. * frame_duration);\n gfc.ATH.adjust = 0.01;\n /* minimum, for leading low loudness */\n gfc.ATH.adjustLimit = 1.0;\n /* on lead, allow adjust up to maximum */\n\n assert(gfc.bo_l[Encoder.SBMAX_l - 1] <= gfc.npart_l);\n assert(gfc.bo_s[Encoder.SBMAX_s - 1] <= gfc.npart_s);\n\n if (gfp.ATHtype != -1) {\n /* compute equal loudness weights (eql_w) */\n var freq;\n var freq_inc = gfp.out_samplerate\n / (Encoder.BLKSIZE);\n var eql_balance = 0.0;\n freq = 0.0;\n for (i = 0; i < Encoder.BLKSIZE / 2; ++i) {\n /* convert ATH dB to relative power (not dB) */\n /* to determine eql_w */\n freq += freq_inc;\n gfc.ATH.eql_w[i] = 1. / Math.pow(10, this.ATHformula(freq, gfp) / 10);\n eql_balance += gfc.ATH.eql_w[i];\n }\n eql_balance = 1.0 / eql_balance;\n for (i = Encoder.BLKSIZE / 2; --i >= 0;) { /* scale weights */\n gfc.ATH.eql_w[i] *= eql_balance;\n }\n }\n {\n for (var b = j = 0; b < gfc.npart_s; ++b) {\n for (i = 0; i < gfc.numlines_s[b]; ++i) {\n ++j;\n }\n }\n assert(j == 129);\n for (var b = j = 0; b < gfc.npart_l; ++b) {\n for (i = 0; i < gfc.numlines_l[b]; ++i) {\n ++j;\n }\n }\n assert(j == 513);\n }\n j = 0;\n for (i = 0; i < gfc.npart_l; i++) {\n var freq = sfreq * (j + gfc.numlines_l[i] / 2) / (1.0 * Encoder.BLKSIZE);\n gfc.mld_cb_l[i] = stereo_demask(freq);\n j += gfc.numlines_l[i];\n }\n for (; i < Encoder.CBANDS; ++i) {\n gfc.mld_cb_l[i] = 1;\n }\n j = 0;\n for (i = 0; i < gfc.npart_s; i++) {\n var freq = sfreq * (j + gfc.numlines_s[i] / 2) / (1.0 * Encoder.BLKSIZE_s);\n gfc.mld_cb_s[i] = stereo_demask(freq);\n j += gfc.numlines_s[i];\n }\n for (; i < Encoder.CBANDS; ++i) {\n gfc.mld_cb_s[i] = 1;\n }\n return 0;\n }\n\n /**\n * Those ATH formulas are returning their minimum value for input = -1\n */\n function ATHformula_GB(f, value) {\n /**\n *
\n         *  from Painter & Spanias\n         *           modified by Gabriel Bouvigne to better fit the reality\n         *           ath =    3.640 * pow(f,-0.8)\n         *           - 6.800 * exp(-0.6*pow(f-3.4,2.0))\n         *           + 6.000 * exp(-0.15*pow(f-8.7,2.0))\n         *           + 0.6* 0.001 * pow(f,4.0);\n         *\n         *\n         *           In the past LAME was using the Painter &Spanias formula.\n         *           But we had some recurrent problems with HF content.\n         *           We measured real ATH values, and found the older formula\n         *           to be inaccurate in the higher part. So we made this new\n         *           formula and this solved most of HF problematic test cases.\n         *           The tradeoff is that in VBR mode it increases a lot the\n         *           bitrate.\n         * 
\n */\n\n /*\n * This curve can be adjusted according to the VBR scale: it adjusts\n * from something close to Painter & Spanias on V9 up to Bouvigne's\n * formula for V0. This way the VBR bitrate is more balanced according\n * to the -V value.\n */\n\n // the following Hack allows to ask for the lowest value\n if (f < -.3)\n f = 3410;\n\n // convert to khz\n f /= 1000;\n f = Math.max(0.1, f);\n var ath = 3.640 * Math.pow(f, -0.8) - 6.800\n * Math.exp(-0.6 * Math.pow(f - 3.4, 2.0)) + 6.000\n * Math.exp(-0.15 * Math.pow(f - 8.7, 2.0))\n + (0.6 + 0.04 * value) * 0.001 * Math.pow(f, 4.0);\n return ath;\n }\n\n this.ATHformula = function (f, gfp) {\n var ath;\n switch (gfp.ATHtype) {\n case 0:\n ath = ATHformula_GB(f, 9);\n break;\n case 1:\n // over sensitive, should probably be removed\n ath = ATHformula_GB(f, -1);\n break;\n case 2:\n ath = ATHformula_GB(f, 0);\n break;\n case 3:\n // modification of GB formula by Roel\n ath = ATHformula_GB(f, 1) + 6;\n break;\n case 4:\n ath = ATHformula_GB(f, gfp.ATHcurve);\n break;\n default:\n ath = ATHformula_GB(f, 0);\n break;\n }\n return ath;\n }\n\n}\n\nmodule.exports = PsyModel;\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar GrInfo = require('./GrInfo.js');\n\nfunction IIISideInfo() {\n this.tt = [[null, null], [null, null]];\n this.main_data_begin = 0;\n this.private_bits = 0;\n this.resvDrain_pre = 0;\n this.resvDrain_post = 0;\n this.scfsi = [new_int(4), new_int(4)];\n\n for (var gr = 0; gr < 2; gr++) {\n for (var ch = 0; ch < 2; ch++) {\n this.tt[gr][ch] = new GrInfo();\n }\n }\n}\n\nmodule.exports = IIISideInfo;\n","// Process autolinks ''\n\n'use strict';\n\n\n/*eslint max-len:0*/\nvar EMAIL_RE = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\nvar AUTOLINK_RE = /^<([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)>/;\n\n\nmodule.exports = function autolink(state, silent) {\n var tail, linkMatch, emailMatch, url, fullUrl, token,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n tail = state.src.slice(pos);\n\n if (tail.indexOf('>') < 0) { return false; }\n\n if (AUTOLINK_RE.test(tail)) {\n linkMatch = tail.match(AUTOLINK_RE);\n\n url = linkMatch[0].slice(1, -1);\n fullUrl = state.md.normalizeLink(url);\n if (!state.md.validateLink(fullUrl)) { return false; }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.markup = 'autolink';\n token.info = 'auto';\n\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += linkMatch[0].length;\n return true;\n }\n\n if (EMAIL_RE.test(tail)) {\n emailMatch = tail.match(EMAIL_RE);\n\n url = emailMatch[0].slice(1, -1);\n fullUrl = state.md.normalizeLink('mailto:' + url);\n if (!state.md.validateLink(fullUrl)) { return false; }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.markup = 'autolink';\n token.info = 'auto';\n\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += emailMatch[0].length;\n return true;\n }\n\n return false;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","(function (root) {\n \"use strict\";\n\n/***** unorm.js *****/\n\n/*\n * UnicodeNormalizer 1.0.0\n * Copyright (c) 2008 Matsuza\n * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.\n * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $\n * $Rev: 13309 $\n */\n\n var DEFAULT_FEATURE = [null, 0, {}];\n var CACHE_THRESHOLD = 10;\n var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;\n var NCount = VCount * TCount; // 588\n var SCount = LCount * NCount; // 11172\n\n var UChar = function(cp, feature){\n this.codepoint = cp;\n this.feature = feature;\n };\n\n // Strategies\n var cache = {};\n var cacheCounter = [];\n for (var i = 0; i <= 0xFF; ++i){\n cacheCounter[i] = 0;\n }\n\n function fromCache(next, cp, needFeature){\n var ret = cache[cp];\n if(!ret){\n ret = next(cp, needFeature);\n if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){\n cache[cp] = ret;\n }\n }\n return ret;\n }\n\n function fromData(next, cp, needFeature){\n var hash = cp & 0xFF00;\n var dunit = UChar.udata[hash] || {};\n var f = dunit[cp];\n return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);\n }\n function fromCpOnly(next, cp, needFeature){\n return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);\n }\n function fromRuleBasedJamo(next, cp, needFeature){\n var j;\n if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){\n return next(cp, needFeature);\n }\n if(LBase <= cp && cp < LBase + LCount){\n var c = {};\n var base = (cp - LBase) * VCount;\n for (j = 0; j < VCount; ++j){\n c[VBase + j] = SBase + TCount * (j + base);\n }\n return new UChar(cp, [,,c]);\n }\n\n var SIndex = cp - SBase;\n var TIndex = SIndex % TCount;\n var feature = [];\n if(TIndex !== 0){\n feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];\n } else {\n feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];\n feature[2] = {};\n for (j = 1; j < TCount; ++j){\n feature[2][TBase + j] = cp + j;\n }\n }\n return new UChar(cp, feature);\n }\n function fromCpFilter(next, cp, needFeature){\n return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);\n }\n\n var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];\n\n UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {\n return function (cp, needFeature) {\n return strategy(next, cp, needFeature);\n };\n }, null);\n\n UChar.isHighSurrogate = function(cp){\n return cp >= 0xD800 && cp <= 0xDBFF;\n };\n UChar.isLowSurrogate = function(cp){\n return cp >= 0xDC00 && cp <= 0xDFFF;\n };\n\n UChar.prototype.prepFeature = function(){\n if(!this.feature){\n this.feature = UChar.fromCharCode(this.codepoint, true).feature;\n }\n };\n\n UChar.prototype.toString = function(){\n if(this.codepoint < 0x10000){\n return String.fromCharCode(this.codepoint);\n } else {\n var x = this.codepoint - 0x10000;\n return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);\n }\n };\n\n UChar.prototype.getDecomp = function(){\n this.prepFeature();\n return this.feature[0] || null;\n };\n\n UChar.prototype.isCompatibility = function(){\n this.prepFeature();\n return !!this.feature[1] && (this.feature[1] & (1 << 8));\n };\n UChar.prototype.isExclude = function(){\n this.prepFeature();\n return !!this.feature[1] && (this.feature[1] & (1 << 9));\n };\n UChar.prototype.getCanonicalClass = function(){\n this.prepFeature();\n return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;\n };\n UChar.prototype.getComposite = function(following){\n this.prepFeature();\n if(!this.feature[2]){\n return null;\n }\n var cp = this.feature[2][following.codepoint];\n return cp ? UChar.fromCharCode(cp) : null;\n };\n\n var UCharIterator = function(str){\n this.str = str;\n this.cursor = 0;\n };\n UCharIterator.prototype.next = function(){\n if(!!this.str && this.cursor < this.str.length){\n var cp = this.str.charCodeAt(this.cursor++);\n var d;\n if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){\n cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;\n ++this.cursor;\n }\n return UChar.fromCharCode(cp);\n } else {\n this.str = null;\n return null;\n }\n };\n\n var RecursDecompIterator = function(it, cano){\n this.it = it;\n this.canonical = cano;\n this.resBuf = [];\n };\n\n RecursDecompIterator.prototype.next = function(){\n function recursiveDecomp(cano, uchar){\n var decomp = uchar.getDecomp();\n if(!!decomp && !(cano && uchar.isCompatibility())){\n var ret = [];\n for(var i = 0; i < decomp.length; ++i){\n var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));\n ret = ret.concat(a);\n }\n return ret;\n } else {\n return [uchar];\n }\n }\n if(this.resBuf.length === 0){\n var uchar = this.it.next();\n if(!uchar){\n return null;\n }\n this.resBuf = recursiveDecomp(this.canonical, uchar);\n }\n return this.resBuf.shift();\n };\n\n var DecompIterator = function(it){\n this.it = it;\n this.resBuf = [];\n };\n\n DecompIterator.prototype.next = function(){\n var cc;\n if(this.resBuf.length === 0){\n do{\n var uchar = this.it.next();\n if(!uchar){\n break;\n }\n cc = uchar.getCanonicalClass();\n var inspt = this.resBuf.length;\n if(cc !== 0){\n for(; inspt > 0; --inspt){\n var uchar2 = this.resBuf[inspt - 1];\n var cc2 = uchar2.getCanonicalClass();\n if(cc2 <= cc){\n break;\n }\n }\n }\n this.resBuf.splice(inspt, 0, uchar);\n } while(cc !== 0);\n }\n return this.resBuf.shift();\n };\n\n var CompIterator = function(it){\n this.it = it;\n this.procBuf = [];\n this.resBuf = [];\n this.lastClass = null;\n };\n\n CompIterator.prototype.next = function(){\n while(this.resBuf.length === 0){\n var uchar = this.it.next();\n if(!uchar){\n this.resBuf = this.procBuf;\n this.procBuf = [];\n break;\n }\n if(this.procBuf.length === 0){\n this.lastClass = uchar.getCanonicalClass();\n this.procBuf.push(uchar);\n } else {\n var starter = this.procBuf[0];\n var composite = starter.getComposite(uchar);\n var cc = uchar.getCanonicalClass();\n if(!!composite && (this.lastClass < cc || this.lastClass === 0)){\n this.procBuf[0] = composite;\n } else {\n if(cc === 0){\n this.resBuf = this.procBuf;\n this.procBuf = [];\n }\n this.lastClass = cc;\n this.procBuf.push(uchar);\n }\n }\n }\n return this.resBuf.shift();\n };\n\n var createIterator = function(mode, str){\n switch(mode){\n case \"NFD\":\n return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));\n case \"NFKD\":\n return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));\n case \"NFC\":\n return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));\n case \"NFKC\":\n return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));\n }\n throw mode + \" is invalid\";\n };\n var normalize = function(mode, str){\n var it = createIterator(mode, str);\n var ret = \"\";\n var uchar;\n while(!!(uchar = it.next())){\n ret += uchar.toString();\n }\n return ret;\n };\n\n /* API functions */\n function nfd(str){\n return normalize(\"NFD\", str);\n }\n\n function nfkd(str){\n return normalize(\"NFKD\", str);\n }\n\n function nfc(str){\n return normalize(\"NFC\", str);\n }\n\n function nfkc(str){\n return normalize(\"NFKC\", str);\n }\n\n/* Unicode data */\nUChar.udata={\n0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},\n256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},\n512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256],66272:[,220]},\n768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256],66422:[,230],66423:[,230],66424:[,230],66425:[,230],66426:[,230]},\n1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},\n1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},\n1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},\n1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},\n2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230],2303:[,230]},\n2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},\n2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9],68325:[,230],68326:[,220]},\n2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},\n3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},\n3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},\n3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},\n3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},\n4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69759:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},\n4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70003:[,7],70080:[,9]},\n4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},\n4864:{4957:[,230],4958:[,230],4959:[,230],70460:[,7],70471:[,,{70462:70475,70487:70476}],70475:[[70471,70462]],70476:[[70471,70487]],70477:[,9],70502:[,230],70503:[,230],70504:[,230],70505:[,230],70506:[,230],70507:[,230],70508:[,230],70512:[,230],70513:[,230],70514:[,230],70515:[,230],70516:[,230]},\n5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},\n5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},\n5632:{71231:[,9],71350:[,9],71351:[,7]},\n5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},\n6144:{6313:[,228]},\n6400:{6457:[,222],6458:[,230],6459:[,220]},\n6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220],6832:[,230],6833:[,230],6834:[,230],6835:[,230],6836:[,230],6837:[,220],6838:[,220],6839:[,220],6840:[,220],6841:[,220],6842:[,220],6843:[,230],6844:[,230],6845:[,220]},\n6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},\n7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230],7416:[,230],7417:[,230]},\n7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7655:[,230],7656:[,230],7657:[,230],7658:[,230],7659:[,230],7660:[,230],7661:[,230],7662:[,230],7663:[,230],7664:[,230],7665:[,230],7666:[,230],7667:[,230],7668:[,230],7669:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},\n7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},\n7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},\n8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},\n8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},\n8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},\n8960:{9001:[[12296]],9002:[[12297]]},\n9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},\n10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},\n11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},\n11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},\n11776:{11935:[[27597],256],12019:[[40863],256]},\n12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},\n12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},\n12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},\n12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},\n13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},\n27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},\n27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},\n42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42652:[[1098],256],42653:[[1100],256],42655:[,230],42736:[,230],42737:[,230]},\n42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},\n43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},\n43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},\n43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},\n43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},\n48128:{113822:[,1]},\n53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},\n53760:{119362:[,230],119363:[,230],119364:[,230]},\n54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},\n54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},\n54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},\n55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},\n59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},\n60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},\n61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},\n61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},\n63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},\n63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},\n64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},\n64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},\n64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},\n64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},\n65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65063:[,220],65064:[,220],65065:[,220],65066:[,220],65067:[,220],65068:[,220],65069:[,220],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},\n65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}\n\n};\n\n /***** Module to export */\n var unorm = {\n nfc: nfc,\n nfd: nfd,\n nfkc: nfkc,\n nfkd: nfkd\n };\n\n /*globals module:true,define:true*/\n\n // CommonJS\n if (typeof module === \"object\") {\n module.exports = unorm;\n\n // AMD\n } else if (typeof define === \"function\" && define.amd) {\n define(\"unorm\", function () {\n return unorm;\n });\n\n // Global\n } else {\n root.unorm = unorm;\n }\n\n /***** Export as shim for String::normalize method *****/\n /*\n http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21\n\n 21.1.3.12 String.prototype.normalize(form=\"NFC\")\n When the normalize method is called with one argument form, the following steps are taken:\n\n 1. Let O be CheckObjectCoercible(this value).\n 2. Let S be ToString(O).\n 3. ReturnIfAbrupt(S).\n 4. If form is not provided or undefined let form be \"NFC\".\n 5. Let f be ToString(form).\n 6. ReturnIfAbrupt(f).\n 7. If f is not one of \"NFC\", \"NFD\", \"NFKC\", or \"NFKD\", then throw a RangeError Exception.\n 8. Let ns be the String value is the result of normalizing S into the normalization form named by f as specified in Unicode Standard Annex #15, UnicodeNormalizatoin Forms.\n 9. Return ns.\n\n The length property of the normalize method is 0.\n\n *NOTE* The normalize function is intentionally generic; it does not require that its this value be a String object. Therefore it can be transferred to other kinds of objects for use as a method.\n */\n unorm.shimApplied = false;\n\n if (!String.prototype.normalize) {\n Object.defineProperty(String.prototype, \"normalize\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function normalize (/*form*/) {\n \n var str = \"\" + this;\n var form = arguments[0] === undefined ? \"NFC\" : arguments[0];\n\n if (this === null || this === undefined) {\n throw new TypeError(\"Cannot call method on \" + Object.prototype.toString.call(this));\n }\n\n if (form === \"NFC\") {\n return unorm.nfc(str);\n } else if (form === \"NFD\") {\n return unorm.nfd(str);\n } else if (form === \"NFKC\") {\n return unorm.nfkc(str);\n } else if (form === \"NFKD\") {\n return unorm.nfkd(str);\n } else {\n throw new RangeError(\"Invalid normalization form: \" + form);\n }\n }\n });\n\n unorm.shimApplied = true;\n }\n}(this));\n","/*\n * List of Unicode code that are flagged as separator.\n *\n * Contains Unicode code of:\n * - Zs = Separator, space\n * - Zl = Separator, line\n * - Zp = Separator, paragraph\n *\n * This list has been computed from http://unicode.org/Public/UNIDATA/UnicodeData.txt\n * curl -s http://unicode.org/Public/UNIDATA/UnicodeData.txt | grep -E ';Zs;|;Zl;|;Zp;' | cut -d \\; -f 1 | xargs -I{} printf '%d, ' 0x{}\n *\n */\nexports.Z = [32, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8232, 8233, 8239, 8287, 12288];\n","/*\n * ReplayGainAnalysis - analyzes input samples and give the recommended dB change\n * Copyright (C) 2001 David Robinson and Glen Sawyer\n * Improvements and optimizations added by Frank Klemm, and by Marcel Muller \n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n *\n * concept and filter values by David Robinson (David@Robinson.org)\n * -- blame him if you think the idea is flawed\n * original coding by Glen Sawyer (mp3gain@hotmail.com)\n * -- blame him if you think this runs too slowly, or the coding is otherwise flawed\n *\n * lots of code improvements by Frank Klemm ( http://www.uni-jena.de/~pfk/mpp/ )\n * -- credit him for all the _good_ programming ;)\n *\n *\n * For an explanation of the concepts and the basic algorithms involved, go to:\n * http://www.replaygain.org/\n */\n\n/*\n * Here's the deal. Call\n *\n * InitGainAnalysis ( long samplefreq );\n *\n * to initialize everything. Call\n *\n * AnalyzeSamples ( var Float_t* left_samples,\n * var Float_t* right_samples,\n * size_t num_samples,\n * int num_channels );\n *\n * as many times as you want, with as many or as few samples as you want.\n * If mono, pass the sample buffer in through left_samples, leave\n * right_samples NULL, and make sure num_channels = 1.\n *\n * GetTitleGain()\n *\n * will return the recommended dB level change for all samples analyzed\n * SINCE THE LAST TIME you called GetTitleGain() OR InitGainAnalysis().\n *\n * GetAlbumGain()\n *\n * will return the recommended dB level change for all samples analyzed\n * since InitGainAnalysis() was called and finalized with GetTitleGain().\n *\n * Pseudo-code to process an album:\n *\n * Float_t l_samples [4096];\n * Float_t r_samples [4096];\n * size_t num_samples;\n * unsigned int num_songs;\n * unsigned int i;\n *\n * InitGainAnalysis ( 44100 );\n * for ( i = 1; i <= num_songs; i++ ) {\n * while ( ( num_samples = getSongSamples ( song[i], left_samples, right_samples ) ) > 0 )\n * AnalyzeSamples ( left_samples, right_samples, num_samples, 2 );\n * fprintf (\"Recommended dB change for song %2d: %+6.2 dB\\n\", i, GetTitleGain() );\n * }\n * fprintf (\"Recommended dB change for whole album: %+6.2 dB\\n\", GetAlbumGain() );\n */\n\n/*\n * So here's the main source of potential code confusion:\n *\n * The filters applied to the incoming samples are IIR filters,\n * meaning they rely on up to number of previous samples\n * AND up to number of previous filtered samples.\n *\n * I set up the AnalyzeSamples routine to minimize memory usage and interface\n * complexity. The speed isn't compromised too much (I don't think), but the\n * internal complexity is higher than it should be for such a relatively\n * simple routine.\n *\n * Optimization/clarity suggestions are welcome.\n */\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\n/**\n * Table entries per dB\n */\nGainAnalysis.STEPS_per_dB = 100.;\n/**\n * Table entries for 0...MAX_dB (normal max. values are 70...80 dB)\n */\nGainAnalysis.MAX_dB = 120.;\nGainAnalysis.GAIN_NOT_ENOUGH_SAMPLES = -24601;\nGainAnalysis.GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis.GAIN_ANALYSIS_OK = 1;\nGainAnalysis.INIT_GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis.INIT_GAIN_ANALYSIS_OK = 1;\n\nGainAnalysis.YULE_ORDER = 10;\nGainAnalysis.MAX_ORDER = GainAnalysis.YULE_ORDER;\n\nGainAnalysis.MAX_SAMP_FREQ = 48000;\nGainAnalysis.RMS_WINDOW_TIME_NUMERATOR = 1;\nGainAnalysis.RMS_WINDOW_TIME_DENOMINATOR = 20;\nGainAnalysis.MAX_SAMPLES_PER_WINDOW = ((GainAnalysis.MAX_SAMP_FREQ * GainAnalysis.RMS_WINDOW_TIME_NUMERATOR) / GainAnalysis.RMS_WINDOW_TIME_DENOMINATOR + 1);\n\nfunction GainAnalysis() {\n /**\n * calibration value for 89dB\n */\n var PINK_REF = 64.82;\n\n var YULE_ORDER = GainAnalysis.YULE_ORDER;\n /**\n * percentile which is louder than the proposed level\n */\n var RMS_PERCENTILE = 0.95;\n /**\n * maximum allowed sample frequency [Hz]\n */\n var MAX_SAMP_FREQ = GainAnalysis.MAX_SAMP_FREQ;\n var RMS_WINDOW_TIME_NUMERATOR = GainAnalysis.RMS_WINDOW_TIME_NUMERATOR;\n /**\n * numerator / denominator = time slice size [s]\n */\n var RMS_WINDOW_TIME_DENOMINATOR = GainAnalysis.RMS_WINDOW_TIME_DENOMINATOR;\n /**\n * max. Samples per Time slice\n */\n var MAX_SAMPLES_PER_WINDOW = GainAnalysis.MAX_SAMPLES_PER_WINDOW;\n\n\n var ABYule = [\n [0.03857599435200, -3.84664617118067, -0.02160367184185,\n 7.81501653005538, -0.00123395316851, -11.34170355132042,\n -0.00009291677959, 13.05504219327545, -0.01655260341619,\n -12.28759895145294, 0.02161526843274, 9.48293806319790,\n -0.02074045215285, -5.87257861775999, 0.00594298065125,\n 2.75465861874613, 0.00306428023191, -0.86984376593551,\n 0.00012025322027, 0.13919314567432, 0.00288463683916],\n [0.05418656406430, -3.47845948550071, -0.02911007808948,\n 6.36317777566148, -0.00848709379851, -8.54751527471874,\n -0.00851165645469, 9.47693607801280, -0.00834990904936,\n -8.81498681370155, 0.02245293253339, 6.85401540936998,\n -0.02596338512915, -4.39470996079559, 0.01624864962975,\n 2.19611684890774, -0.00240879051584, -0.75104302451432,\n 0.00674613682247, 0.13149317958808, -0.00187763777362],\n [0.15457299681924, -2.37898834973084, -0.09331049056315,\n 2.84868151156327, -0.06247880153653, -2.64577170229825,\n 0.02163541888798, 2.23697657451713, -0.05588393329856,\n -1.67148153367602, 0.04781476674921, 1.00595954808547,\n 0.00222312597743, -0.45953458054983, 0.03174092540049,\n 0.16378164858596, -0.01390589421898, -0.05032077717131,\n 0.00651420667831, 0.02347897407020, -0.00881362733839],\n [0.30296907319327, -1.61273165137247, -0.22613988682123,\n 1.07977492259970, -0.08587323730772, -0.25656257754070,\n 0.03282930172664, -0.16276719120440, -0.00915702933434,\n -0.22638893773906, -0.02364141202522, 0.39120800788284,\n -0.00584456039913, -0.22138138954925, 0.06276101321749,\n 0.04500235387352, -0.00000828086748, 0.02005851806501,\n 0.00205861885564, 0.00302439095741, -0.02950134983287],\n [0.33642304856132, -1.49858979367799, -0.25572241425570,\n 0.87350271418188, -0.11828570177555, 0.12205022308084,\n 0.11921148675203, -0.80774944671438, -0.07834489609479,\n 0.47854794562326, -0.00469977914380, -0.12453458140019,\n -0.00589500224440, -0.04067510197014, 0.05724228140351,\n 0.08333755284107, 0.00832043980773, -0.04237348025746,\n -0.01635381384540, 0.02977207319925, -0.01760176568150],\n [0.44915256608450, -0.62820619233671, -0.14351757464547,\n 0.29661783706366, -0.22784394429749, -0.37256372942400,\n -0.01419140100551, 0.00213767857124, 0.04078262797139,\n -0.42029820170918, -0.12398163381748, 0.22199650564824,\n 0.04097565135648, 0.00613424350682, 0.10478503600251,\n 0.06747620744683, -0.01863887810927, 0.05784820375801,\n -0.03193428438915, 0.03222754072173, 0.00541907748707],\n [0.56619470757641, -1.04800335126349, -0.75464456939302,\n 0.29156311971249, 0.16242137742230, -0.26806001042947,\n 0.16744243493672, 0.00819999645858, -0.18901604199609,\n 0.45054734505008, 0.30931782841830, -0.33032403314006,\n -0.27562961986224, 0.06739368333110, 0.00647310677246,\n -0.04784254229033, 0.08647503780351, 0.01639907836189,\n -0.03788984554840, 0.01807364323573, -0.00588215443421],\n [0.58100494960553, -0.51035327095184, -0.53174909058578,\n -0.31863563325245, -0.14289799034253, -0.20256413484477,\n 0.17520704835522, 0.14728154134330, 0.02377945217615,\n 0.38952639978999, 0.15558449135573, -0.23313271880868,\n -0.25344790059353, -0.05246019024463, 0.01628462406333,\n -0.02505961724053, 0.06920467763959, 0.02442357316099,\n -0.03721611395801, 0.01818801111503, -0.00749618797172],\n [0.53648789255105, -0.25049871956020, -0.42163034350696,\n -0.43193942311114, -0.00275953611929, -0.03424681017675,\n 0.04267842219415, -0.04678328784242, -0.10214864179676,\n 0.26408300200955, 0.14590772289388, 0.15113130533216,\n -0.02459864859345, -0.17556493366449, -0.11202315195388,\n -0.18823009262115, -0.04060034127000, 0.05477720428674,\n 0.04788665548180, 0.04704409688120, -0.02217936801134]];\n\n var ABButter = [\n [0.98621192462708, -1.97223372919527, -1.97242384925416,\n 0.97261396931306, 0.98621192462708],\n [0.98500175787242, -1.96977855582618, -1.97000351574484,\n 0.97022847566350, 0.98500175787242],\n [0.97938932735214, -1.95835380975398, -1.95877865470428,\n 0.95920349965459, 0.97938932735214],\n [0.97531843204928, -1.95002759149878, -1.95063686409857,\n 0.95124613669835, 0.97531843204928],\n [0.97316523498161, -1.94561023566527, -1.94633046996323,\n 0.94705070426118, 0.97316523498161],\n [0.96454515552826, -1.92783286977036, -1.92909031105652,\n 0.93034775234268, 0.96454515552826],\n [0.96009142950541, -1.91858953033784, -1.92018285901082,\n 0.92177618768381, 0.96009142950541],\n [0.95856916599601, -1.91542108074780, -1.91713833199203,\n 0.91885558323625, 0.95856916599601],\n [0.94597685600279, -1.88903307939452, -1.89195371200558,\n 0.89487434461664, 0.94597685600279]];\n\n\n /**\n * When calling this procedure, make sure that ip[-order] and op[-order]\n * point to real data\n */\n //private void filterYule(final float[] input, int inputPos, float[] output,\n //int outputPos, int nSamples, final float[] kernel) {\n function filterYule(input, inputPos, output, outputPos, nSamples, kernel) {\n\n while ((nSamples--) != 0) {\n /* 1e-10 is a hack to avoid slowdown because of denormals */\n output[outputPos] = 1e-10 + input[inputPos + 0] * kernel[0]\n - output[outputPos - 1] * kernel[1] + input[inputPos - 1]\n * kernel[2] - output[outputPos - 2] * kernel[3]\n + input[inputPos - 2] * kernel[4] - output[outputPos - 3]\n * kernel[5] + input[inputPos - 3] * kernel[6]\n - output[outputPos - 4] * kernel[7] + input[inputPos - 4]\n * kernel[8] - output[outputPos - 5] * kernel[9]\n + input[inputPos - 5] * kernel[10] - output[outputPos - 6]\n * kernel[11] + input[inputPos - 6] * kernel[12]\n - output[outputPos - 7] * kernel[13] + input[inputPos - 7]\n * kernel[14] - output[outputPos - 8] * kernel[15]\n + input[inputPos - 8] * kernel[16] - output[outputPos - 9]\n * kernel[17] + input[inputPos - 9] * kernel[18]\n - output[outputPos - 10] * kernel[19]\n + input[inputPos - 10] * kernel[20];\n ++outputPos;\n ++inputPos;\n }\n }\n\n//private void filterButter(final float[] input, int inputPos,\n// float[] output, int outputPos, int nSamples, final float[] kernel) {\n function filterButter(input, inputPos, output, outputPos, nSamples, kernel) {\n\n while ((nSamples--) != 0) {\n output[outputPos] = input[inputPos + 0] * kernel[0]\n - output[outputPos - 1] * kernel[1] + input[inputPos - 1]\n * kernel[2] - output[outputPos - 2] * kernel[3]\n + input[inputPos - 2] * kernel[4];\n ++outputPos;\n ++inputPos;\n }\n }\n\n /**\n * @return INIT_GAIN_ANALYSIS_OK if successful, INIT_GAIN_ANALYSIS_ERROR if\n * not\n */\n function ResetSampleFrequency(rgData, samplefreq) {\n /* zero out initial values */\n for (var i = 0; i < MAX_ORDER; i++)\n rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0.;\n\n switch (0 | (samplefreq)) {\n case 48000:\n rgData.reqindex = 0;\n break;\n case 44100:\n rgData.reqindex = 1;\n break;\n case 32000:\n rgData.reqindex = 2;\n break;\n case 24000:\n rgData.reqindex = 3;\n break;\n case 22050:\n rgData.reqindex = 4;\n break;\n case 16000:\n rgData.reqindex = 5;\n break;\n case 12000:\n rgData.reqindex = 6;\n break;\n case 11025:\n rgData.reqindex = 7;\n break;\n case 8000:\n rgData.reqindex = 8;\n break;\n default:\n return INIT_GAIN_ANALYSIS_ERROR;\n }\n\n rgData.sampleWindow = 0 | ((samplefreq * RMS_WINDOW_TIME_NUMERATOR\n + RMS_WINDOW_TIME_DENOMINATOR - 1) / RMS_WINDOW_TIME_DENOMINATOR);\n\n rgData.lsum = 0.;\n rgData.rsum = 0.;\n rgData.totsamp = 0;\n\n Arrays.ill(rgData.A, 0);\n\n return INIT_GAIN_ANALYSIS_OK;\n }\n\n this.InitGainAnalysis = function (rgData, samplefreq) {\n if (ResetSampleFrequency(rgData, samplefreq) != INIT_GAIN_ANALYSIS_OK) {\n return INIT_GAIN_ANALYSIS_ERROR;\n }\n\n rgData.linpre = MAX_ORDER;\n rgData.rinpre = MAX_ORDER;\n rgData.lstep = MAX_ORDER;\n rgData.rstep = MAX_ORDER;\n rgData.lout = MAX_ORDER;\n rgData.rout = MAX_ORDER;\n\n Arrays.fill(rgData.B, 0);\n\n return INIT_GAIN_ANALYSIS_OK;\n };\n\n /**\n * square\n */\n function fsqr(d) {\n return d * d;\n }\n\n this.AnalyzeSamples = function (rgData, left_samples, left_samplesPos, right_samples, right_samplesPos, num_samples,\n num_channels) {\n var curleft;\n var curleftBase;\n var curright;\n var currightBase;\n var batchsamples;\n var cursamples;\n var cursamplepos;\n\n if (num_samples == 0)\n return GAIN_ANALYSIS_OK;\n\n cursamplepos = 0;\n batchsamples = num_samples;\n\n switch (num_channels) {\n case 1:\n right_samples = left_samples;\n right_samplesPos = left_samplesPos;\n break;\n case 2:\n break;\n default:\n return GAIN_ANALYSIS_ERROR;\n }\n\n if (num_samples < MAX_ORDER) {\n System.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER, num_samples);\n System.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER, num_samples);\n } else {\n System.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER, MAX_ORDER);\n System.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER, MAX_ORDER);\n }\n\n while (batchsamples > 0) {\n cursamples = batchsamples > rgData.sampleWindow - rgData.totsamp ? rgData.sampleWindow\n - rgData.totsamp\n : batchsamples;\n if (cursamplepos < MAX_ORDER) {\n curleft = rgData.linpre + cursamplepos;\n curleftBase = rgData.linprebuf;\n curright = rgData.rinpre + cursamplepos;\n currightBase = rgData.rinprebuf;\n if (cursamples > MAX_ORDER - cursamplepos)\n cursamples = MAX_ORDER - cursamplepos;\n } else {\n curleft = left_samplesPos + cursamplepos;\n curleftBase = left_samples;\n curright = right_samplesPos + cursamplepos;\n currightBase = right_samples;\n }\n\n filterYule(curleftBase, curleft, rgData.lstepbuf, rgData.lstep\n + rgData.totsamp, cursamples, ABYule[rgData.reqindex]);\n filterYule(currightBase, curright, rgData.rstepbuf, rgData.rstep\n + rgData.totsamp, cursamples, ABYule[rgData.reqindex]);\n\n filterButter(rgData.lstepbuf, rgData.lstep + rgData.totsamp,\n rgData.loutbuf, rgData.lout + rgData.totsamp, cursamples,\n ABButter[rgData.reqindex]);\n filterButter(rgData.rstepbuf, rgData.rstep + rgData.totsamp,\n rgData.routbuf, rgData.rout + rgData.totsamp, cursamples,\n ABButter[rgData.reqindex]);\n\n curleft = rgData.lout + rgData.totsamp;\n /* Get the squared values */\n curleftBase = rgData.loutbuf;\n curright = rgData.rout + rgData.totsamp;\n currightBase = rgData.routbuf;\n\n var i = cursamples % 8;\n while ((i--) != 0) {\n rgData.lsum += fsqr(curleftBase[curleft++]);\n rgData.rsum += fsqr(currightBase[curright++]);\n }\n i = cursamples / 8;\n while ((i--) != 0) {\n rgData.lsum += fsqr(curleftBase[curleft + 0])\n + fsqr(curleftBase[curleft + 1])\n + fsqr(curleftBase[curleft + 2])\n + fsqr(curleftBase[curleft + 3])\n + fsqr(curleftBase[curleft + 4])\n + fsqr(curleftBase[curleft + 5])\n + fsqr(curleftBase[curleft + 6])\n + fsqr(curleftBase[curleft + 7]);\n curleft += 8;\n rgData.rsum += fsqr(currightBase[curright + 0])\n + fsqr(currightBase[curright + 1])\n + fsqr(currightBase[curright + 2])\n + fsqr(currightBase[curright + 3])\n + fsqr(currightBase[curright + 4])\n + fsqr(currightBase[curright + 5])\n + fsqr(currightBase[curright + 6])\n + fsqr(currightBase[curright + 7]);\n curright += 8;\n }\n\n batchsamples -= cursamples;\n cursamplepos += cursamples;\n rgData.totsamp += cursamples;\n if (rgData.totsamp == rgData.sampleWindow) {\n /* Get the Root Mean Square (RMS) for this set of samples */\n var val = GainAnalysis.STEPS_per_dB\n * 10.\n * Math.log10((rgData.lsum + rgData.rsum)\n / rgData.totsamp * 0.5 + 1.e-37);\n var ival = (val <= 0) ? 0 : 0 | val;\n if (ival >= rgData.A.length)\n ival = rgData.A.length - 1;\n rgData.A[ival]++;\n rgData.lsum = rgData.rsum = 0.;\n\n System.arraycopy(rgData.loutbuf, rgData.totsamp,\n rgData.loutbuf, 0, MAX_ORDER);\n System.arraycopy(rgData.routbuf, rgData.totsamp,\n rgData.routbuf, 0, MAX_ORDER);\n System.arraycopy(rgData.lstepbuf, rgData.totsamp,\n rgData.lstepbuf, 0, MAX_ORDER);\n System.arraycopy(rgData.rstepbuf, rgData.totsamp,\n rgData.rstepbuf, 0, MAX_ORDER);\n rgData.totsamp = 0;\n }\n if (rgData.totsamp > rgData.sampleWindow) {\n /*\n * somehow I really screwed up: Error in programming! Contact\n * author about totsamp > sampleWindow\n */\n return GAIN_ANALYSIS_ERROR;\n }\n }\n if (num_samples < MAX_ORDER) {\n System.arraycopy(rgData.linprebuf, num_samples, rgData.linprebuf,\n 0, MAX_ORDER - num_samples);\n System.arraycopy(rgData.rinprebuf, num_samples, rgData.rinprebuf,\n 0, MAX_ORDER - num_samples);\n System.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER - num_samples, num_samples);\n System.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER - num_samples, num_samples);\n } else {\n System.arraycopy(left_samples, left_samplesPos + num_samples\n - MAX_ORDER, rgData.linprebuf, 0, MAX_ORDER);\n System.arraycopy(right_samples, right_samplesPos + num_samples\n - MAX_ORDER, rgData.rinprebuf, 0, MAX_ORDER);\n }\n\n return GAIN_ANALYSIS_OK;\n };\n\n function analyzeResult(Array, len) {\n var i;\n\n var elems = 0;\n for (i = 0; i < len; i++)\n elems += Array[i];\n if (elems == 0)\n return GAIN_NOT_ENOUGH_SAMPLES;\n\n var upper = 0 | Math.ceil(elems * (1. - RMS_PERCENTILE));\n for (i = len; i-- > 0;) {\n if ((upper -= Array[i]) <= 0)\n break;\n }\n\n //return (float) ((float) PINK_REF - (float) i / (float) STEPS_per_dB);\n return (PINK_REF - i / GainAnalysis.STEPS_per_dB);\n }\n\n this.GetTitleGain = function (rgData) {\n var retval = analyzeResult(rgData.A, rgData.A.length);\n\n for (var i = 0; i < rgData.A.length; i++) {\n rgData.B[i] += rgData.A[i];\n rgData.A[i] = 0;\n }\n\n for (var i = 0; i < MAX_ORDER; i++)\n rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0.;\n\n rgData.totsamp = 0;\n rgData.lsum = rgData.rsum = 0.;\n return retval;\n }\n\n}\n\nmodule.exports = GainAnalysis;\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","/* \n * List of Unicode code that are flagged as letter.\n *\n * Contains Unicode code of:\n * - Lu = Letter, uppercase\n * - Ll = Letter, lowercase\n * - Lt = Letter, titlecase\n * - Lm = Letter, modifier\n * - Lo = Letter, other\n *\n * This list has been computed from http://unicode.org/Public/UNIDATA/UnicodeData.txt\n *\n */\n\nexports.L = [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 170, 181, 186, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 736, 737, 738, 739, 740, 748, 750, 880, 881, 882, 883, 884, 886, 887, 890, 891, 892, 893, 895, 902, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1369, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1520, 1521, 1522, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1646, 1647, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1749, 1765, 1766, 1774, 1775, 1786, 1787, 1788, 1791, 1808, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1969, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2036, 2037, 2042, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2074, 2084, 2088, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2365, 2384, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2447, 2448, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2482, 2486, 2487, 2488, 2489, 2493, 2510, 2524, 2525, 2527, 2528, 2529, 2544, 2545, 2565, 2566, 2567, 2568, 2569, 2570, 2575, 2576, 2579, 2580, 2581, 2582, 2583, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2650, 2651, 2652, 2654, 2674, 2675, 2676, 2693, 2694, 2695, 2696, 2697, 2698, 2699, 2700, 2701, 2703, 2704, 2705, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2738, 2739, 2741, 2742, 2743, 2744, 2745, 2749, 2768, 2784, 2785, 2809, 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2831, 2832, 2835, 2836, 2837, 2838, 2839, 2840, 2841, 2842, 2843, 2844, 2845, 2846, 2847, 2848, 2849, 2850, 2851, 2852, 2853, 2854, 2855, 2856, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2866, 2867, 2869, 2870, 2871, 2872, 2873, 2877, 2908, 2909, 2911, 2912, 2913, 2929, 2947, 2949, 2950, 2951, 2952, 2953, 2954, 2958, 2959, 2960, 2962, 2963, 2964, 2965, 2969, 2970, 2972, 2974, 2975, 2979, 2980, 2984, 2985, 2986, 2990, 2991, 2992, 2993, 2994, 2995, 2996, 2997, 2998, 2999, 3000, 3001, 3024, 3077, 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3086, 3087, 3088, 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3133, 3160, 3161, 3162, 3168, 3169, 3205, 3206, 3207, 3208, 3209, 3210, 3211, 3212, 3214, 3215, 3216, 3218, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, 3233, 3234, 3235, 3236, 3237, 3238, 3239, 3240, 3242, 3243, 3244, 3245, 3246, 3247, 3248, 3249, 3250, 3251, 3253, 3254, 3255, 3256, 3257, 3261, 3294, 3296, 3297, 3313, 3314, 3333, 3334, 3335, 3336, 3337, 3338, 3339, 3340, 3342, 3343, 3344, 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, 3389, 3406, 3423, 3424, 3425, 3450, 3451, 3452, 3453, 3454, 3455, 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473, 3474, 3475, 3476, 3477, 3478, 3482, 3483, 3484, 3485, 3486, 3487, 3488, 3489, 3490, 3491, 3492, 3493, 3494, 3495, 3496, 3497, 3498, 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3507, 3508, 3509, 3510, 3511, 3512, 3513, 3514, 3515, 3517, 3520, 3521, 3522, 3523, 3524, 3525, 3526, 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3594, 3595, 3596, 3597, 3598, 3599, 3600, 3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629, 3630, 3631, 3632, 3634, 3635, 3648, 3649, 3650, 3651, 3652, 3653, 3654, 3713, 3714, 3716, 3719, 3720, 3722, 3725, 3732, 3733, 3734, 3735, 3737, 3738, 3739, 3740, 3741, 3742, 3743, 3745, 3746, 3747, 3749, 3751, 3754, 3755, 3757, 3758, 3759, 3760, 3762, 3763, 3773, 3776, 3777, 3778, 3779, 3780, 3782, 3804, 3805, 3806, 3807, 3840, 3904, 3905, 3906, 3907, 3908, 3909, 3910, 3911, 3913, 3914, 3915, 3916, 3917, 3918, 3919, 3920, 3921, 3922, 3923, 3924, 3925, 3926, 3927, 3928, 3929, 3930, 3931, 3932, 3933, 3934, 3935, 3936, 3937, 3938, 3939, 3940, 3941, 3942, 3943, 3944, 3945, 3946, 3947, 3948, 3976, 3977, 3978, 3979, 3980, 4096, 4097, 4098, 4099, 4100, 4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112, 4113, 4114, 4115, 4116, 4117, 4118, 4119, 4120, 4121, 4122, 4123, 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, 4137, 4138, 4159, 4176, 4177, 4178, 4179, 4180, 4181, 4186, 4187, 4188, 4189, 4193, 4197, 4198, 4206, 4207, 4208, 4213, 4214, 4215, 4216, 4217, 4218, 4219, 4220, 4221, 4222, 4223, 4224, 4225, 4238, 4256, 4257, 4258, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, 4270, 4271, 4272, 4273, 4274, 4275, 4276, 4277, 4278, 4279, 4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293, 4295, 4301, 4304, 4305, 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334, 4335, 4336, 4337, 4338, 4339, 4340, 4341, 4342, 4343, 4344, 4345, 4346, 4348, 4349, 4350, 4351, 4352, 4353, 4354, 4355, 4356, 4357, 4358, 4359, 4360, 4361, 4362, 4363, 4364, 4365, 4366, 4367, 4368, 4369, 4370, 4371, 4372, 4373, 4374, 4375, 4376, 4377, 4378, 4379, 4380, 4381, 4382, 4383, 4384, 4385, 4386, 4387, 4388, 4389, 4390, 4391, 4392, 4393, 4394, 4395, 4396, 4397, 4398, 4399, 4400, 4401, 4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409, 4410, 4411, 4412, 4413, 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421, 4422, 4423, 4424, 4425, 4426, 4427, 4428, 4429, 4430, 4431, 4432, 4433, 4434, 4435, 4436, 4437, 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445, 4446, 4447, 4448, 4449, 4450, 4451, 4452, 4453, 4454, 4455, 4456, 4457, 4458, 4459, 4460, 4461, 4462, 4463, 4464, 4465, 4466, 4467, 4468, 4469, 4470, 4471, 4472, 4473, 4474, 4475, 4476, 4477, 4478, 4479, 4480, 4481, 4482, 4483, 4484, 4485, 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493, 4494, 4495, 4496, 4497, 4498, 4499, 4500, 4501, 4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509, 4510, 4511, 4512, 4513, 4514, 4515, 4516, 4517, 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525, 4526, 4527, 4528, 4529, 4530, 4531, 4532, 4533, 4534, 4535, 4536, 4537, 4538, 4539, 4540, 4541, 4542, 4543, 4544, 4545, 4546, 4547, 4548, 4549, 4550, 4551, 4552, 4553, 4554, 4555, 4556, 4557, 4558, 4559, 4560, 4561, 4562, 4563, 4564, 4565, 4566, 4567, 4568, 4569, 4570, 4571, 4572, 4573, 4574, 4575, 4576, 4577, 4578, 4579, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4591, 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599, 4600, 4601, 4602, 4603, 4604, 4605, 4606, 4607, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4626, 4627, 4628, 4629, 4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, 4638, 4639, 4640, 4641, 4642, 4643, 4644, 4645, 4646, 4647, 4648, 4649, 4650, 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, 4662, 4663, 4664, 4665, 4666, 4667, 4668, 4669, 4670, 4671, 4672, 4673, 4674, 4675, 4676, 4677, 4678, 4679, 4680, 4682, 4683, 4684, 4685, 4688, 4689, 4690, 4691, 4692, 4693, 4694, 4696, 4698, 4699, 4700, 4701, 4704, 4705, 4706, 4707, 4708, 4709, 4710, 4711, 4712, 4713, 4714, 4715, 4716, 4717, 4718, 4719, 4720, 4721, 4722, 4723, 4724, 4725, 4726, 4727, 4728, 4729, 4730, 4731, 4732, 4733, 4734, 4735, 4736, 4737, 4738, 4739, 4740, 4741, 4742, 4743, 4744, 4746, 4747, 4748, 4749, 4752, 4753, 4754, 4755, 4756, 4757, 4758, 4759, 4760, 4761, 4762, 4763, 4764, 4765, 4766, 4767, 4768, 4769, 4770, 4771, 4772, 4773, 4774, 4775, 4776, 4777, 4778, 4779, 4780, 4781, 4782, 4783, 4784, 4786, 4787, 4788, 4789, 4792, 4793, 4794, 4795, 4796, 4797, 4798, 4800, 4802, 4803, 4804, 4805, 4808, 4809, 4810, 4811, 4812, 4813, 4814, 4815, 4816, 4817, 4818, 4819, 4820, 4821, 4822, 4824, 4825, 4826, 4827, 4828, 4829, 4830, 4831, 4832, 4833, 4834, 4835, 4836, 4837, 4838, 4839, 4840, 4841, 4842, 4843, 4844, 4845, 4846, 4847, 4848, 4849, 4850, 4851, 4852, 4853, 4854, 4855, 4856, 4857, 4858, 4859, 4860, 4861, 4862, 4863, 4864, 4865, 4866, 4867, 4868, 4869, 4870, 4871, 4872, 4873, 4874, 4875, 4876, 4877, 4878, 4879, 4880, 4882, 4883, 4884, 4885, 4888, 4889, 4890, 4891, 4892, 4893, 4894, 4895, 4896, 4897, 4898, 4899, 4900, 4901, 4902, 4903, 4904, 4905, 4906, 4907, 4908, 4909, 4910, 4911, 4912, 4913, 4914, 4915, 4916, 4917, 4918, 4919, 4920, 4921, 4922, 4923, 4924, 4925, 4926, 4927, 4928, 4929, 4930, 4931, 4932, 4933, 4934, 4935, 4936, 4937, 4938, 4939, 4940, 4941, 4942, 4943, 4944, 4945, 4946, 4947, 4948, 4949, 4950, 4951, 4952, 4953, 4954, 4992, 4993, 4994, 4995, 4996, 4997, 4998, 4999, 5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055, 5056, 5057, 5058, 5059, 5060, 5061, 5062, 5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, 5072, 5073, 5074, 5075, 5076, 5077, 5078, 5079, 5080, 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5090, 5091, 5092, 5093, 5094, 5095, 5096, 5097, 5098, 5099, 5100, 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108, 5109, 5112, 5113, 5114, 5115, 5116, 5117, 5121, 5122, 5123, 5124, 5125, 5126, 5127, 5128, 5129, 5130, 5131, 5132, 5133, 5134, 5135, 5136, 5137, 5138, 5139, 5140, 5141, 5142, 5143, 5144, 5145, 5146, 5147, 5148, 5149, 5150, 5151, 5152, 5153, 5154, 5155, 5156, 5157, 5158, 5159, 5160, 5161, 5162, 5163, 5164, 5165, 5166, 5167, 5168, 5169, 5170, 5171, 5172, 5173, 5174, 5175, 5176, 5177, 5178, 5179, 5180, 5181, 5182, 5183, 5184, 5185, 5186, 5187, 5188, 5189, 5190, 5191, 5192, 5193, 5194, 5195, 5196, 5197, 5198, 5199, 5200, 5201, 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, 5213, 5214, 5215, 5216, 5217, 5218, 5219, 5220, 5221, 5222, 5223, 5224, 5225, 5226, 5227, 5228, 5229, 5230, 5231, 5232, 5233, 5234, 5235, 5236, 5237, 5238, 5239, 5240, 5241, 5242, 5243, 5244, 5245, 5246, 5247, 5248, 5249, 5250, 5251, 5252, 5253, 5254, 5255, 5256, 5257, 5258, 5259, 5260, 5261, 5262, 5263, 5264, 5265, 5266, 5267, 5268, 5269, 5270, 5271, 5272, 5273, 5274, 5275, 5276, 5277, 5278, 5279, 5280, 5281, 5282, 5283, 5284, 5285, 5286, 5287, 5288, 5289, 5290, 5291, 5292, 5293, 5294, 5295, 5296, 5297, 5298, 5299, 5300, 5301, 5302, 5303, 5304, 5305, 5306, 5307, 5308, 5309, 5310, 5311, 5312, 5313, 5314, 5315, 5316, 5317, 5318, 5319, 5320, 5321, 5322, 5323, 5324, 5325, 5326, 5327, 5328, 5329, 5330, 5331, 5332, 5333, 5334, 5335, 5336, 5337, 5338, 5339, 5340, 5341, 5342, 5343, 5344, 5345, 5346, 5347, 5348, 5349, 5350, 5351, 5352, 5353, 5354, 5355, 5356, 5357, 5358, 5359, 5360, 5361, 5362, 5363, 5364, 5365, 5366, 5367, 5368, 5369, 5370, 5371, 5372, 5373, 5374, 5375, 5376, 5377, 5378, 5379, 5380, 5381, 5382, 5383, 5384, 5385, 5386, 5387, 5388, 5389, 5390, 5391, 5392, 5393, 5394, 5395, 5396, 5397, 5398, 5399, 5400, 5401, 5402, 5403, 5404, 5405, 5406, 5407, 5408, 5409, 5410, 5411, 5412, 5413, 5414, 5415, 5416, 5417, 5418, 5419, 5420, 5421, 5422, 5423, 5424, 5425, 5426, 5427, 5428, 5429, 5430, 5431, 5432, 5433, 5434, 5435, 5436, 5437, 5438, 5439, 5440, 5441, 5442, 5443, 5444, 5445, 5446, 5447, 5448, 5449, 5450, 5451, 5452, 5453, 5454, 5455, 5456, 5457, 5458, 5459, 5460, 5461, 5462, 5463, 5464, 5465, 5466, 5467, 5468, 5469, 5470, 5471, 5472, 5473, 5474, 5475, 5476, 5477, 5478, 5479, 5480, 5481, 5482, 5483, 5484, 5485, 5486, 5487, 5488, 5489, 5490, 5491, 5492, 5493, 5494, 5495, 5496, 5497, 5498, 5499, 5500, 5501, 5502, 5503, 5504, 5505, 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, 5514, 5515, 5516, 5517, 5518, 5519, 5520, 5521, 5522, 5523, 5524, 5525, 5526, 5527, 5528, 5529, 5530, 5531, 5532, 5533, 5534, 5535, 5536, 5537, 5538, 5539, 5540, 5541, 5542, 5543, 5544, 5545, 5546, 5547, 5548, 5549, 5550, 5551, 5552, 5553, 5554, 5555, 5556, 5557, 5558, 5559, 5560, 5561, 5562, 5563, 5564, 5565, 5566, 5567, 5568, 5569, 5570, 5571, 5572, 5573, 5574, 5575, 5576, 5577, 5578, 5579, 5580, 5581, 5582, 5583, 5584, 5585, 5586, 5587, 5588, 5589, 5590, 5591, 5592, 5593, 5594, 5595, 5596, 5597, 5598, 5599, 5600, 5601, 5602, 5603, 5604, 5605, 5606, 5607, 5608, 5609, 5610, 5611, 5612, 5613, 5614, 5615, 5616, 5617, 5618, 5619, 5620, 5621, 5622, 5623, 5624, 5625, 5626, 5627, 5628, 5629, 5630, 5631, 5632, 5633, 5634, 5635, 5636, 5637, 5638, 5639, 5640, 5641, 5642, 5643, 5644, 5645, 5646, 5647, 5648, 5649, 5650, 5651, 5652, 5653, 5654, 5655, 5656, 5657, 5658, 5659, 5660, 5661, 5662, 5663, 5664, 5665, 5666, 5667, 5668, 5669, 5670, 5671, 5672, 5673, 5674, 5675, 5676, 5677, 5678, 5679, 5680, 5681, 5682, 5683, 5684, 5685, 5686, 5687, 5688, 5689, 5690, 5691, 5692, 5693, 5694, 5695, 5696, 5697, 5698, 5699, 5700, 5701, 5702, 5703, 5704, 5705, 5706, 5707, 5708, 5709, 5710, 5711, 5712, 5713, 5714, 5715, 5716, 5717, 5718, 5719, 5720, 5721, 5722, 5723, 5724, 5725, 5726, 5727, 5728, 5729, 5730, 5731, 5732, 5733, 5734, 5735, 5736, 5737, 5738, 5739, 5740, 5743, 5744, 5745, 5746, 5747, 5748, 5749, 5750, 5751, 5752, 5753, 5754, 5755, 5756, 5757, 5758, 5759, 5761, 5762, 5763, 5764, 5765, 5766, 5767, 5768, 5769, 5770, 5771, 5772, 5773, 5774, 5775, 5776, 5777, 5778, 5779, 5780, 5781, 5782, 5783, 5784, 5785, 5786, 5792, 5793, 5794, 5795, 5796, 5797, 5798, 5799, 5800, 5801, 5802, 5803, 5804, 5805, 5806, 5807, 5808, 5809, 5810, 5811, 5812, 5813, 5814, 5815, 5816, 5817, 5818, 5819, 5820, 5821, 5822, 5823, 5824, 5825, 5826, 5827, 5828, 5829, 5830, 5831, 5832, 5833, 5834, 5835, 5836, 5837, 5838, 5839, 5840, 5841, 5842, 5843, 5844, 5845, 5846, 5847, 5848, 5849, 5850, 5851, 5852, 5853, 5854, 5855, 5856, 5857, 5858, 5859, 5860, 5861, 5862, 5863, 5864, 5865, 5866, 5873, 5874, 5875, 5876, 5877, 5878, 5879, 5880, 5888, 5889, 5890, 5891, 5892, 5893, 5894, 5895, 5896, 5897, 5898, 5899, 5900, 5902, 5903, 5904, 5905, 5920, 5921, 5922, 5923, 5924, 5925, 5926, 5927, 5928, 5929, 5930, 5931, 5932, 5933, 5934, 5935, 5936, 5937, 5952, 5953, 5954, 5955, 5956, 5957, 5958, 5959, 5960, 5961, 5962, 5963, 5964, 5965, 5966, 5967, 5968, 5969, 5984, 5985, 5986, 5987, 5988, 5989, 5990, 5991, 5992, 5993, 5994, 5995, 5996, 5998, 5999, 6000, 6016, 6017, 6018, 6019, 6020, 6021, 6022, 6023, 6024, 6025, 6026, 6027, 6028, 6029, 6030, 6031, 6032, 6033, 6034, 6035, 6036, 6037, 6038, 6039, 6040, 6041, 6042, 6043, 6044, 6045, 6046, 6047, 6048, 6049, 6050, 6051, 6052, 6053, 6054, 6055, 6056, 6057, 6058, 6059, 6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6103, 6108, 6176, 6177, 6178, 6179, 6180, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, 6189, 6190, 6191, 6192, 6193, 6194, 6195, 6196, 6197, 6198, 6199, 6200, 6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6210, 6211, 6212, 6213, 6214, 6215, 6216, 6217, 6218, 6219, 6220, 6221, 6222, 6223, 6224, 6225, 6226, 6227, 6228, 6229, 6230, 6231, 6232, 6233, 6234, 6235, 6236, 6237, 6238, 6239, 6240, 6241, 6242, 6243, 6244, 6245, 6246, 6247, 6248, 6249, 6250, 6251, 6252, 6253, 6254, 6255, 6256, 6257, 6258, 6259, 6260, 6261, 6262, 6263, 6272, 6273, 6274, 6275, 6276, 6277, 6278, 6279, 6280, 6281, 6282, 6283, 6284, 6285, 6286, 6287, 6288, 6289, 6290, 6291, 6292, 6293, 6294, 6295, 6296, 6297, 6298, 6299, 6300, 6301, 6302, 6303, 6304, 6305, 6306, 6307, 6308, 6309, 6310, 6311, 6312, 6314, 6320, 6321, 6322, 6323, 6324, 6325, 6326, 6327, 6328, 6329, 6330, 6331, 6332, 6333, 6334, 6335, 6336, 6337, 6338, 6339, 6340, 6341, 6342, 6343, 6344, 6345, 6346, 6347, 6348, 6349, 6350, 6351, 6352, 6353, 6354, 6355, 6356, 6357, 6358, 6359, 6360, 6361, 6362, 6363, 6364, 6365, 6366, 6367, 6368, 6369, 6370, 6371, 6372, 6373, 6374, 6375, 6376, 6377, 6378, 6379, 6380, 6381, 6382, 6383, 6384, 6385, 6386, 6387, 6388, 6389, 6400, 6401, 6402, 6403, 6404, 6405, 6406, 6407, 6408, 6409, 6410, 6411, 6412, 6413, 6414, 6415, 6416, 6417, 6418, 6419, 6420, 6421, 6422, 6423, 6424, 6425, 6426, 6427, 6428, 6429, 6430, 6480, 6481, 6482, 6483, 6484, 6485, 6486, 6487, 6488, 6489, 6490, 6491, 6492, 6493, 6494, 6495, 6496, 6497, 6498, 6499, 6500, 6501, 6502, 6503, 6504, 6505, 6506, 6507, 6508, 6509, 6512, 6513, 6514, 6515, 6516, 6528, 6529, 6530, 6531, 6532, 6533, 6534, 6535, 6536, 6537, 6538, 6539, 6540, 6541, 6542, 6543, 6544, 6545, 6546, 6547, 6548, 6549, 6550, 6551, 6552, 6553, 6554, 6555, 6556, 6557, 6558, 6559, 6560, 6561, 6562, 6563, 6564, 6565, 6566, 6567, 6568, 6569, 6570, 6571, 6576, 6577, 6578, 6579, 6580, 6581, 6582, 6583, 6584, 6585, 6586, 6587, 6588, 6589, 6590, 6591, 6592, 6593, 6594, 6595, 6596, 6597, 6598, 6599, 6600, 6601, 6656, 6657, 6658, 6659, 6660, 6661, 6662, 6663, 6664, 6665, 6666, 6667, 6668, 6669, 6670, 6671, 6672, 6673, 6674, 6675, 6676, 6677, 6678, 6688, 6689, 6690, 6691, 6692, 6693, 6694, 6695, 6696, 6697, 6698, 6699, 6700, 6701, 6702, 6703, 6704, 6705, 6706, 6707, 6708, 6709, 6710, 6711, 6712, 6713, 6714, 6715, 6716, 6717, 6718, 6719, 6720, 6721, 6722, 6723, 6724, 6725, 6726, 6727, 6728, 6729, 6730, 6731, 6732, 6733, 6734, 6735, 6736, 6737, 6738, 6739, 6740, 6823, 6917, 6918, 6919, 6920, 6921, 6922, 6923, 6924, 6925, 6926, 6927, 6928, 6929, 6930, 6931, 6932, 6933, 6934, 6935, 6936, 6937, 6938, 6939, 6940, 6941, 6942, 6943, 6944, 6945, 6946, 6947, 6948, 6949, 6950, 6951, 6952, 6953, 6954, 6955, 6956, 6957, 6958, 6959, 6960, 6961, 6962, 6963, 6981, 6982, 6983, 6984, 6985, 6986, 6987, 7043, 7044, 7045, 7046, 7047, 7048, 7049, 7050, 7051, 7052, 7053, 7054, 7055, 7056, 7057, 7058, 7059, 7060, 7061, 7062, 7063, 7064, 7065, 7066, 7067, 7068, 7069, 7070, 7071, 7072, 7086, 7087, 7098, 7099, 7100, 7101, 7102, 7103, 7104, 7105, 7106, 7107, 7108, 7109, 7110, 7111, 7112, 7113, 7114, 7115, 7116, 7117, 7118, 7119, 7120, 7121, 7122, 7123, 7124, 7125, 7126, 7127, 7128, 7129, 7130, 7131, 7132, 7133, 7134, 7135, 7136, 7137, 7138, 7139, 7140, 7141, 7168, 7169, 7170, 7171, 7172, 7173, 7174, 7175, 7176, 7177, 7178, 7179, 7180, 7181, 7182, 7183, 7184, 7185, 7186, 7187, 7188, 7189, 7190, 7191, 7192, 7193, 7194, 7195, 7196, 7197, 7198, 7199, 7200, 7201, 7202, 7203, 7245, 7246, 7247, 7258, 7259, 7260, 7261, 7262, 7263, 7264, 7265, 7266, 7267, 7268, 7269, 7270, 7271, 7272, 7273, 7274, 7275, 7276, 7277, 7278, 7279, 7280, 7281, 7282, 7283, 7284, 7285, 7286, 7287, 7288, 7289, 7290, 7291, 7292, 7293, 7401, 7402, 7403, 7404, 7406, 7407, 7408, 7409, 7413, 7414, 7424, 7425, 7426, 7427, 7428, 7429, 7430, 7431, 7432, 7433, 7434, 7435, 7436, 7437, 7438, 7439, 7440, 7441, 7442, 7443, 7444, 7445, 7446, 7447, 7448, 7449, 7450, 7451, 7452, 7453, 7454, 7455, 7456, 7457, 7458, 7459, 7460, 7461, 7462, 7463, 7464, 7465, 7466, 7467, 7468, 7469, 7470, 7471, 7472, 7473, 7474, 7475, 7476, 7477, 7478, 7479, 7480, 7481, 7482, 7483, 7484, 7485, 7486, 7487, 7488, 7489, 7490, 7491, 7492, 7493, 7494, 7495, 7496, 7497, 7498, 7499, 7500, 7501, 7502, 7503, 7504, 7505, 7506, 7507, 7508, 7509, 7510, 7511, 7512, 7513, 7514, 7515, 7516, 7517, 7518, 7519, 7520, 7521, 7522, 7523, 7524, 7525, 7526, 7527, 7528, 7529, 7530, 7531, 7532, 7533, 7534, 7535, 7536, 7537, 7538, 7539, 7540, 7541, 7542, 7543, 7544, 7545, 7546, 7547, 7548, 7549, 7550, 7551, 7552, 7553, 7554, 7555, 7556, 7557, 7558, 7559, 7560, 7561, 7562, 7563, 7564, 7565, 7566, 7567, 7568, 7569, 7570, 7571, 7572, 7573, 7574, 7575, 7576, 7577, 7578, 7579, 7580, 7581, 7582, 7583, 7584, 7585, 7586, 7587, 7588, 7589, 7590, 7591, 7592, 7593, 7594, 7595, 7596, 7597, 7598, 7599, 7600, 7601, 7602, 7603, 7604, 7605, 7606, 7607, 7608, 7609, 7610, 7611, 7612, 7613, 7614, 7615, 7680, 7681, 7682, 7683, 7684, 7685, 7686, 7687, 7688, 7689, 7690, 7691, 7692, 7693, 7694, 7695, 7696, 7697, 7698, 7699, 7700, 7701, 7702, 7703, 7704, 7705, 7706, 7707, 7708, 7709, 7710, 7711, 7712, 7713, 7714, 7715, 7716, 7717, 7718, 7719, 7720, 7721, 7722, 7723, 7724, 7725, 7726, 7727, 7728, 7729, 7730, 7731, 7732, 7733, 7734, 7735, 7736, 7737, 7738, 7739, 7740, 7741, 7742, 7743, 7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755, 7756, 7757, 7758, 7759, 7760, 7761, 7762, 7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777, 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785, 7786, 7787, 7788, 7789, 7790, 7791, 7792, 7793, 7794, 7795, 7796, 7797, 7798, 7799, 7800, 7801, 7802, 7803, 7804, 7805, 7806, 7807, 7808, 7809, 7810, 7811, 7812, 7813, 7814, 7815, 7816, 7817, 7818, 7819, 7820, 7821, 7822, 7823, 7824, 7825, 7826, 7827, 7828, 7829, 7830, 7831, 7832, 7833, 7834, 7835, 7836, 7837, 7838, 7839, 7840, 7841, 7842, 7843, 7844, 7845, 7846, 7847, 7848, 7849, 7850, 7851, 7852, 7853, 7854, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, 7866, 7867, 7868, 7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881, 7882, 7883, 7884, 7885, 7886, 7887, 7888, 7889, 7890, 7891, 7892, 7893, 7894, 7895, 7896, 7897, 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, 7906, 7907, 7908, 7909, 7910, 7911, 7912, 7913, 7914, 7915, 7916, 7917, 7918, 7919, 7920, 7921, 7922, 7923, 7924, 7925, 7926, 7927, 7928, 7929, 7930, 7931, 7932, 7933, 7934, 7935, 7936, 7937, 7938, 7939, 7940, 7941, 7942, 7943, 7944, 7945, 7946, 7947, 7948, 7949, 7950, 7951, 7952, 7953, 7954, 7955, 7956, 7957, 7960, 7961, 7962, 7963, 7964, 7965, 7968, 7969, 7970, 7971, 7972, 7973, 7974, 7975, 7976, 7977, 7978, 7979, 7980, 7981, 7982, 7983, 7984, 7985, 7986, 7987, 7988, 7989, 7990, 7991, 7992, 7993, 7994, 7995, 7996, 7997, 7998, 7999, 8000, 8001, 8002, 8003, 8004, 8005, 8008, 8009, 8010, 8011, 8012, 8013, 8016, 8017, 8018, 8019, 8020, 8021, 8022, 8023, 8025, 8027, 8029, 8031, 8032, 8033, 8034, 8035, 8036, 8037, 8038, 8039, 8040, 8041, 8042, 8043, 8044, 8045, 8046, 8047, 8048, 8049, 8050, 8051, 8052, 8053, 8054, 8055, 8056, 8057, 8058, 8059, 8060, 8061, 8064, 8065, 8066, 8067, 8068, 8069, 8070, 8071, 8072, 8073, 8074, 8075, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8091, 8092, 8093, 8094, 8095, 8096, 8097, 8098, 8099, 8100, 8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108, 8109, 8110, 8111, 8112, 8113, 8114, 8115, 8116, 8118, 8119, 8120, 8121, 8122, 8123, 8124, 8126, 8130, 8131, 8132, 8134, 8135, 8136, 8137, 8138, 8139, 8140, 8144, 8145, 8146, 8147, 8150, 8151, 8152, 8153, 8154, 8155, 8160, 8161, 8162, 8163, 8164, 8165, 8166, 8167, 8168, 8169, 8170, 8171, 8172, 8178, 8179, 8180, 8182, 8183, 8184, 8185, 8186, 8187, 8188, 8305, 8319, 8336, 8337, 8338, 8339, 8340, 8341, 8342, 8343, 8344, 8345, 8346, 8347, 8348, 8450, 8455, 8458, 8459, 8460, 8461, 8462, 8463, 8464, 8465, 8466, 8467, 8469, 8473, 8474, 8475, 8476, 8477, 8484, 8486, 8488, 8490, 8491, 8492, 8493, 8495, 8496, 8497, 8498, 8499, 8500, 8501, 8502, 8503, 8504, 8505, 8508, 8509, 8510, 8511, 8517, 8518, 8519, 8520, 8521, 8526, 8579, 8580, 11264, 11265, 11266, 11267, 11268, 11269, 11270, 11271, 11272, 11273, 11274, 11275, 11276, 11277, 11278, 11279, 11280, 11281, 11282, 11283, 11284, 11285, 11286, 11287, 11288, 11289, 11290, 11291, 11292, 11293, 11294, 11295, 11296, 11297, 11298, 11299, 11300, 11301, 11302, 11303, 11304, 11305, 11306, 11307, 11308, 11309, 11310, 11312, 11313, 11314, 11315, 11316, 11317, 11318, 11319, 11320, 11321, 11322, 11323, 11324, 11325, 11326, 11327, 11328, 11329, 11330, 11331, 11332, 11333, 11334, 11335, 11336, 11337, 11338, 11339, 11340, 11341, 11342, 11343, 11344, 11345, 11346, 11347, 11348, 11349, 11350, 11351, 11352, 11353, 11354, 11355, 11356, 11357, 11358, 11360, 11361, 11362, 11363, 11364, 11365, 11366, 11367, 11368, 11369, 11370, 11371, 11372, 11373, 11374, 11375, 11376, 11377, 11378, 11379, 11380, 11381, 11382, 11383, 11384, 11385, 11386, 11387, 11388, 11389, 11390, 11391, 11392, 11393, 11394, 11395, 11396, 11397, 11398, 11399, 11400, 11401, 11402, 11403, 11404, 11405, 11406, 11407, 11408, 11409, 11410, 11411, 11412, 11413, 11414, 11415, 11416, 11417, 11418, 11419, 11420, 11421, 11422, 11423, 11424, 11425, 11426, 11427, 11428, 11429, 11430, 11431, 11432, 11433, 11434, 11435, 11436, 11437, 11438, 11439, 11440, 11441, 11442, 11443, 11444, 11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452, 11453, 11454, 11455, 11456, 11457, 11458, 11459, 11460, 11461, 11462, 11463, 11464, 11465, 11466, 11467, 11468, 11469, 11470, 11471, 11472, 11473, 11474, 11475, 11476, 11477, 11478, 11479, 11480, 11481, 11482, 11483, 11484, 11485, 11486, 11487, 11488, 11489, 11490, 11491, 11492, 11499, 11500, 11501, 11502, 11506, 11507, 11520, 11521, 11522, 11523, 11524, 11525, 11526, 11527, 11528, 11529, 11530, 11531, 11532, 11533, 11534, 11535, 11536, 11537, 11538, 11539, 11540, 11541, 11542, 11543, 11544, 11545, 11546, 11547, 11548, 11549, 11550, 11551, 11552, 11553, 11554, 11555, 11556, 11557, 11559, 11565, 11568, 11569, 11570, 11571, 11572, 11573, 11574, 11575, 11576, 11577, 11578, 11579, 11580, 11581, 11582, 11583, 11584, 11585, 11586, 11587, 11588, 11589, 11590, 11591, 11592, 11593, 11594, 11595, 11596, 11597, 11598, 11599, 11600, 11601, 11602, 11603, 11604, 11605, 11606, 11607, 11608, 11609, 11610, 11611, 11612, 11613, 11614, 11615, 11616, 11617, 11618, 11619, 11620, 11621, 11622, 11623, 11631, 11648, 11649, 11650, 11651, 11652, 11653, 11654, 11655, 11656, 11657, 11658, 11659, 11660, 11661, 11662, 11663, 11664, 11665, 11666, 11667, 11668, 11669, 11670, 11680, 11681, 11682, 11683, 11684, 11685, 11686, 11688, 11689, 11690, 11691, 11692, 11693, 11694, 11696, 11697, 11698, 11699, 11700, 11701, 11702, 11704, 11705, 11706, 11707, 11708, 11709, 11710, 11712, 11713, 11714, 11715, 11716, 11717, 11718, 11720, 11721, 11722, 11723, 11724, 11725, 11726, 11728, 11729, 11730, 11731, 11732, 11733, 11734, 11736, 11737, 11738, 11739, 11740, 11741, 11742, 11823, 12293, 12294, 12337, 12338, 12339, 12340, 12341, 12347, 12348, 12353, 12354, 12355, 12356, 12357, 12358, 12359, 12360, 12361, 12362, 12363, 12364, 12365, 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373, 12374, 12375, 12376, 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, 12386, 12387, 12388, 12389, 12390, 12391, 12392, 12393, 12394, 12395, 12396, 12397, 12398, 12399, 12400, 12401, 12402, 12403, 12404, 12405, 12406, 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414, 12415, 12416, 12417, 12418, 12419, 12420, 12421, 12422, 12423, 12424, 12425, 12426, 12427, 12428, 12429, 12430, 12431, 12432, 12433, 12434, 12435, 12436, 12437, 12438, 12445, 12446, 12447, 12449, 12450, 12451, 12452, 12453, 12454, 12455, 12456, 12457, 12458, 12459, 12460, 12461, 12462, 12463, 12464, 12465, 12466, 12467, 12468, 12469, 12470, 12471, 12472, 12473, 12474, 12475, 12476, 12477, 12478, 12479, 12480, 12481, 12482, 12483, 12484, 12485, 12486, 12487, 12488, 12489, 12490, 12491, 12492, 12493, 12494, 12495, 12496, 12497, 12498, 12499, 12500, 12501, 12502, 12503, 12504, 12505, 12506, 12507, 12508, 12509, 12510, 12511, 12512, 12513, 12514, 12515, 12516, 12517, 12518, 12519, 12520, 12521, 12522, 12523, 12524, 12525, 12526, 12527, 12528, 12529, 12530, 12531, 12532, 12533, 12534, 12535, 12536, 12537, 12538, 12540, 12541, 12542, 12543, 12549, 12550, 12551, 12552, 12553, 12554, 12555, 12556, 12557, 12558, 12559, 12560, 12561, 12562, 12563, 12564, 12565, 12566, 12567, 12568, 12569, 12570, 12571, 12572, 12573, 12574, 12575, 12576, 12577, 12578, 12579, 12580, 12581, 12582, 12583, 12584, 12585, 12586, 12587, 12588, 12589, 12593, 12594, 12595, 12596, 12597, 12598, 12599, 12600, 12601, 12602, 12603, 12604, 12605, 12606, 12607, 12608, 12609, 12610, 12611, 12612, 12613, 12614, 12615, 12616, 12617, 12618, 12619, 12620, 12621, 12622, 12623, 12624, 12625, 12626, 12627, 12628, 12629, 12630, 12631, 12632, 12633, 12634, 12635, 12636, 12637, 12638, 12639, 12640, 12641, 12642, 12643, 12644, 12645, 12646, 12647, 12648, 12649, 12650, 12651, 12652, 12653, 12654, 12655, 12656, 12657, 12658, 12659, 12660, 12661, 12662, 12663, 12664, 12665, 12666, 12667, 12668, 12669, 12670, 12671, 12672, 12673, 12674, 12675, 12676, 12677, 12678, 12679, 12680, 12681, 12682, 12683, 12684, 12685, 12686, 12704, 12705, 12706, 12707, 12708, 12709, 12710, 12711, 12712, 12713, 12714, 12715, 12716, 12717, 12718, 12719, 12720, 12721, 12722, 12723, 12724, 12725, 12726, 12727, 12728, 12729, 12730, 12784, 12785, 12786, 12787, 12788, 12789, 12790, 12791, 12792, 12793, 12794, 12795, 12796, 12797, 12798, 12799, 13312, 19893, 19968, 40917, 40960, 40961, 40962, 40963, 40964, 40965, 40966, 40967, 40968, 40969, 40970, 40971, 40972, 40973, 40974, 40975, 40976, 40977, 40978, 40979, 40980, 40981, 40982, 40983, 40984, 40985, 40986, 40987, 40988, 40989, 40990, 40991, 40992, 40993, 40994, 40995, 40996, 40997, 40998, 40999, 41000, 41001, 41002, 41003, 41004, 41005, 41006, 41007, 41008, 41009, 41010, 41011, 41012, 41013, 41014, 41015, 41016, 41017, 41018, 41019, 41020, 41021, 41022, 41023, 41024, 41025, 41026, 41027, 41028, 41029, 41030, 41031, 41032, 41033, 41034, 41035, 41036, 41037, 41038, 41039, 41040, 41041, 41042, 41043, 41044, 41045, 41046, 41047, 41048, 41049, 41050, 41051, 41052, 41053, 41054, 41055, 41056, 41057, 41058, 41059, 41060, 41061, 41062, 41063, 41064, 41065, 41066, 41067, 41068, 41069, 41070, 41071, 41072, 41073, 41074, 41075, 41076, 41077, 41078, 41079, 41080, 41081, 41082, 41083, 41084, 41085, 41086, 41087, 41088, 41089, 41090, 41091, 41092, 41093, 41094, 41095, 41096, 41097, 41098, 41099, 41100, 41101, 41102, 41103, 41104, 41105, 41106, 41107, 41108, 41109, 41110, 41111, 41112, 41113, 41114, 41115, 41116, 41117, 41118, 41119, 41120, 41121, 41122, 41123, 41124, 41125, 41126, 41127, 41128, 41129, 41130, 41131, 41132, 41133, 41134, 41135, 41136, 41137, 41138, 41139, 41140, 41141, 41142, 41143, 41144, 41145, 41146, 41147, 41148, 41149, 41150, 41151, 41152, 41153, 41154, 41155, 41156, 41157, 41158, 41159, 41160, 41161, 41162, 41163, 41164, 41165, 41166, 41167, 41168, 41169, 41170, 41171, 41172, 41173, 41174, 41175, 41176, 41177, 41178, 41179, 41180, 41181, 41182, 41183, 41184, 41185, 41186, 41187, 41188, 41189, 41190, 41191, 41192, 41193, 41194, 41195, 41196, 41197, 41198, 41199, 41200, 41201, 41202, 41203, 41204, 41205, 41206, 41207, 41208, 41209, 41210, 41211, 41212, 41213, 41214, 41215, 41216, 41217, 41218, 41219, 41220, 41221, 41222, 41223, 41224, 41225, 41226, 41227, 41228, 41229, 41230, 41231, 41232, 41233, 41234, 41235, 41236, 41237, 41238, 41239, 41240, 41241, 41242, 41243, 41244, 41245, 41246, 41247, 41248, 41249, 41250, 41251, 41252, 41253, 41254, 41255, 41256, 41257, 41258, 41259, 41260, 41261, 41262, 41263, 41264, 41265, 41266, 41267, 41268, 41269, 41270, 41271, 41272, 41273, 41274, 41275, 41276, 41277, 41278, 41279, 41280, 41281, 41282, 41283, 41284, 41285, 41286, 41287, 41288, 41289, 41290, 41291, 41292, 41293, 41294, 41295, 41296, 41297, 41298, 41299, 41300, 41301, 41302, 41303, 41304, 41305, 41306, 41307, 41308, 41309, 41310, 41311, 41312, 41313, 41314, 41315, 41316, 41317, 41318, 41319, 41320, 41321, 41322, 41323, 41324, 41325, 41326, 41327, 41328, 41329, 41330, 41331, 41332, 41333, 41334, 41335, 41336, 41337, 41338, 41339, 41340, 41341, 41342, 41343, 41344, 41345, 41346, 41347, 41348, 41349, 41350, 41351, 41352, 41353, 41354, 41355, 41356, 41357, 41358, 41359, 41360, 41361, 41362, 41363, 41364, 41365, 41366, 41367, 41368, 41369, 41370, 41371, 41372, 41373, 41374, 41375, 41376, 41377, 41378, 41379, 41380, 41381, 41382, 41383, 41384, 41385, 41386, 41387, 41388, 41389, 41390, 41391, 41392, 41393, 41394, 41395, 41396, 41397, 41398, 41399, 41400, 41401, 41402, 41403, 41404, 41405, 41406, 41407, 41408, 41409, 41410, 41411, 41412, 41413, 41414, 41415, 41416, 41417, 41418, 41419, 41420, 41421, 41422, 41423, 41424, 41425, 41426, 41427, 41428, 41429, 41430, 41431, 41432, 41433, 41434, 41435, 41436, 41437, 41438, 41439, 41440, 41441, 41442, 41443, 41444, 41445, 41446, 41447, 41448, 41449, 41450, 41451, 41452, 41453, 41454, 41455, 41456, 41457, 41458, 41459, 41460, 41461, 41462, 41463, 41464, 41465, 41466, 41467, 41468, 41469, 41470, 41471, 41472, 41473, 41474, 41475, 41476, 41477, 41478, 41479, 41480, 41481, 41482, 41483, 41484, 41485, 41486, 41487, 41488, 41489, 41490, 41491, 41492, 41493, 41494, 41495, 41496, 41497, 41498, 41499, 41500, 41501, 41502, 41503, 41504, 41505, 41506, 41507, 41508, 41509, 41510, 41511, 41512, 41513, 41514, 41515, 41516, 41517, 41518, 41519, 41520, 41521, 41522, 41523, 41524, 41525, 41526, 41527, 41528, 41529, 41530, 41531, 41532, 41533, 41534, 41535, 41536, 41537, 41538, 41539, 41540, 41541, 41542, 41543, 41544, 41545, 41546, 41547, 41548, 41549, 41550, 41551, 41552, 41553, 41554, 41555, 41556, 41557, 41558, 41559, 41560, 41561, 41562, 41563, 41564, 41565, 41566, 41567, 41568, 41569, 41570, 41571, 41572, 41573, 41574, 41575, 41576, 41577, 41578, 41579, 41580, 41581, 41582, 41583, 41584, 41585, 41586, 41587, 41588, 41589, 41590, 41591, 41592, 41593, 41594, 41595, 41596, 41597, 41598, 41599, 41600, 41601, 41602, 41603, 41604, 41605, 41606, 41607, 41608, 41609, 41610, 41611, 41612, 41613, 41614, 41615, 41616, 41617, 41618, 41619, 41620, 41621, 41622, 41623, 41624, 41625, 41626, 41627, 41628, 41629, 41630, 41631, 41632, 41633, 41634, 41635, 41636, 41637, 41638, 41639, 41640, 41641, 41642, 41643, 41644, 41645, 41646, 41647, 41648, 41649, 41650, 41651, 41652, 41653, 41654, 41655, 41656, 41657, 41658, 41659, 41660, 41661, 41662, 41663, 41664, 41665, 41666, 41667, 41668, 41669, 41670, 41671, 41672, 41673, 41674, 41675, 41676, 41677, 41678, 41679, 41680, 41681, 41682, 41683, 41684, 41685, 41686, 41687, 41688, 41689, 41690, 41691, 41692, 41693, 41694, 41695, 41696, 41697, 41698, 41699, 41700, 41701, 41702, 41703, 41704, 41705, 41706, 41707, 41708, 41709, 41710, 41711, 41712, 41713, 41714, 41715, 41716, 41717, 41718, 41719, 41720, 41721, 41722, 41723, 41724, 41725, 41726, 41727, 41728, 41729, 41730, 41731, 41732, 41733, 41734, 41735, 41736, 41737, 41738, 41739, 41740, 41741, 41742, 41743, 41744, 41745, 41746, 41747, 41748, 41749, 41750, 41751, 41752, 41753, 41754, 41755, 41756, 41757, 41758, 41759, 41760, 41761, 41762, 41763, 41764, 41765, 41766, 41767, 41768, 41769, 41770, 41771, 41772, 41773, 41774, 41775, 41776, 41777, 41778, 41779, 41780, 41781, 41782, 41783, 41784, 41785, 41786, 41787, 41788, 41789, 41790, 41791, 41792, 41793, 41794, 41795, 41796, 41797, 41798, 41799, 41800, 41801, 41802, 41803, 41804, 41805, 41806, 41807, 41808, 41809, 41810, 41811, 41812, 41813, 41814, 41815, 41816, 41817, 41818, 41819, 41820, 41821, 41822, 41823, 41824, 41825, 41826, 41827, 41828, 41829, 41830, 41831, 41832, 41833, 41834, 41835, 41836, 41837, 41838, 41839, 41840, 41841, 41842, 41843, 41844, 41845, 41846, 41847, 41848, 41849, 41850, 41851, 41852, 41853, 41854, 41855, 41856, 41857, 41858, 41859, 41860, 41861, 41862, 41863, 41864, 41865, 41866, 41867, 41868, 41869, 41870, 41871, 41872, 41873, 41874, 41875, 41876, 41877, 41878, 41879, 41880, 41881, 41882, 41883, 41884, 41885, 41886, 41887, 41888, 41889, 41890, 41891, 41892, 41893, 41894, 41895, 41896, 41897, 41898, 41899, 41900, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 41911, 41912, 41913, 41914, 41915, 41916, 41917, 41918, 41919, 41920, 41921, 41922, 41923, 41924, 41925, 41926, 41927, 41928, 41929, 41930, 41931, 41932, 41933, 41934, 41935, 41936, 41937, 41938, 41939, 41940, 41941, 41942, 41943, 41944, 41945, 41946, 41947, 41948, 41949, 41950, 41951, 41952, 41953, 41954, 41955, 41956, 41957, 41958, 41959, 41960, 41961, 41962, 41963, 41964, 41965, 41966, 41967, 41968, 41969, 41970, 41971, 41972, 41973, 41974, 41975, 41976, 41977, 41978, 41979, 41980, 41981, 41982, 41983, 41984, 41985, 41986, 41987, 41988, 41989, 41990, 41991, 41992, 41993, 41994, 41995, 41996, 41997, 41998, 41999, 42000, 42001, 42002, 42003, 42004, 42005, 42006, 42007, 42008, 42009, 42010, 42011, 42012, 42013, 42014, 42015, 42016, 42017, 42018, 42019, 42020, 42021, 42022, 42023, 42024, 42025, 42026, 42027, 42028, 42029, 42030, 42031, 42032, 42033, 42034, 42035, 42036, 42037, 42038, 42039, 42040, 42041, 42042, 42043, 42044, 42045, 42046, 42047, 42048, 42049, 42050, 42051, 42052, 42053, 42054, 42055, 42056, 42057, 42058, 42059, 42060, 42061, 42062, 42063, 42064, 42065, 42066, 42067, 42068, 42069, 42070, 42071, 42072, 42073, 42074, 42075, 42076, 42077, 42078, 42079, 42080, 42081, 42082, 42083, 42084, 42085, 42086, 42087, 42088, 42089, 42090, 42091, 42092, 42093, 42094, 42095, 42096, 42097, 42098, 42099, 42100, 42101, 42102, 42103, 42104, 42105, 42106, 42107, 42108, 42109, 42110, 42111, 42112, 42113, 42114, 42115, 42116, 42117, 42118, 42119, 42120, 42121, 42122, 42123, 42124, 42192, 42193, 42194, 42195, 42196, 42197, 42198, 42199, 42200, 42201, 42202, 42203, 42204, 42205, 42206, 42207, 42208, 42209, 42210, 42211, 42212, 42213, 42214, 42215, 42216, 42217, 42218, 42219, 42220, 42221, 42222, 42223, 42224, 42225, 42226, 42227, 42228, 42229, 42230, 42231, 42232, 42233, 42234, 42235, 42236, 42237, 42240, 42241, 42242, 42243, 42244, 42245, 42246, 42247, 42248, 42249, 42250, 42251, 42252, 42253, 42254, 42255, 42256, 42257, 42258, 42259, 42260, 42261, 42262, 42263, 42264, 42265, 42266, 42267, 42268, 42269, 42270, 42271, 42272, 42273, 42274, 42275, 42276, 42277, 42278, 42279, 42280, 42281, 42282, 42283, 42284, 42285, 42286, 42287, 42288, 42289, 42290, 42291, 42292, 42293, 42294, 42295, 42296, 42297, 42298, 42299, 42300, 42301, 42302, 42303, 42304, 42305, 42306, 42307, 42308, 42309, 42310, 42311, 42312, 42313, 42314, 42315, 42316, 42317, 42318, 42319, 42320, 42321, 42322, 42323, 42324, 42325, 42326, 42327, 42328, 42329, 42330, 42331, 42332, 42333, 42334, 42335, 42336, 42337, 42338, 42339, 42340, 42341, 42342, 42343, 42344, 42345, 42346, 42347, 42348, 42349, 42350, 42351, 42352, 42353, 42354, 42355, 42356, 42357, 42358, 42359, 42360, 42361, 42362, 42363, 42364, 42365, 42366, 42367, 42368, 42369, 42370, 42371, 42372, 42373, 42374, 42375, 42376, 42377, 42378, 42379, 42380, 42381, 42382, 42383, 42384, 42385, 42386, 42387, 42388, 42389, 42390, 42391, 42392, 42393, 42394, 42395, 42396, 42397, 42398, 42399, 42400, 42401, 42402, 42403, 42404, 42405, 42406, 42407, 42408, 42409, 42410, 42411, 42412, 42413, 42414, 42415, 42416, 42417, 42418, 42419, 42420, 42421, 42422, 42423, 42424, 42425, 42426, 42427, 42428, 42429, 42430, 42431, 42432, 42433, 42434, 42435, 42436, 42437, 42438, 42439, 42440, 42441, 42442, 42443, 42444, 42445, 42446, 42447, 42448, 42449, 42450, 42451, 42452, 42453, 42454, 42455, 42456, 42457, 42458, 42459, 42460, 42461, 42462, 42463, 42464, 42465, 42466, 42467, 42468, 42469, 42470, 42471, 42472, 42473, 42474, 42475, 42476, 42477, 42478, 42479, 42480, 42481, 42482, 42483, 42484, 42485, 42486, 42487, 42488, 42489, 42490, 42491, 42492, 42493, 42494, 42495, 42496, 42497, 42498, 42499, 42500, 42501, 42502, 42503, 42504, 42505, 42506, 42507, 42508, 42512, 42513, 42514, 42515, 42516, 42517, 42518, 42519, 42520, 42521, 42522, 42523, 42524, 42525, 42526, 42527, 42538, 42539, 42560, 42561, 42562, 42563, 42564, 42565, 42566, 42567, 42568, 42569, 42570, 42571, 42572, 42573, 42574, 42575, 42576, 42577, 42578, 42579, 42580, 42581, 42582, 42583, 42584, 42585, 42586, 42587, 42588, 42589, 42590, 42591, 42592, 42593, 42594, 42595, 42596, 42597, 42598, 42599, 42600, 42601, 42602, 42603, 42604, 42605, 42606, 42623, 42624, 42625, 42626, 42627, 42628, 42629, 42630, 42631, 42632, 42633, 42634, 42635, 42636, 42637, 42638, 42639, 42640, 42641, 42642, 42643, 42644, 42645, 42646, 42647, 42648, 42649, 42650, 42651, 42652, 42653, 42656, 42657, 42658, 42659, 42660, 42661, 42662, 42663, 42664, 42665, 42666, 42667, 42668, 42669, 42670, 42671, 42672, 42673, 42674, 42675, 42676, 42677, 42678, 42679, 42680, 42681, 42682, 42683, 42684, 42685, 42686, 42687, 42688, 42689, 42690, 42691, 42692, 42693, 42694, 42695, 42696, 42697, 42698, 42699, 42700, 42701, 42702, 42703, 42704, 42705, 42706, 42707, 42708, 42709, 42710, 42711, 42712, 42713, 42714, 42715, 42716, 42717, 42718, 42719, 42720, 42721, 42722, 42723, 42724, 42725, 42775, 42776, 42777, 42778, 42779, 42780, 42781, 42782, 42783, 42786, 42787, 42788, 42789, 42790, 42791, 42792, 42793, 42794, 42795, 42796, 42797, 42798, 42799, 42800, 42801, 42802, 42803, 42804, 42805, 42806, 42807, 42808, 42809, 42810, 42811, 42812, 42813, 42814, 42815, 42816, 42817, 42818, 42819, 42820, 42821, 42822, 42823, 42824, 42825, 42826, 42827, 42828, 42829, 42830, 42831, 42832, 42833, 42834, 42835, 42836, 42837, 42838, 42839, 42840, 42841, 42842, 42843, 42844, 42845, 42846, 42847, 42848, 42849, 42850, 42851, 42852, 42853, 42854, 42855, 42856, 42857, 42858, 42859, 42860, 42861, 42862, 42863, 42864, 42865, 42866, 42867, 42868, 42869, 42870, 42871, 42872, 42873, 42874, 42875, 42876, 42877, 42878, 42879, 42880, 42881, 42882, 42883, 42884, 42885, 42886, 42887, 42888, 42891, 42892, 42893, 42894, 42895, 42896, 42897, 42898, 42899, 42900, 42901, 42902, 42903, 42904, 42905, 42906, 42907, 42908, 42909, 42910, 42911, 42912, 42913, 42914, 42915, 42916, 42917, 42918, 42919, 42920, 42921, 42922, 42923, 42924, 42925, 42928, 42929, 42930, 42931, 42932, 42933, 42934, 42935, 42999, 43000, 43001, 43002, 43003, 43004, 43005, 43006, 43007, 43008, 43009, 43011, 43012, 43013, 43015, 43016, 43017, 43018, 43020, 43021, 43022, 43023, 43024, 43025, 43026, 43027, 43028, 43029, 43030, 43031, 43032, 43033, 43034, 43035, 43036, 43037, 43038, 43039, 43040, 43041, 43042, 43072, 43073, 43074, 43075, 43076, 43077, 43078, 43079, 43080, 43081, 43082, 43083, 43084, 43085, 43086, 43087, 43088, 43089, 43090, 43091, 43092, 43093, 43094, 43095, 43096, 43097, 43098, 43099, 43100, 43101, 43102, 43103, 43104, 43105, 43106, 43107, 43108, 43109, 43110, 43111, 43112, 43113, 43114, 43115, 43116, 43117, 43118, 43119, 43120, 43121, 43122, 43123, 43138, 43139, 43140, 43141, 43142, 43143, 43144, 43145, 43146, 43147, 43148, 43149, 43150, 43151, 43152, 43153, 43154, 43155, 43156, 43157, 43158, 43159, 43160, 43161, 43162, 43163, 43164, 43165, 43166, 43167, 43168, 43169, 43170, 43171, 43172, 43173, 43174, 43175, 43176, 43177, 43178, 43179, 43180, 43181, 43182, 43183, 43184, 43185, 43186, 43187, 43250, 43251, 43252, 43253, 43254, 43255, 43259, 43261, 43274, 43275, 43276, 43277, 43278, 43279, 43280, 43281, 43282, 43283, 43284, 43285, 43286, 43287, 43288, 43289, 43290, 43291, 43292, 43293, 43294, 43295, 43296, 43297, 43298, 43299, 43300, 43301, 43312, 43313, 43314, 43315, 43316, 43317, 43318, 43319, 43320, 43321, 43322, 43323, 43324, 43325, 43326, 43327, 43328, 43329, 43330, 43331, 43332, 43333, 43334, 43360, 43361, 43362, 43363, 43364, 43365, 43366, 43367, 43368, 43369, 43370, 43371, 43372, 43373, 43374, 43375, 43376, 43377, 43378, 43379, 43380, 43381, 43382, 43383, 43384, 43385, 43386, 43387, 43388, 43396, 43397, 43398, 43399, 43400, 43401, 43402, 43403, 43404, 43405, 43406, 43407, 43408, 43409, 43410, 43411, 43412, 43413, 43414, 43415, 43416, 43417, 43418, 43419, 43420, 43421, 43422, 43423, 43424, 43425, 43426, 43427, 43428, 43429, 43430, 43431, 43432, 43433, 43434, 43435, 43436, 43437, 43438, 43439, 43440, 43441, 43442, 43471, 43488, 43489, 43490, 43491, 43492, 43494, 43495, 43496, 43497, 43498, 43499, 43500, 43501, 43502, 43503, 43514, 43515, 43516, 43517, 43518, 43520, 43521, 43522, 43523, 43524, 43525, 43526, 43527, 43528, 43529, 43530, 43531, 43532, 43533, 43534, 43535, 43536, 43537, 43538, 43539, 43540, 43541, 43542, 43543, 43544, 43545, 43546, 43547, 43548, 43549, 43550, 43551, 43552, 43553, 43554, 43555, 43556, 43557, 43558, 43559, 43560, 43584, 43585, 43586, 43588, 43589, 43590, 43591, 43592, 43593, 43594, 43595, 43616, 43617, 43618, 43619, 43620, 43621, 43622, 43623, 43624, 43625, 43626, 43627, 43628, 43629, 43630, 43631, 43632, 43633, 43634, 43635, 43636, 43637, 43638, 43642, 43646, 43647, 43648, 43649, 43650, 43651, 43652, 43653, 43654, 43655, 43656, 43657, 43658, 43659, 43660, 43661, 43662, 43663, 43664, 43665, 43666, 43667, 43668, 43669, 43670, 43671, 43672, 43673, 43674, 43675, 43676, 43677, 43678, 43679, 43680, 43681, 43682, 43683, 43684, 43685, 43686, 43687, 43688, 43689, 43690, 43691, 43692, 43693, 43694, 43695, 43697, 43701, 43702, 43705, 43706, 43707, 43708, 43709, 43712, 43714, 43739, 43740, 43741, 43744, 43745, 43746, 43747, 43748, 43749, 43750, 43751, 43752, 43753, 43754, 43762, 43763, 43764, 43777, 43778, 43779, 43780, 43781, 43782, 43785, 43786, 43787, 43788, 43789, 43790, 43793, 43794, 43795, 43796, 43797, 43798, 43808, 43809, 43810, 43811, 43812, 43813, 43814, 43816, 43817, 43818, 43819, 43820, 43821, 43822, 43824, 43825, 43826, 43827, 43828, 43829, 43830, 43831, 43832, 43833, 43834, 43835, 43836, 43837, 43838, 43839, 43840, 43841, 43842, 43843, 43844, 43845, 43846, 43847, 43848, 43849, 43850, 43851, 43852, 43853, 43854, 43855, 43856, 43857, 43858, 43859, 43860, 43861, 43862, 43863, 43864, 43865, 43866, 43868, 43869, 43870, 43871, 43872, 43873, 43874, 43875, 43876, 43877, 43888, 43889, 43890, 43891, 43892, 43893, 43894, 43895, 43896, 43897, 43898, 43899, 43900, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 43908, 43909, 43910, 43911, 43912, 43913, 43914, 43915, 43916, 43917, 43918, 43919, 43920, 43921, 43922, 43923, 43924, 43925, 43926, 43927, 43928, 43929, 43930, 43931, 43932, 43933, 43934, 43935, 43936, 43937, 43938, 43939, 43940, 43941, 43942, 43943, 43944, 43945, 43946, 43947, 43948, 43949, 43950, 43951, 43952, 43953, 43954, 43955, 43956, 43957, 43958, 43959, 43960, 43961, 43962, 43963, 43964, 43965, 43966, 43967, 43968, 43969, 43970, 43971, 43972, 43973, 43974, 43975, 43976, 43977, 43978, 43979, 43980, 43981, 43982, 43983, 43984, 43985, 43986, 43987, 43988, 43989, 43990, 43991, 43992, 43993, 43994, 43995, 43996, 43997, 43998, 43999, 44000, 44001, 44002, 44032, 55203, 55216, 55217, 55218, 55219, 55220, 55221, 55222, 55223, 55224, 55225, 55226, 55227, 55228, 55229, 55230, 55231, 55232, 55233, 55234, 55235, 55236, 55237, 55238, 55243, 55244, 55245, 55246, 55247, 55248, 55249, 55250, 55251, 55252, 55253, 55254, 55255, 55256, 55257, 55258, 55259, 55260, 55261, 55262, 55263, 55264, 55265, 55266, 55267, 55268, 55269, 55270, 55271, 55272, 55273, 55274, 55275, 55276, 55277, 55278, 55279, 55280, 55281, 55282, 55283, 55284, 55285, 55286, 55287, 55288, 55289, 55290, 55291, 63744, 63745, 63746, 63747, 63748, 63749, 63750, 63751, 63752, 63753, 63754, 63755, 63756, 63757, 63758, 63759, 63760, 63761, 63762, 63763, 63764, 63765, 63766, 63767, 63768, 63769, 63770, 63771, 63772, 63773, 63774, 63775, 63776, 63777, 63778, 63779, 63780, 63781, 63782, 63783, 63784, 63785, 63786, 63787, 63788, 63789, 63790, 63791, 63792, 63793, 63794, 63795, 63796, 63797, 63798, 63799, 63800, 63801, 63802, 63803, 63804, 63805, 63806, 63807, 63808, 63809, 63810, 63811, 63812, 63813, 63814, 63815, 63816, 63817, 63818, 63819, 63820, 63821, 63822, 63823, 63824, 63825, 63826, 63827, 63828, 63829, 63830, 63831, 63832, 63833, 63834, 63835, 63836, 63837, 63838, 63839, 63840, 63841, 63842, 63843, 63844, 63845, 63846, 63847, 63848, 63849, 63850, 63851, 63852, 63853, 63854, 63855, 63856, 63857, 63858, 63859, 63860, 63861, 63862, 63863, 63864, 63865, 63866, 63867, 63868, 63869, 63870, 63871, 63872, 63873, 63874, 63875, 63876, 63877, 63878, 63879, 63880, 63881, 63882, 63883, 63884, 63885, 63886, 63887, 63888, 63889, 63890, 63891, 63892, 63893, 63894, 63895, 63896, 63897, 63898, 63899, 63900, 63901, 63902, 63903, 63904, 63905, 63906, 63907, 63908, 63909, 63910, 63911, 63912, 63913, 63914, 63915, 63916, 63917, 63918, 63919, 63920, 63921, 63922, 63923, 63924, 63925, 63926, 63927, 63928, 63929, 63930, 63931, 63932, 63933, 63934, 63935, 63936, 63937, 63938, 63939, 63940, 63941, 63942, 63943, 63944, 63945, 63946, 63947, 63948, 63949, 63950, 63951, 63952, 63953, 63954, 63955, 63956, 63957, 63958, 63959, 63960, 63961, 63962, 63963, 63964, 63965, 63966, 63967, 63968, 63969, 63970, 63971, 63972, 63973, 63974, 63975, 63976, 63977, 63978, 63979, 63980, 63981, 63982, 63983, 63984, 63985, 63986, 63987, 63988, 63989, 63990, 63991, 63992, 63993, 63994, 63995, 63996, 63997, 63998, 63999, 64000, 64001, 64002, 64003, 64004, 64005, 64006, 64007, 64008, 64009, 64010, 64011, 64012, 64013, 64014, 64015, 64016, 64017, 64018, 64019, 64020, 64021, 64022, 64023, 64024, 64025, 64026, 64027, 64028, 64029, 64030, 64031, 64032, 64033, 64034, 64035, 64036, 64037, 64038, 64039, 64040, 64041, 64042, 64043, 64044, 64045, 64046, 64047, 64048, 64049, 64050, 64051, 64052, 64053, 64054, 64055, 64056, 64057, 64058, 64059, 64060, 64061, 64062, 64063, 64064, 64065, 64066, 64067, 64068, 64069, 64070, 64071, 64072, 64073, 64074, 64075, 64076, 64077, 64078, 64079, 64080, 64081, 64082, 64083, 64084, 64085, 64086, 64087, 64088, 64089, 64090, 64091, 64092, 64093, 64094, 64095, 64096, 64097, 64098, 64099, 64100, 64101, 64102, 64103, 64104, 64105, 64106, 64107, 64108, 64109, 64112, 64113, 64114, 64115, 64116, 64117, 64118, 64119, 64120, 64121, 64122, 64123, 64124, 64125, 64126, 64127, 64128, 64129, 64130, 64131, 64132, 64133, 64134, 64135, 64136, 64137, 64138, 64139, 64140, 64141, 64142, 64143, 64144, 64145, 64146, 64147, 64148, 64149, 64150, 64151, 64152, 64153, 64154, 64155, 64156, 64157, 64158, 64159, 64160, 64161, 64162, 64163, 64164, 64165, 64166, 64167, 64168, 64169, 64170, 64171, 64172, 64173, 64174, 64175, 64176, 64177, 64178, 64179, 64180, 64181, 64182, 64183, 64184, 64185, 64186, 64187, 64188, 64189, 64190, 64191, 64192, 64193, 64194, 64195, 64196, 64197, 64198, 64199, 64200, 64201, 64202, 64203, 64204, 64205, 64206, 64207, 64208, 64209, 64210, 64211, 64212, 64213, 64214, 64215, 64216, 64217, 64256, 64257, 64258, 64259, 64260, 64261, 64262, 64275, 64276, 64277, 64278, 64279, 64285, 64287, 64288, 64289, 64290, 64291, 64292, 64293, 64294, 64295, 64296, 64298, 64299, 64300, 64301, 64302, 64303, 64304, 64305, 64306, 64307, 64308, 64309, 64310, 64312, 64313, 64314, 64315, 64316, 64318, 64320, 64321, 64323, 64324, 64326, 64327, 64328, 64329, 64330, 64331, 64332, 64333, 64334, 64335, 64336, 64337, 64338, 64339, 64340, 64341, 64342, 64343, 64344, 64345, 64346, 64347, 64348, 64349, 64350, 64351, 64352, 64353, 64354, 64355, 64356, 64357, 64358, 64359, 64360, 64361, 64362, 64363, 64364, 64365, 64366, 64367, 64368, 64369, 64370, 64371, 64372, 64373, 64374, 64375, 64376, 64377, 64378, 64379, 64380, 64381, 64382, 64383, 64384, 64385, 64386, 64387, 64388, 64389, 64390, 64391, 64392, 64393, 64394, 64395, 64396, 64397, 64398, 64399, 64400, 64401, 64402, 64403, 64404, 64405, 64406, 64407, 64408, 64409, 64410, 64411, 64412, 64413, 64414, 64415, 64416, 64417, 64418, 64419, 64420, 64421, 64422, 64423, 64424, 64425, 64426, 64427, 64428, 64429, 64430, 64431, 64432, 64433, 64467, 64468, 64469, 64470, 64471, 64472, 64473, 64474, 64475, 64476, 64477, 64478, 64479, 64480, 64481, 64482, 64483, 64484, 64485, 64486, 64487, 64488, 64489, 64490, 64491, 64492, 64493, 64494, 64495, 64496, 64497, 64498, 64499, 64500, 64501, 64502, 64503, 64504, 64505, 64506, 64507, 64508, 64509, 64510, 64511, 64512, 64513, 64514, 64515, 64516, 64517, 64518, 64519, 64520, 64521, 64522, 64523, 64524, 64525, 64526, 64527, 64528, 64529, 64530, 64531, 64532, 64533, 64534, 64535, 64536, 64537, 64538, 64539, 64540, 64541, 64542, 64543, 64544, 64545, 64546, 64547, 64548, 64549, 64550, 64551, 64552, 64553, 64554, 64555, 64556, 64557, 64558, 64559, 64560, 64561, 64562, 64563, 64564, 64565, 64566, 64567, 64568, 64569, 64570, 64571, 64572, 64573, 64574, 64575, 64576, 64577, 64578, 64579, 64580, 64581, 64582, 64583, 64584, 64585, 64586, 64587, 64588, 64589, 64590, 64591, 64592, 64593, 64594, 64595, 64596, 64597, 64598, 64599, 64600, 64601, 64602, 64603, 64604, 64605, 64606, 64607, 64608, 64609, 64610, 64611, 64612, 64613, 64614, 64615, 64616, 64617, 64618, 64619, 64620, 64621, 64622, 64623, 64624, 64625, 64626, 64627, 64628, 64629, 64630, 64631, 64632, 64633, 64634, 64635, 64636, 64637, 64638, 64639, 64640, 64641, 64642, 64643, 64644, 64645, 64646, 64647, 64648, 64649, 64650, 64651, 64652, 64653, 64654, 64655, 64656, 64657, 64658, 64659, 64660, 64661, 64662, 64663, 64664, 64665, 64666, 64667, 64668, 64669, 64670, 64671, 64672, 64673, 64674, 64675, 64676, 64677, 64678, 64679, 64680, 64681, 64682, 64683, 64684, 64685, 64686, 64687, 64688, 64689, 64690, 64691, 64692, 64693, 64694, 64695, 64696, 64697, 64698, 64699, 64700, 64701, 64702, 64703, 64704, 64705, 64706, 64707, 64708, 64709, 64710, 64711, 64712, 64713, 64714, 64715, 64716, 64717, 64718, 64719, 64720, 64721, 64722, 64723, 64724, 64725, 64726, 64727, 64728, 64729, 64730, 64731, 64732, 64733, 64734, 64735, 64736, 64737, 64738, 64739, 64740, 64741, 64742, 64743, 64744, 64745, 64746, 64747, 64748, 64749, 64750, 64751, 64752, 64753, 64754, 64755, 64756, 64757, 64758, 64759, 64760, 64761, 64762, 64763, 64764, 64765, 64766, 64767, 64768, 64769, 64770, 64771, 64772, 64773, 64774, 64775, 64776, 64777, 64778, 64779, 64780, 64781, 64782, 64783, 64784, 64785, 64786, 64787, 64788, 64789, 64790, 64791, 64792, 64793, 64794, 64795, 64796, 64797, 64798, 64799, 64800, 64801, 64802, 64803, 64804, 64805, 64806, 64807, 64808, 64809, 64810, 64811, 64812, 64813, 64814, 64815, 64816, 64817, 64818, 64819, 64820, 64821, 64822, 64823, 64824, 64825, 64826, 64827, 64828, 64829, 64848, 64849, 64850, 64851, 64852, 64853, 64854, 64855, 64856, 64857, 64858, 64859, 64860, 64861, 64862, 64863, 64864, 64865, 64866, 64867, 64868, 64869, 64870, 64871, 64872, 64873, 64874, 64875, 64876, 64877, 64878, 64879, 64880, 64881, 64882, 64883, 64884, 64885, 64886, 64887, 64888, 64889, 64890, 64891, 64892, 64893, 64894, 64895, 64896, 64897, 64898, 64899, 64900, 64901, 64902, 64903, 64904, 64905, 64906, 64907, 64908, 64909, 64910, 64911, 64914, 64915, 64916, 64917, 64918, 64919, 64920, 64921, 64922, 64923, 64924, 64925, 64926, 64927, 64928, 64929, 64930, 64931, 64932, 64933, 64934, 64935, 64936, 64937, 64938, 64939, 64940, 64941, 64942, 64943, 64944, 64945, 64946, 64947, 64948, 64949, 64950, 64951, 64952, 64953, 64954, 64955, 64956, 64957, 64958, 64959, 64960, 64961, 64962, 64963, 64964, 64965, 64966, 64967, 65008, 65009, 65010, 65011, 65012, 65013, 65014, 65015, 65016, 65017, 65018, 65019, 65136, 65137, 65138, 65139, 65140, 65142, 65143, 65144, 65145, 65146, 65147, 65148, 65149, 65150, 65151, 65152, 65153, 65154, 65155, 65156, 65157, 65158, 65159, 65160, 65161, 65162, 65163, 65164, 65165, 65166, 65167, 65168, 65169, 65170, 65171, 65172, 65173, 65174, 65175, 65176, 65177, 65178, 65179, 65180, 65181, 65182, 65183, 65184, 65185, 65186, 65187, 65188, 65189, 65190, 65191, 65192, 65193, 65194, 65195, 65196, 65197, 65198, 65199, 65200, 65201, 65202, 65203, 65204, 65205, 65206, 65207, 65208, 65209, 65210, 65211, 65212, 65213, 65214, 65215, 65216, 65217, 65218, 65219, 65220, 65221, 65222, 65223, 65224, 65225, 65226, 65227, 65228, 65229, 65230, 65231, 65232, 65233, 65234, 65235, 65236, 65237, 65238, 65239, 65240, 65241, 65242, 65243, 65244, 65245, 65246, 65247, 65248, 65249, 65250, 65251, 65252, 65253, 65254, 65255, 65256, 65257, 65258, 65259, 65260, 65261, 65262, 65263, 65264, 65265, 65266, 65267, 65268, 65269, 65270, 65271, 65272, 65273, 65274, 65275, 65276, 65313, 65314, 65315, 65316, 65317, 65318, 65319, 65320, 65321, 65322, 65323, 65324, 65325, 65326, 65327, 65328, 65329, 65330, 65331, 65332, 65333, 65334, 65335, 65336, 65337, 65338, 65345, 65346, 65347, 65348, 65349, 65350, 65351, 65352, 65353, 65354, 65355, 65356, 65357, 65358, 65359, 65360, 65361, 65362, 65363, 65364, 65365, 65366, 65367, 65368, 65369, 65370, 65382, 65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390, 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398, 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406, 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414, 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422, 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430, 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438, 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446, 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454, 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462, 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470, 65474, 65475, 65476, 65477, 65478, 65479, 65482, 65483, 65484, 65485, 65486, 65487, 65490, 65491, 65492, 65493, 65494, 65495, 65498, 65499, 65500, 65536, 65537, 65538, 65539, 65540, 65541, 65542, 65543, 65544, 65545, 65546, 65547, 65549, 65550, 65551, 65552, 65553, 65554, 65555, 65556, 65557, 65558, 65559, 65560, 65561, 65562, 65563, 65564, 65565, 65566, 65567, 65568, 65569, 65570, 65571, 65572, 65573, 65574, 65576, 65577, 65578, 65579, 65580, 65581, 65582, 65583, 65584, 65585, 65586, 65587, 65588, 65589, 65590, 65591, 65592, 65593, 65594, 65596, 65597, 65599, 65600, 65601, 65602, 65603, 65604, 65605, 65606, 65607, 65608, 65609, 65610, 65611, 65612, 65613, 65616, 65617, 65618, 65619, 65620, 65621, 65622, 65623, 65624, 65625, 65626, 65627, 65628, 65629, 65664, 65665, 65666, 65667, 65668, 65669, 65670, 65671, 65672, 65673, 65674, 65675, 65676, 65677, 65678, 65679, 65680, 65681, 65682, 65683, 65684, 65685, 65686, 65687, 65688, 65689, 65690, 65691, 65692, 65693, 65694, 65695, 65696, 65697, 65698, 65699, 65700, 65701, 65702, 65703, 65704, 65705, 65706, 65707, 65708, 65709, 65710, 65711, 65712, 65713, 65714, 65715, 65716, 65717, 65718, 65719, 65720, 65721, 65722, 65723, 65724, 65725, 65726, 65727, 65728, 65729, 65730, 65731, 65732, 65733, 65734, 65735, 65736, 65737, 65738, 65739, 65740, 65741, 65742, 65743, 65744, 65745, 65746, 65747, 65748, 65749, 65750, 65751, 65752, 65753, 65754, 65755, 65756, 65757, 65758, 65759, 65760, 65761, 65762, 65763, 65764, 65765, 65766, 65767, 65768, 65769, 65770, 65771, 65772, 65773, 65774, 65775, 65776, 65777, 65778, 65779, 65780, 65781, 65782, 65783, 65784, 65785, 65786, 66176, 66177, 66178, 66179, 66180, 66181, 66182, 66183, 66184, 66185, 66186, 66187, 66188, 66189, 66190, 66191, 66192, 66193, 66194, 66195, 66196, 66197, 66198, 66199, 66200, 66201, 66202, 66203, 66204, 66208, 66209, 66210, 66211, 66212, 66213, 66214, 66215, 66216, 66217, 66218, 66219, 66220, 66221, 66222, 66223, 66224, 66225, 66226, 66227, 66228, 66229, 66230, 66231, 66232, 66233, 66234, 66235, 66236, 66237, 66238, 66239, 66240, 66241, 66242, 66243, 66244, 66245, 66246, 66247, 66248, 66249, 66250, 66251, 66252, 66253, 66254, 66255, 66256, 66304, 66305, 66306, 66307, 66308, 66309, 66310, 66311, 66312, 66313, 66314, 66315, 66316, 66317, 66318, 66319, 66320, 66321, 66322, 66323, 66324, 66325, 66326, 66327, 66328, 66329, 66330, 66331, 66332, 66333, 66334, 66335, 66352, 66353, 66354, 66355, 66356, 66357, 66358, 66359, 66360, 66361, 66362, 66363, 66364, 66365, 66366, 66367, 66368, 66370, 66371, 66372, 66373, 66374, 66375, 66376, 66377, 66384, 66385, 66386, 66387, 66388, 66389, 66390, 66391, 66392, 66393, 66394, 66395, 66396, 66397, 66398, 66399, 66400, 66401, 66402, 66403, 66404, 66405, 66406, 66407, 66408, 66409, 66410, 66411, 66412, 66413, 66414, 66415, 66416, 66417, 66418, 66419, 66420, 66421, 66432, 66433, 66434, 66435, 66436, 66437, 66438, 66439, 66440, 66441, 66442, 66443, 66444, 66445, 66446, 66447, 66448, 66449, 66450, 66451, 66452, 66453, 66454, 66455, 66456, 66457, 66458, 66459, 66460, 66461, 66464, 66465, 66466, 66467, 66468, 66469, 66470, 66471, 66472, 66473, 66474, 66475, 66476, 66477, 66478, 66479, 66480, 66481, 66482, 66483, 66484, 66485, 66486, 66487, 66488, 66489, 66490, 66491, 66492, 66493, 66494, 66495, 66496, 66497, 66498, 66499, 66504, 66505, 66506, 66507, 66508, 66509, 66510, 66511, 66560, 66561, 66562, 66563, 66564, 66565, 66566, 66567, 66568, 66569, 66570, 66571, 66572, 66573, 66574, 66575, 66576, 66577, 66578, 66579, 66580, 66581, 66582, 66583, 66584, 66585, 66586, 66587, 66588, 66589, 66590, 66591, 66592, 66593, 66594, 66595, 66596, 66597, 66598, 66599, 66600, 66601, 66602, 66603, 66604, 66605, 66606, 66607, 66608, 66609, 66610, 66611, 66612, 66613, 66614, 66615, 66616, 66617, 66618, 66619, 66620, 66621, 66622, 66623, 66624, 66625, 66626, 66627, 66628, 66629, 66630, 66631, 66632, 66633, 66634, 66635, 66636, 66637, 66638, 66639, 66640, 66641, 66642, 66643, 66644, 66645, 66646, 66647, 66648, 66649, 66650, 66651, 66652, 66653, 66654, 66655, 66656, 66657, 66658, 66659, 66660, 66661, 66662, 66663, 66664, 66665, 66666, 66667, 66668, 66669, 66670, 66671, 66672, 66673, 66674, 66675, 66676, 66677, 66678, 66679, 66680, 66681, 66682, 66683, 66684, 66685, 66686, 66687, 66688, 66689, 66690, 66691, 66692, 66693, 66694, 66695, 66696, 66697, 66698, 66699, 66700, 66701, 66702, 66703, 66704, 66705, 66706, 66707, 66708, 66709, 66710, 66711, 66712, 66713, 66714, 66715, 66716, 66717, 66816, 66817, 66818, 66819, 66820, 66821, 66822, 66823, 66824, 66825, 66826, 66827, 66828, 66829, 66830, 66831, 66832, 66833, 66834, 66835, 66836, 66837, 66838, 66839, 66840, 66841, 66842, 66843, 66844, 66845, 66846, 66847, 66848, 66849, 66850, 66851, 66852, 66853, 66854, 66855, 66864, 66865, 66866, 66867, 66868, 66869, 66870, 66871, 66872, 66873, 66874, 66875, 66876, 66877, 66878, 66879, 66880, 66881, 66882, 66883, 66884, 66885, 66886, 66887, 66888, 66889, 66890, 66891, 66892, 66893, 66894, 66895, 66896, 66897, 66898, 66899, 66900, 66901, 66902, 66903, 66904, 66905, 66906, 66907, 66908, 66909, 66910, 66911, 66912, 66913, 66914, 66915, 67072, 67073, 67074, 67075, 67076, 67077, 67078, 67079, 67080, 67081, 67082, 67083, 67084, 67085, 67086, 67087, 67088, 67089, 67090, 67091, 67092, 67093, 67094, 67095, 67096, 67097, 67098, 67099, 67100, 67101, 67102, 67103, 67104, 67105, 67106, 67107, 67108, 67109, 67110, 67111, 67112, 67113, 67114, 67115, 67116, 67117, 67118, 67119, 67120, 67121, 67122, 67123, 67124, 67125, 67126, 67127, 67128, 67129, 67130, 67131, 67132, 67133, 67134, 67135, 67136, 67137, 67138, 67139, 67140, 67141, 67142, 67143, 67144, 67145, 67146, 67147, 67148, 67149, 67150, 67151, 67152, 67153, 67154, 67155, 67156, 67157, 67158, 67159, 67160, 67161, 67162, 67163, 67164, 67165, 67166, 67167, 67168, 67169, 67170, 67171, 67172, 67173, 67174, 67175, 67176, 67177, 67178, 67179, 67180, 67181, 67182, 67183, 67184, 67185, 67186, 67187, 67188, 67189, 67190, 67191, 67192, 67193, 67194, 67195, 67196, 67197, 67198, 67199, 67200, 67201, 67202, 67203, 67204, 67205, 67206, 67207, 67208, 67209, 67210, 67211, 67212, 67213, 67214, 67215, 67216, 67217, 67218, 67219, 67220, 67221, 67222, 67223, 67224, 67225, 67226, 67227, 67228, 67229, 67230, 67231, 67232, 67233, 67234, 67235, 67236, 67237, 67238, 67239, 67240, 67241, 67242, 67243, 67244, 67245, 67246, 67247, 67248, 67249, 67250, 67251, 67252, 67253, 67254, 67255, 67256, 67257, 67258, 67259, 67260, 67261, 67262, 67263, 67264, 67265, 67266, 67267, 67268, 67269, 67270, 67271, 67272, 67273, 67274, 67275, 67276, 67277, 67278, 67279, 67280, 67281, 67282, 67283, 67284, 67285, 67286, 67287, 67288, 67289, 67290, 67291, 67292, 67293, 67294, 67295, 67296, 67297, 67298, 67299, 67300, 67301, 67302, 67303, 67304, 67305, 67306, 67307, 67308, 67309, 67310, 67311, 67312, 67313, 67314, 67315, 67316, 67317, 67318, 67319, 67320, 67321, 67322, 67323, 67324, 67325, 67326, 67327, 67328, 67329, 67330, 67331, 67332, 67333, 67334, 67335, 67336, 67337, 67338, 67339, 67340, 67341, 67342, 67343, 67344, 67345, 67346, 67347, 67348, 67349, 67350, 67351, 67352, 67353, 67354, 67355, 67356, 67357, 67358, 67359, 67360, 67361, 67362, 67363, 67364, 67365, 67366, 67367, 67368, 67369, 67370, 67371, 67372, 67373, 67374, 67375, 67376, 67377, 67378, 67379, 67380, 67381, 67382, 67392, 67393, 67394, 67395, 67396, 67397, 67398, 67399, 67400, 67401, 67402, 67403, 67404, 67405, 67406, 67407, 67408, 67409, 67410, 67411, 67412, 67413, 67424, 67425, 67426, 67427, 67428, 67429, 67430, 67431, 67584, 67585, 67586, 67587, 67588, 67589, 67592, 67594, 67595, 67596, 67597, 67598, 67599, 67600, 67601, 67602, 67603, 67604, 67605, 67606, 67607, 67608, 67609, 67610, 67611, 67612, 67613, 67614, 67615, 67616, 67617, 67618, 67619, 67620, 67621, 67622, 67623, 67624, 67625, 67626, 67627, 67628, 67629, 67630, 67631, 67632, 67633, 67634, 67635, 67636, 67637, 67639, 67640, 67644, 67647, 67648, 67649, 67650, 67651, 67652, 67653, 67654, 67655, 67656, 67657, 67658, 67659, 67660, 67661, 67662, 67663, 67664, 67665, 67666, 67667, 67668, 67669, 67680, 67681, 67682, 67683, 67684, 67685, 67686, 67687, 67688, 67689, 67690, 67691, 67692, 67693, 67694, 67695, 67696, 67697, 67698, 67699, 67700, 67701, 67702, 67712, 67713, 67714, 67715, 67716, 67717, 67718, 67719, 67720, 67721, 67722, 67723, 67724, 67725, 67726, 67727, 67728, 67729, 67730, 67731, 67732, 67733, 67734, 67735, 67736, 67737, 67738, 67739, 67740, 67741, 67742, 67808, 67809, 67810, 67811, 67812, 67813, 67814, 67815, 67816, 67817, 67818, 67819, 67820, 67821, 67822, 67823, 67824, 67825, 67826, 67828, 67829, 67840, 67841, 67842, 67843, 67844, 67845, 67846, 67847, 67848, 67849, 67850, 67851, 67852, 67853, 67854, 67855, 67856, 67857, 67858, 67859, 67860, 67861, 67872, 67873, 67874, 67875, 67876, 67877, 67878, 67879, 67880, 67881, 67882, 67883, 67884, 67885, 67886, 67887, 67888, 67889, 67890, 67891, 67892, 67893, 67894, 67895, 67896, 67897, 67968, 67969, 67970, 67971, 67972, 67973, 67974, 67975, 67976, 67977, 67978, 67979, 67980, 67981, 67982, 67983, 67984, 67985, 67986, 67987, 67988, 67989, 67990, 67991, 67992, 67993, 67994, 67995, 67996, 67997, 67998, 67999, 68000, 68001, 68002, 68003, 68004, 68005, 68006, 68007, 68008, 68009, 68010, 68011, 68012, 68013, 68014, 68015, 68016, 68017, 68018, 68019, 68020, 68021, 68022, 68023, 68030, 68031, 68096, 68112, 68113, 68114, 68115, 68117, 68118, 68119, 68121, 68122, 68123, 68124, 68125, 68126, 68127, 68128, 68129, 68130, 68131, 68132, 68133, 68134, 68135, 68136, 68137, 68138, 68139, 68140, 68141, 68142, 68143, 68144, 68145, 68146, 68147, 68192, 68193, 68194, 68195, 68196, 68197, 68198, 68199, 68200, 68201, 68202, 68203, 68204, 68205, 68206, 68207, 68208, 68209, 68210, 68211, 68212, 68213, 68214, 68215, 68216, 68217, 68218, 68219, 68220, 68224, 68225, 68226, 68227, 68228, 68229, 68230, 68231, 68232, 68233, 68234, 68235, 68236, 68237, 68238, 68239, 68240, 68241, 68242, 68243, 68244, 68245, 68246, 68247, 68248, 68249, 68250, 68251, 68252, 68288, 68289, 68290, 68291, 68292, 68293, 68294, 68295, 68297, 68298, 68299, 68300, 68301, 68302, 68303, 68304, 68305, 68306, 68307, 68308, 68309, 68310, 68311, 68312, 68313, 68314, 68315, 68316, 68317, 68318, 68319, 68320, 68321, 68322, 68323, 68324, 68352, 68353, 68354, 68355, 68356, 68357, 68358, 68359, 68360, 68361, 68362, 68363, 68364, 68365, 68366, 68367, 68368, 68369, 68370, 68371, 68372, 68373, 68374, 68375, 68376, 68377, 68378, 68379, 68380, 68381, 68382, 68383, 68384, 68385, 68386, 68387, 68388, 68389, 68390, 68391, 68392, 68393, 68394, 68395, 68396, 68397, 68398, 68399, 68400, 68401, 68402, 68403, 68404, 68405, 68416, 68417, 68418, 68419, 68420, 68421, 68422, 68423, 68424, 68425, 68426, 68427, 68428, 68429, 68430, 68431, 68432, 68433, 68434, 68435, 68436, 68437, 68448, 68449, 68450, 68451, 68452, 68453, 68454, 68455, 68456, 68457, 68458, 68459, 68460, 68461, 68462, 68463, 68464, 68465, 68466, 68480, 68481, 68482, 68483, 68484, 68485, 68486, 68487, 68488, 68489, 68490, 68491, 68492, 68493, 68494, 68495, 68496, 68497, 68608, 68609, 68610, 68611, 68612, 68613, 68614, 68615, 68616, 68617, 68618, 68619, 68620, 68621, 68622, 68623, 68624, 68625, 68626, 68627, 68628, 68629, 68630, 68631, 68632, 68633, 68634, 68635, 68636, 68637, 68638, 68639, 68640, 68641, 68642, 68643, 68644, 68645, 68646, 68647, 68648, 68649, 68650, 68651, 68652, 68653, 68654, 68655, 68656, 68657, 68658, 68659, 68660, 68661, 68662, 68663, 68664, 68665, 68666, 68667, 68668, 68669, 68670, 68671, 68672, 68673, 68674, 68675, 68676, 68677, 68678, 68679, 68680, 68736, 68737, 68738, 68739, 68740, 68741, 68742, 68743, 68744, 68745, 68746, 68747, 68748, 68749, 68750, 68751, 68752, 68753, 68754, 68755, 68756, 68757, 68758, 68759, 68760, 68761, 68762, 68763, 68764, 68765, 68766, 68767, 68768, 68769, 68770, 68771, 68772, 68773, 68774, 68775, 68776, 68777, 68778, 68779, 68780, 68781, 68782, 68783, 68784, 68785, 68786, 68800, 68801, 68802, 68803, 68804, 68805, 68806, 68807, 68808, 68809, 68810, 68811, 68812, 68813, 68814, 68815, 68816, 68817, 68818, 68819, 68820, 68821, 68822, 68823, 68824, 68825, 68826, 68827, 68828, 68829, 68830, 68831, 68832, 68833, 68834, 68835, 68836, 68837, 68838, 68839, 68840, 68841, 68842, 68843, 68844, 68845, 68846, 68847, 68848, 68849, 68850, 69635, 69636, 69637, 69638, 69639, 69640, 69641, 69642, 69643, 69644, 69645, 69646, 69647, 69648, 69649, 69650, 69651, 69652, 69653, 69654, 69655, 69656, 69657, 69658, 69659, 69660, 69661, 69662, 69663, 69664, 69665, 69666, 69667, 69668, 69669, 69670, 69671, 69672, 69673, 69674, 69675, 69676, 69677, 69678, 69679, 69680, 69681, 69682, 69683, 69684, 69685, 69686, 69687, 69763, 69764, 69765, 69766, 69767, 69768, 69769, 69770, 69771, 69772, 69773, 69774, 69775, 69776, 69777, 69778, 69779, 69780, 69781, 69782, 69783, 69784, 69785, 69786, 69787, 69788, 69789, 69790, 69791, 69792, 69793, 69794, 69795, 69796, 69797, 69798, 69799, 69800, 69801, 69802, 69803, 69804, 69805, 69806, 69807, 69840, 69841, 69842, 69843, 69844, 69845, 69846, 69847, 69848, 69849, 69850, 69851, 69852, 69853, 69854, 69855, 69856, 69857, 69858, 69859, 69860, 69861, 69862, 69863, 69864, 69891, 69892, 69893, 69894, 69895, 69896, 69897, 69898, 69899, 69900, 69901, 69902, 69903, 69904, 69905, 69906, 69907, 69908, 69909, 69910, 69911, 69912, 69913, 69914, 69915, 69916, 69917, 69918, 69919, 69920, 69921, 69922, 69923, 69924, 69925, 69926, 69968, 69969, 69970, 69971, 69972, 69973, 69974, 69975, 69976, 69977, 69978, 69979, 69980, 69981, 69982, 69983, 69984, 69985, 69986, 69987, 69988, 69989, 69990, 69991, 69992, 69993, 69994, 69995, 69996, 69997, 69998, 69999, 70000, 70001, 70002, 70006, 70019, 70020, 70021, 70022, 70023, 70024, 70025, 70026, 70027, 70028, 70029, 70030, 70031, 70032, 70033, 70034, 70035, 70036, 70037, 70038, 70039, 70040, 70041, 70042, 70043, 70044, 70045, 70046, 70047, 70048, 70049, 70050, 70051, 70052, 70053, 70054, 70055, 70056, 70057, 70058, 70059, 70060, 70061, 70062, 70063, 70064, 70065, 70066, 70081, 70082, 70083, 70084, 70106, 70108, 70144, 70145, 70146, 70147, 70148, 70149, 70150, 70151, 70152, 70153, 70154, 70155, 70156, 70157, 70158, 70159, 70160, 70161, 70163, 70164, 70165, 70166, 70167, 70168, 70169, 70170, 70171, 70172, 70173, 70174, 70175, 70176, 70177, 70178, 70179, 70180, 70181, 70182, 70183, 70184, 70185, 70186, 70187, 70272, 70273, 70274, 70275, 70276, 70277, 70278, 70280, 70282, 70283, 70284, 70285, 70287, 70288, 70289, 70290, 70291, 70292, 70293, 70294, 70295, 70296, 70297, 70298, 70299, 70300, 70301, 70303, 70304, 70305, 70306, 70307, 70308, 70309, 70310, 70311, 70312, 70320, 70321, 70322, 70323, 70324, 70325, 70326, 70327, 70328, 70329, 70330, 70331, 70332, 70333, 70334, 70335, 70336, 70337, 70338, 70339, 70340, 70341, 70342, 70343, 70344, 70345, 70346, 70347, 70348, 70349, 70350, 70351, 70352, 70353, 70354, 70355, 70356, 70357, 70358, 70359, 70360, 70361, 70362, 70363, 70364, 70365, 70366, 70405, 70406, 70407, 70408, 70409, 70410, 70411, 70412, 70415, 70416, 70419, 70420, 70421, 70422, 70423, 70424, 70425, 70426, 70427, 70428, 70429, 70430, 70431, 70432, 70433, 70434, 70435, 70436, 70437, 70438, 70439, 70440, 70442, 70443, 70444, 70445, 70446, 70447, 70448, 70450, 70451, 70453, 70454, 70455, 70456, 70457, 70461, 70480, 70493, 70494, 70495, 70496, 70497, 70784, 70785, 70786, 70787, 70788, 70789, 70790, 70791, 70792, 70793, 70794, 70795, 70796, 70797, 70798, 70799, 70800, 70801, 70802, 70803, 70804, 70805, 70806, 70807, 70808, 70809, 70810, 70811, 70812, 70813, 70814, 70815, 70816, 70817, 70818, 70819, 70820, 70821, 70822, 70823, 70824, 70825, 70826, 70827, 70828, 70829, 70830, 70831, 70852, 70853, 70855, 71040, 71041, 71042, 71043, 71044, 71045, 71046, 71047, 71048, 71049, 71050, 71051, 71052, 71053, 71054, 71055, 71056, 71057, 71058, 71059, 71060, 71061, 71062, 71063, 71064, 71065, 71066, 71067, 71068, 71069, 71070, 71071, 71072, 71073, 71074, 71075, 71076, 71077, 71078, 71079, 71080, 71081, 71082, 71083, 71084, 71085, 71086, 71128, 71129, 71130, 71131, 71168, 71169, 71170, 71171, 71172, 71173, 71174, 71175, 71176, 71177, 71178, 71179, 71180, 71181, 71182, 71183, 71184, 71185, 71186, 71187, 71188, 71189, 71190, 71191, 71192, 71193, 71194, 71195, 71196, 71197, 71198, 71199, 71200, 71201, 71202, 71203, 71204, 71205, 71206, 71207, 71208, 71209, 71210, 71211, 71212, 71213, 71214, 71215, 71236, 71296, 71297, 71298, 71299, 71300, 71301, 71302, 71303, 71304, 71305, 71306, 71307, 71308, 71309, 71310, 71311, 71312, 71313, 71314, 71315, 71316, 71317, 71318, 71319, 71320, 71321, 71322, 71323, 71324, 71325, 71326, 71327, 71328, 71329, 71330, 71331, 71332, 71333, 71334, 71335, 71336, 71337, 71338, 71424, 71425, 71426, 71427, 71428, 71429, 71430, 71431, 71432, 71433, 71434, 71435, 71436, 71437, 71438, 71439, 71440, 71441, 71442, 71443, 71444, 71445, 71446, 71447, 71448, 71449, 71840, 71841, 71842, 71843, 71844, 71845, 71846, 71847, 71848, 71849, 71850, 71851, 71852, 71853, 71854, 71855, 71856, 71857, 71858, 71859, 71860, 71861, 71862, 71863, 71864, 71865, 71866, 71867, 71868, 71869, 71870, 71871, 71872, 71873, 71874, 71875, 71876, 71877, 71878, 71879, 71880, 71881, 71882, 71883, 71884, 71885, 71886, 71887, 71888, 71889, 71890, 71891, 71892, 71893, 71894, 71895, 71896, 71897, 71898, 71899, 71900, 71901, 71902, 71903, 71935, 72384, 72385, 72386, 72387, 72388, 72389, 72390, 72391, 72392, 72393, 72394, 72395, 72396, 72397, 72398, 72399, 72400, 72401, 72402, 72403, 72404, 72405, 72406, 72407, 72408, 72409, 72410, 72411, 72412, 72413, 72414, 72415, 72416, 72417, 72418, 72419, 72420, 72421, 72422, 72423, 72424, 72425, 72426, 72427, 72428, 72429, 72430, 72431, 72432, 72433, 72434, 72435, 72436, 72437, 72438, 72439, 72440, 73728, 73729, 73730, 73731, 73732, 73733, 73734, 73735, 73736, 73737, 73738, 73739, 73740, 73741, 73742, 73743, 73744, 73745, 73746, 73747, 73748, 73749, 73750, 73751, 73752, 73753, 73754, 73755, 73756, 73757, 73758, 73759, 73760, 73761, 73762, 73763, 73764, 73765, 73766, 73767, 73768, 73769, 73770, 73771, 73772, 73773, 73774, 73775, 73776, 73777, 73778, 73779, 73780, 73781, 73782, 73783, 73784, 73785, 73786, 73787, 73788, 73789, 73790, 73791, 73792, 73793, 73794, 73795, 73796, 73797, 73798, 73799, 73800, 73801, 73802, 73803, 73804, 73805, 73806, 73807, 73808, 73809, 73810, 73811, 73812, 73813, 73814, 73815, 73816, 73817, 73818, 73819, 73820, 73821, 73822, 73823, 73824, 73825, 73826, 73827, 73828, 73829, 73830, 73831, 73832, 73833, 73834, 73835, 73836, 73837, 73838, 73839, 73840, 73841, 73842, 73843, 73844, 73845, 73846, 73847, 73848, 73849, 73850, 73851, 73852, 73853, 73854, 73855, 73856, 73857, 73858, 73859, 73860, 73861, 73862, 73863, 73864, 73865, 73866, 73867, 73868, 73869, 73870, 73871, 73872, 73873, 73874, 73875, 73876, 73877, 73878, 73879, 73880, 73881, 73882, 73883, 73884, 73885, 73886, 73887, 73888, 73889, 73890, 73891, 73892, 73893, 73894, 73895, 73896, 73897, 73898, 73899, 73900, 73901, 73902, 73903, 73904, 73905, 73906, 73907, 73908, 73909, 73910, 73911, 73912, 73913, 73914, 73915, 73916, 73917, 73918, 73919, 73920, 73921, 73922, 73923, 73924, 73925, 73926, 73927, 73928, 73929, 73930, 73931, 73932, 73933, 73934, 73935, 73936, 73937, 73938, 73939, 73940, 73941, 73942, 73943, 73944, 73945, 73946, 73947, 73948, 73949, 73950, 73951, 73952, 73953, 73954, 73955, 73956, 73957, 73958, 73959, 73960, 73961, 73962, 73963, 73964, 73965, 73966, 73967, 73968, 73969, 73970, 73971, 73972, 73973, 73974, 73975, 73976, 73977, 73978, 73979, 73980, 73981, 73982, 73983, 73984, 73985, 73986, 73987, 73988, 73989, 73990, 73991, 73992, 73993, 73994, 73995, 73996, 73997, 73998, 73999, 74000, 74001, 74002, 74003, 74004, 74005, 74006, 74007, 74008, 74009, 74010, 74011, 74012, 74013, 74014, 74015, 74016, 74017, 74018, 74019, 74020, 74021, 74022, 74023, 74024, 74025, 74026, 74027, 74028, 74029, 74030, 74031, 74032, 74033, 74034, 74035, 74036, 74037, 74038, 74039, 74040, 74041, 74042, 74043, 74044, 74045, 74046, 74047, 74048, 74049, 74050, 74051, 74052, 74053, 74054, 74055, 74056, 74057, 74058, 74059, 74060, 74061, 74062, 74063, 74064, 74065, 74066, 74067, 74068, 74069, 74070, 74071, 74072, 74073, 74074, 74075, 74076, 74077, 74078, 74079, 74080, 74081, 74082, 74083, 74084, 74085, 74086, 74087, 74088, 74089, 74090, 74091, 74092, 74093, 74094, 74095, 74096, 74097, 74098, 74099, 74100, 74101, 74102, 74103, 74104, 74105, 74106, 74107, 74108, 74109, 74110, 74111, 74112, 74113, 74114, 74115, 74116, 74117, 74118, 74119, 74120, 74121, 74122, 74123, 74124, 74125, 74126, 74127, 74128, 74129, 74130, 74131, 74132, 74133, 74134, 74135, 74136, 74137, 74138, 74139, 74140, 74141, 74142, 74143, 74144, 74145, 74146, 74147, 74148, 74149, 74150, 74151, 74152, 74153, 74154, 74155, 74156, 74157, 74158, 74159, 74160, 74161, 74162, 74163, 74164, 74165, 74166, 74167, 74168, 74169, 74170, 74171, 74172, 74173, 74174, 74175, 74176, 74177, 74178, 74179, 74180, 74181, 74182, 74183, 74184, 74185, 74186, 74187, 74188, 74189, 74190, 74191, 74192, 74193, 74194, 74195, 74196, 74197, 74198, 74199, 74200, 74201, 74202, 74203, 74204, 74205, 74206, 74207, 74208, 74209, 74210, 74211, 74212, 74213, 74214, 74215, 74216, 74217, 74218, 74219, 74220, 74221, 74222, 74223, 74224, 74225, 74226, 74227, 74228, 74229, 74230, 74231, 74232, 74233, 74234, 74235, 74236, 74237, 74238, 74239, 74240, 74241, 74242, 74243, 74244, 74245, 74246, 74247, 74248, 74249, 74250, 74251, 74252, 74253, 74254, 74255, 74256, 74257, 74258, 74259, 74260, 74261, 74262, 74263, 74264, 74265, 74266, 74267, 74268, 74269, 74270, 74271, 74272, 74273, 74274, 74275, 74276, 74277, 74278, 74279, 74280, 74281, 74282, 74283, 74284, 74285, 74286, 74287, 74288, 74289, 74290, 74291, 74292, 74293, 74294, 74295, 74296, 74297, 74298, 74299, 74300, 74301, 74302, 74303, 74304, 74305, 74306, 74307, 74308, 74309, 74310, 74311, 74312, 74313, 74314, 74315, 74316, 74317, 74318, 74319, 74320, 74321, 74322, 74323, 74324, 74325, 74326, 74327, 74328, 74329, 74330, 74331, 74332, 74333, 74334, 74335, 74336, 74337, 74338, 74339, 74340, 74341, 74342, 74343, 74344, 74345, 74346, 74347, 74348, 74349, 74350, 74351, 74352, 74353, 74354, 74355, 74356, 74357, 74358, 74359, 74360, 74361, 74362, 74363, 74364, 74365, 74366, 74367, 74368, 74369, 74370, 74371, 74372, 74373, 74374, 74375, 74376, 74377, 74378, 74379, 74380, 74381, 74382, 74383, 74384, 74385, 74386, 74387, 74388, 74389, 74390, 74391, 74392, 74393, 74394, 74395, 74396, 74397, 74398, 74399, 74400, 74401, 74402, 74403, 74404, 74405, 74406, 74407, 74408, 74409, 74410, 74411, 74412, 74413, 74414, 74415, 74416, 74417, 74418, 74419, 74420, 74421, 74422, 74423, 74424, 74425, 74426, 74427, 74428, 74429, 74430, 74431, 74432, 74433, 74434, 74435, 74436, 74437, 74438, 74439, 74440, 74441, 74442, 74443, 74444, 74445, 74446, 74447, 74448, 74449, 74450, 74451, 74452, 74453, 74454, 74455, 74456, 74457, 74458, 74459, 74460, 74461, 74462, 74463, 74464, 74465, 74466, 74467, 74468, 74469, 74470, 74471, 74472, 74473, 74474, 74475, 74476, 74477, 74478, 74479, 74480, 74481, 74482, 74483, 74484, 74485, 74486, 74487, 74488, 74489, 74490, 74491, 74492, 74493, 74494, 74495, 74496, 74497, 74498, 74499, 74500, 74501, 74502, 74503, 74504, 74505, 74506, 74507, 74508, 74509, 74510, 74511, 74512, 74513, 74514, 74515, 74516, 74517, 74518, 74519, 74520, 74521, 74522, 74523, 74524, 74525, 74526, 74527, 74528, 74529, 74530, 74531, 74532, 74533, 74534, 74535, 74536, 74537, 74538, 74539, 74540, 74541, 74542, 74543, 74544, 74545, 74546, 74547, 74548, 74549, 74550, 74551, 74552, 74553, 74554, 74555, 74556, 74557, 74558, 74559, 74560, 74561, 74562, 74563, 74564, 74565, 74566, 74567, 74568, 74569, 74570, 74571, 74572, 74573, 74574, 74575, 74576, 74577, 74578, 74579, 74580, 74581, 74582, 74583, 74584, 74585, 74586, 74587, 74588, 74589, 74590, 74591, 74592, 74593, 74594, 74595, 74596, 74597, 74598, 74599, 74600, 74601, 74602, 74603, 74604, 74605, 74606, 74607, 74608, 74609, 74610, 74611, 74612, 74613, 74614, 74615, 74616, 74617, 74618, 74619, 74620, 74621, 74622, 74623, 74624, 74625, 74626, 74627, 74628, 74629, 74630, 74631, 74632, 74633, 74634, 74635, 74636, 74637, 74638, 74639, 74640, 74641, 74642, 74643, 74644, 74645, 74646, 74647, 74648, 74649, 74880, 74881, 74882, 74883, 74884, 74885, 74886, 74887, 74888, 74889, 74890, 74891, 74892, 74893, 74894, 74895, 74896, 74897, 74898, 74899, 74900, 74901, 74902, 74903, 74904, 74905, 74906, 74907, 74908, 74909, 74910, 74911, 74912, 74913, 74914, 74915, 74916, 74917, 74918, 74919, 74920, 74921, 74922, 74923, 74924, 74925, 74926, 74927, 74928, 74929, 74930, 74931, 74932, 74933, 74934, 74935, 74936, 74937, 74938, 74939, 74940, 74941, 74942, 74943, 74944, 74945, 74946, 74947, 74948, 74949, 74950, 74951, 74952, 74953, 74954, 74955, 74956, 74957, 74958, 74959, 74960, 74961, 74962, 74963, 74964, 74965, 74966, 74967, 74968, 74969, 74970, 74971, 74972, 74973, 74974, 74975, 74976, 74977, 74978, 74979, 74980, 74981, 74982, 74983, 74984, 74985, 74986, 74987, 74988, 74989, 74990, 74991, 74992, 74993, 74994, 74995, 74996, 74997, 74998, 74999, 75000, 75001, 75002, 75003, 75004, 75005, 75006, 75007, 75008, 75009, 75010, 75011, 75012, 75013, 75014, 75015, 75016, 75017, 75018, 75019, 75020, 75021, 75022, 75023, 75024, 75025, 75026, 75027, 75028, 75029, 75030, 75031, 75032, 75033, 75034, 75035, 75036, 75037, 75038, 75039, 75040, 75041, 75042, 75043, 75044, 75045, 75046, 75047, 75048, 75049, 75050, 75051, 75052, 75053, 75054, 75055, 75056, 75057, 75058, 75059, 75060, 75061, 75062, 75063, 75064, 75065, 75066, 75067, 75068, 75069, 75070, 75071, 75072, 75073, 75074, 75075, 77824, 77825, 77826, 77827, 77828, 77829, 77830, 77831, 77832, 77833, 77834, 77835, 77836, 77837, 77838, 77839, 77840, 77841, 77842, 77843, 77844, 77845, 77846, 77847, 77848, 77849, 77850, 77851, 77852, 77853, 77854, 77855, 77856, 77857, 77858, 77859, 77860, 77861, 77862, 77863, 77864, 77865, 77866, 77867, 77868, 77869, 77870, 77871, 77872, 77873, 77874, 77875, 77876, 77877, 77878, 77879, 77880, 77881, 77882, 77883, 77884, 77885, 77886, 77887, 77888, 77889, 77890, 77891, 77892, 77893, 77894, 77895, 77896, 77897, 77898, 77899, 77900, 77901, 77902, 77903, 77904, 77905, 77906, 77907, 77908, 77909, 77910, 77911, 77912, 77913, 77914, 77915, 77916, 77917, 77918, 77919, 77920, 77921, 77922, 77923, 77924, 77925, 77926, 77927, 77928, 77929, 77930, 77931, 77932, 77933, 77934, 77935, 77936, 77937, 77938, 77939, 77940, 77941, 77942, 77943, 77944, 77945, 77946, 77947, 77948, 77949, 77950, 77951, 77952, 77953, 77954, 77955, 77956, 77957, 77958, 77959, 77960, 77961, 77962, 77963, 77964, 77965, 77966, 77967, 77968, 77969, 77970, 77971, 77972, 77973, 77974, 77975, 77976, 77977, 77978, 77979, 77980, 77981, 77982, 77983, 77984, 77985, 77986, 77987, 77988, 77989, 77990, 77991, 77992, 77993, 77994, 77995, 77996, 77997, 77998, 77999, 78000, 78001, 78002, 78003, 78004, 78005, 78006, 78007, 78008, 78009, 78010, 78011, 78012, 78013, 78014, 78015, 78016, 78017, 78018, 78019, 78020, 78021, 78022, 78023, 78024, 78025, 78026, 78027, 78028, 78029, 78030, 78031, 78032, 78033, 78034, 78035, 78036, 78037, 78038, 78039, 78040, 78041, 78042, 78043, 78044, 78045, 78046, 78047, 78048, 78049, 78050, 78051, 78052, 78053, 78054, 78055, 78056, 78057, 78058, 78059, 78060, 78061, 78062, 78063, 78064, 78065, 78066, 78067, 78068, 78069, 78070, 78071, 78072, 78073, 78074, 78075, 78076, 78077, 78078, 78079, 78080, 78081, 78082, 78083, 78084, 78085, 78086, 78087, 78088, 78089, 78090, 78091, 78092, 78093, 78094, 78095, 78096, 78097, 78098, 78099, 78100, 78101, 78102, 78103, 78104, 78105, 78106, 78107, 78108, 78109, 78110, 78111, 78112, 78113, 78114, 78115, 78116, 78117, 78118, 78119, 78120, 78121, 78122, 78123, 78124, 78125, 78126, 78127, 78128, 78129, 78130, 78131, 78132, 78133, 78134, 78135, 78136, 78137, 78138, 78139, 78140, 78141, 78142, 78143, 78144, 78145, 78146, 78147, 78148, 78149, 78150, 78151, 78152, 78153, 78154, 78155, 78156, 78157, 78158, 78159, 78160, 78161, 78162, 78163, 78164, 78165, 78166, 78167, 78168, 78169, 78170, 78171, 78172, 78173, 78174, 78175, 78176, 78177, 78178, 78179, 78180, 78181, 78182, 78183, 78184, 78185, 78186, 78187, 78188, 78189, 78190, 78191, 78192, 78193, 78194, 78195, 78196, 78197, 78198, 78199, 78200, 78201, 78202, 78203, 78204, 78205, 78206, 78207, 78208, 78209, 78210, 78211, 78212, 78213, 78214, 78215, 78216, 78217, 78218, 78219, 78220, 78221, 78222, 78223, 78224, 78225, 78226, 78227, 78228, 78229, 78230, 78231, 78232, 78233, 78234, 78235, 78236, 78237, 78238, 78239, 78240, 78241, 78242, 78243, 78244, 78245, 78246, 78247, 78248, 78249, 78250, 78251, 78252, 78253, 78254, 78255, 78256, 78257, 78258, 78259, 78260, 78261, 78262, 78263, 78264, 78265, 78266, 78267, 78268, 78269, 78270, 78271, 78272, 78273, 78274, 78275, 78276, 78277, 78278, 78279, 78280, 78281, 78282, 78283, 78284, 78285, 78286, 78287, 78288, 78289, 78290, 78291, 78292, 78293, 78294, 78295, 78296, 78297, 78298, 78299, 78300, 78301, 78302, 78303, 78304, 78305, 78306, 78307, 78308, 78309, 78310, 78311, 78312, 78313, 78314, 78315, 78316, 78317, 78318, 78319, 78320, 78321, 78322, 78323, 78324, 78325, 78326, 78327, 78328, 78329, 78330, 78331, 78332, 78333, 78334, 78335, 78336, 78337, 78338, 78339, 78340, 78341, 78342, 78343, 78344, 78345, 78346, 78347, 78348, 78349, 78350, 78351, 78352, 78353, 78354, 78355, 78356, 78357, 78358, 78359, 78360, 78361, 78362, 78363, 78364, 78365, 78366, 78367, 78368, 78369, 78370, 78371, 78372, 78373, 78374, 78375, 78376, 78377, 78378, 78379, 78380, 78381, 78382, 78383, 78384, 78385, 78386, 78387, 78388, 78389, 78390, 78391, 78392, 78393, 78394, 78395, 78396, 78397, 78398, 78399, 78400, 78401, 78402, 78403, 78404, 78405, 78406, 78407, 78408, 78409, 78410, 78411, 78412, 78413, 78414, 78415, 78416, 78417, 78418, 78419, 78420, 78421, 78422, 78423, 78424, 78425, 78426, 78427, 78428, 78429, 78430, 78431, 78432, 78433, 78434, 78435, 78436, 78437, 78438, 78439, 78440, 78441, 78442, 78443, 78444, 78445, 78446, 78447, 78448, 78449, 78450, 78451, 78452, 78453, 78454, 78455, 78456, 78457, 78458, 78459, 78460, 78461, 78462, 78463, 78464, 78465, 78466, 78467, 78468, 78469, 78470, 78471, 78472, 78473, 78474, 78475, 78476, 78477, 78478, 78479, 78480, 78481, 78482, 78483, 78484, 78485, 78486, 78487, 78488, 78489, 78490, 78491, 78492, 78493, 78494, 78495, 78496, 78497, 78498, 78499, 78500, 78501, 78502, 78503, 78504, 78505, 78506, 78507, 78508, 78509, 78510, 78511, 78512, 78513, 78514, 78515, 78516, 78517, 78518, 78519, 78520, 78521, 78522, 78523, 78524, 78525, 78526, 78527, 78528, 78529, 78530, 78531, 78532, 78533, 78534, 78535, 78536, 78537, 78538, 78539, 78540, 78541, 78542, 78543, 78544, 78545, 78546, 78547, 78548, 78549, 78550, 78551, 78552, 78553, 78554, 78555, 78556, 78557, 78558, 78559, 78560, 78561, 78562, 78563, 78564, 78565, 78566, 78567, 78568, 78569, 78570, 78571, 78572, 78573, 78574, 78575, 78576, 78577, 78578, 78579, 78580, 78581, 78582, 78583, 78584, 78585, 78586, 78587, 78588, 78589, 78590, 78591, 78592, 78593, 78594, 78595, 78596, 78597, 78598, 78599, 78600, 78601, 78602, 78603, 78604, 78605, 78606, 78607, 78608, 78609, 78610, 78611, 78612, 78613, 78614, 78615, 78616, 78617, 78618, 78619, 78620, 78621, 78622, 78623, 78624, 78625, 78626, 78627, 78628, 78629, 78630, 78631, 78632, 78633, 78634, 78635, 78636, 78637, 78638, 78639, 78640, 78641, 78642, 78643, 78644, 78645, 78646, 78647, 78648, 78649, 78650, 78651, 78652, 78653, 78654, 78655, 78656, 78657, 78658, 78659, 78660, 78661, 78662, 78663, 78664, 78665, 78666, 78667, 78668, 78669, 78670, 78671, 78672, 78673, 78674, 78675, 78676, 78677, 78678, 78679, 78680, 78681, 78682, 78683, 78684, 78685, 78686, 78687, 78688, 78689, 78690, 78691, 78692, 78693, 78694, 78695, 78696, 78697, 78698, 78699, 78700, 78701, 78702, 78703, 78704, 78705, 78706, 78707, 78708, 78709, 78710, 78711, 78712, 78713, 78714, 78715, 78716, 78717, 78718, 78719, 78720, 78721, 78722, 78723, 78724, 78725, 78726, 78727, 78728, 78729, 78730, 78731, 78732, 78733, 78734, 78735, 78736, 78737, 78738, 78739, 78740, 78741, 78742, 78743, 78744, 78745, 78746, 78747, 78748, 78749, 78750, 78751, 78752, 78753, 78754, 78755, 78756, 78757, 78758, 78759, 78760, 78761, 78762, 78763, 78764, 78765, 78766, 78767, 78768, 78769, 78770, 78771, 78772, 78773, 78774, 78775, 78776, 78777, 78778, 78779, 78780, 78781, 78782, 78783, 78784, 78785, 78786, 78787, 78788, 78789, 78790, 78791, 78792, 78793, 78794, 78795, 78796, 78797, 78798, 78799, 78800, 78801, 78802, 78803, 78804, 78805, 78806, 78807, 78808, 78809, 78810, 78811, 78812, 78813, 78814, 78815, 78816, 78817, 78818, 78819, 78820, 78821, 78822, 78823, 78824, 78825, 78826, 78827, 78828, 78829, 78830, 78831, 78832, 78833, 78834, 78835, 78836, 78837, 78838, 78839, 78840, 78841, 78842, 78843, 78844, 78845, 78846, 78847, 78848, 78849, 78850, 78851, 78852, 78853, 78854, 78855, 78856, 78857, 78858, 78859, 78860, 78861, 78862, 78863, 78864, 78865, 78866, 78867, 78868, 78869, 78870, 78871, 78872, 78873, 78874, 78875, 78876, 78877, 78878, 78879, 78880, 78881, 78882, 78883, 78884, 78885, 78886, 78887, 78888, 78889, 78890, 78891, 78892, 78893, 78894, 82944, 82945, 82946, 82947, 82948, 82949, 82950, 82951, 82952, 82953, 82954, 82955, 82956, 82957, 82958, 82959, 82960, 82961, 82962, 82963, 82964, 82965, 82966, 82967, 82968, 82969, 82970, 82971, 82972, 82973, 82974, 82975, 82976, 82977, 82978, 82979, 82980, 82981, 82982, 82983, 82984, 82985, 82986, 82987, 82988, 82989, 82990, 82991, 82992, 82993, 82994, 82995, 82996, 82997, 82998, 82999, 83000, 83001, 83002, 83003, 83004, 83005, 83006, 83007, 83008, 83009, 83010, 83011, 83012, 83013, 83014, 83015, 83016, 83017, 83018, 83019, 83020, 83021, 83022, 83023, 83024, 83025, 83026, 83027, 83028, 83029, 83030, 83031, 83032, 83033, 83034, 83035, 83036, 83037, 83038, 83039, 83040, 83041, 83042, 83043, 83044, 83045, 83046, 83047, 83048, 83049, 83050, 83051, 83052, 83053, 83054, 83055, 83056, 83057, 83058, 83059, 83060, 83061, 83062, 83063, 83064, 83065, 83066, 83067, 83068, 83069, 83070, 83071, 83072, 83073, 83074, 83075, 83076, 83077, 83078, 83079, 83080, 83081, 83082, 83083, 83084, 83085, 83086, 83087, 83088, 83089, 83090, 83091, 83092, 83093, 83094, 83095, 83096, 83097, 83098, 83099, 83100, 83101, 83102, 83103, 83104, 83105, 83106, 83107, 83108, 83109, 83110, 83111, 83112, 83113, 83114, 83115, 83116, 83117, 83118, 83119, 83120, 83121, 83122, 83123, 83124, 83125, 83126, 83127, 83128, 83129, 83130, 83131, 83132, 83133, 83134, 83135, 83136, 83137, 83138, 83139, 83140, 83141, 83142, 83143, 83144, 83145, 83146, 83147, 83148, 83149, 83150, 83151, 83152, 83153, 83154, 83155, 83156, 83157, 83158, 83159, 83160, 83161, 83162, 83163, 83164, 83165, 83166, 83167, 83168, 83169, 83170, 83171, 83172, 83173, 83174, 83175, 83176, 83177, 83178, 83179, 83180, 83181, 83182, 83183, 83184, 83185, 83186, 83187, 83188, 83189, 83190, 83191, 83192, 83193, 83194, 83195, 83196, 83197, 83198, 83199, 83200, 83201, 83202, 83203, 83204, 83205, 83206, 83207, 83208, 83209, 83210, 83211, 83212, 83213, 83214, 83215, 83216, 83217, 83218, 83219, 83220, 83221, 83222, 83223, 83224, 83225, 83226, 83227, 83228, 83229, 83230, 83231, 83232, 83233, 83234, 83235, 83236, 83237, 83238, 83239, 83240, 83241, 83242, 83243, 83244, 83245, 83246, 83247, 83248, 83249, 83250, 83251, 83252, 83253, 83254, 83255, 83256, 83257, 83258, 83259, 83260, 83261, 83262, 83263, 83264, 83265, 83266, 83267, 83268, 83269, 83270, 83271, 83272, 83273, 83274, 83275, 83276, 83277, 83278, 83279, 83280, 83281, 83282, 83283, 83284, 83285, 83286, 83287, 83288, 83289, 83290, 83291, 83292, 83293, 83294, 83295, 83296, 83297, 83298, 83299, 83300, 83301, 83302, 83303, 83304, 83305, 83306, 83307, 83308, 83309, 83310, 83311, 83312, 83313, 83314, 83315, 83316, 83317, 83318, 83319, 83320, 83321, 83322, 83323, 83324, 83325, 83326, 83327, 83328, 83329, 83330, 83331, 83332, 83333, 83334, 83335, 83336, 83337, 83338, 83339, 83340, 83341, 83342, 83343, 83344, 83345, 83346, 83347, 83348, 83349, 83350, 83351, 83352, 83353, 83354, 83355, 83356, 83357, 83358, 83359, 83360, 83361, 83362, 83363, 83364, 83365, 83366, 83367, 83368, 83369, 83370, 83371, 83372, 83373, 83374, 83375, 83376, 83377, 83378, 83379, 83380, 83381, 83382, 83383, 83384, 83385, 83386, 83387, 83388, 83389, 83390, 83391, 83392, 83393, 83394, 83395, 83396, 83397, 83398, 83399, 83400, 83401, 83402, 83403, 83404, 83405, 83406, 83407, 83408, 83409, 83410, 83411, 83412, 83413, 83414, 83415, 83416, 83417, 83418, 83419, 83420, 83421, 83422, 83423, 83424, 83425, 83426, 83427, 83428, 83429, 83430, 83431, 83432, 83433, 83434, 83435, 83436, 83437, 83438, 83439, 83440, 83441, 83442, 83443, 83444, 83445, 83446, 83447, 83448, 83449, 83450, 83451, 83452, 83453, 83454, 83455, 83456, 83457, 83458, 83459, 83460, 83461, 83462, 83463, 83464, 83465, 83466, 83467, 83468, 83469, 83470, 83471, 83472, 83473, 83474, 83475, 83476, 83477, 83478, 83479, 83480, 83481, 83482, 83483, 83484, 83485, 83486, 83487, 83488, 83489, 83490, 83491, 83492, 83493, 83494, 83495, 83496, 83497, 83498, 83499, 83500, 83501, 83502, 83503, 83504, 83505, 83506, 83507, 83508, 83509, 83510, 83511, 83512, 83513, 83514, 83515, 83516, 83517, 83518, 83519, 83520, 83521, 83522, 83523, 83524, 83525, 83526, 92160, 92161, 92162, 92163, 92164, 92165, 92166, 92167, 92168, 92169, 92170, 92171, 92172, 92173, 92174, 92175, 92176, 92177, 92178, 92179, 92180, 92181, 92182, 92183, 92184, 92185, 92186, 92187, 92188, 92189, 92190, 92191, 92192, 92193, 92194, 92195, 92196, 92197, 92198, 92199, 92200, 92201, 92202, 92203, 92204, 92205, 92206, 92207, 92208, 92209, 92210, 92211, 92212, 92213, 92214, 92215, 92216, 92217, 92218, 92219, 92220, 92221, 92222, 92223, 92224, 92225, 92226, 92227, 92228, 92229, 92230, 92231, 92232, 92233, 92234, 92235, 92236, 92237, 92238, 92239, 92240, 92241, 92242, 92243, 92244, 92245, 92246, 92247, 92248, 92249, 92250, 92251, 92252, 92253, 92254, 92255, 92256, 92257, 92258, 92259, 92260, 92261, 92262, 92263, 92264, 92265, 92266, 92267, 92268, 92269, 92270, 92271, 92272, 92273, 92274, 92275, 92276, 92277, 92278, 92279, 92280, 92281, 92282, 92283, 92284, 92285, 92286, 92287, 92288, 92289, 92290, 92291, 92292, 92293, 92294, 92295, 92296, 92297, 92298, 92299, 92300, 92301, 92302, 92303, 92304, 92305, 92306, 92307, 92308, 92309, 92310, 92311, 92312, 92313, 92314, 92315, 92316, 92317, 92318, 92319, 92320, 92321, 92322, 92323, 92324, 92325, 92326, 92327, 92328, 92329, 92330, 92331, 92332, 92333, 92334, 92335, 92336, 92337, 92338, 92339, 92340, 92341, 92342, 92343, 92344, 92345, 92346, 92347, 92348, 92349, 92350, 92351, 92352, 92353, 92354, 92355, 92356, 92357, 92358, 92359, 92360, 92361, 92362, 92363, 92364, 92365, 92366, 92367, 92368, 92369, 92370, 92371, 92372, 92373, 92374, 92375, 92376, 92377, 92378, 92379, 92380, 92381, 92382, 92383, 92384, 92385, 92386, 92387, 92388, 92389, 92390, 92391, 92392, 92393, 92394, 92395, 92396, 92397, 92398, 92399, 92400, 92401, 92402, 92403, 92404, 92405, 92406, 92407, 92408, 92409, 92410, 92411, 92412, 92413, 92414, 92415, 92416, 92417, 92418, 92419, 92420, 92421, 92422, 92423, 92424, 92425, 92426, 92427, 92428, 92429, 92430, 92431, 92432, 92433, 92434, 92435, 92436, 92437, 92438, 92439, 92440, 92441, 92442, 92443, 92444, 92445, 92446, 92447, 92448, 92449, 92450, 92451, 92452, 92453, 92454, 92455, 92456, 92457, 92458, 92459, 92460, 92461, 92462, 92463, 92464, 92465, 92466, 92467, 92468, 92469, 92470, 92471, 92472, 92473, 92474, 92475, 92476, 92477, 92478, 92479, 92480, 92481, 92482, 92483, 92484, 92485, 92486, 92487, 92488, 92489, 92490, 92491, 92492, 92493, 92494, 92495, 92496, 92497, 92498, 92499, 92500, 92501, 92502, 92503, 92504, 92505, 92506, 92507, 92508, 92509, 92510, 92511, 92512, 92513, 92514, 92515, 92516, 92517, 92518, 92519, 92520, 92521, 92522, 92523, 92524, 92525, 92526, 92527, 92528, 92529, 92530, 92531, 92532, 92533, 92534, 92535, 92536, 92537, 92538, 92539, 92540, 92541, 92542, 92543, 92544, 92545, 92546, 92547, 92548, 92549, 92550, 92551, 92552, 92553, 92554, 92555, 92556, 92557, 92558, 92559, 92560, 92561, 92562, 92563, 92564, 92565, 92566, 92567, 92568, 92569, 92570, 92571, 92572, 92573, 92574, 92575, 92576, 92577, 92578, 92579, 92580, 92581, 92582, 92583, 92584, 92585, 92586, 92587, 92588, 92589, 92590, 92591, 92592, 92593, 92594, 92595, 92596, 92597, 92598, 92599, 92600, 92601, 92602, 92603, 92604, 92605, 92606, 92607, 92608, 92609, 92610, 92611, 92612, 92613, 92614, 92615, 92616, 92617, 92618, 92619, 92620, 92621, 92622, 92623, 92624, 92625, 92626, 92627, 92628, 92629, 92630, 92631, 92632, 92633, 92634, 92635, 92636, 92637, 92638, 92639, 92640, 92641, 92642, 92643, 92644, 92645, 92646, 92647, 92648, 92649, 92650, 92651, 92652, 92653, 92654, 92655, 92656, 92657, 92658, 92659, 92660, 92661, 92662, 92663, 92664, 92665, 92666, 92667, 92668, 92669, 92670, 92671, 92672, 92673, 92674, 92675, 92676, 92677, 92678, 92679, 92680, 92681, 92682, 92683, 92684, 92685, 92686, 92687, 92688, 92689, 92690, 92691, 92692, 92693, 92694, 92695, 92696, 92697, 92698, 92699, 92700, 92701, 92702, 92703, 92704, 92705, 92706, 92707, 92708, 92709, 92710, 92711, 92712, 92713, 92714, 92715, 92716, 92717, 92718, 92719, 92720, 92721, 92722, 92723, 92724, 92725, 92726, 92727, 92728, 92736, 92737, 92738, 92739, 92740, 92741, 92742, 92743, 92744, 92745, 92746, 92747, 92748, 92749, 92750, 92751, 92752, 92753, 92754, 92755, 92756, 92757, 92758, 92759, 92760, 92761, 92762, 92763, 92764, 92765, 92766, 92880, 92881, 92882, 92883, 92884, 92885, 92886, 92887, 92888, 92889, 92890, 92891, 92892, 92893, 92894, 92895, 92896, 92897, 92898, 92899, 92900, 92901, 92902, 92903, 92904, 92905, 92906, 92907, 92908, 92909, 92928, 92929, 92930, 92931, 92932, 92933, 92934, 92935, 92936, 92937, 92938, 92939, 92940, 92941, 92942, 92943, 92944, 92945, 92946, 92947, 92948, 92949, 92950, 92951, 92952, 92953, 92954, 92955, 92956, 92957, 92958, 92959, 92960, 92961, 92962, 92963, 92964, 92965, 92966, 92967, 92968, 92969, 92970, 92971, 92972, 92973, 92974, 92975, 92992, 92993, 92994, 92995, 93027, 93028, 93029, 93030, 93031, 93032, 93033, 93034, 93035, 93036, 93037, 93038, 93039, 93040, 93041, 93042, 93043, 93044, 93045, 93046, 93047, 93053, 93054, 93055, 93056, 93057, 93058, 93059, 93060, 93061, 93062, 93063, 93064, 93065, 93066, 93067, 93068, 93069, 93070, 93071, 93952, 93953, 93954, 93955, 93956, 93957, 93958, 93959, 93960, 93961, 93962, 93963, 93964, 93965, 93966, 93967, 93968, 93969, 93970, 93971, 93972, 93973, 93974, 93975, 93976, 93977, 93978, 93979, 93980, 93981, 93982, 93983, 93984, 93985, 93986, 93987, 93988, 93989, 93990, 93991, 93992, 93993, 93994, 93995, 93996, 93997, 93998, 93999, 94000, 94001, 94002, 94003, 94004, 94005, 94006, 94007, 94008, 94009, 94010, 94011, 94012, 94013, 94014, 94015, 94016, 94017, 94018, 94019, 94020, 94032, 94099, 94100, 94101, 94102, 94103, 94104, 94105, 94106, 94107, 94108, 94109, 94110, 94111, 110592, 110593, 113664, 113665, 113666, 113667, 113668, 113669, 113670, 113671, 113672, 113673, 113674, 113675, 113676, 113677, 113678, 113679, 113680, 113681, 113682, 113683, 113684, 113685, 113686, 113687, 113688, 113689, 113690, 113691, 113692, 113693, 113694, 113695, 113696, 113697, 113698, 113699, 113700, 113701, 113702, 113703, 113704, 113705, 113706, 113707, 113708, 113709, 113710, 113711, 113712, 113713, 113714, 113715, 113716, 113717, 113718, 113719, 113720, 113721, 113722, 113723, 113724, 113725, 113726, 113727, 113728, 113729, 113730, 113731, 113732, 113733, 113734, 113735, 113736, 113737, 113738, 113739, 113740, 113741, 113742, 113743, 113744, 113745, 113746, 113747, 113748, 113749, 113750, 113751, 113752, 113753, 113754, 113755, 113756, 113757, 113758, 113759, 113760, 113761, 113762, 113763, 113764, 113765, 113766, 113767, 113768, 113769, 113770, 113776, 113777, 113778, 113779, 113780, 113781, 113782, 113783, 113784, 113785, 113786, 113787, 113788, 113792, 113793, 113794, 113795, 113796, 113797, 113798, 113799, 113800, 113808, 113809, 113810, 113811, 113812, 113813, 113814, 113815, 113816, 113817, 119808, 119809, 119810, 119811, 119812, 119813, 119814, 119815, 119816, 119817, 119818, 119819, 119820, 119821, 119822, 119823, 119824, 119825, 119826, 119827, 119828, 119829, 119830, 119831, 119832, 119833, 119834, 119835, 119836, 119837, 119838, 119839, 119840, 119841, 119842, 119843, 119844, 119845, 119846, 119847, 119848, 119849, 119850, 119851, 119852, 119853, 119854, 119855, 119856, 119857, 119858, 119859, 119860, 119861, 119862, 119863, 119864, 119865, 119866, 119867, 119868, 119869, 119870, 119871, 119872, 119873, 119874, 119875, 119876, 119877, 119878, 119879, 119880, 119881, 119882, 119883, 119884, 119885, 119886, 119887, 119888, 119889, 119890, 119891, 119892, 119894, 119895, 119896, 119897, 119898, 119899, 119900, 119901, 119902, 119903, 119904, 119905, 119906, 119907, 119908, 119909, 119910, 119911, 119912, 119913, 119914, 119915, 119916, 119917, 119918, 119919, 119920, 119921, 119922, 119923, 119924, 119925, 119926, 119927, 119928, 119929, 119930, 119931, 119932, 119933, 119934, 119935, 119936, 119937, 119938, 119939, 119940, 119941, 119942, 119943, 119944, 119945, 119946, 119947, 119948, 119949, 119950, 119951, 119952, 119953, 119954, 119955, 119956, 119957, 119958, 119959, 119960, 119961, 119962, 119963, 119964, 119966, 119967, 119970, 119973, 119974, 119977, 119978, 119979, 119980, 119982, 119983, 119984, 119985, 119986, 119987, 119988, 119989, 119990, 119991, 119992, 119993, 119995, 119997, 119998, 119999, 120000, 120001, 120002, 120003, 120005, 120006, 120007, 120008, 120009, 120010, 120011, 120012, 120013, 120014, 120015, 120016, 120017, 120018, 120019, 120020, 120021, 120022, 120023, 120024, 120025, 120026, 120027, 120028, 120029, 120030, 120031, 120032, 120033, 120034, 120035, 120036, 120037, 120038, 120039, 120040, 120041, 120042, 120043, 120044, 120045, 120046, 120047, 120048, 120049, 120050, 120051, 120052, 120053, 120054, 120055, 120056, 120057, 120058, 120059, 120060, 120061, 120062, 120063, 120064, 120065, 120066, 120067, 120068, 120069, 120071, 120072, 120073, 120074, 120077, 120078, 120079, 120080, 120081, 120082, 120083, 120084, 120086, 120087, 120088, 120089, 120090, 120091, 120092, 120094, 120095, 120096, 120097, 120098, 120099, 120100, 120101, 120102, 120103, 120104, 120105, 120106, 120107, 120108, 120109, 120110, 120111, 120112, 120113, 120114, 120115, 120116, 120117, 120118, 120119, 120120, 120121, 120123, 120124, 120125, 120126, 120128, 120129, 120130, 120131, 120132, 120134, 120138, 120139, 120140, 120141, 120142, 120143, 120144, 120146, 120147, 120148, 120149, 120150, 120151, 120152, 120153, 120154, 120155, 120156, 120157, 120158, 120159, 120160, 120161, 120162, 120163, 120164, 120165, 120166, 120167, 120168, 120169, 120170, 120171, 120172, 120173, 120174, 120175, 120176, 120177, 120178, 120179, 120180, 120181, 120182, 120183, 120184, 120185, 120186, 120187, 120188, 120189, 120190, 120191, 120192, 120193, 120194, 120195, 120196, 120197, 120198, 120199, 120200, 120201, 120202, 120203, 120204, 120205, 120206, 120207, 120208, 120209, 120210, 120211, 120212, 120213, 120214, 120215, 120216, 120217, 120218, 120219, 120220, 120221, 120222, 120223, 120224, 120225, 120226, 120227, 120228, 120229, 120230, 120231, 120232, 120233, 120234, 120235, 120236, 120237, 120238, 120239, 120240, 120241, 120242, 120243, 120244, 120245, 120246, 120247, 120248, 120249, 120250, 120251, 120252, 120253, 120254, 120255, 120256, 120257, 120258, 120259, 120260, 120261, 120262, 120263, 120264, 120265, 120266, 120267, 120268, 120269, 120270, 120271, 120272, 120273, 120274, 120275, 120276, 120277, 120278, 120279, 120280, 120281, 120282, 120283, 120284, 120285, 120286, 120287, 120288, 120289, 120290, 120291, 120292, 120293, 120294, 120295, 120296, 120297, 120298, 120299, 120300, 120301, 120302, 120303, 120304, 120305, 120306, 120307, 120308, 120309, 120310, 120311, 120312, 120313, 120314, 120315, 120316, 120317, 120318, 120319, 120320, 120321, 120322, 120323, 120324, 120325, 120326, 120327, 120328, 120329, 120330, 120331, 120332, 120333, 120334, 120335, 120336, 120337, 120338, 120339, 120340, 120341, 120342, 120343, 120344, 120345, 120346, 120347, 120348, 120349, 120350, 120351, 120352, 120353, 120354, 120355, 120356, 120357, 120358, 120359, 120360, 120361, 120362, 120363, 120364, 120365, 120366, 120367, 120368, 120369, 120370, 120371, 120372, 120373, 120374, 120375, 120376, 120377, 120378, 120379, 120380, 120381, 120382, 120383, 120384, 120385, 120386, 120387, 120388, 120389, 120390, 120391, 120392, 120393, 120394, 120395, 120396, 120397, 120398, 120399, 120400, 120401, 120402, 120403, 120404, 120405, 120406, 120407, 120408, 120409, 120410, 120411, 120412, 120413, 120414, 120415, 120416, 120417, 120418, 120419, 120420, 120421, 120422, 120423, 120424, 120425, 120426, 120427, 120428, 120429, 120430, 120431, 120432, 120433, 120434, 120435, 120436, 120437, 120438, 120439, 120440, 120441, 120442, 120443, 120444, 120445, 120446, 120447, 120448, 120449, 120450, 120451, 120452, 120453, 120454, 120455, 120456, 120457, 120458, 120459, 120460, 120461, 120462, 120463, 120464, 120465, 120466, 120467, 120468, 120469, 120470, 120471, 120472, 120473, 120474, 120475, 120476, 120477, 120478, 120479, 120480, 120481, 120482, 120483, 120484, 120485, 120488, 120489, 120490, 120491, 120492, 120493, 120494, 120495, 120496, 120497, 120498, 120499, 120500, 120501, 120502, 120503, 120504, 120505, 120506, 120507, 120508, 120509, 120510, 120511, 120512, 120514, 120515, 120516, 120517, 120518, 120519, 120520, 120521, 120522, 120523, 120524, 120525, 120526, 120527, 120528, 120529, 120530, 120531, 120532, 120533, 120534, 120535, 120536, 120537, 120538, 120540, 120541, 120542, 120543, 120544, 120545, 120546, 120547, 120548, 120549, 120550, 120551, 120552, 120553, 120554, 120555, 120556, 120557, 120558, 120559, 120560, 120561, 120562, 120563, 120564, 120565, 120566, 120567, 120568, 120569, 120570, 120572, 120573, 120574, 120575, 120576, 120577, 120578, 120579, 120580, 120581, 120582, 120583, 120584, 120585, 120586, 120587, 120588, 120589, 120590, 120591, 120592, 120593, 120594, 120595, 120596, 120598, 120599, 120600, 120601, 120602, 120603, 120604, 120605, 120606, 120607, 120608, 120609, 120610, 120611, 120612, 120613, 120614, 120615, 120616, 120617, 120618, 120619, 120620, 120621, 120622, 120623, 120624, 120625, 120626, 120627, 120628, 120630, 120631, 120632, 120633, 120634, 120635, 120636, 120637, 120638, 120639, 120640, 120641, 120642, 120643, 120644, 120645, 120646, 120647, 120648, 120649, 120650, 120651, 120652, 120653, 120654, 120656, 120657, 120658, 120659, 120660, 120661, 120662, 120663, 120664, 120665, 120666, 120667, 120668, 120669, 120670, 120671, 120672, 120673, 120674, 120675, 120676, 120677, 120678, 120679, 120680, 120681, 120682, 120683, 120684, 120685, 120686, 120688, 120689, 120690, 120691, 120692, 120693, 120694, 120695, 120696, 120697, 120698, 120699, 120700, 120701, 120702, 120703, 120704, 120705, 120706, 120707, 120708, 120709, 120710, 120711, 120712, 120714, 120715, 120716, 120717, 120718, 120719, 120720, 120721, 120722, 120723, 120724, 120725, 120726, 120727, 120728, 120729, 120730, 120731, 120732, 120733, 120734, 120735, 120736, 120737, 120738, 120739, 120740, 120741, 120742, 120743, 120744, 120746, 120747, 120748, 120749, 120750, 120751, 120752, 120753, 120754, 120755, 120756, 120757, 120758, 120759, 120760, 120761, 120762, 120763, 120764, 120765, 120766, 120767, 120768, 120769, 120770, 120772, 120773, 120774, 120775, 120776, 120777, 120778, 120779, 124928, 124929, 124930, 124931, 124932, 124933, 124934, 124935, 124936, 124937, 124938, 124939, 124940, 124941, 124942, 124943, 124944, 124945, 124946, 124947, 124948, 124949, 124950, 124951, 124952, 124953, 124954, 124955, 124956, 124957, 124958, 124959, 124960, 124961, 124962, 124963, 124964, 124965, 124966, 124967, 124968, 124969, 124970, 124971, 124972, 124973, 124974, 124975, 124976, 124977, 124978, 124979, 124980, 124981, 124982, 124983, 124984, 124985, 124986, 124987, 124988, 124989, 124990, 124991, 124992, 124993, 124994, 124995, 124996, 124997, 124998, 124999, 125000, 125001, 125002, 125003, 125004, 125005, 125006, 125007, 125008, 125009, 125010, 125011, 125012, 125013, 125014, 125015, 125016, 125017, 125018, 125019, 125020, 125021, 125022, 125023, 125024, 125025, 125026, 125027, 125028, 125029, 125030, 125031, 125032, 125033, 125034, 125035, 125036, 125037, 125038, 125039, 125040, 125041, 125042, 125043, 125044, 125045, 125046, 125047, 125048, 125049, 125050, 125051, 125052, 125053, 125054, 125055, 125056, 125057, 125058, 125059, 125060, 125061, 125062, 125063, 125064, 125065, 125066, 125067, 125068, 125069, 125070, 125071, 125072, 125073, 125074, 125075, 125076, 125077, 125078, 125079, 125080, 125081, 125082, 125083, 125084, 125085, 125086, 125087, 125088, 125089, 125090, 125091, 125092, 125093, 125094, 125095, 125096, 125097, 125098, 125099, 125100, 125101, 125102, 125103, 125104, 125105, 125106, 125107, 125108, 125109, 125110, 125111, 125112, 125113, 125114, 125115, 125116, 125117, 125118, 125119, 125120, 125121, 125122, 125123, 125124, 126464, 126465, 126466, 126467, 126469, 126470, 126471, 126472, 126473, 126474, 126475, 126476, 126477, 126478, 126479, 126480, 126481, 126482, 126483, 126484, 126485, 126486, 126487, 126488, 126489, 126490, 126491, 126492, 126493, 126494, 126495, 126497, 126498, 126500, 126503, 126505, 126506, 126507, 126508, 126509, 126510, 126511, 126512, 126513, 126514, 126516, 126517, 126518, 126519, 126521, 126523, 126530, 126535, 126537, 126539, 126541, 126542, 126543, 126545, 126546, 126548, 126551, 126553, 126555, 126557, 126559, 126561, 126562, 126564, 126567, 126568, 126569, 126570, 126572, 126573, 126574, 126575, 126576, 126577, 126578, 126580, 126581, 126582, 126583, 126585, 126586, 126587, 126588, 126590, 126592, 126593, 126594, 126595, 126596, 126597, 126598, 126599, 126600, 126601, 126603, 126604, 126605, 126606, 126607, 126608, 126609, 126610, 126611, 126612, 126613, 126614, 126615, 126616, 126617, 126618, 126619, 126625, 126626, 126627, 126629, 126630, 126631, 126632, 126633, 126635, 126636, 126637, 126638, 126639, 126640, 126641, 126642, 126643, 126644, 126645, 126646, 126647, 126648, 126649, 126650, 126651, 131072, 173782, 173824, 177972, 177984, 178205, 178208, 183969, 194560, 194561, 194562, 194563, 194564, 194565, 194566, 194567, 194568, 194569, 194570, 194571, 194572, 194573, 194574, 194575, 194576, 194577, 194578, 194579, 194580, 194581, 194582, 194583, 194584, 194585, 194586, 194587, 194588, 194589, 194590, 194591, 194592, 194593, 194594, 194595, 194596, 194597, 194598, 194599, 194600, 194601, 194602, 194603, 194604, 194605, 194606, 194607, 194608, 194609, 194610, 194611, 194612, 194613, 194614, 194615, 194616, 194617, 194618, 194619, 194620, 194621, 194622, 194623, 194624, 194625, 194626, 194627, 194628, 194629, 194630, 194631, 194632, 194633, 194634, 194635, 194636, 194637, 194638, 194639, 194640, 194641, 194642, 194643, 194644, 194645, 194646, 194647, 194648, 194649, 194650, 194651, 194652, 194653, 194654, 194655, 194656, 194657, 194658, 194659, 194660, 194661, 194662, 194663, 194664, 194665, 194666, 194667, 194668, 194669, 194670, 194671, 194672, 194673, 194674, 194675, 194676, 194677, 194678, 194679, 194680, 194681, 194682, 194683, 194684, 194685, 194686, 194687, 194688, 194689, 194690, 194691, 194692, 194693, 194694, 194695, 194696, 194697, 194698, 194699, 194700, 194701, 194702, 194703, 194704, 194705, 194706, 194707, 194708, 194709, 194710, 194711, 194712, 194713, 194714, 194715, 194716, 194717, 194718, 194719, 194720, 194721, 194722, 194723, 194724, 194725, 194726, 194727, 194728, 194729, 194730, 194731, 194732, 194733, 194734, 194735, 194736, 194737, 194738, 194739, 194740, 194741, 194742, 194743, 194744, 194745, 194746, 194747, 194748, 194749, 194750, 194751, 194752, 194753, 194754, 194755, 194756, 194757, 194758, 194759, 194760, 194761, 194762, 194763, 194764, 194765, 194766, 194767, 194768, 194769, 194770, 194771, 194772, 194773, 194774, 194775, 194776, 194777, 194778, 194779, 194780, 194781, 194782, 194783, 194784, 194785, 194786, 194787, 194788, 194789, 194790, 194791, 194792, 194793, 194794, 194795, 194796, 194797, 194798, 194799, 194800, 194801, 194802, 194803, 194804, 194805, 194806, 194807, 194808, 194809, 194810, 194811, 194812, 194813, 194814, 194815, 194816, 194817, 194818, 194819, 194820, 194821, 194822, 194823, 194824, 194825, 194826, 194827, 194828, 194829, 194830, 194831, 194832, 194833, 194834, 194835, 194836, 194837, 194838, 194839, 194840, 194841, 194842, 194843, 194844, 194845, 194846, 194847, 194848, 194849, 194850, 194851, 194852, 194853, 194854, 194855, 194856, 194857, 194858, 194859, 194860, 194861, 194862, 194863, 194864, 194865, 194866, 194867, 194868, 194869, 194870, 194871, 194872, 194873, 194874, 194875, 194876, 194877, 194878, 194879, 194880, 194881, 194882, 194883, 194884, 194885, 194886, 194887, 194888, 194889, 194890, 194891, 194892, 194893, 194894, 194895, 194896, 194897, 194898, 194899, 194900, 194901, 194902, 194903, 194904, 194905, 194906, 194907, 194908, 194909, 194910, 194911, 194912, 194913, 194914, 194915, 194916, 194917, 194918, 194919, 194920, 194921, 194922, 194923, 194924, 194925, 194926, 194927, 194928, 194929, 194930, 194931, 194932, 194933, 194934, 194935, 194936, 194937, 194938, 194939, 194940, 194941, 194942, 194943, 194944, 194945, 194946, 194947, 194948, 194949, 194950, 194951, 194952, 194953, 194954, 194955, 194956, 194957, 194958, 194959, 194960, 194961, 194962, 194963, 194964, 194965, 194966, 194967, 194968, 194969, 194970, 194971, 194972, 194973, 194974, 194975, 194976, 194977, 194978, 194979, 194980, 194981, 194982, 194983, 194984, 194985, 194986, 194987, 194988, 194989, 194990, 194991, 194992, 194993, 194994, 194995, 194996, 194997, 194998, 194999, 195000, 195001, 195002, 195003, 195004, 195005, 195006, 195007, 195008, 195009, 195010, 195011, 195012, 195013, 195014, 195015, 195016, 195017, 195018, 195019, 195020, 195021, 195022, 195023, 195024, 195025, 195026, 195027, 195028, 195029, 195030, 195031, 195032, 195033, 195034, 195035, 195036, 195037, 195038, 195039, 195040, 195041, 195042, 195043, 195044, 195045, 195046, 195047, 195048, 195049, 195050, 195051, 195052, 195053, 195054, 195055, 195056, 195057, 195058, 195059, 195060, 195061, 195062, 195063, 195064, 195065, 195066, 195067, 195068, 195069, 195070, 195071, 195072, 195073, 195074, 195075, 195076, 195077, 195078, 195079, 195080, 195081, 195082, 195083, 195084, 195085, 195086, 195087, 195088, 195089, 195090, 195091, 195092, 195093, 195094, 195095, 195096, 195097, 195098, 195099, 195100, 195101];\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _clone = _interopRequireDefault(require(\"clone\"));\n\nvar _uslug = _interopRequireDefault(require(\"uslug\"));\n\nvar _token = _interopRequireDefault(require(\"markdown-it/lib/token\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar TOC = \"@[toc]\";\nvar TOC_RE = /^@\\[toc\\]/im;\n\nvar markdownItSecondInstance = function markdownItSecondInstance() {};\n\nvar headingIds = {};\nvar tocHtml = \"\";\n\nvar repeat = function repeat(string, num) {\n return new Array(num + 1).join(string);\n};\n\nvar makeSafe = function makeSafe(string, headingIds, slugifyFn) {\n var key = slugifyFn(string); // slugify\n\n if (!headingIds[key]) {\n headingIds[key] = 0;\n }\n\n headingIds[key]++;\n return key + (headingIds[key] > 1 ? \"-\".concat(headingIds[key]) : \"\");\n};\n\nvar space = function space() {\n return _objectSpread({}, new _token.default(\"text\", \"\", 0), {\n content: \" \"\n });\n};\n\nvar renderAnchorLinkSymbol = function renderAnchorLinkSymbol(options) {\n if (options.anchorLinkSymbolClassName) {\n return [_objectSpread({}, new _token.default(\"span_open\", \"span\", 1), {\n attrs: [[\"class\", options.anchorLinkSymbolClassName]]\n }), _objectSpread({}, new _token.default(\"text\", \"\", 0), {\n content: options.anchorLinkSymbol\n }), new _token.default(\"span_close\", \"span\", -1)];\n } else {\n return [_objectSpread({}, new _token.default(\"text\", \"\", 0), {\n content: options.anchorLinkSymbol\n })];\n }\n};\n\nvar renderAnchorLink = function renderAnchorLink(anchor, options, tokens, idx) {\n var attrs = [];\n\n if (options.anchorClassName != null) {\n attrs.push([\"class\", options.anchorClassName]);\n }\n\n attrs.push([\"href\", \"#\".concat(anchor)]);\n\n var openLinkToken = _objectSpread({}, new _token.default(\"link_open\", \"a\", 1), {\n attrs: attrs\n });\n\n var closeLinkToken = new _token.default(\"link_close\", \"a\", -1);\n\n if (options.wrapHeadingTextInAnchor) {\n tokens[idx + 1].children.unshift(openLinkToken);\n tokens[idx + 1].children.push(closeLinkToken);\n } else {\n var _tokens$children;\n\n var linkTokens = [openLinkToken].concat(_toConsumableArray(renderAnchorLinkSymbol(options)), [closeLinkToken]); // `push` or `unshift` according to anchorLinkBefore option\n // space is at the opposite side.\n\n var actionOnArray = {\n false: \"push\",\n true: \"unshift\"\n }; // insert space between anchor link and heading ?\n\n if (options.anchorLinkSpace) {\n linkTokens[actionOnArray[!options.anchorLinkBefore]](space());\n }\n\n (_tokens$children = tokens[idx + 1].children)[actionOnArray[options.anchorLinkBefore]].apply(_tokens$children, _toConsumableArray(linkTokens));\n }\n};\n\nvar treeToMarkdownBulletList = function treeToMarkdownBulletList(tree) {\n var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return tree.map(function (item) {\n var indentation = \" \";\n var node = \"\".concat(repeat(indentation, indent), \"*\");\n\n if (item.heading.content) {\n var contentWithoutAnchor = item.heading.content.replace(/\\[([^\\]]*)\\]\\([^)]*\\)/g, \"$1\");\n node += \" \" + \"[\".concat(contentWithoutAnchor, \"](#\").concat(item.heading.anchor, \")\\n\");\n } else {\n node += \"\\n\";\n }\n\n if (item.nodes.length) {\n node += treeToMarkdownBulletList(item.nodes, indent + 1);\n }\n\n return node;\n }).join(\"\");\n};\n\nvar generateTocMarkdownFromArray = function generateTocMarkdownFromArray(headings, options) {\n var tree = {\n nodes: []\n }; // create an ast\n\n headings.forEach(function (heading) {\n if (heading.level < options.tocFirstLevel || heading.level > options.tocLastLevel) {\n return;\n }\n\n var i = 1;\n var lastItem = tree;\n\n for (; i < heading.level - options.tocFirstLevel + 1; i++) {\n if (lastItem.nodes.length === 0) {\n lastItem.nodes.push({\n heading: {},\n nodes: []\n });\n }\n\n lastItem = lastItem.nodes[lastItem.nodes.length - 1];\n }\n\n lastItem.nodes.push({\n heading: heading,\n nodes: []\n });\n });\n return treeToMarkdownBulletList(tree.nodes);\n};\n\nfunction _default(md, options) {\n options = _objectSpread({\n toc: true,\n tocClassName: \"markdownIt-TOC\",\n tocFirstLevel: 1,\n tocLastLevel: 6,\n tocCallback: null,\n anchorLink: true,\n anchorLinkSymbol: \"#\",\n anchorLinkBefore: true,\n anchorClassName: \"markdownIt-Anchor\",\n resetIds: true,\n anchorLinkSpace: true,\n anchorLinkSymbolClassName: null,\n wrapHeadingTextInAnchor: false\n }, options);\n markdownItSecondInstance = (0, _clone.default)(md); // initialize key ids for each instance\n\n headingIds = {};\n md.core.ruler.push(\"init_toc\", function (state) {\n var tokens = state.tokens; // reset key ids for each document\n\n if (options.resetIds) {\n headingIds = {};\n }\n\n var tocArray = [];\n var tocMarkdown = \"\";\n var tocTokens = [];\n var slugifyFn = typeof options.slugify === \"function\" && options.slugify || _uslug.default;\n\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type !== \"heading_close\") {\n continue;\n }\n\n var heading = tokens[i - 1];\n var heading_close = tokens[i];\n\n if (heading.type === \"inline\") {\n var content = void 0;\n\n if (heading.children && heading.children.length > 0 && heading.children[0].type === \"link_open\") {\n // headings that contain links have to be processed\n // differently since nested links aren't allowed in markdown\n content = heading.children[1].content;\n heading._tocAnchor = makeSafe(content, headingIds, slugifyFn);\n } else {\n content = heading.content;\n heading._tocAnchor = makeSafe(heading.children.reduce(function (acc, t) {\n return acc + t.content;\n }, \"\"), headingIds, slugifyFn);\n }\n\n if (options.anchorLinkPrefix) {\n heading._tocAnchor = options.anchorLinkPrefix + heading._tocAnchor;\n }\n\n tocArray.push({\n content: content,\n anchor: heading._tocAnchor,\n level: +heading_close.tag.substr(1, 1)\n });\n }\n }\n\n tocMarkdown = generateTocMarkdownFromArray(tocArray, options);\n tocTokens = markdownItSecondInstance.parse(tocMarkdown, {}); // Adding tocClassName to 'ul' element\n\n if (_typeof(tocTokens[0]) === \"object\" && tocTokens[0].type === \"bullet_list_open\") {\n var attrs = tocTokens[0].attrs = tocTokens[0].attrs || [];\n\n if (options.tocClassName != null) {\n attrs.push([\"class\", options.tocClassName]);\n }\n }\n\n tocHtml = markdownItSecondInstance.renderer.render(tocTokens, markdownItSecondInstance.options);\n\n if (typeof state.env.tocCallback === \"function\") {\n state.env.tocCallback.call(undefined, tocMarkdown, tocArray, tocHtml);\n } else if (typeof options.tocCallback === \"function\") {\n options.tocCallback.call(undefined, tocMarkdown, tocArray, tocHtml);\n } else if (typeof md.options.tocCallback === \"function\") {\n md.options.tocCallback.call(undefined, tocMarkdown, tocArray, tocHtml);\n }\n });\n md.inline.ruler.after(\"emphasis\", \"toc\", function (state, silent) {\n var token;\n var match;\n\n if ( // Reject if the token does not start with @[\n state.src.charCodeAt(state.pos) !== 0x40 || state.src.charCodeAt(state.pos + 1) !== 0x5b || // Don’t run any pairs in validation mode\n silent) {\n return false;\n } // Detect TOC markdown\n\n\n match = TOC_RE.exec(state.src);\n match = !match ? [] : match.filter(function (m) {\n return m;\n });\n\n if (match.length < 1) {\n return false;\n } // Build content\n\n\n token = state.push(\"toc_open\", \"toc\", 1);\n token.markup = TOC;\n token = state.push(\"toc_body\", \"\", 0);\n token = state.push(\"toc_close\", \"toc\", -1); // Update pos so the parser can continue\n\n state.pos = state.pos + 6;\n return true;\n });\n\n var originalHeadingOpen = md.renderer.rules.heading_open || function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var tokens = args[0],\n idx = args[1],\n options = args[2],\n self = args[4];\n return self.renderToken(tokens, idx, options);\n };\n\n md.renderer.rules.heading_open = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var tokens = args[0],\n idx = args[1];\n var attrs = tokens[idx].attrs = tokens[idx].attrs || [];\n var anchor = tokens[idx + 1]._tocAnchor;\n attrs.push([\"id\", anchor]);\n\n if (options.anchorLink) {\n renderAnchorLink.apply(void 0, [anchor, options].concat(args));\n }\n\n return originalHeadingOpen.apply(this, args);\n };\n\n md.renderer.rules.toc_open = function () {\n return \"\";\n };\n\n md.renderer.rules.toc_close = function () {\n return \"\";\n };\n\n md.renderer.rules.toc_body = function () {\n return \"\";\n };\n\n if (options.toc) {\n md.renderer.rules.toc_body = function () {\n return tocHtml;\n };\n }\n}","var buildHTML = require(\"./buildHTML\");\nvar buildMathML = require(\"./buildMathML\");\nvar buildCommon = require(\"./buildCommon\");\nvar Options = require(\"./Options\");\nvar Settings = require(\"./Settings\");\nvar Style = require(\"./Style\");\n\nvar makeSpan = buildCommon.makeSpan;\n\nvar buildTree = function(tree, expression, settings) {\n settings = settings || new Settings({});\n\n var startStyle = Style.TEXT;\n if (settings.displayMode) {\n startStyle = Style.DISPLAY;\n }\n\n // Setup the default options\n var options = new Options({\n style: startStyle,\n size: \"size5\",\n });\n\n // `buildHTML` sometimes messes with the parse tree (like turning bins ->\n // ords), so we build the MathML version first.\n var mathMLNode = buildMathML(tree, expression, options);\n var htmlNode = buildHTML(tree, options);\n\n var katexNode = makeSpan([\"katex\"], [\n mathMLNode, htmlNode,\n ]);\n\n if (settings.displayMode) {\n return makeSpan([\"katex-display\"], [katexNode]);\n } else {\n return katexNode;\n }\n};\n\nmodule.exports = buildTree;\n","'use strict';\n\n\nmodule.exports = function block(state) {\n var token;\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0);\n token.content = state.src;\n token.map = [ 0, 1 ];\n token.children = [];\n state.tokens.push(token);\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens);\n }\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\n\n\nvar emojies_defs = require('./lib/data/full.json');\nvar emojies_shortcuts = require('./lib/data/shortcuts');\nvar emoji_html = require('./lib/render');\nvar emoji_replace = require('./lib/replace');\nvar normalize_opts = require('./lib/normalize_opts');\n\n\nmodule.exports = function emoji_plugin(md, options) {\n var defaults = {\n defs: emojies_defs,\n shortcuts: emojies_shortcuts,\n enabled: []\n };\n\n var opts = normalize_opts(md.utils.assign({}, defaults, options || {}));\n\n md.renderer.rules.emoji = emoji_html;\n\n md.core.ruler.push('emoji', emoji_replace(md, opts.defs, opts.shortcuts, opts.scanRE, opts.replaceRE));\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// Convert input options to more useable format\n// and compile search regexp\n\n'use strict';\n\n\nfunction quoteRE(str) {\n return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n}\n\n\nmodule.exports = function normalize_opts(options) {\n var emojies = options.defs,\n shortcuts;\n\n // Filter emojies by whitelist, if needed\n if (options.enabled.length) {\n emojies = Object.keys(emojies).reduce(function (acc, key) {\n if (options.enabled.indexOf(key) >= 0) {\n acc[key] = emojies[key];\n }\n return acc;\n }, {});\n }\n\n // Flatten shortcuts to simple object: { alias: emoji_name }\n shortcuts = Object.keys(options.shortcuts).reduce(function (acc, key) {\n // Skip aliases for filtered emojies, to reduce regexp\n if (!emojies[key]) { return acc; }\n\n if (Array.isArray(options.shortcuts[key])) {\n options.shortcuts[key].forEach(function (alias) {\n acc[alias] = key;\n });\n return acc;\n }\n\n acc[options.shortcuts[key]] = key;\n return acc;\n }, {});\n\n // Compile regexp\n var names = Object.keys(emojies)\n .map(function (name) { return ':' + name + ':'; })\n .concat(Object.keys(shortcuts))\n .sort()\n .reverse()\n .map(function (name) { return quoteRE(name); })\n .join('|');\n var scanRE = RegExp(names);\n var replaceRE = RegExp(names, 'g');\n\n return {\n defs: emojies,\n shortcuts: shortcuts,\n scanRE: scanRE,\n replaceRE: replaceRE\n };\n};\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nfunction Presets() {\n function VBRPresets(qual, comp, compS,\n y, shThreshold, shThresholdS,\n adj, adjShort, lower,\n curve, sens, inter,\n joint, mod, fix) {\n this.vbr_q = qual;\n this.quant_comp = comp;\n this.quant_comp_s = compS;\n this.expY = y;\n this.st_lrm = shThreshold;\n this.st_s = shThresholdS;\n this.masking_adj = adj;\n this.masking_adj_short = adjShort;\n this.ath_lower = lower;\n this.ath_curve = curve;\n this.ath_sensitivity = sens;\n this.interch = inter;\n this.safejoint = joint;\n this.sfb21mod = mod;\n this.msfix = fix;\n }\n\n function ABRPresets(kbps, comp, compS,\n joint, fix, shThreshold,\n shThresholdS, bass, sc,\n mask, lower, curve,\n interCh, sfScale) {\n this.quant_comp = comp;\n this.quant_comp_s = compS;\n this.safejoint = joint;\n this.nsmsfix = fix;\n this.st_lrm = shThreshold;\n this.st_s = shThresholdS;\n this.nsbass = bass;\n this.scale = sc;\n this.masking_adj = mask;\n this.ath_lower = lower;\n this.ath_curve = curve;\n this.interch = interCh;\n this.sfscale = sfScale;\n }\n\n var lame;\n\n this.setModules = function (_lame) {\n lame = _lame;\n };\n\n /**\n *
\n     * Switch mappings for VBR mode VBR_RH\n     *             vbr_q  qcomp_l  qcomp_s  expY  st_lrm   st_s  mask adj_l  adj_s  ath_lower  ath_curve  ath_sens  interChR  safejoint sfb21mod  msfix\n     * 
\n */\n var vbr_old_switch_map = [\n new VBRPresets(0, 9, 9, 0, 5.20, 125.0, -4.2, -6.3, 4.8, 1, 0, 0, 2, 21, 0.97),\n new VBRPresets(1, 9, 9, 0, 5.30, 125.0, -3.6, -5.6, 4.5, 1.5, 0, 0, 2, 21, 1.35),\n new VBRPresets(2, 9, 9, 0, 5.60, 125.0, -2.2, -3.5, 2.8, 2, 0, 0, 2, 21, 1.49),\n new VBRPresets(3, 9, 9, 1, 5.80, 130.0, -1.8, -2.8, 2.6, 3, -4, 0, 2, 20, 1.64),\n new VBRPresets(4, 9, 9, 1, 6.00, 135.0, -0.7, -1.1, 1.1, 3.5, -8, 0, 2, 0, 1.79),\n new VBRPresets(5, 9, 9, 1, 6.40, 140.0, 0.5, 0.4, -7.5, 4, -12, 0.0002, 0, 0, 1.95),\n new VBRPresets(6, 9, 9, 1, 6.60, 145.0, 0.67, 0.65, -14.7, 6.5, -19, 0.0004, 0, 0, 2.30),\n new VBRPresets(7, 9, 9, 1, 6.60, 145.0, 0.8, 0.75, -19.7, 8, -22, 0.0006, 0, 0, 2.70),\n new VBRPresets(8, 9, 9, 1, 6.60, 145.0, 1.2, 1.15, -27.5, 10, -23, 0.0007, 0, 0, 0),\n new VBRPresets(9, 9, 9, 1, 6.60, 145.0, 1.6, 1.6, -36, 11, -25, 0.0008, 0, 0, 0),\n new VBRPresets(10, 9, 9, 1, 6.60, 145.0, 2.0, 2.0, -36, 12, -25, 0.0008, 0, 0, 0)\n ];\n\n /**\n *
\n     *                 vbr_q  qcomp_l  qcomp_s  expY  st_lrm   st_s  mask adj_l  adj_s  ath_lower  ath_curve  ath_sens  interChR  safejoint sfb21mod  msfix\n     * 
\n */\n var vbr_psy_switch_map = [\n new VBRPresets(0, 9, 9, 0, 4.20, 25.0, -7.0, -4.0, 7.5, 1, 0, 0, 2, 26, 0.97),\n new VBRPresets(1, 9, 9, 0, 4.20, 25.0, -5.6, -3.6, 4.5, 1.5, 0, 0, 2, 21, 1.35),\n new VBRPresets(2, 9, 9, 0, 4.20, 25.0, -4.4, -1.8, 2, 2, 0, 0, 2, 18, 1.49),\n new VBRPresets(3, 9, 9, 1, 4.20, 25.0, -3.4, -1.25, 1.1, 3, -4, 0, 2, 15, 1.64),\n new VBRPresets(4, 9, 9, 1, 4.20, 25.0, -2.2, 0.1, 0, 3.5, -8, 0, 2, 0, 1.79),\n new VBRPresets(5, 9, 9, 1, 4.20, 25.0, -1.0, 1.65, -7.7, 4, -12, 0.0002, 0, 0, 1.95),\n new VBRPresets(6, 9, 9, 1, 4.20, 25.0, -0.0, 2.47, -7.7, 6.5, -19, 0.0004, 0, 0, 2),\n new VBRPresets(7, 9, 9, 1, 4.20, 25.0, 0.5, 2.0, -14.5, 8, -22, 0.0006, 0, 0, 2),\n new VBRPresets(8, 9, 9, 1, 4.20, 25.0, 1.0, 2.4, -22.0, 10, -23, 0.0007, 0, 0, 2),\n new VBRPresets(9, 9, 9, 1, 4.20, 25.0, 1.5, 2.95, -30.0, 11, -25, 0.0008, 0, 0, 2),\n new VBRPresets(10, 9, 9, 1, 4.20, 25.0, 2.0, 2.95, -36.0, 12, -30, 0.0008, 0, 0, 2)\n ];\n\n function apply_vbr_preset(gfp, a, enforce) {\n var vbr_preset = gfp.VBR == VbrMode.vbr_rh ? vbr_old_switch_map\n : vbr_psy_switch_map;\n\n var x = gfp.VBR_q_frac;\n var p = vbr_preset[a];\n var q = vbr_preset[a + 1];\n var set = p;\n\n // NOOP(vbr_q);\n // NOOP(quant_comp);\n // NOOP(quant_comp_s);\n // NOOP(expY);\n p.st_lrm = p.st_lrm + x * (q.st_lrm - p.st_lrm);\n // LERP(st_lrm);\n p.st_s = p.st_s + x * (q.st_s - p.st_s);\n // LERP(st_s);\n p.masking_adj = p.masking_adj + x * (q.masking_adj - p.masking_adj);\n // LERP(masking_adj);\n p.masking_adj_short = p.masking_adj_short + x\n * (q.masking_adj_short - p.masking_adj_short);\n // LERP(masking_adj_short);\n p.ath_lower = p.ath_lower + x * (q.ath_lower - p.ath_lower);\n // LERP(ath_lower);\n p.ath_curve = p.ath_curve + x * (q.ath_curve - p.ath_curve);\n // LERP(ath_curve);\n p.ath_sensitivity = p.ath_sensitivity + x\n * (q.ath_sensitivity - p.ath_sensitivity);\n // LERP(ath_sensitivity);\n p.interch = p.interch + x * (q.interch - p.interch);\n // LERP(interch);\n // NOOP(safejoint);\n // NOOP(sfb21mod);\n p.msfix = p.msfix + x * (q.msfix - p.msfix);\n // LERP(msfix);\n\n lame_set_VBR_q(gfp, set.vbr_q);\n\n if (enforce != 0)\n gfp.quant_comp = set.quant_comp;\n else if (!(Math.abs(gfp.quant_comp - -1) > 0))\n gfp.quant_comp = set.quant_comp;\n // SET_OPTION(quant_comp, set.quant_comp, -1);\n if (enforce != 0)\n gfp.quant_comp_short = set.quant_comp_s;\n else if (!(Math.abs(gfp.quant_comp_short - -1) > 0))\n gfp.quant_comp_short = set.quant_comp_s;\n // SET_OPTION(quant_comp_short, set.quant_comp_s, -1);\n if (set.expY != 0) {\n gfp.experimentalY = set.expY != 0;\n }\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre = set.st_lrm;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre = set.st_lrm;\n // SET_OPTION(short_threshold_lrm, set.st_lrm, -1);\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre_s = set.st_s;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre_s = set.st_s;\n // SET_OPTION(short_threshold_s, set.st_s, -1);\n if (enforce != 0)\n gfp.maskingadjust = set.masking_adj;\n else if (!(Math.abs(gfp.maskingadjust - 0) > 0))\n gfp.maskingadjust = set.masking_adj;\n // SET_OPTION(maskingadjust, set.masking_adj, 0);\n if (enforce != 0)\n gfp.maskingadjust_short = set.masking_adj_short;\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = set.masking_adj_short;\n // SET_OPTION(maskingadjust_short, set.masking_adj_short, 0);\n if (enforce != 0)\n gfp.ATHlower = -set.ath_lower / 10.0;\n else if (!(Math.abs((-gfp.ATHlower * 10.0) - 0) > 0))\n gfp.ATHlower = -set.ath_lower / 10.0;\n // SET_OPTION(ATHlower, set.ath_lower, 0);\n if (enforce != 0)\n gfp.ATHcurve = set.ath_curve;\n else if (!(Math.abs(gfp.ATHcurve - -1) > 0))\n gfp.ATHcurve = set.ath_curve;\n // SET_OPTION(ATHcurve, set.ath_curve, -1);\n if (enforce != 0)\n gfp.athaa_sensitivity = set.ath_sensitivity;\n else if (!(Math.abs(gfp.athaa_sensitivity - -1) > 0))\n gfp.athaa_sensitivity = set.ath_sensitivity;\n // SET_OPTION(athaa_sensitivity, set.ath_sensitivity, 0);\n if (set.interch > 0) {\n if (enforce != 0)\n gfp.interChRatio = set.interch;\n else if (!(Math.abs(gfp.interChRatio - -1) > 0))\n gfp.interChRatio = set.interch;\n // SET_OPTION(interChRatio, set.interch, -1);\n }\n\n /* parameters for which there is no proper set/get interface */\n if (set.safejoint > 0) {\n gfp.exp_nspsytune = gfp.exp_nspsytune | set.safejoint;\n }\n if (set.sfb21mod > 0) {\n gfp.exp_nspsytune = gfp.exp_nspsytune | (set.sfb21mod << 20);\n }\n if (enforce != 0)\n gfp.msfix = set.msfix;\n else if (!(Math.abs(gfp.msfix - -1) > 0))\n gfp.msfix = set.msfix;\n // SET_OPTION(msfix, set.msfix, -1);\n\n if (enforce == 0) {\n gfp.VBR_q = a;\n gfp.VBR_q_frac = x;\n }\n }\n\n /**\n *
\n     *  Switch mappings for ABR mode\n     *\n     *              kbps  quant q_s safejoint nsmsfix st_lrm  st_s  ns-bass scale   msk ath_lwr ath_curve  interch , sfscale\n     * 
\n */\n var abr_switch_map = [\n new ABRPresets(8, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -30.0, 11, 0.0012, 1), /* 8, impossible to use in stereo */\n new ABRPresets(16, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -25.0, 11, 0.0010, 1), /* 16 */\n new ABRPresets(24, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -20.0, 11, 0.0010, 1), /* 24 */\n new ABRPresets(32, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -15.0, 11, 0.0010, 1), /* 32 */\n new ABRPresets(40, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -10.0, 11, 0.0009, 1), /* 40 */\n new ABRPresets(48, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -10.0, 11, 0.0009, 1), /* 48 */\n new ABRPresets(56, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -6.0, 11, 0.0008, 1), /* 56 */\n new ABRPresets(64, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -2.0, 11, 0.0008, 1), /* 64 */\n new ABRPresets(80, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, .0, 8, 0.0007, 1), /* 80 */\n new ABRPresets(96, 9, 9, 0, 2.50, 6.60, 145, 0, 0.95, 0, 1.0, 5.5, 0.0006, 1), /* 96 */\n new ABRPresets(112, 9, 9, 0, 2.25, 6.60, 145, 0, 0.95, 0, 2.0, 4.5, 0.0005, 1), /* 112 */\n new ABRPresets(128, 9, 9, 0, 1.95, 6.40, 140, 0, 0.95, 0, 3.0, 4, 0.0002, 1), /* 128 */\n new ABRPresets(160, 9, 9, 1, 1.79, 6.00, 135, 0, 0.95, -2, 5.0, 3.5, 0, 1), /* 160 */\n new ABRPresets(192, 9, 9, 1, 1.49, 5.60, 125, 0, 0.97, -4, 7.0, 3, 0, 0), /* 192 */\n new ABRPresets(224, 9, 9, 1, 1.25, 5.20, 125, 0, 0.98, -6, 9.0, 2, 0, 0), /* 224 */\n new ABRPresets(256, 9, 9, 1, 0.97, 5.20, 125, 0, 1.00, -8, 10.0, 1, 0, 0), /* 256 */\n new ABRPresets(320, 9, 9, 1, 0.90, 5.20, 125, 0, 1.00, -10, 12.0, 0, 0, 0) /* 320 */\n ];\n\n function apply_abr_preset(gfp, preset, enforce) {\n /* Variables for the ABR stuff */\n var actual_bitrate = preset;\n\n var r = lame.nearestBitrateFullIndex(preset);\n\n gfp.VBR = VbrMode.vbr_abr;\n gfp.VBR_mean_bitrate_kbps = actual_bitrate;\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 320);\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n gfp.brate = gfp.VBR_mean_bitrate_kbps;\n if (gfp.VBR_mean_bitrate_kbps > 320) {\n gfp.disable_reservoir = true;\n }\n\n /* parameters for which there is no proper set/get interface */\n if (abr_switch_map[r].safejoint > 0)\n gfp.exp_nspsytune = gfp.exp_nspsytune | 2;\n /* safejoint */\n\n if (abr_switch_map[r].sfscale > 0) {\n gfp.internal_flags.noise_shaping = 2;\n }\n /* ns-bass tweaks */\n if (Math.abs(abr_switch_map[r].nsbass) > 0) {\n var k = (int)(abr_switch_map[r].nsbass * 4);\n if (k < 0)\n k += 64;\n gfp.exp_nspsytune = gfp.exp_nspsytune | (k << 2);\n }\n\n if (enforce != 0)\n gfp.quant_comp = abr_switch_map[r].quant_comp;\n else if (!(Math.abs(gfp.quant_comp - -1) > 0))\n gfp.quant_comp = abr_switch_map[r].quant_comp;\n // SET_OPTION(quant_comp, abr_switch_map[r].quant_comp, -1);\n if (enforce != 0)\n gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n else if (!(Math.abs(gfp.quant_comp_short - -1) > 0))\n gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n // SET_OPTION(quant_comp_short, abr_switch_map[r].quant_comp_s, -1);\n\n if (enforce != 0)\n gfp.msfix = abr_switch_map[r].nsmsfix;\n else if (!(Math.abs(gfp.msfix - -1) > 0))\n gfp.msfix = abr_switch_map[r].nsmsfix;\n // SET_OPTION(msfix, abr_switch_map[r].nsmsfix, -1);\n\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n // SET_OPTION(short_threshold_lrm, abr_switch_map[r].st_lrm, -1);\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n // SET_OPTION(short_threshold_s, abr_switch_map[r].st_s, -1);\n\n /*\n * ABR seems to have big problems with clipping, especially at low\n * bitrates\n */\n /*\n * so we compensate for that here by using a scale value depending on\n * bitrate\n */\n if (enforce != 0)\n gfp.scale = abr_switch_map[r].scale;\n else if (!(Math.abs(gfp.scale - -1) > 0))\n gfp.scale = abr_switch_map[r].scale;\n // SET_OPTION(scale, abr_switch_map[r].scale, -1);\n\n if (enforce != 0)\n gfp.maskingadjust = abr_switch_map[r].masking_adj;\n else if (!(Math.abs(gfp.maskingadjust - 0) > 0))\n gfp.maskingadjust = abr_switch_map[r].masking_adj;\n // SET_OPTION(maskingadjust, abr_switch_map[r].masking_adj, 0);\n if (abr_switch_map[r].masking_adj > 0) {\n if (enforce != 0)\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * .9);\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * .9);\n // SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj *\n // .9, 0);\n } else {\n if (enforce != 0)\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * 1.1);\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * 1.1);\n // SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj *\n // 1.1, 0);\n }\n\n if (enforce != 0)\n gfp.ATHlower = -abr_switch_map[r].ath_lower / 10.;\n else if (!(Math.abs((-gfp.ATHlower * 10.) - 0) > 0))\n gfp.ATHlower = -abr_switch_map[r].ath_lower / 10.;\n // SET_OPTION(ATHlower, abr_switch_map[r].ath_lower, 0);\n if (enforce != 0)\n gfp.ATHcurve = abr_switch_map[r].ath_curve;\n else if (!(Math.abs(gfp.ATHcurve - -1) > 0))\n gfp.ATHcurve = abr_switch_map[r].ath_curve;\n // SET_OPTION(ATHcurve, abr_switch_map[r].ath_curve, -1);\n\n if (enforce != 0)\n gfp.interChRatio = abr_switch_map[r].interch;\n else if (!(Math.abs(gfp.interChRatio - -1) > 0))\n gfp.interChRatio = abr_switch_map[r].interch;\n // SET_OPTION(interChRatio, abr_switch_map[r].interch, -1);\n\n return preset;\n }\n\n this.apply_preset = function(gfp, preset, enforce) {\n /* translate legacy presets */\n switch (preset) {\n case Lame.R3MIX:\n {\n preset = Lame.V3;\n gfp.VBR = VbrMode.vbr_mtrh;\n break;\n }\n case Lame.MEDIUM:\n {\n preset = Lame.V4;\n gfp.VBR = VbrMode.vbr_rh;\n break;\n }\n case Lame.MEDIUM_FAST:\n {\n preset = Lame.V4;\n gfp.VBR = VbrMode.vbr_mtrh;\n break;\n }\n case Lame.STANDARD:\n {\n preset = Lame.V2;\n gfp.VBR = VbrMode.vbr_rh;\n break;\n }\n case Lame.STANDARD_FAST:\n {\n preset = Lame.V2;\n gfp.VBR = VbrMode.vbr_mtrh;\n break;\n }\n case Lame.EXTREME:\n {\n preset = Lame.V0;\n gfp.VBR = VbrMode.vbr_rh;\n break;\n }\n case Lame.EXTREME_FAST:\n {\n preset = Lame.V0;\n gfp.VBR = VbrMode.vbr_mtrh;\n break;\n }\n case Lame.INSANE:\n {\n preset = 320;\n gfp.preset = preset;\n apply_abr_preset(gfp, preset, enforce);\n gfp.VBR = VbrMode.vbr_off;\n return preset;\n }\n }\n\n gfp.preset = preset;\n {\n switch (preset) {\n case Lame.V9:\n apply_vbr_preset(gfp, 9, enforce);\n return preset;\n case Lame.V8:\n apply_vbr_preset(gfp, 8, enforce);\n return preset;\n case Lame.V7:\n apply_vbr_preset(gfp, 7, enforce);\n return preset;\n case Lame.V6:\n apply_vbr_preset(gfp, 6, enforce);\n return preset;\n case Lame.V5:\n apply_vbr_preset(gfp, 5, enforce);\n return preset;\n case Lame.V4:\n apply_vbr_preset(gfp, 4, enforce);\n return preset;\n case Lame.V3:\n apply_vbr_preset(gfp, 3, enforce);\n return preset;\n case Lame.V2:\n apply_vbr_preset(gfp, 2, enforce);\n return preset;\n case Lame.V1:\n apply_vbr_preset(gfp, 1, enforce);\n return preset;\n case Lame.V0:\n apply_vbr_preset(gfp, 0, enforce);\n return preset;\n default:\n break;\n }\n }\n if (8 <= preset && preset <= 320) {\n return apply_abr_preset(gfp, preset, enforce);\n }\n\n /* no corresponding preset found */\n gfp.preset = 0;\n return preset;\n }\n\n // Rest from getset.c:\n\n /**\n * VBR quality level.
\n * 0 = highest
\n * 9 = lowest\n */\n function lame_set_VBR_q(gfp, VBR_q) {\n var ret = 0;\n\n if (0 > VBR_q) {\n /* Unknown VBR quality level! */\n ret = -1;\n VBR_q = 0;\n }\n if (9 < VBR_q) {\n ret = -1;\n VBR_q = 9;\n }\n\n gfp.VBR_q = VBR_q;\n gfp.VBR_q_frac = 0;\n return ret;\n }\n\n}\n\nmodule.exports = Presets;\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAARtJREFUeF7tmNsKxCAMROv/f7TLwhbK0mKmiWjI6Wvj7Tgziu0o/rXi6z8AgAKKE8ACxQVACGIBLFCcABZYJYDee7+O3VpbshlLBv0uHAAoAAuQAYTghQCnQPZjUD3WZtdb7zdh94DZC1L7B4CRAAp4AqVKLmv9owKyLujcUOv8AYAFHghYJaRKbrd6LIAFsMA9ATJAfLLKCowQJAQJQULwlkDWUFNvmoSg8eFkWLabYoYT/hXwImQlNapDAZvdHEcbdv4Ps4B1QDWl1X7VegCoxKLq1cyIGve/HxQwi+yoXxQgnhojoG//Y4G35LztylvACzCq/TILRC3A2w8AvASzt0cB2XfQO38U4CWYvT0KyL6D3vmjAC/B7O0/Ez3gUEGRr/UAAAAASUVORK5CYII=\"","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// Proceess '\\n'\n\n'use strict';\n\nmodule.exports = function newline(state, silent) {\n var pmax, max, pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x0A/* \\n */) { return false; }\n\n pmax = state.pending.length - 1;\n max = state.posMax;\n\n // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n state.pending = state.pending.replace(/ +$/, '');\n state.push('hardbreak', 'br', 0);\n } else {\n state.pending = state.pending.slice(0, -1);\n state.push('softbreak', 'br', 0);\n }\n\n } else {\n state.push('softbreak', 'br', 0);\n }\n }\n\n pos++;\n\n // skip heading spaces for next line\n while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n state.pos = pos;\n return true;\n};\n","// Commonmark default options\n\n'use strict';\n\n\nmodule.exports = {\n options: {\n html: true, // Enable HTML tags in source\n xhtmlOut: true, // Use '/' to close single tags (
)\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with 3) { continue; }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue; }\n\n // Some tags can terminate paragraph without empty line.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n state.line = nextLine;\n\n token = state.push('paragraph_open', 'p', 1);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [ startLine, state.line ];\n token.children = [];\n\n token = state.push('paragraph_close', 'p', -1);\n\n return true;\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","module.exports = {};\n","/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n'use strict';\n\n\n/**\n * new Ruler()\n **/\nfunction Ruler() {\n // List of added rules. Each element is:\n //\n // {\n // name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ]\n // }\n //\n this.__rules__ = [];\n\n // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - diginal anchor for fast filtering by charcodes.\n //\n this.__cache__ = null;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Helper methods, should not be used directly\n\n\n// Find rule index by name\n//\nRuler.prototype.__find__ = function (name) {\n for (var i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name) {\n return i;\n }\n }\n return -1;\n};\n\n\n// Build rules lookup cache\n//\nRuler.prototype.__compile__ = function () {\n var self = this;\n var chains = [ '' ];\n\n // collect unique names\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return; }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName);\n }\n });\n });\n\n self.__cache__ = {};\n\n chains.forEach(function (chain) {\n self.__cache__[chain] = [];\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return; }\n\n if (chain && rule.alt.indexOf(chain) < 0) { return; }\n\n self.__cache__[chain].push(rule.fn);\n });\n });\n};\n\n\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typorgapher replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.at = function (name, fn, options) {\n var index = this.__find__(name);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + name); }\n\n this.__rules__[index].fn = fn;\n this.__rules__[index].alt = opt.alt || [];\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n var index = this.__find__(beforeName);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + beforeName); }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n var index = this.__find__(afterName);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + afterName); }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.push = function (ruleName, fn, options) {\n var opt = options || {};\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.enable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n var result = [];\n\n // Search by name and enable\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) { return; }\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n this.__rules__[idx].enabled = true;\n result.push(name);\n }, this);\n\n this.__cache__ = null;\n return result;\n};\n\n\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\nRuler.prototype.enableOnly = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n this.__rules__.forEach(function (rule) { rule.enabled = false; });\n\n this.enable(list, ignoreInvalid);\n};\n\n\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.disable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n var result = [];\n\n // Search by name and disable\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) { return; }\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n this.__rules__[idx].enabled = false;\n result.push(name);\n }, this);\n\n this.__cache__ = null;\n return result;\n};\n\n\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\nRuler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__();\n }\n\n // Chain can be empty, if rules disabled. But we still have to return Array.\n return this.__cache__[chainName] || [];\n};\n\nmodule.exports = Ruler;\n","// Emojies & shortcuts replacement logic.\n//\n// Note: In theory, it could be faster to parse :smile: in inline chain and\n// leave only shortcuts here. But, who care...\n//\n\n'use strict';\n\n\nmodule.exports = function create_rule(md, emojies, shortcuts, scanRE, replaceRE) {\n var arrayReplaceAt = md.utils.arrayReplaceAt,\n ucm = md.utils.lib.ucmicro,\n ZPCc = new RegExp([ ucm.Z.source, ucm.P.source, ucm.Cc.source ].join('|'));\n\n function splitTextToken(text, level, Token) {\n var token, last_pos = 0, nodes = [];\n\n text.replace(replaceRE, function (match, offset, src) {\n var emoji_name;\n // Validate emoji name\n if (shortcuts.hasOwnProperty(match)) {\n // replace shortcut with full name\n emoji_name = shortcuts[match];\n\n // Don't allow letters before any shortcut (as in no \":/\" in http://)\n if (offset > 0 && !ZPCc.test(src[offset - 1])) {\n return;\n }\n\n // Don't allow letters after any shortcut\n if (offset + match.length < src.length && !ZPCc.test(src[offset + match.length])) {\n return;\n }\n } else {\n emoji_name = match.slice(1, -1);\n }\n\n // Add new tokens to pending list\n if (offset > last_pos) {\n token = new Token('text', '', 0);\n token.content = text.slice(last_pos, offset);\n nodes.push(token);\n }\n\n token = new Token('emoji', '', 0);\n token.markup = emoji_name;\n token.content = emojies[emoji_name];\n nodes.push(token);\n\n last_pos = offset + match.length;\n });\n\n if (last_pos < text.length) {\n token = new Token('text', '', 0);\n token.content = text.slice(last_pos);\n nodes.push(token);\n }\n\n return nodes;\n }\n\n return function emoji_replace(state) {\n var i, j, l, tokens, token,\n blockTokens = state.tokens,\n autolinkLevel = 0;\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline') { continue; }\n tokens = blockTokens[j].children;\n\n // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n for (i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i];\n\n if (token.type === 'link_open' || token.type === 'link_close') {\n if (token.info === 'auto') { autolinkLevel -= token.nesting; }\n }\n\n if (token.type === 'text' && autolinkLevel === 0 && scanRE.test(token.content)) {\n // replace current node\n blockTokens[j].children = tokens = arrayReplaceAt(\n tokens, i, splitTextToken(token.content, token.level, state.Token)\n );\n }\n }\n }\n };\n};\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar MeanBits = require('./MeanBits.js');\nvar Encoder = require('./Encoder.js');\nvar L3Side = require('./L3Side.js');\nvar LameInternalFlags = require('./LameInternalFlags.js');\n\nfunction CBRNewIterationLoop(_quantize) {\n var quantize = _quantize;\n this.quantize = quantize;\n\tthis.iteration_loop = function(gfp, pe, ms_ener_ratio, ratio) {\n\t\tvar gfc = gfp.internal_flags;\n var l3_xmin = new_float(L3Side.SFBMAX);\n\t\tvar xrpow = new_float(576);\n\t\tvar targ_bits = new_int(2);\n\t\tvar mean_bits = 0, max_bits;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tvar mb = new MeanBits(mean_bits);\n\t\tthis.quantize.rv.ResvFrameBegin(gfp, mb);\n\t\tmean_bits = mb.bits;\n\n\t\t/* quantize! */\n\t\tfor (var gr = 0; gr < gfc.mode_gr; gr++) {\n\n\t\t\t/*\n\t\t\t * calculate needed bits\n\t\t\t */\n\t\t\tmax_bits = this.quantize.qupvt.on_pe(gfp, pe, targ_bits, mean_bits,\n\t\t\t\t\tgr, gr);\n\n\t\t\tif (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n\t\t\t\tthis.quantize.ms_convert(gfc.l3_side, gr);\n\t\t\t\tthis.quantize.qupvt.reduce_side(targ_bits, ms_ener_ratio[gr],\n\t\t\t\t\t\tmean_bits, max_bits);\n\t\t\t}\n\n\t\t\tfor (var ch = 0; ch < gfc.channels_out; ch++) {\n\t\t\t\tvar adjust, masking_lower_db;\n\t\t\t\tvar cod_info = l3_side.tt[gr][ch];\n\n\t\t\t\tif (cod_info.block_type != Encoder.SHORT_TYPE) {\n\t\t\t\t\t// NORM, START or STOP type\n\t\t\t\t\tadjust = 0;\n\t\t\t\t\tmasking_lower_db = gfc.PSY.mask_adjust - adjust;\n\t\t\t\t} else {\n\t\t\t\t\tadjust = 0;\n\t\t\t\t\tmasking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n\t\t\t\t}\n\t\t\t\tgfc.masking_lower = Math.pow(10.0,\n\t\t\t\t\t\tmasking_lower_db * 0.1);\n\n\t\t\t\t/*\n\t\t\t\t * init_outer_loop sets up cod_info, scalefac and xrpow\n\t\t\t\t */\n\t\t\t\tthis.quantize.init_outer_loop(gfc, cod_info);\n\t\t\t\tif (this.quantize.init_xrpow(gfc, cod_info, xrpow)) {\n\t\t\t\t\t/*\n\t\t\t\t\t * xr contains energy we will have to encode calculate the\n\t\t\t\t\t * masking abilities find some good quantization in\n\t\t\t\t\t * outer_loop\n\t\t\t\t\t */\n\t\t\t\t\tthis.quantize.qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n\t\t\t\t\t\t\tl3_xmin);\n\t\t\t\t\tthis.quantize.outer_loop(gfp, cod_info, l3_xmin, xrpow, ch,\n\t\t\t\t\t\t\ttarg_bits[ch]);\n\t\t\t\t}\n\n\t\t\t\tthis.quantize.iteration_finish_one(gfc, gr, ch);\n\t\t\t\tassert (cod_info.part2_3_length <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n\t\t\t\tassert (cod_info.part2_3_length <= targ_bits[ch]);\n\t\t\t} /* for ch */\n\t\t} /* for gr */\n\n\t\tthis.quantize.rv.ResvFrameEnd(gfc, mean_bits);\n\t}\n}\nmodule.exports = CBRNewIterationLoop;\n","// Parse backticks\n\n'use strict';\n\nmodule.exports = function backtick(state, silent) {\n var start, max, marker, matchStart, matchEnd, token,\n pos = state.pos,\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x60/* ` */) { return false; }\n\n start = pos;\n pos++;\n max = state.posMax;\n\n while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; }\n\n marker = state.src.slice(start, pos);\n\n matchStart = matchEnd = pos;\n\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1;\n\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; }\n\n if (matchEnd - matchStart === marker.length) {\n if (!silent) {\n token = state.push('code_inline', 'code', 0);\n token.markup = marker;\n token.content = state.src.slice(pos, matchStart)\n .replace(/[ \\n]+/g, ' ')\n .trim();\n }\n state.pos = matchEnd;\n return true;\n }\n }\n\n if (!silent) { state.pending += marker; }\n state.pos += marker.length;\n return true;\n};\n","// Lists\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\n// Search `[-+*][\\n ]`, returns next pos arter marker on success\n// or -1 on fail.\nfunction skipBulletListMarker(state, startLine) {\n var marker, pos, max, ch;\n\n pos = state.bMarks[startLine] + state.tShift[startLine];\n max = state.eMarks[startLine];\n\n marker = state.src.charCodeAt(pos++);\n // Check bullet\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x2B/* + */) {\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos arter marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker(state, startLine) {\n var ch,\n start = state.bMarks[startLine] + state.tShift[startLine],\n pos = start,\n max = state.eMarks[startLine];\n\n // List marker should have at least 2 chars (digit + dot)\n if (pos + 1 >= max) { return -1; }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) { return -1; }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) { return -1; }\n\n continue;\n }\n\n // found valid marker\n if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n break;\n }\n\n return -1;\n }\n\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1;\n }\n }\n return pos;\n}\n\nfunction markTightParagraphs(state, idx) {\n var i, l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true;\n state.tokens[i].hidden = true;\n i += 2;\n }\n }\n}\n\n\nmodule.exports = function list(state, startLine, endLine, silent) {\n var nextLine,\n initial,\n offset,\n indent,\n oldTShift,\n oldIndent,\n oldLIndent,\n oldTight,\n oldParentType,\n start,\n posAfterMarker,\n ch,\n pos,\n max,\n indentAfterMarker,\n markerValue,\n markerCharCode,\n isOrdered,\n contentStart,\n listTokIdx,\n prevEmptyEnd,\n listLines,\n itemLines,\n tight = true,\n terminatorRules,\n token,\n i, l, terminate;\n\n // Detect list type and position after marker\n if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n isOrdered = true;\n } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n isOrdered = false;\n } else {\n return false;\n }\n\n // We should terminate list on style change. Remember first one to compare.\n markerCharCode = state.src.charCodeAt(posAfterMarker - 1);\n\n // For validation mode we can terminate immediately\n if (silent) { return true; }\n\n // Start list\n listTokIdx = state.tokens.length;\n\n if (isOrdered) {\n start = state.bMarks[startLine] + state.tShift[startLine];\n markerValue = Number(state.src.substr(start, posAfterMarker - start - 1));\n\n token = state.push('ordered_list_open', 'ol', 1);\n if (markerValue !== 1) {\n token.attrs = [ [ 'start', markerValue ] ];\n }\n\n } else {\n token = state.push('bullet_list_open', 'ul', 1);\n }\n\n token.map = listLines = [ startLine, 0 ];\n token.markup = String.fromCharCode(markerCharCode);\n\n //\n // Iterate list items\n //\n\n nextLine = startLine;\n prevEmptyEnd = false;\n terminatorRules = state.md.block.ruler.getRules('list');\n\n while (nextLine < endLine) {\n pos = posAfterMarker;\n max = state.eMarks[nextLine];\n\n initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n contentStart = pos;\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1;\n } else {\n indentAfterMarker = offset - initial;\n }\n\n // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n if (indentAfterMarker > 4) { indentAfterMarker = 1; }\n\n // \" - test\"\n // ^^^^^ - calculating total length of this thing\n indent = initial + indentAfterMarker;\n\n // Run subparser & write tokens\n token = state.push('list_item_open', 'li', 1);\n token.markup = String.fromCharCode(markerCharCode);\n token.map = itemLines = [ startLine, 0 ];\n\n oldIndent = state.blkIndent;\n oldTight = state.tight;\n oldTShift = state.tShift[startLine];\n oldLIndent = state.sCount[startLine];\n oldParentType = state.parentType;\n state.blkIndent = indent;\n state.tight = true;\n state.parentType = 'list';\n state.tShift[startLine] = contentStart - state.bMarks[startLine];\n state.sCount[startLine] = offset;\n\n if (contentStart >= max && state.isEmpty(startLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine);\n } else {\n state.md.block.tokenize(state, startLine, endLine, true);\n }\n\n // If any of list item is tight, mark list as tight\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n }\n // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n prevEmptyEnd = (state.line - startLine) > 1 && state.isEmpty(state.line - 1);\n\n state.blkIndent = oldIndent;\n state.tShift[startLine] = oldTShift;\n state.sCount[startLine] = oldLIndent;\n state.tight = oldTight;\n state.parentType = oldParentType;\n\n token = state.push('list_item_close', 'li', -1);\n token.markup = String.fromCharCode(markerCharCode);\n\n nextLine = startLine = state.line;\n itemLines[1] = nextLine;\n contentStart = state.bMarks[startLine];\n\n if (nextLine >= endLine) { break; }\n\n if (state.isEmpty(nextLine)) {\n break;\n }\n\n //\n // Try to check if list is terminated or continued.\n //\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n // fail if terminating block found\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n\n // fail if list has another type\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine);\n if (posAfterMarker < 0) { break; }\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine);\n if (posAfterMarker < 0) { break; }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; }\n }\n\n // Finilize list\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1);\n } else {\n token = state.push('bullet_list_close', 'ul', -1);\n }\n token.markup = String.fromCharCode(markerCharCode);\n\n listLines[1] = nextLine;\n state.line = nextLine;\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n};\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\n/**\n * ENCDELAY The encoder delay.\n *\n * Minimum allowed is MDCTDELAY (see below)\n *\n * The first 96 samples will be attenuated, so using a value less than 96\n * will result in corrupt data for the first 96-ENCDELAY samples.\n *\n * suggested: 576 set to 1160 to sync with FhG.\n */\nEncoder.ENCDELAY = 576;\n/**\n * make sure there is at least one complete frame after the last frame\n * containing real data\n *\n * Using a value of 288 would be sufficient for a a very sophisticated\n * decoder that can decode granule-by-granule instead of frame by frame. But\n * lets not assume this, and assume the decoder will not decode frame N\n * unless it also has data for frame N+1\n */\nEncoder.POSTDELAY = 1152;\n\n/**\n * delay of the MDCT used in mdct.c original ISO routines had a delay of\n * 528! Takehiro's routines:\n */\nEncoder.MDCTDELAY = 48;\nEncoder.FFTOFFSET = (224 + Encoder.MDCTDELAY);\n\n/**\n * Most decoders, including the one we use, have a delay of 528 samples.\n */\nEncoder.DECDELAY = 528;\n\n/**\n * number of subbands\n */\nEncoder.SBLIMIT = 32;\n\n/**\n * parition bands bands\n */\nEncoder.CBANDS = 64;\n\n/**\n * number of critical bands/scale factor bands where masking is computed\n */\nEncoder.SBPSY_l = 21;\nEncoder.SBPSY_s = 12;\n\n/**\n * total number of scalefactor bands encoded\n */\nEncoder.SBMAX_l = 22;\nEncoder.SBMAX_s = 13;\nEncoder.PSFB21 = 6;\nEncoder.PSFB12 = 6;\n\n/**\n * FFT sizes\n */\nEncoder.BLKSIZE = 1024;\nEncoder.HBLKSIZE = (Encoder.BLKSIZE / 2 + 1);\nEncoder.BLKSIZE_s = 256;\nEncoder.HBLKSIZE_s = (Encoder.BLKSIZE_s / 2 + 1);\n\nEncoder.NORM_TYPE = 0;\nEncoder.START_TYPE = 1;\nEncoder.SHORT_TYPE = 2;\nEncoder.STOP_TYPE = 3;\n\n/**\n *
\n * Mode Extention:\n * When we are in stereo mode, there are 4 possible methods to store these\n * two channels. The stereo modes -m? are using a subset of them.\n *\n *  -ms: MPG_MD_LR_LR\n *  -mj: MPG_MD_LR_LR and MPG_MD_MS_LR\n *  -mf: MPG_MD_MS_LR\n *  -mi: all\n * 
\n */\nEncoder.MPG_MD_LR_LR = 0;\nEncoder.MPG_MD_LR_I = 1;\nEncoder.MPG_MD_MS_LR = 2;\nEncoder.MPG_MD_MS_I = 3;\n\nEncoder.fircoef = [-0.0207887 * 5, -0.0378413 * 5,\n -0.0432472 * 5, -0.031183 * 5, 7.79609e-18 * 5, 0.0467745 * 5,\n 0.10091 * 5, 0.151365 * 5, 0.187098 * 5];\n\nfunction Encoder() {\n var NewMDCT = require('./NewMDCT.js');\n var III_psy_ratio = require('./III_psy_ratio.js');\n\n var FFTOFFSET = Encoder.FFTOFFSET;\n var MPG_MD_MS_LR = Encoder.MPG_MD_MS_LR;\n //BitStream bs;\n //PsyModel psy;\n //VBRTag vbr;\n //QuantizePVT qupvt;\n var bs = null;\n this.psy = null;\n var psy = null;\n var vbr = null;\n var qupvt = null;\n\n //public final void setModules(BitStream bs, PsyModel psy, QuantizePVT qupvt,\n // VBRTag vbr) {\n this.setModules = function (_bs, _psy, _qupvt, _vbr) {\n bs = _bs;\n this.psy = _psy;\n psy = _psy;\n vbr = _vbr;\n qupvt = _qupvt;\n };\n\n var newMDCT = new NewMDCT();\n\n /***********************************************************************\n *\n * encoder and decoder delays\n *\n ***********************************************************************/\n\n /**\n *
\n     * layer III enc->dec delay:  1056 (1057?)   (observed)\n     * layer  II enc->dec delay:   480  (481?)   (observed)\n     *\n     * polyphase 256-16             (dec or enc)        = 240\n     * mdct      256+32  (9*32)     (dec or enc)        = 288\n     * total:    512+16\n     *\n     * My guess is that delay of polyphase filterbank is actualy 240.5\n     * (there are technical reasons for this, see postings in mp3encoder).\n     * So total Encode+Decode delay = ENCDELAY + 528 + 1\n     * 
\n */\n\n\n /**\n * auto-adjust of ATH, useful for low volume Gabriel Bouvigne 3 feb 2001\n *\n * modifies some values in gfp.internal_flags.ATH (gfc.ATH)\n */\n//private void adjust_ATH(final LameInternalFlags gfc) {\n function adjust_ATH(gfc) {\n var gr2_max, max_pow;\n\n if (gfc.ATH.useAdjust == 0) {\n gfc.ATH.adjust = 1.0;\n /* no adjustment */\n return;\n }\n\n /* jd - 2001 mar 12, 27, jun 30 */\n /* loudness based on equal loudness curve; */\n /* use granule with maximum combined loudness */\n max_pow = gfc.loudness_sq[0][0];\n gr2_max = gfc.loudness_sq[1][0];\n if (gfc.channels_out == 2) {\n max_pow += gfc.loudness_sq[0][1];\n gr2_max += gfc.loudness_sq[1][1];\n } else {\n max_pow += max_pow;\n gr2_max += gr2_max;\n }\n if (gfc.mode_gr == 2) {\n max_pow = Math.max(max_pow, gr2_max);\n }\n max_pow *= 0.5;\n /* max_pow approaches 1.0 for full band noise */\n\n /* jd - 2001 mar 31, jun 30 */\n /* user tuning of ATH adjustment region */\n max_pow *= gfc.ATH.aaSensitivityP;\n\n /*\n * adjust ATH depending on range of maximum value\n */\n\n /* jd - 2001 feb27, mar12,20, jun30, jul22 */\n /* continuous curves based on approximation */\n /* to GB's original values. */\n /* For an increase in approximate loudness, */\n /* set ATH adjust to adjust_limit immediately */\n /* after a delay of one frame. */\n /* For a loudness decrease, reduce ATH adjust */\n /* towards adjust_limit gradually. */\n /* max_pow is a loudness squared or a power. */\n if (max_pow > 0.03125) { /* ((1 - 0.000625)/ 31.98) from curve below */\n if (gfc.ATH.adjust >= 1.0) {\n gfc.ATH.adjust = 1.0;\n } else {\n /* preceding frame has lower ATH adjust; */\n /* ascend only to the preceding adjust_limit */\n /* in case there is leading low volume */\n if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n gfc.ATH.adjust = gfc.ATH.adjustLimit;\n }\n }\n gfc.ATH.adjustLimit = 1.0;\n } else { /* adjustment curve */\n /* about 32 dB maximum adjust (0.000625) */\n var adj_lim_new = 31.98 * max_pow + 0.000625;\n if (gfc.ATH.adjust >= adj_lim_new) { /* descend gradually */\n gfc.ATH.adjust *= adj_lim_new * 0.075 + 0.925;\n if (gfc.ATH.adjust < adj_lim_new) { /* stop descent */\n gfc.ATH.adjust = adj_lim_new;\n }\n } else { /* ascend */\n if (gfc.ATH.adjustLimit >= adj_lim_new) {\n gfc.ATH.adjust = adj_lim_new;\n } else {\n /* preceding frame has lower ATH adjust; */\n /* ascend only to the preceding adjust_limit */\n if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n gfc.ATH.adjust = gfc.ATH.adjustLimit;\n }\n }\n }\n gfc.ATH.adjustLimit = adj_lim_new;\n }\n }\n\n /**\n *
\n     *  some simple statistics\n     *\n     *  bitrate index 0: free bitrate . not allowed in VBR mode\n     *  : bitrates, kbps depending on MPEG version\n     *  bitrate index 15: forbidden\n     *\n     *  mode_ext:\n     *  0:  LR\n     *  1:  LR-i\n     *  2:  MS\n     *  3:  MS-i\n     * 
\n */\n function updateStats(gfc) {\n var gr, ch;\n assert(0 <= gfc.bitrate_index && gfc.bitrate_index < 16);\n assert(0 <= gfc.mode_ext && gfc.mode_ext < 4);\n\n /* count bitrate indices */\n gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][4]++;\n gfc.bitrate_stereoMode_Hist[15][4]++;\n\n /* count 'em for every mode extension in case of 2 channel encoding */\n if (gfc.channels_out == 2) {\n gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][gfc.mode_ext]++;\n gfc.bitrate_stereoMode_Hist[15][gfc.mode_ext]++;\n }\n for (gr = 0; gr < gfc.mode_gr; ++gr) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n var bt = gfc.l3_side.tt[gr][ch].block_type | 0;\n if (gfc.l3_side.tt[gr][ch].mixed_block_flag != 0)\n bt = 4;\n gfc.bitrate_blockType_Hist[gfc.bitrate_index][bt]++;\n gfc.bitrate_blockType_Hist[gfc.bitrate_index][5]++;\n gfc.bitrate_blockType_Hist[15][bt]++;\n gfc.bitrate_blockType_Hist[15][5]++;\n }\n }\n }\n\n function lame_encode_frame_init(gfp, inbuf) {\n var gfc = gfp.internal_flags;\n\n var ch, gr;\n\n if (gfc.lame_encode_frame_init == 0) {\n /* prime the MDCT/polyphase filterbank with a short block */\n var i, j;\n var primebuff0 = new_float(286 + 1152 + 576);\n var primebuff1 = new_float(286 + 1152 + 576);\n gfc.lame_encode_frame_init = 1;\n for (i = 0, j = 0; i < 286 + 576 * (1 + gfc.mode_gr); ++i) {\n if (i < 576 * gfc.mode_gr) {\n primebuff0[i] = 0;\n if (gfc.channels_out == 2)\n primebuff1[i] = 0;\n } else {\n primebuff0[i] = inbuf[0][j];\n if (gfc.channels_out == 2)\n primebuff1[i] = inbuf[1][j];\n ++j;\n }\n }\n /* polyphase filtering / mdct */\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.l3_side.tt[gr][ch].block_type = Encoder.SHORT_TYPE;\n }\n }\n newMDCT.mdct_sub48(gfc, primebuff0, primebuff1);\n\n /* check FFT will not use a negative starting offset */\n assert(576 >= Encoder.FFTOFFSET);\n /* check if we have enough data for FFT */\n assert(gfc.mf_size >= (Encoder.BLKSIZE + gfp.framesize - Encoder.FFTOFFSET));\n /* check if we have enough data for polyphase filterbank */\n assert(gfc.mf_size >= (512 + gfp.framesize - 32));\n }\n\n }\n\n /**\n *
\n     * encodeframe()           Layer 3\n     *\n     * encode a single frame\n     *\n     *\n     *    lame_encode_frame()\n     *\n     *\n     *                           gr 0            gr 1\n     *    inbuf:           |--------------|--------------|--------------|\n     *\n     *\n     *    Polyphase (18 windows, each shifted 32)\n     *    gr 0:\n     *    window1          <----512---.\n     *    window18                 <----512---.\n     *\n     *    gr 1:\n     *    window1                         <----512---.\n     *    window18                                <----512---.\n     *\n     *\n     *\n     *    MDCT output:  |--------------|--------------|--------------|\n     *\n     *    FFT's                    <---------1024---------.\n     *                                             <---------1024-------.\n     *\n     *\n     *\n     *        inbuf = buffer of PCM data size=MP3 framesize\n     *        encoder acts on inbuf[ch][0], but output is delayed by MDCTDELAY\n     *        so the MDCT coefficints are from inbuf[ch][-MDCTDELAY]\n     *\n     *        psy-model FFT has a 1 granule delay, so we feed it data for the\n     *        next granule.\n     *        FFT is centered over granule:  224+576+224\n     *        So FFT starts at:   576-224-MDCTDELAY\n     *\n     *        MPEG2:  FFT ends at:  BLKSIZE+576-224-MDCTDELAY      (1328)\n     *        MPEG1:  FFT ends at:  BLKSIZE+2*576-224-MDCTDELAY    (1904)\n     *\n     *        MPEG2:  polyphase first window:  [0..511]\n     *                          18th window:   [544..1055]          (1056)\n     *        MPEG1:            36th window:   [1120..1631]         (1632)\n     *                data needed:  512+framesize-32\n     *\n     *        A close look newmdct.c shows that the polyphase filterbank\n     *        only uses data from [0..510] for each window.  Perhaps because the window\n     *        used by the filterbank is zero for the last point, so Takehiro's\n     *        code doesn't bother to compute with it.\n     *\n     *        FFT starts at 576-224-MDCTDELAY (304)  = 576-FFTOFFSET\n     *\n     * 
\n */\n\n\n this.lame_encode_mp3_frame = function (gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n var mp3count;\n var masking_LR = new_array_n([2, 2]);\n /*\n * LR masking &\n * energy\n */\n masking_LR[0][0] = new III_psy_ratio();\n masking_LR[0][1] = new III_psy_ratio();\n masking_LR[1][0] = new III_psy_ratio();\n masking_LR[1][1] = new III_psy_ratio();\n var masking_MS = new_array_n([2, 2]);\n /* MS masking & energy */\n masking_MS[0][0] = new III_psy_ratio();\n masking_MS[0][1] = new III_psy_ratio();\n masking_MS[1][0] = new III_psy_ratio();\n masking_MS[1][1] = new III_psy_ratio();\n //III_psy_ratio masking[][];\n var masking;\n /* pointer to selected maskings */\n var inbuf = [null, null];\n var gfc = gfp.internal_flags;\n\n var tot_ener = new_float_n([2, 4]);\n var ms_ener_ratio = [.5, .5];\n var pe = [[0., 0.], [0., 0.]];\n var pe_MS = [[0., 0.], [0., 0.]];\n\n//float[][] pe_use;\n var pe_use;\n\n var ch, gr;\n\n inbuf[0] = inbuf_l;\n inbuf[1] = inbuf_r;\n\n if (gfc.lame_encode_frame_init == 0) {\n /* first run? */\n lame_encode_frame_init(gfp, inbuf);\n\n }\n\n /********************** padding *****************************/\n /**\n *
\n         * padding method as described in\n         * \"MPEG-Layer3 / Bitstream Syntax and Decoding\"\n         * by Martin Sieler, Ralph Sperschneider\n         *\n         * note: there is no padding for the very first frame\n         *\n         * Robert Hegemann 2000-06-22\n         * 
\n */\n gfc.padding = 0;\n if ((gfc.slot_lag -= gfc.frac_SpF) < 0) {\n gfc.slot_lag += gfp.out_samplerate;\n gfc.padding = 1;\n }\n\n /****************************************\n * Stage 1: psychoacoustic model *\n ****************************************/\n\n if (gfc.psymodel != 0) {\n /*\n * psychoacoustic model psy model has a 1 granule (576) delay that\n * we must compensate for (mt 6/99).\n */\n var ret;\n var bufp = [null, null];\n /* address of beginning of left & right granule */\n var bufpPos = 0;\n /* address of beginning of left & right granule */\n var blocktype = new_int(2);\n\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n\n for (ch = 0; ch < gfc.channels_out; ch++) {\n bufp[ch] = inbuf[ch];\n bufpPos = 576 + gr * 576 - Encoder.FFTOFFSET;\n }\n if (gfp.VBR == VbrMode.vbr_mtrh || gfp.VBR == VbrMode.vbr_mt) {\n ret = psy.L3psycho_anal_vbr(gfp, bufp, bufpPos, gr,\n masking_LR, masking_MS, pe[gr], pe_MS[gr],\n tot_ener[gr], blocktype);\n } else {\n ret = psy.L3psycho_anal_ns(gfp, bufp, bufpPos, gr,\n masking_LR, masking_MS, pe[gr], pe_MS[gr],\n tot_ener[gr], blocktype);\n }\n if (ret != 0)\n return -4;\n\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n ms_ener_ratio[gr] = tot_ener[gr][2] + tot_ener[gr][3];\n if (ms_ener_ratio[gr] > 0)\n ms_ener_ratio[gr] = tot_ener[gr][3] / ms_ener_ratio[gr];\n }\n\n /* block type flags */\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n cod_info.block_type = blocktype[ch];\n cod_info.mixed_block_flag = 0;\n }\n }\n } else {\n /* no psy model */\n for (gr = 0; gr < gfc.mode_gr; gr++)\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.l3_side.tt[gr][ch].block_type = Encoder.NORM_TYPE;\n gfc.l3_side.tt[gr][ch].mixed_block_flag = 0;\n pe_MS[gr][ch] = pe[gr][ch] = 700;\n }\n }\n\n /* auto-adjust of ATH, useful for low volume */\n adjust_ATH(gfc);\n\n /****************************************\n * Stage 2: MDCT *\n ****************************************/\n\n /* polyphase filtering / mdct */\n newMDCT.mdct_sub48(gfc, inbuf[0], inbuf[1]);\n\n /****************************************\n * Stage 3: MS/LR decision *\n ****************************************/\n\n /* Here will be selected MS or LR coding of the 2 stereo channels */\n gfc.mode_ext = Encoder.MPG_MD_LR_LR;\n\n if (gfp.force_ms) {\n gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n } else if (gfp.mode == MPEGMode.JOINT_STEREO) {\n /*\n * ms_ratio = is scaled, for historical reasons, to look like a\n * ratio of side_channel / total. 0 = signal is 100% mono .5 = L & R\n * uncorrelated\n */\n\n /**\n *
\n             * [0] and [1] are the results for the two granules in MPEG-1,\n             * in MPEG-2 it's only a faked averaging of the same value\n             * _prev is the value of the last granule of the previous frame\n             * _next is the value of the first granule of the next frame\n             * 
\n */\n\n var sum_pe_MS = 0.;\n var sum_pe_LR = 0.;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n sum_pe_MS += pe_MS[gr][ch];\n sum_pe_LR += pe[gr][ch];\n }\n }\n\n /* based on PE: M/S coding would not use much more bits than L/R */\n if (sum_pe_MS <= 1.00 * sum_pe_LR) {\n\n var gi0 = gfc.l3_side.tt[0];\n var gi1 = gfc.l3_side.tt[gfc.mode_gr - 1];\n\n if (gi0[0].block_type == gi0[1].block_type\n && gi1[0].block_type == gi1[1].block_type) {\n\n gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n }\n }\n }\n\n /* bit and noise allocation */\n if (gfc.mode_ext == MPG_MD_MS_LR) {\n masking = masking_MS;\n /* use MS masking */\n pe_use = pe_MS;\n } else {\n masking = masking_LR;\n /* use LR masking */\n pe_use = pe;\n }\n\n /* copy data for MP3 frame analyzer */\n if (gfp.analysis && gfc.pinfo != null) {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.pinfo.ms_ratio[gr] = gfc.ms_ratio[gr];\n gfc.pinfo.ms_ener_ratio[gr] = ms_ener_ratio[gr];\n gfc.pinfo.blocktype[gr][ch] = gfc.l3_side.tt[gr][ch].block_type;\n gfc.pinfo.pe[gr][ch] = pe_use[gr][ch];\n System.arraycopy(gfc.l3_side.tt[gr][ch].xr, 0,\n gfc.pinfo.xr[gr][ch], 0, 576);\n /*\n * in psymodel, LR and MS data was stored in pinfo. switch\n * to MS data:\n */\n if (gfc.mode_ext == MPG_MD_MS_LR) {\n gfc.pinfo.ers[gr][ch] = gfc.pinfo.ers[gr][ch + 2];\n System.arraycopy(gfc.pinfo.energy[gr][ch + 2], 0,\n gfc.pinfo.energy[gr][ch], 0,\n gfc.pinfo.energy[gr][ch].length);\n }\n }\n }\n }\n\n /****************************************\n * Stage 4: quantization loop *\n ****************************************/\n\n if (gfp.VBR == VbrMode.vbr_off || gfp.VBR == VbrMode.vbr_abr) {\n\n var i;\n var f;\n\n for (i = 0; i < 18; i++)\n gfc.nsPsy.pefirbuf[i] = gfc.nsPsy.pefirbuf[i + 1];\n\n f = 0.0;\n for (gr = 0; gr < gfc.mode_gr; gr++)\n for (ch = 0; ch < gfc.channels_out; ch++)\n f += pe_use[gr][ch];\n gfc.nsPsy.pefirbuf[18] = f;\n\n f = gfc.nsPsy.pefirbuf[9];\n for (i = 0; i < 9; i++)\n f += (gfc.nsPsy.pefirbuf[i] + gfc.nsPsy.pefirbuf[18 - i])\n * Encoder.fircoef[i];\n\n f = (670 * 5 * gfc.mode_gr * gfc.channels_out) / f;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n pe_use[gr][ch] *= f;\n }\n }\n }\n gfc.iteration_loop.iteration_loop(gfp, pe_use, ms_ener_ratio, masking);\n\n /****************************************\n * Stage 5: bitstream formatting *\n ****************************************/\n\n /* write the frame to the bitstream */\n bs.format_bitstream(gfp);\n\n /* copy mp3 bit buffer into array */\n mp3count = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 1);\n\n if (gfp.bWriteVbrTag)\n vbr.addVbrFrame(gfp);\n\n if (gfp.analysis && gfc.pinfo != null) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var j;\n for (j = 0; j < FFTOFFSET; j++)\n gfc.pinfo.pcmdata[ch][j] = gfc.pinfo.pcmdata[ch][j\n + gfp.framesize];\n for (j = FFTOFFSET; j < 1600; j++) {\n gfc.pinfo.pcmdata[ch][j] = inbuf[ch][j - FFTOFFSET];\n }\n }\n qupvt.set_frame_pinfo(gfp, masking);\n }\n\n updateStats(gfc);\n\n return mp3count;\n }\n}\n\n\nmodule.exports = Encoder;\n","'use strict';\n\n\nmodule.exports = function ins_plugin(md) {\n // Insert each marker as a separate text token, and add it to delimiter list\n //\n function tokenize(state, silent) {\n var i, scanned, token, len, ch,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) { return false; }\n\n if (marker !== 0x3D/* = */) { return false; }\n\n scanned = state.scanDelims(state.pos, true);\n len = scanned.length;\n ch = String.fromCharCode(marker);\n\n if (len < 2) { return false; }\n\n if (len % 2) {\n token = state.push('text', '', 0);\n token.content = ch;\n len--;\n }\n\n for (i = 0; i < len; i += 2) {\n token = state.push('text', '', 0);\n token.content = ch + ch;\n\n state.delimiters.push({\n marker: marker,\n jump: i,\n token: state.tokens.length - 1,\n level: state.level,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n\n return true;\n }\n\n\n // Walk through delimiter list and replace text tokens with tags\n //\n function postProcess(state) {\n var i, j,\n startDelim,\n endDelim,\n token,\n loneMarkers = [],\n delimiters = state.delimiters,\n max = state.delimiters.length;\n\n for (i = 0; i < max; i++) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x3D/* = */) {\n continue;\n }\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n\n token = state.tokens[startDelim.token];\n token.type = 'mark_open';\n token.tag = 'mark';\n token.nesting = 1;\n token.markup = '==';\n token.content = '';\n\n token = state.tokens[endDelim.token];\n token.type = 'mark_close';\n token.tag = 'mark';\n token.nesting = -1;\n token.markup = '==';\n token.content = '';\n\n if (state.tokens[endDelim.token - 1].type === 'text' &&\n state.tokens[endDelim.token - 1].content === '=') {\n\n loneMarkers.push(endDelim.token - 1);\n }\n }\n\n // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n while (loneMarkers.length) {\n i = loneMarkers.pop();\n j = i + 1;\n\n while (j < state.tokens.length && state.tokens[j].type === 'mark_close') {\n j++;\n }\n\n j--;\n\n if (i !== j) {\n token = state.tokens[j];\n state.tokens[j] = state.tokens[i];\n state.tokens[i] = token;\n }\n }\n }\n\n md.inline.ruler.before('emphasis', 'mark', tokenize);\n md.inline.ruler2.before('emphasis', 'mark', postProcess);\n};\n","// Normalize input string\n\n'use strict';\n\n\nvar NEWLINES_RE = /\\r[\\n\\u0085]?|[\\u2424\\u2028\\u0085]/g;\nvar NULL_RE = /\\u0000/g;\n\n\nmodule.exports = function inline(state) {\n var str;\n\n // Normalize newlines\n str = state.src.replace(NEWLINES_RE, '\\n');\n\n // Replace NULL characters\n str = str.replace(NULL_RE, '\\uFFFD');\n\n state.src = str;\n};\n","/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Parser rules\n\nvar _rules = [\n [ 'text', require('./rules_inline/text') ],\n [ 'newline', require('./rules_inline/newline') ],\n [ 'escape', require('./rules_inline/escape') ],\n [ 'backticks', require('./rules_inline/backticks') ],\n [ 'strikethrough', require('./rules_inline/strikethrough').tokenize ],\n [ 'emphasis', require('./rules_inline/emphasis').tokenize ],\n [ 'link', require('./rules_inline/link') ],\n [ 'image', require('./rules_inline/image') ],\n [ 'autolink', require('./rules_inline/autolink') ],\n [ 'html_inline', require('./rules_inline/html_inline') ],\n [ 'entity', require('./rules_inline/entity') ]\n];\n\nvar _rules2 = [\n [ 'balance_pairs', require('./rules_inline/balance_pairs') ],\n [ 'strikethrough', require('./rules_inline/strikethrough').postProcess ],\n [ 'emphasis', require('./rules_inline/emphasis').postProcess ],\n [ 'text_collapse', require('./rules_inline/text_collapse') ]\n];\n\n\n/**\n * new ParserInline()\n **/\nfunction ParserInline() {\n var i;\n\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n this.ruler = new Ruler();\n\n for (i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n this.ruler2 = new Ruler();\n\n for (i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n }\n}\n\n\n// Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\nParserInline.prototype.skipToken = function (state) {\n var ok, i, pos = state.pos,\n rules = this.ruler.getRules(''),\n len = rules.length,\n maxNesting = state.md.options.maxNesting,\n cache = state.cache;\n\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos];\n return;\n }\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++;\n ok = rules[i](state, true);\n state.level--;\n\n if (ok) { break; }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax;\n }\n\n if (!ok) { state.pos++; }\n cache[pos] = state.pos;\n};\n\n\n// Generate tokens for input range\n//\nParserInline.prototype.tokenize = function (state) {\n var ok, i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n end = state.posMax,\n maxNesting = state.md.options.maxNesting;\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n ok = rules[i](state, false);\n if (ok) { break; }\n }\n }\n\n if (ok) {\n if (state.pos >= end) { break; }\n continue;\n }\n\n state.pending += state.src[state.pos++];\n }\n\n if (state.pending) {\n state.pushPending();\n }\n};\n\n\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n var i, rules, len;\n var state = new this.State(str, md, env, outTokens);\n\n this.tokenize(state);\n\n rules = this.ruler2.getRules('');\n len = rules.length;\n\n for (i = 0; i < len; i++) {\n rules[i](state);\n }\n};\n\n\nParserInline.prototype.State = require('./rules_inline/state_inline');\n\n\nmodule.exports = ParserInline;\n","module.exports=/[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/","/**\n * These objects store data about MathML nodes. This is the MathML equivalent\n * of the types in domTree.js. Since MathML handles its own rendering, and\n * since we're mainly using MathML to improve accessibility, we don't manage\n * any of the styling state that the plain DOM nodes do.\n *\n * The `toNode` and `toMarkup` functions work simlarly to how they do in\n * domTree.js, creating namespaced DOM nodes and HTML text markup respectively.\n */\n\nvar utils = require(\"./utils\");\n\n/**\n * This node represents a general purpose MathML node of any type. The\n * constructor requires the type of node to create (for example, `\"mo\"` or\n * `\"mspace\"`, corresponding to `` and `` tags).\n */\nfunction MathNode(type, children) {\n this.type = type;\n this.attributes = {};\n this.children = children || [];\n}\n\n/**\n * Sets an attribute on a MathML node. MathML depends on attributes to convey a\n * semantic content, so this is used heavily.\n */\nMathNode.prototype.setAttribute = function(name, value) {\n this.attributes[name] = value;\n};\n\n/**\n * Converts the math node into a MathML-namespaced DOM element.\n */\nMathNode.prototype.toNode = function() {\n var node = document.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\", this.type);\n\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n for (var i = 0; i < this.children.length; i++) {\n node.appendChild(this.children[i].toNode());\n }\n\n return node;\n};\n\n/**\n * Converts the math node into an HTML markup string.\n */\nMathNode.prototype.toMarkup = function() {\n var markup = \"<\" + this.type;\n\n // Add the attributes\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n markup += \" \" + attr + \"=\\\"\";\n markup += utils.escape(this.attributes[attr]);\n markup += \"\\\"\";\n }\n }\n\n markup += \">\";\n\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n markup += \"\";\n\n return markup;\n};\n\n/**\n * This node represents a piece of text.\n */\nfunction TextNode(text) {\n this.text = text;\n}\n\n/**\n * Converts the text node into a DOM text node.\n */\nTextNode.prototype.toNode = function() {\n return document.createTextNode(this.text);\n};\n\n/**\n * Converts the text node into HTML markup (which is just the text itself).\n */\nTextNode.prototype.toMarkup = function() {\n return utils.escape(this.text);\n};\n\nmodule.exports = {\n MathNode: MathNode,\n TextNode: TextNode,\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","// Enclose abbreviations in tags\n//\n'use strict';\n\n\nmodule.exports = function sub_plugin(md) {\n var escapeRE = md.utils.escapeRE,\n arrayReplaceAt = md.utils.arrayReplaceAt;\n\n // ASCII characters in Cc, Sc, Sm, Sk categories we should terminate on;\n // you can check character classes here:\n // http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\n var OTHER_CHARS = ' \\r\\n$+<=>^`|~';\n\n var UNICODE_PUNCT_RE = md.utils.lib.ucmicro.P.source;\n var UNICODE_SPACE_RE = md.utils.lib.ucmicro.Z.source;\n\n\n function abbr_def(state, startLine, endLine, silent) {\n var label, title, ch, labelStart, labelEnd,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (pos + 2 >= max) { return false; }\n\n if (state.src.charCodeAt(pos++) !== 0x2A/* * */) { return false; }\n if (state.src.charCodeAt(pos++) !== 0x5B/* [ */) { return false; }\n\n labelStart = pos;\n\n for (; pos < max; pos++) {\n ch = state.src.charCodeAt(pos);\n if (ch === 0x5B /* [ */) {\n return false;\n } else if (ch === 0x5D /* ] */) {\n labelEnd = pos;\n break;\n } else if (ch === 0x5C /* \\ */) {\n pos++;\n }\n }\n\n if (labelEnd < 0 || state.src.charCodeAt(labelEnd + 1) !== 0x3A/* : */) {\n return false;\n }\n\n if (silent) { return true; }\n\n label = state.src.slice(labelStart, labelEnd).replace(/\\\\(.)/g, '$1');\n title = state.src.slice(labelEnd + 2, max).trim();\n if (label.length === 0) { return false; }\n if (title.length === 0) { return false; }\n if (!state.env.abbreviations) { state.env.abbreviations = {}; }\n // prepend ':' to avoid conflict with Object.prototype members\n if (typeof state.env.abbreviations[':' + label] === 'undefined') {\n state.env.abbreviations[':' + label] = title;\n }\n\n state.line = startLine + 1;\n return true;\n }\n\n\n function abbr_replace(state) {\n var i, j, l, tokens, token, text, nodes, pos, reg, m, regText, regSimple,\n currentToken,\n blockTokens = state.tokens;\n\n if (!state.env.abbreviations) { return; }\n\n regSimple = new RegExp('(?:' +\n Object.keys(state.env.abbreviations).map(function (x) {\n return x.substr(1);\n }).sort(function (a, b) {\n return b.length - a.length;\n }).map(escapeRE).join('|') +\n ')');\n\n regText = '(^|' + UNICODE_PUNCT_RE + '|' + UNICODE_SPACE_RE +\n '|[' + OTHER_CHARS.split('').map(escapeRE).join('') + '])'\n + '(' + Object.keys(state.env.abbreviations).map(function (x) {\n return x.substr(1);\n }).sort(function (a, b) {\n return b.length - a.length;\n }).map(escapeRE).join('|') + ')'\n + '($|' + UNICODE_PUNCT_RE + '|' + UNICODE_SPACE_RE +\n '|[' + OTHER_CHARS.split('').map(escapeRE).join('') + '])';\n\n reg = new RegExp(regText, 'g');\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline') { continue; }\n tokens = blockTokens[j].children;\n\n // We scan from the end, to keep position when new tags added.\n for (i = tokens.length - 1; i >= 0; i--) {\n currentToken = tokens[i];\n if (currentToken.type !== 'text') { continue; }\n\n pos = 0;\n text = currentToken.content;\n reg.lastIndex = 0;\n nodes = [];\n\n // fast regexp run to determine whether there are any abbreviated words\n // in the current token\n if (!regSimple.test(text)) { continue; }\n\n while ((m = reg.exec(text))) {\n if (m.index > 0 || m[1].length > 0) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(pos, m.index + m[1].length);\n nodes.push(token);\n }\n\n token = new state.Token('abbr_open', 'abbr', 1);\n token.attrs = [ [ 'title', state.env.abbreviations[':' + m[2]] ] ];\n nodes.push(token);\n\n token = new state.Token('text', '', 0);\n token.content = m[2];\n nodes.push(token);\n\n token = new state.Token('abbr_close', 'abbr', -1);\n nodes.push(token);\n\n reg.lastIndex -= m[3].length;\n pos = reg.lastIndex;\n }\n\n if (!nodes.length) { continue; }\n\n if (pos < text.length) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(pos);\n nodes.push(token);\n }\n\n // replace current node\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n }\n }\n }\n\n md.block.ruler.before('reference', 'abbr_def', abbr_def, { alt: [ 'paragraph', 'reference' ] });\n\n md.core.ruler.after('linkify', 'abbr_replace', abbr_replace);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","// Process ~subscript~\n\n'use strict';\n\n// same as UNESCAPE_MD_RE plus a space\nvar UNESCAPE_RE = /\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;\n\n\nfunction subscript(state, silent) {\n var found,\n content,\n token,\n max = state.posMax,\n start = state.pos;\n\n if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; }\n if (silent) { return false; } // don't run any pairs in validation mode\n if (start + 2 >= max) { return false; }\n\n state.pos = start + 1;\n\n while (state.pos < max) {\n if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) {\n found = true;\n break;\n }\n\n state.md.inline.skipToken(state);\n }\n\n if (!found || start + 1 === state.pos) {\n state.pos = start;\n return false;\n }\n\n content = state.src.slice(start + 1, state.pos);\n\n // don't allow unescaped spaces/newlines inside\n if (content.match(/(^|[^\\\\])(\\\\\\\\)*\\s/)) {\n state.pos = start;\n return false;\n }\n\n // found!\n state.posMax = state.pos;\n state.pos = start + 1;\n\n // Earlier we checked !silent, but this implementation does not need it\n token = state.push('sub_open', 'sub', 1);\n token.markup = '~';\n\n token = state.push('text', '', 0);\n token.content = content.replace(UNESCAPE_RE, '$1');\n\n token = state.push('sub_close', 'sub', -1);\n token.markup = '~';\n\n state.pos = state.posMax + 1;\n state.posMax = max;\n return true;\n}\n\n\nmodule.exports = function sub_plugin(md) {\n md.inline.ruler.after('emphasis', 'sub', subscript);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// Just a shortcut for bulk export\n'use strict';\n\n\nexports.parseLinkLabel = require('./parse_link_label');\nexports.parseLinkDestination = require('./parse_link_destination');\nexports.parseLinkTitle = require('./parse_link_title');\n","// Regexps to match html elements\n\n'use strict';\n\nvar attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\n\nvar unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar single_quoted = \"'[^']*'\";\nvar double_quoted = '\"[^\"]*\"';\n\nvar attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')';\n\nvar attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)';\n\nvar open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\n\nvar close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '|';\nvar processing = '<[?].*?[?]>';\nvar declaration = ']*>';\nvar cdata = '';\n\nvar HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +\n '|' + processing + '|' + declaration + '|' + cdata + ')');\nvar HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')');\n\nmodule.exports.HTML_TAG_RE = HTML_TAG_RE;\nmodule.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE;\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","/*\n * bit reservoir source file\n *\n * Copyright (c) 1999-2000 Mark Taylor\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Reservoir.java,v 1.9 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n/**\n * ResvFrameBegin:
\n * Called (repeatedly) at the beginning of a frame. Updates the maximum size of\n * the reservoir, and checks to make sure main_data_begin was set properly by\n * the formatter
\n * Background information:\n * \n * This is the original text from the ISO standard. Because of sooo many bugs\n * and irritations correcting comments are added in brackets []. A '^W' means\n * you should remove the last word.\n * \n *
\n *  1. The following rule can be used to calculate the maximum\n *     number of bits used for one granule [^W frame]:
\n * At the highest possible bitrate of Layer III (320 kbps\n * per stereo signal [^W^W^W], 48 kHz) the frames must be of\n * [^W^W^W are designed to have] constant length, i.e.\n * one buffer [^W^W the frame] length is:
\n * \n * 320 kbps * 1152/48 kHz = 7680 bit = 960 byte\n * \n * This value is used as the maximum buffer per channel [^W^W] at\n * lower bitrates [than 320 kbps]. At 64 kbps mono or 128 kbps\n * stereo the main granule length is 64 kbps * 576/48 kHz = 768 bit\n * [per granule and channel] at 48 kHz sampling frequency.\n * This means that there is a maximum deviation (short time buffer\n * [= reservoir]) of 7680 - 2*2*768 = 4608 bits is allowed at 64 kbps.\n * The actual deviation is equal to the number of bytes [with the\n * meaning of octets] denoted by the main_data_end offset pointer.\n * The actual maximum deviation is (2^9-1)*8 bit = 4088 bits\n * [for MPEG-1 and (2^8-1)*8 bit for MPEG-2, both are hard limits].\n * ... The xchange of buffer bits between the left and right channel\n * is allowed without restrictions [exception: dual channel].\n * Because of the [constructed] constraint on the buffer size\n * main_data_end is always set to 0 in the case of bit_rate_index==14,\n * i.e. data rate 320 kbps per stereo signal [^W^W^W]. In this case\n * all data are allocated between adjacent header [^W sync] words\n * [, i.e. there is no buffering at all].\n *
\n */\n\nvar common = require('./common.js');\nvar assert = common.assert;\n\nfunction Reservoir() {\n\tvar bs;\n\n\tthis.setModules = function(_bs) {\n\t\tbs = _bs;\n\t}\n\n\tthis.ResvFrameBegin = function(gfp, mean_bits) {\n\t\tvar gfc = gfp.internal_flags;\n\t\tvar maxmp3buf;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tvar frameLength = bs.getframebits(gfp);\n\t\tmean_bits.bits = (frameLength - gfc.sideinfo_len * 8) / gfc.mode_gr;\n\n\t\t/**\n\t\t *
\n\t\t *  Meaning of the variables:\n\t\t *      resvLimit: (0, 8, ..., 8*255 (MPEG-2), 8*511 (MPEG-1))\n\t\t *          Number of bits can be stored in previous frame(s) due to\n\t\t *          counter size constaints\n\t\t *      maxmp3buf: ( ??? ... 8*1951 (MPEG-1 and 2), 8*2047 (MPEG-2.5))\n\t\t *          Number of bits allowed to encode one frame (you can take 8*511 bit\n\t\t *          from the bit reservoir and at most 8*1440 bit from the current\n\t\t *          frame (320 kbps, 32 kHz), so 8*1951 bit is the largest possible\n\t\t *          value for MPEG-1 and -2)\n\t\t * \n\t\t *          maximum allowed granule/channel size times 4 = 8*2047 bits.,\n\t\t *          so this is the absolute maximum supported by the format.\n\t\t * \n\t\t * \n\t\t *      fullFrameBits:  maximum number of bits available for encoding\n\t\t *                      the current frame.\n\t\t * \n\t\t *      mean_bits:      target number of bits per granule.\n\t\t * \n\t\t *      frameLength:\n\t\t * \n\t\t *      gfc.ResvMax:   maximum allowed reservoir\n\t\t * \n\t\t *      gfc.ResvSize:  current reservoir size\n\t\t * \n\t\t *      l3_side.resvDrain_pre:\n\t\t *         ancillary data to be added to previous frame:\n\t\t *         (only usefull in VBR modes if it is possible to have\n\t\t *         maxmp3buf < fullFrameBits)).  Currently disabled,\n\t\t *         see #define NEW_DRAIN\n\t\t *         2010-02-13: RH now enabled, it seems to be needed for CBR too,\n\t\t *                     as there exists one example, where the FhG decoder\n\t\t *                     can't decode a -b320 CBR file anymore.\n\t\t * \n\t\t *      l3_side.resvDrain_post:\n\t\t *         ancillary data to be added to this frame:\n\t\t * \n\t\t * 
\n\t\t */\n\n\t\t/* main_data_begin has 9 bits in MPEG-1, 8 bits MPEG-2 */\n\t\tvar resvLimit = (8 * 256) * gfc.mode_gr - 8;\n\n\t\t/*\n\t\t * maximum allowed frame size. dont use more than this number of bits,\n\t\t * even if the frame has the space for them:\n\t\t */\n\t\tif (gfp.brate > 320) {\n\t\t\t/* in freeformat the buffer is constant */\n\t\t\tmaxmp3buf = 8 * ((int) ((gfp.brate * 1000)\n\t\t\t\t\t/ (gfp.out_samplerate / 1152) / 8 + .5));\n\t\t} else {\n\t\t\t/*\n\t\t\t * all mp3 decoders should have enough buffer to handle this value:\n\t\t\t * size of a 320kbps 32kHz frame\n\t\t\t */\n\t\t\tmaxmp3buf = 8 * 1440;\n\n\t\t\t/*\n\t\t\t * Bouvigne suggests this more lax interpretation of the ISO doc\n\t\t\t * instead of using 8*960.\n\t\t\t */\n\n\t\t\tif (gfp.strict_ISO) {\n\t\t\t\tmaxmp3buf = 8 * ((int) (320000 / (gfp.out_samplerate / 1152) / 8 + .5));\n\t\t\t}\n\t\t}\n\n\t\tgfc.ResvMax = maxmp3buf - frameLength;\n\t\tif (gfc.ResvMax > resvLimit)\n\t\t\tgfc.ResvMax = resvLimit;\n\t\tif (gfc.ResvMax < 0 || gfp.disable_reservoir)\n\t\t\tgfc.ResvMax = 0;\n\n\t\tvar fullFrameBits = mean_bits.bits * gfc.mode_gr\n\t\t\t\t+ Math.min(gfc.ResvSize, gfc.ResvMax);\n\n\t\tif (fullFrameBits > maxmp3buf)\n\t\t\tfullFrameBits = maxmp3buf;\n\n\t\tassert (0 == gfc.ResvMax % 8);\n\t\tassert (gfc.ResvMax >= 0);\n\n\t\tl3_side.resvDrain_pre = 0;\n\n\t\t// frame analyzer code\n\t\tif (gfc.pinfo != null) {\n\t\t\t/*\n\t\t\t * expected bits per channel per granule [is this also right for\n\t\t\t * mono/stereo, MPEG-1/2 ?]\n\t\t\t */\n\t\t\tgfc.pinfo.mean_bits = mean_bits.bits / 2;\n\t\t\tgfc.pinfo.resvsize = gfc.ResvSize;\n\t\t}\n\n\t\treturn fullFrameBits;\n\t}\n\n\t/**\n\t * returns targ_bits: target number of bits to use for 1 granule
\n\t * extra_bits: amount extra available from reservoir
\n\t * Mark Taylor 4/99\n\t */\n\tthis.ResvMaxBits = function(gfp, mean_bits, targ_bits, cbr) {\n\t\tvar gfc = gfp.internal_flags;\n\t\tvar add_bits;\n var ResvSize = gfc.ResvSize, ResvMax = gfc.ResvMax;\n\n\t\t/* compensate the saved bits used in the 1st granule */\n\t\tif (cbr != 0)\n\t\t\tResvSize += mean_bits;\n\n\t\tif ((gfc.substep_shaping & 1) != 0)\n\t\t\tResvMax *= 0.9;\n\n\t\ttarg_bits.bits = mean_bits;\n\n\t\t/* extra bits if the reservoir is almost full */\n\t\tif (ResvSize * 10 > ResvMax * 9) {\n\t\t\tadd_bits = ResvSize - (ResvMax * 9) / 10;\n\t\t\ttarg_bits.bits += add_bits;\n\t\t\tgfc.substep_shaping |= 0x80;\n\t\t} else {\n\t\t\tadd_bits = 0;\n\t\t\tgfc.substep_shaping &= 0x7f;\n\t\t\t/*\n\t\t\t * build up reservoir. this builds the reservoir a little slower\n\t\t\t * than FhG. It could simple be mean_bits/15, but this was rigged to\n\t\t\t * always produce 100 (the old value) at 128kbs\n\t\t\t */\n\t\t\tif (!gfp.disable_reservoir && 0 == (gfc.substep_shaping & 1))\n\t\t\t\ttarg_bits.bits -= .1 * mean_bits;\n\t\t}\n\n\t\t/* amount from the reservoir we are allowed to use. ISO says 6/10 */\n\t\tvar extra_bits = (ResvSize < (gfc.ResvMax * 6) / 10 ? ResvSize\n\t\t\t\t: (gfc.ResvMax * 6) / 10);\n\t\textra_bits -= add_bits;\n\n\t\tif (extra_bits < 0)\n\t\t\textra_bits = 0;\n\t\treturn extra_bits;\n\t}\n\n\t/**\n\t * Called after a granule's bit allocation. Readjusts the size of the\n\t * reservoir to reflect the granule's usage.\n\t */\n\tthis.ResvAdjust = function(gfc, gi) {\n\t\tgfc.ResvSize -= gi.part2_3_length + gi.part2_length;\n\t}\n\n\t/**\n\t * Called after all granules in a frame have been allocated. Makes sure that\n\t * the reservoir size is within limits, possibly by adding stuffing bits.\n\t */\n\tthis.ResvFrameEnd = function(gfc, mean_bits) {\n\t\tvar over_bits;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tgfc.ResvSize += mean_bits * gfc.mode_gr;\n\t\tvar stuffingBits = 0;\n\t\tl3_side.resvDrain_post = 0;\n\t\tl3_side.resvDrain_pre = 0;\n\n\t\t/* we must be byte aligned */\n\t\tif ((over_bits = gfc.ResvSize % 8) != 0)\n\t\t\tstuffingBits += over_bits;\n\n\t\tover_bits = (gfc.ResvSize - stuffingBits) - gfc.ResvMax;\n\t\tif (over_bits > 0) {\n\t\t\tassert (0 == over_bits % 8);\n\t\t\tassert (over_bits >= 0);\n\t\t\tstuffingBits += over_bits;\n\t\t}\n\n\t\t/*\n\t\t * NOTE: enabling the NEW_DRAIN code fixes some problems with FhG\n\t\t * decoder shipped with MS Windows operating systems. Using this, it is\n\t\t * even possible to use Gabriel's lax buffer consideration again, which\n\t\t * assumes, any decoder should have a buffer large enough for a 320 kbps\n\t\t * frame at 32 kHz sample rate.\n\t\t * \n\t\t * old drain code: lame -b320 BlackBird.wav --. does not play with\n\t\t * GraphEdit.exe using FhG decoder V1.5 Build 50\n\t\t * \n\t\t * new drain code: lame -b320 BlackBird.wav --. plays fine with\n\t\t * GraphEdit.exe using FhG decoder V1.5 Build 50\n\t\t * \n\t\t * Robert Hegemann, 2010-02-13.\n\t\t */\n\t\t/*\n\t\t * drain as many bits as possible into previous frame ancillary data In\n\t\t * particular, in VBR mode ResvMax may have changed, and we have to make\n\t\t * sure main_data_begin does not create a reservoir bigger than ResvMax\n\t\t * mt 4/00\n\t\t */\n\t\t{\n\t\t\tvar mdb_bytes = Math.min(l3_side.main_data_begin * 8, stuffingBits) / 8;\n\t\t\tl3_side.resvDrain_pre += 8 * mdb_bytes;\n\t\t\tstuffingBits -= 8 * mdb_bytes;\n\t\t\tgfc.ResvSize -= 8 * mdb_bytes;\n\t\t\tl3_side.main_data_begin -= mdb_bytes;\n\t\t}\n\t\t/* drain the rest into this frames ancillary data */\n\t\tl3_side.resvDrain_post += stuffingBits;\n\t\tgfc.ResvSize -= stuffingBits;\n\t}\n}\n\nmodule.exports = Reservoir;\n","/**\n * This file contains information about the options that the Parser carries\n * around with it while parsing. Data is held in an `Options` object, and when\n * recursing, a new `Options` object can be created with the `.with*` and\n * `.reset` functions.\n */\n\n/**\n * This is the main options class. It contains the style, size, color, and font\n * of the current parse level. It also contains the style and size of the parent\n * parse level, so size changes can be handled efficiently.\n *\n * Each of the `.with*` and `.reset` functions passes its current style and size\n * as the parentStyle and parentSize of the new options class, so parent\n * handling is taken care of automatically.\n */\nfunction Options(data) {\n this.style = data.style;\n this.color = data.color;\n this.size = data.size;\n this.phantom = data.phantom;\n this.font = data.font;\n\n if (data.parentStyle === undefined) {\n this.parentStyle = data.style;\n } else {\n this.parentStyle = data.parentStyle;\n }\n\n if (data.parentSize === undefined) {\n this.parentSize = data.size;\n } else {\n this.parentSize = data.parentSize;\n }\n}\n\n/**\n * Returns a new options object with the same properties as \"this\". Properties\n * from \"extension\" will be copied to the new options object.\n */\nOptions.prototype.extend = function(extension) {\n var data = {\n style: this.style,\n size: this.size,\n color: this.color,\n parentStyle: this.style,\n parentSize: this.size,\n phantom: this.phantom,\n font: this.font,\n };\n\n for (var key in extension) {\n if (extension.hasOwnProperty(key)) {\n data[key] = extension[key];\n }\n }\n\n return new Options(data);\n};\n\n/**\n * Create a new options object with the given style.\n */\nOptions.prototype.withStyle = function(style) {\n return this.extend({\n style: style,\n });\n};\n\n/**\n * Create a new options object with the given size.\n */\nOptions.prototype.withSize = function(size) {\n return this.extend({\n size: size,\n });\n};\n\n/**\n * Create a new options object with the given color.\n */\nOptions.prototype.withColor = function(color) {\n return this.extend({\n color: color,\n });\n};\n\n/**\n * Create a new options object with \"phantom\" set to true.\n */\nOptions.prototype.withPhantom = function() {\n return this.extend({\n phantom: true,\n });\n};\n\n/**\n * Create a new options objects with the give font.\n */\nOptions.prototype.withFont = function(font) {\n return this.extend({\n font: font,\n });\n};\n\n/**\n * Create a new options object with the same style, size, and color. This is\n * used so that parent style and size changes are handled correctly.\n */\nOptions.prototype.reset = function() {\n return this.extend({});\n};\n\n/**\n * A map of color names to CSS colors.\n * TODO(emily): Remove this when we have real macros\n */\nvar colorMap = {\n \"katex-blue\": \"#6495ed\",\n \"katex-orange\": \"#ffa500\",\n \"katex-pink\": \"#ff00af\",\n \"katex-red\": \"#df0030\",\n \"katex-green\": \"#28ae7b\",\n \"katex-gray\": \"gray\",\n \"katex-purple\": \"#9d38bd\",\n \"katex-blueA\": \"#c7e9f1\",\n \"katex-blueB\": \"#9cdceb\",\n \"katex-blueC\": \"#58c4dd\",\n \"katex-blueD\": \"#29abca\",\n \"katex-blueE\": \"#1c758a\",\n \"katex-tealA\": \"#acead7\",\n \"katex-tealB\": \"#76ddc0\",\n \"katex-tealC\": \"#5cd0b3\",\n \"katex-tealD\": \"#55c1a7\",\n \"katex-tealE\": \"#49a88f\",\n \"katex-greenA\": \"#c9e2ae\",\n \"katex-greenB\": \"#a6cf8c\",\n \"katex-greenC\": \"#83c167\",\n \"katex-greenD\": \"#77b05d\",\n \"katex-greenE\": \"#699c52\",\n \"katex-goldA\": \"#f7c797\",\n \"katex-goldB\": \"#f9b775\",\n \"katex-goldC\": \"#f0ac5f\",\n \"katex-goldD\": \"#e1a158\",\n \"katex-goldE\": \"#c78d46\",\n \"katex-redA\": \"#f7a1a3\",\n \"katex-redB\": \"#ff8080\",\n \"katex-redC\": \"#fc6255\",\n \"katex-redD\": \"#e65a4c\",\n \"katex-redE\": \"#cf5044\",\n \"katex-maroonA\": \"#ecabc1\",\n \"katex-maroonB\": \"#ec92ab\",\n \"katex-maroonC\": \"#c55f73\",\n \"katex-maroonD\": \"#a24d61\",\n \"katex-maroonE\": \"#94424f\",\n \"katex-purpleA\": \"#caa3e8\",\n \"katex-purpleB\": \"#b189c6\",\n \"katex-purpleC\": \"#9a72ac\",\n \"katex-purpleD\": \"#715582\",\n \"katex-purpleE\": \"#644172\",\n \"katex-mintA\": \"#f5f9e8\",\n \"katex-mintB\": \"#edf2df\",\n \"katex-mintC\": \"#e0e5cc\",\n \"katex-grayA\": \"#fdfdfd\",\n \"katex-grayB\": \"#f7f7f7\",\n \"katex-grayC\": \"#eeeeee\",\n \"katex-grayD\": \"#dddddd\",\n \"katex-grayE\": \"#cccccc\",\n \"katex-grayF\": \"#aaaaaa\",\n \"katex-grayG\": \"#999999\",\n \"katex-grayH\": \"#555555\",\n \"katex-grayI\": \"#333333\",\n \"katex-kaBlue\": \"#314453\",\n \"katex-kaGreen\": \"#639b24\",\n};\n\n/**\n * Gets the CSS color of the current options object, accounting for the\n * `colorMap`.\n */\nOptions.prototype.getColor = function() {\n if (this.phantom) {\n return \"transparent\";\n } else {\n return colorMap[this.color] || this.color;\n }\n};\n\nmodule.exports = Options;\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// Process html entity - {, ¯, ", ...\n\n'use strict';\n\nvar entities = require('../common/entities');\nvar has = require('../common/utils').has;\nvar isValidEntityCode = require('../common/utils').isValidEntityCode;\nvar fromCodePoint = require('../common/utils').fromCodePoint;\n\n\nvar DIGITAL_RE = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i;\nvar NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\n\nmodule.exports = function entity(state, silent) {\n var ch, code, match, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; }\n\n if (pos + 1 < max) {\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x23 /* # */) {\n match = state.src.slice(pos).match(DIGITAL_RE);\n if (match) {\n if (!silent) {\n code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n }\n state.pos += match[0].length;\n return true;\n }\n } else {\n match = state.src.slice(pos).match(NAMED_RE);\n if (match) {\n if (has(entities, match[1])) {\n if (!silent) { state.pending += entities[match[1]]; }\n state.pos += match[0].length;\n return true;\n }\n }\n }\n }\n\n if (!silent) { state.pending += '&'; }\n state.pos++;\n return true;\n};\n","function HuffCodeTab(len, max, tab, hl) {\n this.xlen = len;\n this.linmax = max;\n this.table = tab;\n this.hlen = hl;\n}\n\nvar Tables = {};\n\n\nTables.t1HB = [\n 1, 1,\n 1, 0\n];\n\nTables.t2HB = [\n 1, 2, 1,\n 3, 1, 1,\n 3, 2, 0\n];\n\nTables.t3HB = [\n 3, 2, 1,\n 1, 1, 1,\n 3, 2, 0\n];\n\nTables.t5HB = [\n 1, 2, 6, 5,\n 3, 1, 4, 4,\n 7, 5, 7, 1,\n 6, 1, 1, 0\n];\n\nTables.t6HB = [\n 7, 3, 5, 1,\n 6, 2, 3, 2,\n 5, 4, 4, 1,\n 3, 3, 2, 0\n];\n\nTables.t7HB = [\n 1, 2, 10, 19, 16, 10,\n 3, 3, 7, 10, 5, 3,\n 11, 4, 13, 17, 8, 4,\n 12, 11, 18, 15, 11, 2,\n 7, 6, 9, 14, 3, 1,\n 6, 4, 5, 3, 2, 0\n];\n\nTables.t8HB = [\n 3, 4, 6, 18, 12, 5,\n 5, 1, 2, 16, 9, 3,\n 7, 3, 5, 14, 7, 3,\n 19, 17, 15, 13, 10, 4,\n 13, 5, 8, 11, 5, 1,\n 12, 4, 4, 1, 1, 0\n];\n\nTables.t9HB = [\n 7, 5, 9, 14, 15, 7,\n 6, 4, 5, 5, 6, 7,\n 7, 6, 8, 8, 8, 5,\n 15, 6, 9, 10, 5, 1,\n 11, 7, 9, 6, 4, 1,\n 14, 4, 6, 2, 6, 0\n];\n\nTables.t10HB = [\n 1, 2, 10, 23, 35, 30, 12, 17,\n 3, 3, 8, 12, 18, 21, 12, 7,\n 11, 9, 15, 21, 32, 40, 19, 6,\n 14, 13, 22, 34, 46, 23, 18, 7,\n 20, 19, 33, 47, 27, 22, 9, 3,\n 31, 22, 41, 26, 21, 20, 5, 3,\n 14, 13, 10, 11, 16, 6, 5, 1,\n 9, 8, 7, 8, 4, 4, 2, 0\n];\n\nTables.t11HB = [\n 3, 4, 10, 24, 34, 33, 21, 15,\n 5, 3, 4, 10, 32, 17, 11, 10,\n 11, 7, 13, 18, 30, 31, 20, 5,\n 25, 11, 19, 59, 27, 18, 12, 5,\n 35, 33, 31, 58, 30, 16, 7, 5,\n 28, 26, 32, 19, 17, 15, 8, 14,\n 14, 12, 9, 13, 14, 9, 4, 1,\n 11, 4, 6, 6, 6, 3, 2, 0\n];\n\nTables.t12HB = [\n 9, 6, 16, 33, 41, 39, 38, 26,\n 7, 5, 6, 9, 23, 16, 26, 11,\n 17, 7, 11, 14, 21, 30, 10, 7,\n 17, 10, 15, 12, 18, 28, 14, 5,\n 32, 13, 22, 19, 18, 16, 9, 5,\n 40, 17, 31, 29, 17, 13, 4, 2,\n 27, 12, 11, 15, 10, 7, 4, 1,\n 27, 12, 8, 12, 6, 3, 1, 0\n];\n\nTables.t13HB = [\n 1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19,\n 3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14,\n 15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16,\n 22, 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14,\n 35, 16, 60, 57, 97, 75, 114, 91, 54, 73, 55, 41, 48, 53, 23, 24,\n 58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17,\n 47, 45, 78, 74, 115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15,\n 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42,\n 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16,\n 53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11,\n 35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22,\n 53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7,\n 34, 32, 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5,\n 45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3,\n 48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2,\n 16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1\n];\n\nTables.t15HB = [\n 7, 12, 18, 53, 47, 76, 124, 108, 89, 123, 108, 119, 107, 81, 122, 63,\n 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36,\n 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33,\n 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29,\n 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27,\n 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38,\n 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30,\n 109, 53, 49, 94, 88, 75, 66, 122, 91, 73, 56, 42, 64, 44, 21, 25,\n 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20,\n 71, 34, 67, 60, 58, 49, 88, 76, 67, 106, 71, 54, 38, 39, 23, 15,\n 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9,\n 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11,\n 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7,\n 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3,\n 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1,\n 71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0\n];\n\nTables.t16HB = [\n 1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17,\n 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9,\n 15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117, 110, 209, 206, 16,\n 45, 21, 39, 69, 64, 114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26,\n 75, 36, 68, 65, 115, 101, 179, 164, 155, 264, 246, 226, 395, 382, 362, 9,\n 66, 30, 59, 56, 102, 185, 173, 265, 142, 253, 232, 400, 388, 378, 445, 16,\n 111, 54, 52, 100, 184, 178, 160, 133, 257, 244, 228, 217, 385, 366, 715, 10,\n 98, 48, 91, 88, 165, 157, 148, 261, 248, 407, 397, 372, 380, 889, 884, 8,\n 85, 84, 81, 159, 156, 143, 260, 249, 427, 401, 392, 383, 727, 713, 708, 7,\n 154, 76, 73, 141, 131, 256, 245, 426, 406, 394, 384, 735, 359, 710, 352, 11,\n 139, 129, 67, 125, 247, 233, 229, 219, 393, 743, 737, 720, 885, 882, 439, 4,\n 243, 120, 118, 115, 227, 223, 396, 746, 742, 736, 721, 712, 706, 223, 436, 6,\n 202, 224, 222, 218, 216, 389, 386, 381, 364, 888, 443, 707, 440, 437, 1728, 4,\n 747, 211, 210, 208, 370, 379, 734, 723, 714, 1735, 883, 877, 876, 3459, 865, 2,\n 377, 369, 102, 187, 726, 722, 358, 711, 709, 866, 1734, 871, 3458, 870, 434, 0,\n 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3\n];\n\nTables.t24HB = [\n 15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88,\n 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42,\n 47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315, 295, 541, 18,\n 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16,\n 147, 72, 69, 135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285, 540, 14,\n 263, 66, 129, 126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12,\n 249, 123, 121, 117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10,\n 435, 115, 111, 109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17,\n 427, 212, 208, 205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16,\n 335, 199, 197, 191, 189, 181, 174, 333, 321, 305, 289, 275, 521, 379, 371, 11,\n 668, 184, 183, 179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10,\n 652, 346, 171, 168, 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6,\n 648, 322, 316, 312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4,\n 620, 300, 296, 294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2,\n 1033, 280, 278, 274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0,\n 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3\n];\n\nTables.t32HB = [\n 1 << 0, 5 << 1, 4 << 1, 5 << 2, 6 << 1, 5 << 2, 4 << 2, 4 << 3,\n 7 << 1, 3 << 2, 6 << 2, 0 << 3, 7 << 2, 2 << 3, 3 << 3, 1 << 4\n];\n\nTables.t33HB = [\n 15 << 0, 14 << 1, 13 << 1, 12 << 2, 11 << 1, 10 << 2, 9 << 2, 8 << 3,\n 7 << 1, 6 << 2, 5 << 2, 4 << 3, 3 << 2, 2 << 3, 1 << 3, 0 << 4\n];\n\nTables.t1l = [\n 1, 4,\n 3, 5\n];\n\nTables.t2l = [\n 1, 4, 7,\n 4, 5, 7,\n 6, 7, 8\n];\n\nTables.t3l = [\n 2, 3, 7,\n 4, 4, 7,\n 6, 7, 8\n];\n\nTables.t5l = [\n 1, 4, 7, 8,\n 4, 5, 8, 9,\n 7, 8, 9, 10,\n 8, 8, 9, 10\n];\n\nTables.t6l = [\n 3, 4, 6, 8,\n 4, 4, 6, 7,\n 5, 6, 7, 8,\n 7, 7, 8, 9\n];\n\nTables.t7l = [\n 1, 4, 7, 9, 9, 10,\n 4, 6, 8, 9, 9, 10,\n 7, 7, 9, 10, 10, 11,\n 8, 9, 10, 11, 11, 11,\n 8, 9, 10, 11, 11, 12,\n 9, 10, 11, 12, 12, 12\n];\n\nTables.t8l = [\n 2, 4, 7, 9, 9, 10,\n 4, 4, 6, 10, 10, 10,\n 7, 6, 8, 10, 10, 11,\n 9, 10, 10, 11, 11, 12,\n 9, 9, 10, 11, 12, 12,\n 10, 10, 11, 11, 13, 13\n];\n\nTables.t9l = [\n 3, 4, 6, 7, 9, 10,\n 4, 5, 6, 7, 8, 10,\n 5, 6, 7, 8, 9, 10,\n 7, 7, 8, 9, 9, 10,\n 8, 8, 9, 9, 10, 11,\n 9, 9, 10, 10, 11, 11\n];\n\nTables.t10l = [\n 1, 4, 7, 9, 10, 10, 10, 11,\n 4, 6, 8, 9, 10, 11, 10, 10,\n 7, 8, 9, 10, 11, 12, 11, 11,\n 8, 9, 10, 11, 12, 12, 11, 12,\n 9, 10, 11, 12, 12, 12, 12, 12,\n 10, 11, 12, 12, 13, 13, 12, 13,\n 9, 10, 11, 12, 12, 12, 13, 13,\n 10, 10, 11, 12, 12, 13, 13, 13\n];\n\nTables.t11l = [\n 2, 4, 6, 8, 9, 10, 9, 10,\n 4, 5, 6, 8, 10, 10, 9, 10,\n 6, 7, 8, 9, 10, 11, 10, 10,\n 8, 8, 9, 11, 10, 12, 10, 11,\n 9, 10, 10, 11, 11, 12, 11, 12,\n 9, 10, 11, 12, 12, 13, 12, 13,\n 9, 9, 9, 10, 11, 12, 12, 12,\n 9, 9, 10, 11, 12, 12, 12, 12\n];\n\nTables.t12l = [\n 4, 4, 6, 8, 9, 10, 10, 10,\n 4, 5, 6, 7, 9, 9, 10, 10,\n 6, 6, 7, 8, 9, 10, 9, 10,\n 7, 7, 8, 8, 9, 10, 10, 10,\n 8, 8, 9, 9, 10, 10, 10, 11,\n 9, 9, 10, 10, 10, 11, 10, 11,\n 9, 9, 9, 10, 10, 11, 11, 12,\n 10, 10, 10, 11, 11, 11, 11, 12\n];\n\nTables.t13l = [\n 1, 5, 7, 8, 9, 10, 10, 11, 10, 11, 12, 12, 13, 13, 14, 14,\n 4, 6, 8, 9, 10, 10, 11, 11, 11, 11, 12, 12, 13, 14, 14, 14,\n 7, 8, 9, 10, 11, 11, 12, 12, 11, 12, 12, 13, 13, 14, 15, 15,\n 8, 9, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 15,\n 9, 9, 11, 11, 12, 12, 13, 13, 12, 13, 13, 14, 14, 15, 15, 16,\n 10, 10, 11, 12, 12, 12, 13, 13, 13, 13, 14, 13, 15, 15, 16, 16,\n 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16,\n 11, 11, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 18, 18,\n 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17,\n 11, 11, 12, 12, 13, 13, 13, 15, 14, 15, 15, 16, 16, 16, 18, 17,\n 11, 12, 12, 13, 13, 14, 14, 15, 14, 15, 16, 15, 16, 17, 18, 19,\n 12, 12, 12, 13, 14, 14, 14, 14, 15, 15, 15, 16, 17, 17, 17, 18,\n 12, 13, 13, 14, 14, 15, 14, 15, 16, 16, 17, 17, 17, 18, 18, 18,\n 13, 13, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 18, 17, 18, 18,\n 14, 14, 14, 15, 15, 15, 17, 16, 16, 19, 17, 17, 17, 19, 18, 18,\n 13, 14, 15, 16, 16, 16, 17, 16, 17, 17, 18, 18, 21, 20, 21, 18\n];\n\nTables.t15l = [\n 3, 5, 6, 8, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 14,\n 5, 5, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13,\n 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13,\n 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13,\n 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13,\n 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14,\n 10, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14,\n 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14,\n 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 14, 14,\n 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,\n 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 14,\n 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15,\n 12, 12, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 15, 15,\n 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15,\n 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 14, 15,\n 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15\n];\n\nTables.t16_5l = [\n 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 11,\n 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 11,\n 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 12,\n 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 13,\n 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 12,\n 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 13,\n 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 13,\n 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 13,\n 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 13,\n 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 14,\n 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 13,\n 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 14,\n 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 14,\n 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 14,\n 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 14,\n 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 12\n];\n\nTables.t16l = [\n 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 10,\n 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 10,\n 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 11,\n 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 12,\n 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 11,\n 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 12,\n 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 12,\n 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 12,\n 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 12,\n 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 13,\n 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 12,\n 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 13,\n 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 13,\n 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 13,\n 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 13,\n 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10\n];\n\nTables.t24l = [\n 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 13, 10,\n 5, 6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 10,\n 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 9,\n 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 9,\n 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 9,\n 10, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 9,\n 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 9,\n 11, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 10,\n 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 10,\n 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 10,\n 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,\n 12, 12, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 10,\n 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10,\n 13, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 10,\n 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 6\n];\n\nTables.t32l = [\n 1 + 0, 4 + 1, 4 + 1, 5 + 2, 4 + 1, 6 + 2, 5 + 2, 6 + 3,\n 4 + 1, 5 + 2, 5 + 2, 6 + 3, 5 + 2, 6 + 3, 6 + 3, 6 + 4\n];\n\nTables.t33l = [\n 4 + 0, 4 + 1, 4 + 1, 4 + 2, 4 + 1, 4 + 2, 4 + 2, 4 + 3,\n 4 + 1, 4 + 2, 4 + 2, 4 + 3, 4 + 2, 4 + 3, 4 + 3, 4 + 4\n];\n\nTables.ht = [\n /* xlen, linmax, table, hlen */\n new HuffCodeTab(0, 0, null, null),\n new HuffCodeTab(2, 0, Tables.t1HB, Tables.t1l),\n new HuffCodeTab(3, 0, Tables.t2HB, Tables.t2l),\n new HuffCodeTab(3, 0, Tables.t3HB, Tables.t3l),\n new HuffCodeTab(0, 0, null, null), /* Apparently not used */\n new HuffCodeTab(4, 0, Tables.t5HB, Tables.t5l),\n new HuffCodeTab(4, 0, Tables.t6HB, Tables.t6l),\n new HuffCodeTab(6, 0, Tables.t7HB, Tables.t7l),\n new HuffCodeTab(6, 0, Tables.t8HB, Tables.t8l),\n new HuffCodeTab(6, 0, Tables.t9HB, Tables.t9l),\n new HuffCodeTab(8, 0, Tables.t10HB, Tables.t10l),\n new HuffCodeTab(8, 0, Tables.t11HB, Tables.t11l),\n new HuffCodeTab(8, 0, Tables.t12HB, Tables.t12l),\n new HuffCodeTab(16, 0, Tables.t13HB, Tables.t13l),\n new HuffCodeTab(0, 0, null, Tables.t16_5l), /* Apparently not used */\n new HuffCodeTab(16, 0, Tables.t15HB, Tables.t15l),\n\n new HuffCodeTab(1, 1, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(2, 3, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(3, 7, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(4, 15, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(6, 63, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(8, 255, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(10, 1023, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(13, 8191, Tables.t16HB, Tables.t16l),\n\n new HuffCodeTab(4, 15, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(5, 31, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(6, 63, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(7, 127, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(8, 255, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(9, 511, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(11, 2047, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(13, 8191, Tables.t24HB, Tables.t24l),\n\n new HuffCodeTab(0, 0, Tables.t32HB, Tables.t32l),\n new HuffCodeTab(0, 0, Tables.t33HB, Tables.t33l),\n];\n\n/**\n * \n * for (i = 0; i < 16*16; i++) [\n * largetbl[i] = ((ht[16].hlen[i]) << 16) + ht[24].hlen[i];\n * ]\n * \n *\n */\nTables.largetbl = [\n 0x010004, 0x050005, 0x070007, 0x090008, 0x0a0009, 0x0a000a, 0x0b000a, 0x0b000b,\n 0x0c000b, 0x0c000c, 0x0c000c, 0x0d000c, 0x0d000c, 0x0d000c, 0x0e000d, 0x0a000a,\n 0x040005, 0x060006, 0x080007, 0x090008, 0x0a0009, 0x0b000a, 0x0b000a, 0x0b000b,\n 0x0c000b, 0x0c000b, 0x0c000c, 0x0d000c, 0x0e000c, 0x0d000c, 0x0e000c, 0x0a000a,\n 0x070007, 0x080007, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000b,\n 0x0d000b, 0x0c000b, 0x0d000b, 0x0d000c, 0x0d000c, 0x0e000c, 0x0e000d, 0x0b0009,\n 0x090008, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0c000b,\n 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0c0009,\n 0x0a0009, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000a, 0x0d000b,\n 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000d, 0x0b0009,\n 0x0a000a, 0x0a0009, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0e000b,\n 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0c0009,\n 0x0b000a, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0d000b, 0x0d000b,\n 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000d, 0x0c0009,\n 0x0b000b, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b,\n 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x11000d, 0x11000d, 0x0c000a,\n 0x0b000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b,\n 0x0f000b, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000d, 0x10000d, 0x0c000a,\n 0x0c000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, 0x0f000c,\n 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0f000d, 0x10000d, 0x0f000d, 0x0d000a,\n 0x0c000c, 0x0d000b, 0x0c000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c,\n 0x0f000c, 0x10000c, 0x10000c, 0x10000d, 0x11000d, 0x11000d, 0x10000d, 0x0c000a,\n 0x0d000c, 0x0d000c, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x10000c,\n 0x10000c, 0x10000c, 0x10000c, 0x10000d, 0x10000d, 0x0f000d, 0x10000d, 0x0d000a,\n 0x0d000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c,\n 0x0f000c, 0x11000c, 0x10000d, 0x10000d, 0x10000d, 0x10000d, 0x12000d, 0x0d000a,\n 0x0f000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000c,\n 0x10000d, 0x12000d, 0x11000d, 0x11000d, 0x11000d, 0x13000d, 0x11000d, 0x0d000a,\n 0x0e000d, 0x0f000c, 0x0d000c, 0x0e000c, 0x10000c, 0x10000c, 0x0f000c, 0x10000d,\n 0x10000d, 0x11000d, 0x12000d, 0x11000d, 0x13000d, 0x11000d, 0x10000d, 0x0d000a,\n 0x0a0009, 0x0a0009, 0x0a0009, 0x0b0009, 0x0b0009, 0x0c0009, 0x0c0009, 0x0c0009,\n 0x0d0009, 0x0d0009, 0x0d0009, 0x0d000a, 0x0d000a, 0x0d000a, 0x0d000a, 0x0a0006\n];\n/**\n * \n * for (i = 0; i < 3*3; i++) [\n * table23[i] = ((ht[2].hlen[i]) << 16) + ht[3].hlen[i];\n * ]\n * \n *\n */\nTables.table23 = [\n 0x010002, 0x040003, 0x070007,\n 0x040004, 0x050004, 0x070007,\n 0x060006, 0x070007, 0x080008\n];\n\n/**\n * \n * for (i = 0; i < 4*4; i++) [\n * table56[i] = ((ht[5].hlen[i]) << 16) + ht[6].hlen[i];\n * ]\n * \n *\n */\nTables.table56 = [\n 0x010003, 0x040004, 0x070006, 0x080008, 0x040004, 0x050004, 0x080006, 0x090007,\n 0x070005, 0x080006, 0x090007, 0x0a0008, 0x080007, 0x080007, 0x090008, 0x0a0009\n];\n\nTables.bitrate_table = [\n [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1], /* MPEG 2 */\n [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1], /* MPEG 1 */\n [0, 8, 16, 24, 32, 40, 48, 56, 64, -1, -1, -1, -1, -1, -1, -1], /* MPEG 2.5 */\n];\n\n/**\n * MPEG 2, MPEG 1, MPEG 2.5.\n */\nTables.samplerate_table = [\n [22050, 24000, 16000, -1],\n [44100, 48000, 32000, -1],\n [11025, 12000, 8000, -1],\n];\n\n/**\n * This is the scfsi_band table from 2.4.2.7 of the IS.\n */\nTables.scfsi_band = [0, 6, 11, 16, 21];\n\nmodule.exports = Tables;\n","// HTML block\n\n'use strict';\n\n\nvar block_names = require('../common/html_blocks');\nvar HTML_OPEN_CLOSE_TAG_RE = require('../common/html_re').HTML_OPEN_CLOSE_TAG_RE;\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nvar HTML_SEQUENCES = [\n [ /^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true ],\n [ /^/, true ],\n [ /^<\\?/, /\\?>/, true ],\n [ /^/, true ],\n [ /^/, true ],\n [ new RegExp('^|$))', 'i'), /^$/, true ],\n [ new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false ]\n];\n\n\nmodule.exports = function html_block(state, startLine, endLine, silent) {\n var i, nextLine, token, lineText,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (!state.md.options.html) { return false; }\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n lineText = state.src.slice(pos, max);\n\n for (i = 0; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) { break; }\n }\n\n if (i === HTML_SEQUENCES.length) { return false; }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2];\n }\n\n nextLine = startLine + 1;\n\n // If we are here - we detected HTML block.\n // Let's roll down till block end.\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n lineText = state.src.slice(pos, max);\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) { nextLine++; }\n break;\n }\n }\n }\n\n state.line = nextLine;\n\n token = state.push('html_block', '', 0);\n token.map = [ startLine, nextLine ];\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n\n return true;\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","/*\n * List of Unicode code that are flagged as number.\n *\n * Contains Unicode code of:\n * - Nd = Number, decimal digit\n * - Nl = Number, letter\n * - No = Number, other\n *\n * This list has been computed from http://unicode.org/Public/UNIDATA/UnicodeData.txt\n * curl -s http://unicode.org/Public/UNIDATA/UnicodeData.txt | grep -E ';Nd;|;Nl;|;No;' | cut -d \\; -f 1 | xargs -I{} printf '%d, ' 0x{}\n *\n */\nexports.N = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 178, 179, 185, 188, 189, 190, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2548, 2549, 2550, 2551, 2552, 2553, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2790, 2791, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925, 2926, 2927, 2930, 2931, 2932, 2933, 2934, 2935, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, 3174, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3192, 3193, 3194, 3195, 3196, 3197, 3198, 3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309, 3310, 3311, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, 3439, 3440, 3441, 3442, 3443, 3444, 3445, 3558, 3559, 3560, 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3664, 3665, 3666, 3667, 3668, 3669, 3670, 3671, 3672, 3673, 3792, 3793, 3794, 3795, 3796, 3797, 3798, 3799, 3800, 3801, 3872, 3873, 3874, 3875, 3876, 3877, 3878, 3879, 3880, 3881, 3882, 3883, 3884, 3885, 3886, 3887, 3888, 3889, 3890, 3891, 4160, 4161, 4162, 4163, 4164, 4165, 4166, 4167, 4168, 4169, 4240, 4241, 4242, 4243, 4244, 4245, 4246, 4247, 4248, 4249, 4969, 4970, 4971, 4972, 4973, 4974, 4975, 4976, 4977, 4978, 4979, 4980, 4981, 4982, 4983, 4984, 4985, 4986, 4987, 4988, 5870, 5871, 5872, 6112, 6113, 6114, 6115, 6116, 6117, 6118, 6119, 6120, 6121, 6128, 6129, 6130, 6131, 6132, 6133, 6134, 6135, 6136, 6137, 6160, 6161, 6162, 6163, 6164, 6165, 6166, 6167, 6168, 6169, 6470, 6471, 6472, 6473, 6474, 6475, 6476, 6477, 6478, 6479, 6608, 6609, 6610, 6611, 6612, 6613, 6614, 6615, 6616, 6617, 6618, 6784, 6785, 6786, 6787, 6788, 6789, 6790, 6791, 6792, 6793, 6800, 6801, 6802, 6803, 6804, 6805, 6806, 6807, 6808, 6809, 6992, 6993, 6994, 6995, 6996, 6997, 6998, 6999, 7000, 7001, 7088, 7089, 7090, 7091, 7092, 7093, 7094, 7095, 7096, 7097, 7232, 7233, 7234, 7235, 7236, 7237, 7238, 7239, 7240, 7241, 7248, 7249, 7250, 7251, 7252, 7253, 7254, 7255, 7256, 7257, 8304, 8308, 8309, 8310, 8311, 8312, 8313, 8320, 8321, 8322, 8323, 8324, 8325, 8326, 8327, 8328, 8329, 8528, 8529, 8530, 8531, 8532, 8533, 8534, 8535, 8536, 8537, 8538, 8539, 8540, 8541, 8542, 8543, 8544, 8545, 8546, 8547, 8548, 8549, 8550, 8551, 8552, 8553, 8554, 8555, 8556, 8557, 8558, 8559, 8560, 8561, 8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, 8570, 8571, 8572, 8573, 8574, 8575, 8576, 8577, 8578, 8581, 8582, 8583, 8584, 8585, 9312, 9313, 9314, 9315, 9316, 9317, 9318, 9319, 9320, 9321, 9322, 9323, 9324, 9325, 9326, 9327, 9328, 9329, 9330, 9331, 9332, 9333, 9334, 9335, 9336, 9337, 9338, 9339, 9340, 9341, 9342, 9343, 9344, 9345, 9346, 9347, 9348, 9349, 9350, 9351, 9352, 9353, 9354, 9355, 9356, 9357, 9358, 9359, 9360, 9361, 9362, 9363, 9364, 9365, 9366, 9367, 9368, 9369, 9370, 9371, 9450, 9451, 9452, 9453, 9454, 9455, 9456, 9457, 9458, 9459, 9460, 9461, 9462, 9463, 9464, 9465, 9466, 9467, 9468, 9469, 9470, 9471, 10102, 10103, 10104, 10105, 10106, 10107, 10108, 10109, 10110, 10111, 10112, 10113, 10114, 10115, 10116, 10117, 10118, 10119, 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10128, 10129, 10130, 10131, 11517, 12295, 12321, 12322, 12323, 12324, 12325, 12326, 12327, 12328, 12329, 12344, 12345, 12346, 12690, 12691, 12692, 12693, 12832, 12833, 12834, 12835, 12836, 12837, 12838, 12839, 12840, 12841, 12872, 12873, 12874, 12875, 12876, 12877, 12878, 12879, 12881, 12882, 12883, 12884, 12885, 12886, 12887, 12888, 12889, 12890, 12891, 12892, 12893, 12894, 12895, 12928, 12929, 12930, 12931, 12932, 12933, 12934, 12935, 12936, 12937, 12977, 12978, 12979, 12980, 12981, 12982, 12983, 12984, 12985, 12986, 12987, 12988, 12989, 12990, 12991, 42528, 42529, 42530, 42531, 42532, 42533, 42534, 42535, 42536, 42537, 42726, 42727, 42728, 42729, 42730, 42731, 42732, 42733, 42734, 42735, 43056, 43057, 43058, 43059, 43060, 43061, 43216, 43217, 43218, 43219, 43220, 43221, 43222, 43223, 43224, 43225, 43264, 43265, 43266, 43267, 43268, 43269, 43270, 43271, 43272, 43273, 43472, 43473, 43474, 43475, 43476, 43477, 43478, 43479, 43480, 43481, 43504, 43505, 43506, 43507, 43508, 43509, 43510, 43511, 43512, 43513, 43600, 43601, 43602, 43603, 43604, 43605, 43606, 43607, 43608, 43609, 44016, 44017, 44018, 44019, 44020, 44021, 44022, 44023, 44024, 44025, 65296, 65297, 65298, 65299, 65300, 65301, 65302, 65303, 65304, 65305, 65799, 65800, 65801, 65802, 65803, 65804, 65805, 65806, 65807, 65808, 65809, 65810, 65811, 65812, 65813, 65814, 65815, 65816, 65817, 65818, 65819, 65820, 65821, 65822, 65823, 65824, 65825, 65826, 65827, 65828, 65829, 65830, 65831, 65832, 65833, 65834, 65835, 65836, 65837, 65838, 65839, 65840, 65841, 65842, 65843, 65856, 65857, 65858, 65859, 65860, 65861, 65862, 65863, 65864, 65865, 65866, 65867, 65868, 65869, 65870, 65871, 65872, 65873, 65874, 65875, 65876, 65877, 65878, 65879, 65880, 65881, 65882, 65883, 65884, 65885, 65886, 65887, 65888, 65889, 65890, 65891, 65892, 65893, 65894, 65895, 65896, 65897, 65898, 65899, 65900, 65901, 65902, 65903, 65904, 65905, 65906, 65907, 65908, 65909, 65910, 65911, 65912, 65930, 65931, 66273, 66274, 66275, 66276, 66277, 66278, 66279, 66280, 66281, 66282, 66283, 66284, 66285, 66286, 66287, 66288, 66289, 66290, 66291, 66292, 66293, 66294, 66295, 66296, 66297, 66298, 66299, 66336, 66337, 66338, 66339, 66369, 66378, 66513, 66514, 66515, 66516, 66517, 66720, 66721, 66722, 66723, 66724, 66725, 66726, 66727, 66728, 66729, 67672, 67673, 67674, 67675, 67676, 67677, 67678, 67679, 67705, 67706, 67707, 67708, 67709, 67710, 67711, 67751, 67752, 67753, 67754, 67755, 67756, 67757, 67758, 67759, 67835, 67836, 67837, 67838, 67839, 67862, 67863, 67864, 67865, 67866, 67867, 68028, 68029, 68032, 68033, 68034, 68035, 68036, 68037, 68038, 68039, 68040, 68041, 68042, 68043, 68044, 68045, 68046, 68047, 68050, 68051, 68052, 68053, 68054, 68055, 68056, 68057, 68058, 68059, 68060, 68061, 68062, 68063, 68064, 68065, 68066, 68067, 68068, 68069, 68070, 68071, 68072, 68073, 68074, 68075, 68076, 68077, 68078, 68079, 68080, 68081, 68082, 68083, 68084, 68085, 68086, 68087, 68088, 68089, 68090, 68091, 68092, 68093, 68094, 68095, 68160, 68161, 68162, 68163, 68164, 68165, 68166, 68167, 68221, 68222, 68253, 68254, 68255, 68331, 68332, 68333, 68334, 68335, 68440, 68441, 68442, 68443, 68444, 68445, 68446, 68447, 68472, 68473, 68474, 68475, 68476, 68477, 68478, 68479, 68521, 68522, 68523, 68524, 68525, 68526, 68527, 68858, 68859, 68860, 68861, 68862, 68863, 69216, 69217, 69218, 69219, 69220, 69221, 69222, 69223, 69224, 69225, 69226, 69227, 69228, 69229, 69230, 69231, 69232, 69233, 69234, 69235, 69236, 69237, 69238, 69239, 69240, 69241, 69242, 69243, 69244, 69245, 69246, 69714, 69715, 69716, 69717, 69718, 69719, 69720, 69721, 69722, 69723, 69724, 69725, 69726, 69727, 69728, 69729, 69730, 69731, 69732, 69733, 69734, 69735, 69736, 69737, 69738, 69739, 69740, 69741, 69742, 69743, 69872, 69873, 69874, 69875, 69876, 69877, 69878, 69879, 69880, 69881, 69942, 69943, 69944, 69945, 69946, 69947, 69948, 69949, 69950, 69951, 70096, 70097, 70098, 70099, 70100, 70101, 70102, 70103, 70104, 70105, 70113, 70114, 70115, 70116, 70117, 70118, 70119, 70120, 70121, 70122, 70123, 70124, 70125, 70126, 70127, 70128, 70129, 70130, 70131, 70132, 70384, 70385, 70386, 70387, 70388, 70389, 70390, 70391, 70392, 70393, 70864, 70865, 70866, 70867, 70868, 70869, 70870, 70871, 70872, 70873, 71248, 71249, 71250, 71251, 71252, 71253, 71254, 71255, 71256, 71257, 71360, 71361, 71362, 71363, 71364, 71365, 71366, 71367, 71368, 71369, 71472, 71473, 71474, 71475, 71476, 71477, 71478, 71479, 71480, 71481, 71482, 71483, 71904, 71905, 71906, 71907, 71908, 71909, 71910, 71911, 71912, 71913, 71914, 71915, 71916, 71917, 71918, 71919, 71920, 71921, 71922, 74752, 74753, 74754, 74755, 74756, 74757, 74758, 74759, 74760, 74761, 74762, 74763, 74764, 74765, 74766, 74767, 74768, 74769, 74770, 74771, 74772, 74773, 74774, 74775, 74776, 74777, 74778, 74779, 74780, 74781, 74782, 74783, 74784, 74785, 74786, 74787, 74788, 74789, 74790, 74791, 74792, 74793, 74794, 74795, 74796, 74797, 74798, 74799, 74800, 74801, 74802, 74803, 74804, 74805, 74806, 74807, 74808, 74809, 74810, 74811, 74812, 74813, 74814, 74815, 74816, 74817, 74818, 74819, 74820, 74821, 74822, 74823, 74824, 74825, 74826, 74827, 74828, 74829, 74830, 74831, 74832, 74833, 74834, 74835, 74836, 74837, 74838, 74839, 74840, 74841, 74842, 74843, 74844, 74845, 74846, 74847, 74848, 74849, 74850, 74851, 74852, 74853, 74854, 74855, 74856, 74857, 74858, 74859, 74860, 74861, 74862, 92768, 92769, 92770, 92771, 92772, 92773, 92774, 92775, 92776, 92777, 93008, 93009, 93010, 93011, 93012, 93013, 93014, 93015, 93016, 93017, 93019, 93020, 93021, 93022, 93023, 93024, 93025, 119648, 119649, 119650, 119651, 119652, 119653, 119654, 119655, 119656, 119657, 119658, 119659, 119660, 119661, 119662, 119663, 119664, 119665, 120782, 120783, 120784, 120785, 120786, 120787, 120788, 120789, 120790, 120791, 120792, 120793, 120794, 120795, 120796, 120797, 120798, 120799, 120800, 120801, 120802, 120803, 120804, 120805, 120806, 120807, 120808, 120809, 120810, 120811, 120812, 120813, 120814, 120815, 120816, 120817, 120818, 120819, 120820, 120821, 120822, 120823, 120824, 120825, 120826, 120827, 120828, 120829, 120830, 120831, 125127, 125128, 125129, 125130, 125131, 125132, 125133, 125134, 125135, 127232, 127233, 127234, 127235, 127236, 127237, 127238, 127239, 127240, 127241, 127242, 127243, 127244];\n","//package mp3;\n\n/* MPEG modes */\nfunction MPEGMode(ordinal) {\n var _ordinal = ordinal;\n this.ordinal = function () {\n return _ordinal;\n }\n}\n\nMPEGMode.STEREO = new MPEGMode(0);\nMPEGMode.JOINT_STEREO = new MPEGMode(1);\nMPEGMode.DUAL_CHANNEL = new MPEGMode(2);\nMPEGMode.MONO = new MPEGMode(3);\nMPEGMode.NOT_SET = new MPEGMode(4);\n\nmodule.exports = MPEGMode;\n","/**\n * This file contains information and classes for the various kinds of styles\n * used in TeX. It provides a generic `Style` class, which holds information\n * about a specific style. It then provides instances of all the different kinds\n * of styles possible, and provides functions to move between them and get\n * information about them.\n */\n\n/**\n * The main style class. Contains a unique id for the style, a size (which is\n * the same for cramped and uncramped version of a style), a cramped flag, and a\n * size multiplier, which gives the size difference between a style and\n * textstyle.\n */\nfunction Style(id, size, multiplier, cramped) {\n this.id = id;\n this.size = size;\n this.cramped = cramped;\n this.sizeMultiplier = multiplier;\n}\n\n/**\n * Get the style of a superscript given a base in the current style.\n */\nStyle.prototype.sup = function() {\n return styles[sup[this.id]];\n};\n\n/**\n * Get the style of a subscript given a base in the current style.\n */\nStyle.prototype.sub = function() {\n return styles[sub[this.id]];\n};\n\n/**\n * Get the style of a fraction numerator given the fraction in the current\n * style.\n */\nStyle.prototype.fracNum = function() {\n return styles[fracNum[this.id]];\n};\n\n/**\n * Get the style of a fraction denominator given the fraction in the current\n * style.\n */\nStyle.prototype.fracDen = function() {\n return styles[fracDen[this.id]];\n};\n\n/**\n * Get the cramped version of a style (in particular, cramping a cramped style\n * doesn't change the style).\n */\nStyle.prototype.cramp = function() {\n return styles[cramp[this.id]];\n};\n\n/**\n * HTML class name, like \"displaystyle cramped\"\n */\nStyle.prototype.cls = function() {\n return sizeNames[this.size] + (this.cramped ? \" cramped\" : \" uncramped\");\n};\n\n/**\n * HTML Reset class name, like \"reset-textstyle\"\n */\nStyle.prototype.reset = function() {\n return resetNames[this.size];\n};\n\n// IDs of the different styles\nvar D = 0;\nvar Dc = 1;\nvar T = 2;\nvar Tc = 3;\nvar S = 4;\nvar Sc = 5;\nvar SS = 6;\nvar SSc = 7;\n\n// String names for the different sizes\nvar sizeNames = [\n \"displaystyle textstyle\",\n \"textstyle\",\n \"scriptstyle\",\n \"scriptscriptstyle\",\n];\n\n// Reset names for the different sizes\nvar resetNames = [\n \"reset-textstyle\",\n \"reset-textstyle\",\n \"reset-scriptstyle\",\n \"reset-scriptscriptstyle\",\n];\n\n// Instances of the different styles\nvar styles = [\n new Style(D, 0, 1.0, false),\n new Style(Dc, 0, 1.0, true),\n new Style(T, 1, 1.0, false),\n new Style(Tc, 1, 1.0, true),\n new Style(S, 2, 0.7, false),\n new Style(Sc, 2, 0.7, true),\n new Style(SS, 3, 0.5, false),\n new Style(SSc, 3, 0.5, true),\n];\n\n// Lookup tables for switching from one style to another\nvar sup = [S, Sc, S, Sc, SS, SSc, SS, SSc];\nvar sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc];\nvar fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc];\nvar fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc];\nvar cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc];\n\n// We only export some of the styles. Also, we don't export the `Style` class so\n// no more styles can be generated.\nmodule.exports = {\n DISPLAY: styles[D],\n TEXT: styles[T],\n SCRIPT: styles[S],\n SCRIPTSCRIPT: styles[SS],\n};\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Takehiro = require('./Takehiro.js');\nvar Tables = require('./Tables.js');\nvar Encoder = require('./Encoder.js');\nvar LameInternalFlags = require('./LameInternalFlags.js');\n\nBitStream.EQ = function (a, b) {\n return (Math.abs(a) > Math.abs(b)) ? (Math.abs((a) - (b)) <= (Math\n .abs(a) * 1e-6))\n : (Math.abs((a) - (b)) <= (Math.abs(b) * 1e-6));\n};\n\nBitStream.NEQ = function (a, b) {\n return !BitStream.EQ(a, b);\n};\n\nfunction BitStream() {\n var self = this;\n var CRC16_POLYNOMIAL = 0x8005;\n\n /*\n * we work with ints, so when doing bit manipulation, we limit ourselves to\n * MAX_LENGTH-2 just to be on the safe side\n */\n var MAX_LENGTH = 32;\n\n //GainAnalysis ga;\n //MPGLib mpg;\n //Version ver;\n //VBRTag vbr;\n var ga = null;\n var mpg = null;\n var ver = null;\n var vbr = null;\n\n //public final void setModules(GainAnalysis ga, MPGLib mpg, Version ver,\n //\tVBRTag vbr) {\n\n this.setModules = function (_ga, _mpg, _ver, _vbr) {\n ga = _ga;\n mpg = _mpg;\n ver = _ver;\n vbr = _vbr;\n };\n\n /**\n * Bit stream buffer.\n */\n //private byte[] buf;\n var buf = null;\n /**\n * Bit counter of bit stream.\n */\n var totbit = 0;\n /**\n * Pointer to top byte in buffer.\n */\n var bufByteIdx = 0;\n /**\n * Pointer to top bit of top byte in buffer.\n */\n var bufBitIdx = 0;\n\n /**\n * compute bitsperframe and mean_bits for a layer III frame\n */\n this.getframebits = function (gfp) {\n var gfc = gfp.internal_flags;\n var bit_rate;\n\n /* get bitrate in kbps [?] */\n if (gfc.bitrate_index != 0)\n bit_rate = Tables.bitrate_table[gfp.version][gfc.bitrate_index];\n else\n bit_rate = gfp.brate;\n assert(8 <= bit_rate && bit_rate <= 640);\n\n /* main encoding routine toggles padding on and off */\n /* one Layer3 Slot consists of 8 bits */\n var bytes = 0 | (gfp.version + 1) * 72000 * bit_rate / gfp.out_samplerate + gfc.padding;\n return 8 * bytes;\n };\n\n function putheader_bits(gfc) {\n System.arraycopy(gfc.header[gfc.w_ptr].buf, 0, buf, bufByteIdx, gfc.sideinfo_len);\n bufByteIdx += gfc.sideinfo_len;\n totbit += gfc.sideinfo_len * 8;\n gfc.w_ptr = (gfc.w_ptr + 1) & (LameInternalFlags.MAX_HEADER_BUF - 1);\n }\n\n /**\n * write j bits into the bit stream\n */\n function putbits2(gfc, val, j) {\n assert(j < MAX_LENGTH - 2);\n\n while (j > 0) {\n var k;\n if (bufBitIdx == 0) {\n bufBitIdx = 8;\n bufByteIdx++;\n assert(bufByteIdx < Lame.LAME_MAXMP3BUFFER);\n assert(gfc.header[gfc.w_ptr].write_timing >= totbit);\n if (gfc.header[gfc.w_ptr].write_timing == totbit) {\n putheader_bits(gfc);\n }\n buf[bufByteIdx] = 0;\n }\n\n k = Math.min(j, bufBitIdx);\n j -= k;\n\n bufBitIdx -= k;\n\n assert(j < MAX_LENGTH);\n /* 32 too large on 32 bit machines */\n assert(bufBitIdx < MAX_LENGTH);\n\n buf[bufByteIdx] |= ((val >> j) << bufBitIdx);\n totbit += k;\n }\n }\n\n /**\n * write j bits into the bit stream, ignoring frame headers\n */\n function putbits_noheaders(gfc, val, j) {\n assert(j < MAX_LENGTH - 2);\n\n while (j > 0) {\n var k;\n if (bufBitIdx == 0) {\n bufBitIdx = 8;\n bufByteIdx++;\n assert(bufByteIdx < Lame.LAME_MAXMP3BUFFER);\n buf[bufByteIdx] = 0;\n }\n\n k = Math.min(j, bufBitIdx);\n j -= k;\n\n bufBitIdx -= k;\n\n assert(j < MAX_LENGTH);\n /* 32 too large on 32 bit machines */\n assert(bufBitIdx < MAX_LENGTH);\n\n buf[bufByteIdx] |= ((val >> j) << bufBitIdx);\n totbit += k;\n }\n }\n\n /**\n * Some combinations of bitrate, Fs, and stereo make it impossible to stuff\n * out a frame using just main_data, due to the limited number of bits to\n * indicate main_data_length. In these situations, we put stuffing bits into\n * the ancillary data...\n */\n function drain_into_ancillary(gfp, remainingBits) {\n var gfc = gfp.internal_flags;\n var i;\n assert(remainingBits >= 0);\n\n if (remainingBits >= 8) {\n putbits2(gfc, 0x4c, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x41, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x4d, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x45, 8);\n remainingBits -= 8;\n }\n\n if (remainingBits >= 32) {\n var version = ver.getLameShortVersion();\n if (remainingBits >= 32)\n for (i = 0; i < version.length && remainingBits >= 8; ++i) {\n remainingBits -= 8;\n putbits2(gfc, version.charAt(i), 8);\n }\n }\n\n for (; remainingBits >= 1; remainingBits -= 1) {\n putbits2(gfc, gfc.ancillary_flag, 1);\n gfc.ancillary_flag ^= (!gfp.disable_reservoir ? 1 : 0);\n }\n\n assert(remainingBits == 0);\n\n }\n\n /**\n * write N bits into the header\n */\n function writeheader(gfc, val, j) {\n var ptr = gfc.header[gfc.h_ptr].ptr;\n\n while (j > 0) {\n var k = Math.min(j, 8 - (ptr & 7));\n j -= k;\n assert(j < MAX_LENGTH);\n /* >> 32 too large for 32 bit machines */\n\n gfc.header[gfc.h_ptr].buf[ptr >> 3] |= ((val >> j)) << (8 - (ptr & 7) - k);\n ptr += k;\n }\n gfc.header[gfc.h_ptr].ptr = ptr;\n }\n\n function CRC_update(value, crc) {\n value <<= 8;\n for (var i = 0; i < 8; i++) {\n value <<= 1;\n crc <<= 1;\n\n if ((((crc ^ value) & 0x10000) != 0))\n crc ^= CRC16_POLYNOMIAL;\n }\n return crc;\n }\n\n this.CRC_writeheader = function (gfc, header) {\n var crc = 0xffff;\n /* (jo) init crc16 for error_protection */\n\n crc = CRC_update(header[2] & 0xff, crc);\n crc = CRC_update(header[3] & 0xff, crc);\n for (var i = 6; i < gfc.sideinfo_len; i++) {\n crc = CRC_update(header[i] & 0xff, crc);\n }\n\n header[4] = (byte)(crc >> 8);\n header[5] = (byte)(crc & 255);\n };\n\n function encodeSideInfo2(gfp, bitsPerFrame) {\n var gfc = gfp.internal_flags;\n var l3_side;\n var gr, ch;\n\n l3_side = gfc.l3_side;\n gfc.header[gfc.h_ptr].ptr = 0;\n Arrays.fill(gfc.header[gfc.h_ptr].buf, 0, gfc.sideinfo_len, 0);\n if (gfp.out_samplerate < 16000)\n writeheader(gfc, 0xffe, 12);\n else\n writeheader(gfc, 0xfff, 12);\n writeheader(gfc, (gfp.version), 1);\n writeheader(gfc, 4 - 3, 2);\n writeheader(gfc, (!gfp.error_protection ? 1 : 0), 1);\n writeheader(gfc, (gfc.bitrate_index), 4);\n writeheader(gfc, (gfc.samplerate_index), 2);\n writeheader(gfc, (gfc.padding), 1);\n writeheader(gfc, (gfp.extension), 1);\n writeheader(gfc, (gfp.mode.ordinal()), 2);\n writeheader(gfc, (gfc.mode_ext), 2);\n writeheader(gfc, (gfp.copyright), 1);\n writeheader(gfc, (gfp.original), 1);\n writeheader(gfc, (gfp.emphasis), 2);\n if (gfp.error_protection) {\n writeheader(gfc, 0, 16);\n /* dummy */\n }\n\n if (gfp.version == 1) {\n /* MPEG1 */\n assert(l3_side.main_data_begin >= 0);\n writeheader(gfc, (l3_side.main_data_begin), 9);\n\n if (gfc.channels_out == 2)\n writeheader(gfc, l3_side.private_bits, 3);\n else\n writeheader(gfc, l3_side.private_bits, 5);\n\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var band;\n for (band = 0; band < 4; band++) {\n writeheader(gfc, l3_side.scfsi[ch][band], 1);\n }\n }\n\n for (gr = 0; gr < 2; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n writeheader(gfc, gi.big_values / 2, 9);\n writeheader(gfc, gi.global_gain, 8);\n writeheader(gfc, gi.scalefac_compress, 4);\n\n if (gi.block_type != Encoder.NORM_TYPE) {\n writeheader(gfc, 1, 1);\n /* window_switching_flag */\n writeheader(gfc, gi.block_type, 2);\n writeheader(gfc, gi.mixed_block_flag, 1);\n\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n\n writeheader(gfc, gi.subblock_gain[0], 3);\n writeheader(gfc, gi.subblock_gain[1], 3);\n writeheader(gfc, gi.subblock_gain[2], 3);\n } else {\n writeheader(gfc, 0, 1);\n /* window_switching_flag */\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n if (gi.table_select[2] == 14)\n gi.table_select[2] = 16;\n writeheader(gfc, gi.table_select[2], 5);\n\n assert(0 <= gi.region0_count && gi.region0_count < 16);\n assert(0 <= gi.region1_count && gi.region1_count < 8);\n writeheader(gfc, gi.region0_count, 4);\n writeheader(gfc, gi.region1_count, 3);\n }\n writeheader(gfc, gi.preflag, 1);\n writeheader(gfc, gi.scalefac_scale, 1);\n writeheader(gfc, gi.count1table_select, 1);\n }\n }\n } else {\n /* MPEG2 */\n assert(l3_side.main_data_begin >= 0);\n writeheader(gfc, (l3_side.main_data_begin), 8);\n writeheader(gfc, l3_side.private_bits, gfc.channels_out);\n\n gr = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n writeheader(gfc, gi.big_values / 2, 9);\n writeheader(gfc, gi.global_gain, 8);\n writeheader(gfc, gi.scalefac_compress, 9);\n\n if (gi.block_type != Encoder.NORM_TYPE) {\n writeheader(gfc, 1, 1);\n /* window_switching_flag */\n writeheader(gfc, gi.block_type, 2);\n writeheader(gfc, gi.mixed_block_flag, 1);\n\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n\n writeheader(gfc, gi.subblock_gain[0], 3);\n writeheader(gfc, gi.subblock_gain[1], 3);\n writeheader(gfc, gi.subblock_gain[2], 3);\n } else {\n writeheader(gfc, 0, 1);\n /* window_switching_flag */\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n if (gi.table_select[2] == 14)\n gi.table_select[2] = 16;\n writeheader(gfc, gi.table_select[2], 5);\n\n assert(0 <= gi.region0_count && gi.region0_count < 16);\n assert(0 <= gi.region1_count && gi.region1_count < 8);\n writeheader(gfc, gi.region0_count, 4);\n writeheader(gfc, gi.region1_count, 3);\n }\n\n writeheader(gfc, gi.scalefac_scale, 1);\n writeheader(gfc, gi.count1table_select, 1);\n }\n }\n\n if (gfp.error_protection) {\n /* (jo) error_protection: add crc16 information to header */\n CRC_writeheader(gfc, gfc.header[gfc.h_ptr].buf);\n }\n\n {\n var old = gfc.h_ptr;\n assert(gfc.header[old].ptr == gfc.sideinfo_len * 8);\n\n gfc.h_ptr = (old + 1) & (LameInternalFlags.MAX_HEADER_BUF - 1);\n gfc.header[gfc.h_ptr].write_timing = gfc.header[old].write_timing\n + bitsPerFrame;\n\n if (gfc.h_ptr == gfc.w_ptr) {\n /* yikes! we are out of header buffer space */\n System.err\n .println(\"Error: MAX_HEADER_BUF too small in bitstream.c \\n\");\n }\n\n }\n }\n\n function huffman_coder_count1(gfc, gi) {\n /* Write count1 area */\n var h = Tables.ht[gi.count1table_select + 32];\n var i, bits = 0;\n\n var ix = gi.big_values;\n var xr = gi.big_values;\n assert(gi.count1table_select < 2);\n\n for (i = (gi.count1 - gi.big_values) / 4; i > 0; --i) {\n var huffbits = 0;\n var p = 0, v;\n\n v = gi.l3_enc[ix + 0];\n if (v != 0) {\n p += 8;\n if (gi.xr[xr + 0] < 0)\n huffbits++;\n assert(v <= 1);\n }\n\n v = gi.l3_enc[ix + 1];\n if (v != 0) {\n p += 4;\n huffbits *= 2;\n if (gi.xr[xr + 1] < 0)\n huffbits++;\n assert(v <= 1);\n }\n\n v = gi.l3_enc[ix + 2];\n if (v != 0) {\n p += 2;\n huffbits *= 2;\n if (gi.xr[xr + 2] < 0)\n huffbits++;\n assert(v <= 1);\n }\n\n v = gi.l3_enc[ix + 3];\n if (v != 0) {\n p++;\n huffbits *= 2;\n if (gi.xr[xr + 3] < 0)\n huffbits++;\n assert(v <= 1);\n }\n\n ix += 4;\n xr += 4;\n putbits2(gfc, huffbits + h.table[p], h.hlen[p]);\n bits += h.hlen[p];\n }\n return bits;\n }\n\n /**\n * Implements the pseudocode of page 98 of the IS\n */\n function Huffmancode(gfc, tableindex, start, end, gi) {\n var h = Tables.ht[tableindex];\n var bits = 0;\n\n assert(tableindex < 32);\n if (0 == tableindex)\n return bits;\n\n for (var i = start; i < end; i += 2) {\n var cbits = 0;\n var xbits = 0;\n var linbits = h.xlen;\n var xlen = h.xlen;\n var ext = 0;\n var x1 = gi.l3_enc[i];\n var x2 = gi.l3_enc[i + 1];\n\n if (x1 != 0) {\n if (gi.xr[i] < 0)\n ext++;\n cbits--;\n }\n\n if (tableindex > 15) {\n /* use ESC-words */\n if (x1 > 14) {\n var linbits_x1 = x1 - 15;\n assert(linbits_x1 <= h.linmax);\n ext |= linbits_x1 << 1;\n xbits = linbits;\n x1 = 15;\n }\n\n if (x2 > 14) {\n var linbits_x2 = x2 - 15;\n assert(linbits_x2 <= h.linmax);\n ext <<= linbits;\n ext |= linbits_x2;\n xbits += linbits;\n x2 = 15;\n }\n xlen = 16;\n }\n\n if (x2 != 0) {\n ext <<= 1;\n if (gi.xr[i + 1] < 0)\n ext++;\n cbits--;\n }\n\n assert((x1 | x2) < 16);\n\n x1 = x1 * xlen + x2;\n xbits -= cbits;\n cbits += h.hlen[x1];\n\n assert(cbits <= MAX_LENGTH);\n assert(xbits <= MAX_LENGTH);\n\n putbits2(gfc, h.table[x1], cbits);\n putbits2(gfc, ext, xbits);\n bits += cbits + xbits;\n }\n return bits;\n }\n\n /**\n * Note the discussion of huffmancodebits() on pages 28 and 29 of the IS, as\n * well as the definitions of the side information on pages 26 and 27.\n */\n function ShortHuffmancodebits(gfc, gi) {\n var region1Start = 3 * gfc.scalefac_band.s[3];\n if (region1Start > gi.big_values)\n region1Start = gi.big_values;\n\n /* short blocks do not have a region2 */\n var bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n bits += Huffmancode(gfc, gi.table_select[1], region1Start,\n gi.big_values, gi);\n return bits;\n }\n\n function LongHuffmancodebits(gfc, gi) {\n var bigvalues, bits;\n var region1Start, region2Start;\n\n bigvalues = gi.big_values;\n assert(0 <= bigvalues && bigvalues <= 576);\n\n var i = gi.region0_count + 1;\n assert(0 <= i);\n assert(i < gfc.scalefac_band.l.length);\n region1Start = gfc.scalefac_band.l[i];\n i += gi.region1_count + 1;\n assert(0 <= i);\n assert(i < gfc.scalefac_band.l.length);\n region2Start = gfc.scalefac_band.l[i];\n\n if (region1Start > bigvalues)\n region1Start = bigvalues;\n\n if (region2Start > bigvalues)\n region2Start = bigvalues;\n\n bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n bits += Huffmancode(gfc, gi.table_select[1], region1Start,\n region2Start, gi);\n bits += Huffmancode(gfc, gi.table_select[2], region2Start, bigvalues,\n gi);\n return bits;\n }\n\n function writeMainData(gfp) {\n var gr, ch, sfb, data_bits, tot_bits = 0;\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n\n if (gfp.version == 1) {\n /* MPEG 1 */\n for (gr = 0; gr < 2; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n var slen1 = Takehiro.slen1_tab[gi.scalefac_compress];\n var slen2 = Takehiro.slen2_tab[gi.scalefac_compress];\n data_bits = 0;\n for (sfb = 0; sfb < gi.sfbdivide; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n /* scfsi is used */\n putbits2(gfc, gi.scalefac[sfb], slen1);\n data_bits += slen1;\n }\n for (; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n /* scfsi is used */\n putbits2(gfc, gi.scalefac[sfb], slen2);\n data_bits += slen2;\n }\n assert(data_bits == gi.part2_length);\n\n if (gi.block_type == Encoder.SHORT_TYPE) {\n data_bits += ShortHuffmancodebits(gfc, gi);\n } else {\n data_bits += LongHuffmancodebits(gfc, gi);\n }\n data_bits += huffman_coder_count1(gfc, gi);\n /* does bitcount in quantize.c agree with actual bit count? */\n assert(data_bits == gi.part2_3_length + gi.part2_length);\n tot_bits += data_bits;\n }\n /* for ch */\n }\n /* for gr */\n } else {\n /* MPEG 2 */\n gr = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n var i, sfb_partition, scale_bits = 0;\n assert(gi.sfb_partition_table != null);\n data_bits = 0;\n sfb = 0;\n sfb_partition = 0;\n\n if (gi.block_type == Encoder.SHORT_TYPE) {\n for (; sfb_partition < 4; sfb_partition++) {\n var sfbs = gi.sfb_partition_table[sfb_partition] / 3;\n var slen = gi.slen[sfb_partition];\n for (i = 0; i < sfbs; i++, sfb++) {\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 0], 0), slen);\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 1], 0), slen);\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 2], 0), slen);\n scale_bits += 3 * slen;\n }\n }\n data_bits += ShortHuffmancodebits(gfc, gi);\n } else {\n for (; sfb_partition < 4; sfb_partition++) {\n var sfbs = gi.sfb_partition_table[sfb_partition];\n var slen = gi.slen[sfb_partition];\n for (i = 0; i < sfbs; i++, sfb++) {\n putbits2(gfc, Math.max(gi.scalefac[sfb], 0), slen);\n scale_bits += slen;\n }\n }\n data_bits += LongHuffmancodebits(gfc, gi);\n }\n data_bits += huffman_coder_count1(gfc, gi);\n /* does bitcount in quantize.c agree with actual bit count? */\n assert(data_bits == gi.part2_3_length);\n assert(scale_bits == gi.part2_length);\n tot_bits += scale_bits + data_bits;\n }\n /* for ch */\n }\n /* for gf */\n return tot_bits;\n }\n\n /* main_data */\n\n function TotalBytes() {\n this.total = 0;\n }\n\n /*\n * compute the number of bits required to flush all mp3 frames currently in\n * the buffer. This should be the same as the reservoir size. Only call this\n * routine between frames - i.e. only after all headers and data have been\n * added to the buffer by format_bitstream().\n *\n * Also compute total_bits_output = size of mp3 buffer (including frame\n * headers which may not have yet been send to the mp3 buffer) + number of\n * bits needed to flush all mp3 frames.\n *\n * total_bytes_output is the size of the mp3 output buffer if\n * lame_encode_flush_nogap() was called right now.\n */\n function compute_flushbits(gfp, total_bytes_output) {\n var gfc = gfp.internal_flags;\n var flushbits, remaining_headers;\n var bitsPerFrame;\n var last_ptr, first_ptr;\n first_ptr = gfc.w_ptr;\n /* first header to add to bitstream */\n last_ptr = gfc.h_ptr - 1;\n /* last header to add to bitstream */\n if (last_ptr == -1)\n last_ptr = LameInternalFlags.MAX_HEADER_BUF - 1;\n\n /* add this many bits to bitstream so we can flush all headers */\n flushbits = gfc.header[last_ptr].write_timing - totbit;\n total_bytes_output.total = flushbits;\n\n if (flushbits >= 0) {\n /* if flushbits >= 0, some headers have not yet been written */\n /* reduce flushbits by the size of the headers */\n remaining_headers = 1 + last_ptr - first_ptr;\n if (last_ptr < first_ptr)\n remaining_headers = 1 + last_ptr - first_ptr\n + LameInternalFlags.MAX_HEADER_BUF;\n flushbits -= remaining_headers * 8 * gfc.sideinfo_len;\n }\n\n /*\n * finally, add some bits so that the last frame is complete these bits\n * are not necessary to decode the last frame, but some decoders will\n * ignore last frame if these bits are missing\n */\n bitsPerFrame = self.getframebits(gfp);\n flushbits += bitsPerFrame;\n total_bytes_output.total += bitsPerFrame;\n /* round up: */\n if ((total_bytes_output.total % 8) != 0)\n total_bytes_output.total = 1 + (total_bytes_output.total / 8);\n else\n total_bytes_output.total = (total_bytes_output.total / 8);\n total_bytes_output.total += bufByteIdx + 1;\n\n if (flushbits < 0) {\n System.err.println(\"strange error flushing buffer ... \\n\");\n }\n return flushbits;\n }\n\n this.flush_bitstream = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side;\n var flushbits;\n var last_ptr = gfc.h_ptr - 1;\n /* last header to add to bitstream */\n if (last_ptr == -1)\n last_ptr = LameInternalFlags.MAX_HEADER_BUF - 1;\n l3_side = gfc.l3_side;\n\n if ((flushbits = compute_flushbits(gfp, new TotalBytes())) < 0)\n return;\n drain_into_ancillary(gfp, flushbits);\n\n /* check that the 100% of the last frame has been written to bitstream */\n assert(gfc.header[last_ptr].write_timing + this.getframebits(gfp) == totbit);\n\n /*\n * we have padded out all frames with ancillary data, which is the same\n * as filling the bitreservoir with ancillary data, so :\n */\n gfc.ResvSize = 0;\n l3_side.main_data_begin = 0;\n\n /* save the ReplayGain value */\n if (gfc.findReplayGain) {\n var RadioGain = ga.GetTitleGain(gfc.rgdata);\n assert(NEQ(RadioGain, GainAnalysis.GAIN_NOT_ENOUGH_SAMPLES));\n gfc.RadioGain = Math.floor(RadioGain * 10.0 + 0.5) | 0;\n /* round to nearest */\n }\n\n /* find the gain and scale change required for no clipping */\n if (gfc.findPeakSample) {\n gfc.noclipGainChange = Math.ceil(Math\n .log10(gfc.PeakSample / 32767.0) * 20.0 * 10.0) | 0;\n /* round up */\n\n if (gfc.noclipGainChange > 0) {\n /* clipping occurs */\n if (EQ(gfp.scale, 1.0) || EQ(gfp.scale, 0.0))\n gfc.noclipScale = (Math\n .floor((32767.0 / gfc.PeakSample) * 100.0) / 100.0);\n /* round down */\n else {\n /*\n * the user specified his own scaling factor. We could\n * suggest the scaling factor of\n * (32767.0/gfp.PeakSample)*(gfp.scale) but it's usually\n * very inaccurate. So we'd rather not advice him on the\n * scaling factor.\n */\n gfc.noclipScale = -1;\n }\n } else\n /* no clipping */\n gfc.noclipScale = -1;\n }\n };\n\n this.add_dummy_byte = function (gfp, val, n) {\n var gfc = gfp.internal_flags;\n var i;\n\n while (n-- > 0) {\n putbits_noheaders(gfc, val, 8);\n\n for (i = 0; i < LameInternalFlags.MAX_HEADER_BUF; ++i)\n gfc.header[i].write_timing += 8;\n }\n };\n\n /**\n * This is called after a frame of audio has been quantized and coded. It\n * will write the encoded audio to the bitstream. Note that from a layer3\n * encoder's perspective the bit stream is primarily a series of main_data()\n * blocks, with header and side information inserted at the proper locations\n * to maintain framing. (See Figure A.7 in the IS).\n */\n this.format_bitstream = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side;\n l3_side = gfc.l3_side;\n\n var bitsPerFrame = this.getframebits(gfp);\n drain_into_ancillary(gfp, l3_side.resvDrain_pre);\n\n encodeSideInfo2(gfp, bitsPerFrame);\n var bits = 8 * gfc.sideinfo_len;\n bits += writeMainData(gfp);\n drain_into_ancillary(gfp, l3_side.resvDrain_post);\n bits += l3_side.resvDrain_post;\n\n l3_side.main_data_begin += (bitsPerFrame - bits) / 8;\n\n /*\n * compare number of bits needed to clear all buffered mp3 frames with\n * what we think the resvsize is:\n */\n if (compute_flushbits(gfp, new TotalBytes()) != gfc.ResvSize) {\n System.err.println(\"Internal buffer inconsistency. flushbits <> ResvSize\");\n }\n\n /*\n * compare main_data_begin for the next frame with what we think the\n * resvsize is:\n */\n if ((l3_side.main_data_begin * 8) != gfc.ResvSize) {\n System.err.printf(\"bit reservoir error: \\n\"\n + \"l3_side.main_data_begin: %d \\n\"\n + \"Resvoir size: %d \\n\"\n + \"resv drain (post) %d \\n\"\n + \"resv drain (pre) %d \\n\"\n + \"header and sideinfo: %d \\n\"\n + \"data bits: %d \\n\"\n + \"total bits: %d (remainder: %d) \\n\"\n + \"bitsperframe: %d \\n\",\n 8 * l3_side.main_data_begin, gfc.ResvSize,\n l3_side.resvDrain_post, l3_side.resvDrain_pre,\n 8 * gfc.sideinfo_len, bits - l3_side.resvDrain_post - 8\n * gfc.sideinfo_len, bits, bits % 8, bitsPerFrame);\n\n System.err.println(\"This is a fatal error. It has several possible causes:\");\n System.err.println(\"90%% LAME compiled with buggy version of gcc using advanced optimizations\");\n System.err.println(\" 9%% Your system is overclocked\");\n System.err.println(\" 1%% bug in LAME encoding library\");\n\n gfc.ResvSize = l3_side.main_data_begin * 8;\n }\n //;\n assert(totbit % 8 == 0);\n\n if (totbit > 1000000000) {\n /*\n * to avoid totbit overflow, (at 8h encoding at 128kbs) lets reset\n * bit counter\n */\n var i;\n for (i = 0; i < LameInternalFlags.MAX_HEADER_BUF; ++i)\n gfc.header[i].write_timing -= totbit;\n totbit = 0;\n }\n\n return 0;\n };\n\n /**\n *
\n     * copy data out of the internal MP3 bit buffer into a user supplied\n     *       unsigned char buffer.\n     *\n     *       mp3data=0      indicates data in buffer is an id3tags and VBR tags\n     *       mp3data=1      data is real mp3 frame data.\n     * 
\n */\n this.copy_buffer = function (gfc, buffer, bufferPos, size, mp3data) {\n var minimum = bufByteIdx + 1;\n if (minimum <= 0)\n return 0;\n if (size != 0 && minimum > size) {\n /* buffer is too small */\n return -1;\n }\n System.arraycopy(buf, 0, buffer, bufferPos, minimum);\n bufByteIdx = -1;\n bufBitIdx = 0;\n\n if (mp3data != 0) {\n var crc = new_int(1);\n crc[0] = gfc.nMusicCRC;\n vbr.updateMusicCRC(crc, buffer, bufferPos, minimum);\n gfc.nMusicCRC = crc[0];\n\n /**\n * sum number of bytes belonging to the mp3 stream this info will be\n * written into the Xing/LAME header for seeking\n */\n if (minimum > 0) {\n gfc.VBR_seek_table.nBytesWritten += minimum;\n }\n\n if (gfc.decode_on_the_fly) { /* decode the frame */\n var pcm_buf = new_float_n([2, 1152]);\n var mp3_in = minimum;\n var samples_out = -1;\n var i;\n\n /* re-synthesis to pcm. Repeat until we get a samples_out=0 */\n while (samples_out != 0) {\n\n samples_out = mpg.hip_decode1_unclipped(gfc.hip, buffer,\n bufferPos, mp3_in, pcm_buf[0], pcm_buf[1]);\n /*\n * samples_out = 0: need more data to decode samples_out =\n * -1: error. Lets assume 0 pcm output samples_out = number\n * of samples output\n */\n\n /*\n * set the lenght of the mp3 input buffer to zero, so that\n * in the next iteration of the loop we will be querying\n * mpglib about buffered data\n */\n mp3_in = 0;\n\n if (samples_out == -1) {\n /*\n * error decoding. Not fatal, but might screw up the\n * ReplayGain tag. What should we do? Ignore for now\n */\n samples_out = 0;\n }\n if (samples_out > 0) {\n /* process the PCM data */\n\n /*\n * this should not be possible, and indicates we have\n * overflown the pcm_buf buffer\n */\n assert(samples_out <= 1152);\n\n if (gfc.findPeakSample) {\n for (i = 0; i < samples_out; i++) {\n if (pcm_buf[0][i] > gfc.PeakSample)\n gfc.PeakSample = pcm_buf[0][i];\n else if (-pcm_buf[0][i] > gfc.PeakSample)\n gfc.PeakSample = -pcm_buf[0][i];\n }\n if (gfc.channels_out > 1)\n for (i = 0; i < samples_out; i++) {\n if (pcm_buf[1][i] > gfc.PeakSample)\n gfc.PeakSample = pcm_buf[1][i];\n else if (-pcm_buf[1][i] > gfc.PeakSample)\n gfc.PeakSample = -pcm_buf[1][i];\n }\n }\n\n if (gfc.findReplayGain)\n if (ga.AnalyzeSamples(gfc.rgdata, pcm_buf[0], 0,\n pcm_buf[1], 0, samples_out,\n gfc.channels_out) == GainAnalysis.GAIN_ANALYSIS_ERROR)\n return -6;\n\n }\n /* if (samples_out>0) */\n }\n /* while (samples_out!=0) */\n }\n /* if (gfc.decode_on_the_fly) */\n\n }\n /* if (mp3data) */\n return minimum;\n };\n\n this.init_bit_stream_w = function (gfc) {\n buf = new_byte(Lame.LAME_MAXMP3BUFFER);\n\n gfc.h_ptr = gfc.w_ptr = 0;\n gfc.header[gfc.h_ptr].write_timing = 0;\n bufByteIdx = -1;\n bufBitIdx = 0;\n totbit = 0;\n };\n\n // From machine.h\n\n\n}\n\nmodule.exports = BitStream;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","// Proceess escaped chars and hardbreaks\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nvar ESCAPED = [];\n\nfor (var i = 0; i < 256; i++) { ESCAPED.push(0); }\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'\n .split('').forEach(function (ch) { ESCAPED[ch.charCodeAt(0)] = 1; });\n\n\nmodule.exports = function escape(state, silent) {\n var ch, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x5C/* \\ */) { return false; }\n\n pos++;\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch < 256 && ESCAPED[ch] !== 0) {\n if (!silent) { state.pending += state.src[pos]; }\n state.pos += 2;\n return true;\n }\n\n if (ch === 0x0A) {\n if (!silent) {\n state.push('hardbreak', 'br', 0);\n }\n\n pos++;\n // skip leading whitespaces from next line\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n pos++;\n }\n\n state.pos = pos;\n return true;\n }\n }\n\n if (!silent) { state.pending += '\\\\'; }\n state.pos++;\n return true;\n};\n","/* eslint no-constant-condition:0 */\nvar functions = require(\"./functions\");\nvar environments = require(\"./environments\");\nvar Lexer = require(\"./Lexer\");\nvar symbols = require(\"./symbols\");\nvar utils = require(\"./utils\");\n\nvar parseData = require(\"./parseData\");\nvar ParseError = require(\"./ParseError\");\n\n/**\n * This file contains the parser used to parse out a TeX expression from the\n * input. Since TeX isn't context-free, standard parsers don't work particularly\n * well.\n *\n * The strategy of this parser is as such:\n *\n * The main functions (the `.parse...` ones) take a position in the current\n * parse string to parse tokens from. The lexer (found in Lexer.js, stored at\n * this.lexer) also supports pulling out tokens at arbitrary places. When\n * individual tokens are needed at a position, the lexer is called to pull out a\n * token, which is then used.\n *\n * The parser has a property called \"mode\" indicating the mode that\n * the parser is currently in. Currently it has to be one of \"math\" or\n * \"text\", which denotes whether the current environment is a math-y\n * one or a text-y one (e.g. inside \\text). Currently, this serves to\n * limit the functions which can be used in text mode.\n *\n * The main functions then return an object which contains the useful data that\n * was parsed at its given point, and a new position at the end of the parsed\n * data. The main functions can call each other and continue the parsing by\n * using the returned position as a new starting point.\n *\n * There are also extra `.handle...` functions, which pull out some reused\n * functionality into self-contained functions.\n *\n * The earlier functions return ParseNodes.\n * The later functions (which are called deeper in the parse) sometimes return\n * ParseFuncOrArgument, which contain a ParseNode as well as some data about\n * whether the parsed object is a function which is missing some arguments, or a\n * standalone object which can be used as an argument to another function.\n */\n\n/**\n * Main Parser class\n */\nfunction Parser(input, settings) {\n // Make a new lexer\n this.lexer = new Lexer(input);\n // Store the settings for use in parsing\n this.settings = settings;\n}\n\nvar ParseNode = parseData.ParseNode;\n\n/**\n * An initial function (without its arguments), or an argument to a function.\n * The `result` argument should be a ParseNode.\n */\nfunction ParseFuncOrArgument(result, isFunction) {\n this.result = result;\n // Is this a function (i.e. is it something defined in functions.js)?\n this.isFunction = isFunction;\n}\n\n/**\n * Checks a result to make sure it has the right type, and throws an\n * appropriate error otherwise.\n *\n * @param {boolean=} consume whether to consume the expected token,\n * defaults to true\n */\nParser.prototype.expect = function(text, consume) {\n if (this.nextToken.text !== text) {\n throw new ParseError(\n \"Expected '\" + text + \"', got '\" + this.nextToken.text + \"'\",\n this.lexer, this.nextToken.position\n );\n }\n if (consume !== false) {\n this.consume();\n }\n};\n\n/**\n * Considers the current look ahead token as consumed,\n * and fetches the one after that as the new look ahead.\n */\nParser.prototype.consume = function() {\n this.pos = this.nextToken.position;\n this.nextToken = this.lexer.lex(this.pos, this.mode);\n};\n\n/**\n * Main parsing function, which parses an entire input.\n *\n * @return {?Array.}\n */\nParser.prototype.parse = function() {\n // Try to parse the input\n this.mode = \"math\";\n this.pos = 0;\n this.nextToken = this.lexer.lex(this.pos, this.mode);\n var parse = this.parseInput();\n return parse;\n};\n\n/**\n * Parses an entire input tree.\n */\nParser.prototype.parseInput = function() {\n // Parse an expression\n var expression = this.parseExpression(false);\n // If we succeeded, make sure there's an EOF at the end\n this.expect(\"EOF\", false);\n return expression;\n};\n\nvar endOfExpression = [\"}\", \"\\\\end\", \"\\\\right\", \"&\", \"\\\\\\\\\", \"\\\\cr\"];\n\n/**\n * Parses an \"expression\", which is a list of atoms.\n *\n * @param {boolean} breakOnInfix Should the parsing stop when we hit infix\n * nodes? This happens when functions have higher precendence\n * than infix nodes in implicit parses.\n *\n * @param {?string} breakOnToken The token that the expression should end with,\n * or `null` if something else should end the expression.\n *\n * @return {ParseNode}\n */\nParser.prototype.parseExpression = function(breakOnInfix, breakOnToken) {\n var body = [];\n // Keep adding atoms to the body until we can't parse any more atoms (either\n // we reached the end, a }, or a \\right)\n while (true) {\n var lex = this.nextToken;\n var pos = this.pos;\n if (endOfExpression.indexOf(lex.text) !== -1) {\n break;\n }\n if (breakOnToken && lex.text === breakOnToken) {\n break;\n }\n var atom = this.parseAtom();\n if (!atom) {\n if (!this.settings.throwOnError && lex.text[0] === \"\\\\\") {\n var errorNode = this.handleUnsupportedCmd();\n body.push(errorNode);\n\n pos = lex.position;\n continue;\n }\n\n break;\n }\n if (breakOnInfix && atom.type === \"infix\") {\n // rewind so we can parse the infix atom again\n this.pos = pos;\n this.nextToken = lex;\n break;\n }\n body.push(atom);\n }\n return this.handleInfixNodes(body);\n};\n\n/**\n * Rewrites infix operators such as \\over with corresponding commands such\n * as \\frac.\n *\n * There can only be one infix operator per group. If there's more than one\n * then the expression is ambiguous. This can be resolved by adding {}.\n *\n * @returns {Array}\n */\nParser.prototype.handleInfixNodes = function(body) {\n var overIndex = -1;\n var funcName;\n\n for (var i = 0; i < body.length; i++) {\n var node = body[i];\n if (node.type === \"infix\") {\n if (overIndex !== -1) {\n throw new ParseError(\"only one infix operator per group\",\n this.lexer, -1);\n }\n overIndex = i;\n funcName = node.value.replaceWith;\n }\n }\n\n if (overIndex !== -1) {\n var numerNode;\n var denomNode;\n\n var numerBody = body.slice(0, overIndex);\n var denomBody = body.slice(overIndex + 1);\n\n if (numerBody.length === 1 && numerBody[0].type === \"ordgroup\") {\n numerNode = numerBody[0];\n } else {\n numerNode = new ParseNode(\"ordgroup\", numerBody, this.mode);\n }\n\n if (denomBody.length === 1 && denomBody[0].type === \"ordgroup\") {\n denomNode = denomBody[0];\n } else {\n denomNode = new ParseNode(\"ordgroup\", denomBody, this.mode);\n }\n\n var value = this.callFunction(\n funcName, [numerNode, denomNode], null);\n return [new ParseNode(value.type, value, this.mode)];\n } else {\n return body;\n }\n};\n\n// The greediness of a superscript or subscript\nvar SUPSUB_GREEDINESS = 1;\n\n/**\n * Handle a subscript or superscript with nice errors.\n */\nParser.prototype.handleSupSubscript = function(name) {\n var symbol = this.nextToken.text;\n var symPos = this.pos;\n this.consume();\n var group = this.parseGroup();\n\n if (!group) {\n if (!this.settings.throwOnError && this.nextToken.text[0] === \"\\\\\") {\n return this.handleUnsupportedCmd();\n } else {\n throw new ParseError(\n \"Expected group after '\" + symbol + \"'\",\n this.lexer,\n symPos + 1\n );\n }\n } else if (group.isFunction) {\n // ^ and _ have a greediness, so handle interactions with functions'\n // greediness\n var funcGreediness = functions[group.result].greediness;\n if (funcGreediness > SUPSUB_GREEDINESS) {\n return this.parseFunction(group);\n } else {\n throw new ParseError(\n \"Got function '\" + group.result + \"' with no arguments \" +\n \"as \" + name,\n this.lexer, symPos + 1);\n }\n } else {\n return group.result;\n }\n};\n\n/**\n * Converts the textual input of an unsupported command into a text node\n * contained within a color node whose color is determined by errorColor\n */\nParser.prototype.handleUnsupportedCmd = function() {\n var text = this.nextToken.text;\n var textordArray = [];\n\n for (var i = 0; i < text.length; i++) {\n textordArray.push(new ParseNode(\"textord\", text[i], \"text\"));\n }\n\n var textNode = new ParseNode(\n \"text\",\n {\n body: textordArray,\n type: \"text\",\n },\n this.mode);\n\n var colorNode = new ParseNode(\n \"color\",\n {\n color: this.settings.errorColor,\n value: [textNode],\n type: \"color\",\n },\n this.mode);\n\n this.consume();\n return colorNode;\n};\n\n/**\n * Parses a group with optional super/subscripts.\n *\n * @return {?ParseNode}\n */\nParser.prototype.parseAtom = function() {\n // The body of an atom is an implicit group, so that things like\n // \\left(x\\right)^2 work correctly.\n var base = this.parseImplicitGroup();\n\n // In text mode, we don't have superscripts or subscripts\n if (this.mode === \"text\") {\n return base;\n }\n\n // Note that base may be empty (i.e. null) at this point.\n\n var superscript;\n var subscript;\n while (true) {\n // Lex the first token\n var lex = this.nextToken;\n\n if (lex.text === \"\\\\limits\" || lex.text === \"\\\\nolimits\") {\n // We got a limit control\n if (!base || base.type !== \"op\") {\n throw new ParseError(\n \"Limit controls must follow a math operator\",\n this.lexer, this.pos);\n } else {\n var limits = lex.text === \"\\\\limits\";\n base.value.limits = limits;\n base.value.alwaysHandleSupSub = true;\n }\n this.consume();\n } else if (lex.text === \"^\") {\n // We got a superscript start\n if (superscript) {\n throw new ParseError(\n \"Double superscript\", this.lexer, this.pos);\n }\n superscript = this.handleSupSubscript(\"superscript\");\n } else if (lex.text === \"_\") {\n // We got a subscript start\n if (subscript) {\n throw new ParseError(\n \"Double subscript\", this.lexer, this.pos);\n }\n subscript = this.handleSupSubscript(\"subscript\");\n } else if (lex.text === \"'\") {\n // We got a prime\n var prime = new ParseNode(\"textord\", \"\\\\prime\", this.mode);\n\n // Many primes can be grouped together, so we handle this here\n var primes = [prime];\n this.consume();\n // Keep lexing tokens until we get something that's not a prime\n while (this.nextToken.text === \"'\") {\n // For each one, add another prime to the list\n primes.push(prime);\n this.consume();\n }\n // Put them into an ordgroup as the superscript\n superscript = new ParseNode(\"ordgroup\", primes, this.mode);\n } else {\n // If it wasn't ^, _, or ', stop parsing super/subscripts\n break;\n }\n }\n\n if (superscript || subscript) {\n // If we got either a superscript or subscript, create a supsub\n return new ParseNode(\"supsub\", {\n base: base,\n sup: superscript,\n sub: subscript,\n }, this.mode);\n } else {\n // Otherwise return the original body\n return base;\n }\n};\n\n// A list of the size-changing functions, for use in parseImplicitGroup\nvar sizeFuncs = [\n \"\\\\tiny\", \"\\\\scriptsize\", \"\\\\footnotesize\", \"\\\\small\", \"\\\\normalsize\",\n \"\\\\large\", \"\\\\Large\", \"\\\\LARGE\", \"\\\\huge\", \"\\\\Huge\",\n];\n\n// A list of the style-changing functions, for use in parseImplicitGroup\nvar styleFuncs = [\n \"\\\\displaystyle\", \"\\\\textstyle\", \"\\\\scriptstyle\", \"\\\\scriptscriptstyle\",\n];\n\n/**\n * Parses an implicit group, which is a group that starts at the end of a\n * specified, and ends right before a higher explicit group ends, or at EOL. It\n * is used for functions that appear to affect the current style, like \\Large or\n * \\textrm, where instead of keeping a style we just pretend that there is an\n * implicit grouping after it until the end of the group. E.g.\n * small text {\\Large large text} small text again\n * It is also used for \\left and \\right to get the correct grouping.\n *\n * @return {?ParseNode}\n */\nParser.prototype.parseImplicitGroup = function() {\n var start = this.parseSymbol();\n\n if (start == null) {\n // If we didn't get anything we handle, fall back to parseFunction\n return this.parseFunction();\n }\n\n var func = start.result;\n var body;\n\n if (func === \"\\\\left\") {\n // If we see a left:\n // Parse the entire left function (including the delimiter)\n var left = this.parseFunction(start);\n // Parse out the implicit body\n body = this.parseExpression(false);\n // Check the next token\n this.expect(\"\\\\right\", false);\n var right = this.parseFunction();\n return new ParseNode(\"leftright\", {\n body: body,\n left: left.value.value,\n right: right.value.value,\n }, this.mode);\n } else if (func === \"\\\\begin\") {\n // begin...end is similar to left...right\n var begin = this.parseFunction(start);\n var envName = begin.value.name;\n if (!environments.hasOwnProperty(envName)) {\n throw new ParseError(\n \"No such environment: \" + envName,\n this.lexer, begin.value.namepos);\n }\n // Build the environment object. Arguments and other information will\n // be made available to the begin and end methods using properties.\n var env = environments[envName];\n var args = this.parseArguments(\"\\\\begin{\" + envName + \"}\", env);\n var context = {\n mode: this.mode,\n envName: envName,\n parser: this,\n lexer: this.lexer,\n positions: args.pop(),\n };\n var result = env.handler(context, args);\n this.expect(\"\\\\end\", false);\n var end = this.parseFunction();\n if (end.value.name !== envName) {\n throw new ParseError(\n \"Mismatch: \\\\begin{\" + envName + \"} matched \" +\n \"by \\\\end{\" + end.value.name + \"}\",\n this.lexer /* , end.value.namepos */);\n // TODO: Add position to the above line and adjust test case,\n // requires #385 to get merged first\n }\n result.position = end.position;\n return result;\n } else if (utils.contains(sizeFuncs, func)) {\n // If we see a sizing function, parse out the implict body\n body = this.parseExpression(false);\n return new ParseNode(\"sizing\", {\n // Figure out what size to use based on the list of functions above\n size: \"size\" + (utils.indexOf(sizeFuncs, func) + 1),\n value: body,\n }, this.mode);\n } else if (utils.contains(styleFuncs, func)) {\n // If we see a styling function, parse out the implict body\n body = this.parseExpression(true);\n return new ParseNode(\"styling\", {\n // Figure out what style to use by pulling out the style from\n // the function name\n style: func.slice(1, func.length - 5),\n value: body,\n }, this.mode);\n } else {\n // Defer to parseFunction if it's not a function we handle\n return this.parseFunction(start);\n }\n};\n\n/**\n * Parses an entire function, including its base and all of its arguments.\n * The base might either have been parsed already, in which case\n * it is provided as an argument, or it's the next group in the input.\n *\n * @param {ParseFuncOrArgument=} baseGroup optional as described above\n * @return {?ParseNode}\n */\nParser.prototype.parseFunction = function(baseGroup) {\n if (!baseGroup) {\n baseGroup = this.parseGroup();\n }\n\n if (baseGroup) {\n if (baseGroup.isFunction) {\n var func = baseGroup.result;\n var funcData = functions[func];\n if (this.mode === \"text\" && !funcData.allowedInText) {\n throw new ParseError(\n \"Can't use function '\" + func + \"' in text mode\",\n this.lexer, baseGroup.position);\n }\n\n var args = this.parseArguments(func, funcData);\n var result = this.callFunction(func, args, args.pop());\n return new ParseNode(result.type, result, this.mode);\n } else {\n return baseGroup.result;\n }\n } else {\n return null;\n }\n};\n\n/**\n * Call a function handler with a suitable context and arguments.\n */\nParser.prototype.callFunction = function(name, args, positions) {\n var context = {\n funcName: name,\n parser: this,\n lexer: this.lexer,\n positions: positions,\n };\n return functions[name].handler(context, args);\n};\n\n/**\n * Parses the arguments of a function or environment\n *\n * @param {string} func \"\\name\" or \"\\begin{name}\"\n * @param {{numArgs:number,numOptionalArgs:number|undefined}} funcData\n * @return the array of arguments, with the list of positions as last element\n */\nParser.prototype.parseArguments = function(func, funcData) {\n var totalArgs = funcData.numArgs + funcData.numOptionalArgs;\n if (totalArgs === 0) {\n return [[this.pos]];\n }\n\n var baseGreediness = funcData.greediness;\n var positions = [this.pos];\n var args = [];\n\n for (var i = 0; i < totalArgs; i++) {\n var argType = funcData.argTypes && funcData.argTypes[i];\n var arg;\n if (i < funcData.numOptionalArgs) {\n if (argType) {\n arg = this.parseSpecialGroup(argType, true);\n } else {\n arg = this.parseOptionalGroup();\n }\n if (!arg) {\n args.push(null);\n positions.push(this.pos);\n continue;\n }\n } else {\n if (argType) {\n arg = this.parseSpecialGroup(argType);\n } else {\n arg = this.parseGroup();\n }\n if (!arg) {\n if (!this.settings.throwOnError &&\n this.nextToken.text[0] === \"\\\\\") {\n arg = new ParseFuncOrArgument(\n this.handleUnsupportedCmd(this.nextToken.text),\n false);\n } else {\n throw new ParseError(\n \"Expected group after '\" + func + \"'\",\n this.lexer, this.pos);\n }\n }\n }\n var argNode;\n if (arg.isFunction) {\n var argGreediness =\n functions[arg.result].greediness;\n if (argGreediness > baseGreediness) {\n argNode = this.parseFunction(arg);\n } else {\n throw new ParseError(\n \"Got function '\" + arg.result + \"' as \" +\n \"argument to '\" + func + \"'\",\n this.lexer, this.pos - 1);\n }\n } else {\n argNode = arg.result;\n }\n args.push(argNode);\n positions.push(this.pos);\n }\n\n args.push(positions);\n\n return args;\n};\n\n\n/**\n * Parses a group when the mode is changing. Takes a position, a new mode, and\n * an outer mode that is used to parse the outside.\n *\n * @return {?ParseFuncOrArgument}\n */\nParser.prototype.parseSpecialGroup = function(innerMode, optional) {\n var outerMode = this.mode;\n // Handle `original` argTypes\n if (innerMode === \"original\") {\n innerMode = outerMode;\n }\n\n if (innerMode === \"color\" || innerMode === \"size\") {\n // color and size modes are special because they should have braces and\n // should only lex a single symbol inside\n var openBrace = this.nextToken;\n if (optional && openBrace.text !== \"[\") {\n // optional arguments should return null if they don't exist\n return null;\n }\n // The call to expect will lex the token after the '{' in inner mode\n this.mode = innerMode;\n this.expect(optional ? \"[\" : \"{\");\n var inner = this.nextToken;\n this.mode = outerMode;\n var data;\n if (innerMode === \"color\") {\n data = inner.text;\n } else {\n data = inner.data;\n }\n this.consume(); // consume the token stored in inner\n this.expect(optional ? \"]\" : \"}\");\n return new ParseFuncOrArgument(\n new ParseNode(innerMode, data, outerMode),\n false);\n } else if (innerMode === \"text\") {\n // text mode is special because it should ignore the whitespace before\n // it\n var whitespace = this.lexer.lex(this.pos, \"whitespace\");\n this.pos = whitespace.position;\n }\n\n // By the time we get here, innerMode is one of \"text\" or \"math\".\n // We switch the mode of the parser, recurse, then restore the old mode.\n this.mode = innerMode;\n this.nextToken = this.lexer.lex(this.pos, innerMode);\n var res;\n if (optional) {\n res = this.parseOptionalGroup();\n } else {\n res = this.parseGroup();\n }\n this.mode = outerMode;\n this.nextToken = this.lexer.lex(this.pos, outerMode);\n return res;\n};\n\n/**\n * Parses a group, which is either a single nucleus (like \"x\") or an expression\n * in braces (like \"{x+y}\")\n *\n * @return {?ParseFuncOrArgument}\n */\nParser.prototype.parseGroup = function() {\n // Try to parse an open brace\n if (this.nextToken.text === \"{\") {\n // If we get a brace, parse an expression\n this.consume();\n var expression = this.parseExpression(false);\n // Make sure we get a close brace\n this.expect(\"}\");\n return new ParseFuncOrArgument(\n new ParseNode(\"ordgroup\", expression, this.mode),\n false);\n } else {\n // Otherwise, just return a nucleus\n return this.parseSymbol();\n }\n};\n\n/**\n * Parses a group, which is an expression in brackets (like \"[x+y]\")\n *\n * @return {?ParseFuncOrArgument}\n */\nParser.prototype.parseOptionalGroup = function() {\n // Try to parse an open bracket\n if (this.nextToken.text === \"[\") {\n // If we get a brace, parse an expression\n this.consume();\n var expression = this.parseExpression(false, \"]\");\n // Make sure we get a close bracket\n this.expect(\"]\");\n return new ParseFuncOrArgument(\n new ParseNode(\"ordgroup\", expression, this.mode),\n false);\n } else {\n // Otherwise, return null,\n return null;\n }\n};\n\n/**\n * Parse a single symbol out of the string. Here, we handle both the functions\n * we have defined, as well as the single character symbols\n *\n * @return {?ParseFuncOrArgument}\n */\nParser.prototype.parseSymbol = function() {\n var nucleus = this.nextToken;\n\n if (functions[nucleus.text]) {\n this.consume();\n // If there exists a function with this name, we return the function and\n // say that it is a function.\n return new ParseFuncOrArgument(\n nucleus.text,\n true);\n } else if (symbols[this.mode][nucleus.text]) {\n this.consume();\n // Otherwise if this is a no-argument function, find the type it\n // corresponds to in the symbols map\n return new ParseFuncOrArgument(\n new ParseNode(symbols[this.mode][nucleus.text].group,\n nucleus.text, this.mode),\n false);\n } else {\n return null;\n }\n};\n\nParser.prototype.ParseNode = ParseNode;\n\nmodule.exports = Parser;\n","module.exports=/[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/","// Core state object\n//\n'use strict';\n\nvar Token = require('../token');\n\n\nfunction StateCore(src, md, env) {\n this.src = src;\n this.env = env;\n this.tokens = [];\n this.inlineMode = false;\n this.md = md; // link to parser instance\n}\n\n// re-export Token class to use in core rules\nStateCore.prototype.Token = Token;\n\n\nmodule.exports = StateCore;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar GainAnalysis = require('./GainAnalysis.js');\n\nfunction ReplayGain() {\n this.linprebuf = new_float(GainAnalysis.MAX_ORDER * 2);\n /**\n * left input samples, with pre-buffer\n */\n this.linpre = 0;\n this.lstepbuf = new_float(GainAnalysis.MAX_SAMPLES_PER_WINDOW + GainAnalysis.MAX_ORDER);\n /**\n * left \"first step\" (i.e. post first filter) samples\n */\n this.lstep = 0;\n this.loutbuf = new_float(GainAnalysis.MAX_SAMPLES_PER_WINDOW + GainAnalysis.MAX_ORDER);\n /**\n * left \"out\" (i.e. post second filter) samples\n */\n this.lout = 0;\n this.rinprebuf = new_float(GainAnalysis.MAX_ORDER * 2);\n /**\n * right input samples ...\n */\n this.rinpre = 0;\n this.rstepbuf = new_float(GainAnalysis.MAX_SAMPLES_PER_WINDOW + GainAnalysis.MAX_ORDER);\n this.rstep = 0;\n this.routbuf = new_float(GainAnalysis.MAX_SAMPLES_PER_WINDOW + GainAnalysis.MAX_ORDER);\n this.rout = 0;\n /**\n * number of samples required to reach number of milliseconds required\n * for RMS window\n */\n this.sampleWindow = 0;\n this.totsamp = 0;\n this.lsum = 0.;\n this.rsum = 0.;\n this.freqindex = 0;\n this.first = 0;\n this.A = new_int(0 | (GainAnalysis.STEPS_per_dB * GainAnalysis.MAX_dB));\n this.B = new_int(0 | (GainAnalysis.STEPS_per_dB * GainAnalysis.MAX_dB));\n\n}\n\nmodule.exports = ReplayGain;\n","//package mp3;\n\nfunction CalcNoiseResult() {\n /**\n * sum of quantization noise > masking\n */\n this.over_noise = 0.;\n /**\n * sum of all quantization noise\n */\n this.tot_noise = 0.;\n /**\n * max quantization noise\n */\n this.max_noise = 0.;\n /**\n * number of quantization noise > masking\n */\n this.over_count = 0;\n /**\n * SSD-like cost of distorted bands\n */\n this.over_SSD = 0;\n this.bits = 0;\n}\n\nmodule.exports = CalcNoiseResult;\n","module.exports = {\n \"AMS-Regular\": {\n \"65\": [0, 0.68889, 0, 0],\n \"66\": [0, 0.68889, 0, 0],\n \"67\": [0, 0.68889, 0, 0],\n \"68\": [0, 0.68889, 0, 0],\n \"69\": [0, 0.68889, 0, 0],\n \"70\": [0, 0.68889, 0, 0],\n \"71\": [0, 0.68889, 0, 0],\n \"72\": [0, 0.68889, 0, 0],\n \"73\": [0, 0.68889, 0, 0],\n \"74\": [0.16667, 0.68889, 0, 0],\n \"75\": [0, 0.68889, 0, 0],\n \"76\": [0, 0.68889, 0, 0],\n \"77\": [0, 0.68889, 0, 0],\n \"78\": [0, 0.68889, 0, 0],\n \"79\": [0.16667, 0.68889, 0, 0],\n \"80\": [0, 0.68889, 0, 0],\n \"81\": [0.16667, 0.68889, 0, 0],\n \"82\": [0, 0.68889, 0, 0],\n \"83\": [0, 0.68889, 0, 0],\n \"84\": [0, 0.68889, 0, 0],\n \"85\": [0, 0.68889, 0, 0],\n \"86\": [0, 0.68889, 0, 0],\n \"87\": [0, 0.68889, 0, 0],\n \"88\": [0, 0.68889, 0, 0],\n \"89\": [0, 0.68889, 0, 0],\n \"90\": [0, 0.68889, 0, 0],\n \"107\": [0, 0.68889, 0, 0],\n \"165\": [0, 0.675, 0.025, 0],\n \"174\": [0.15559, 0.69224, 0, 0],\n \"240\": [0, 0.68889, 0, 0],\n \"295\": [0, 0.68889, 0, 0],\n \"710\": [0, 0.825, 0, 0],\n \"732\": [0, 0.9, 0, 0],\n \"770\": [0, 0.825, 0, 0],\n \"771\": [0, 0.9, 0, 0],\n \"989\": [0.08167, 0.58167, 0, 0],\n \"1008\": [0, 0.43056, 0.04028, 0],\n \"8245\": [0, 0.54986, 0, 0],\n \"8463\": [0, 0.68889, 0, 0],\n \"8487\": [0, 0.68889, 0, 0],\n \"8498\": [0, 0.68889, 0, 0],\n \"8502\": [0, 0.68889, 0, 0],\n \"8503\": [0, 0.68889, 0, 0],\n \"8504\": [0, 0.68889, 0, 0],\n \"8513\": [0, 0.68889, 0, 0],\n \"8592\": [-0.03598, 0.46402, 0, 0],\n \"8594\": [-0.03598, 0.46402, 0, 0],\n \"8602\": [-0.13313, 0.36687, 0, 0],\n \"8603\": [-0.13313, 0.36687, 0, 0],\n \"8606\": [0.01354, 0.52239, 0, 0],\n \"8608\": [0.01354, 0.52239, 0, 0],\n \"8610\": [0.01354, 0.52239, 0, 0],\n \"8611\": [0.01354, 0.52239, 0, 0],\n \"8619\": [0, 0.54986, 0, 0],\n \"8620\": [0, 0.54986, 0, 0],\n \"8621\": [-0.13313, 0.37788, 0, 0],\n \"8622\": [-0.13313, 0.36687, 0, 0],\n \"8624\": [0, 0.69224, 0, 0],\n \"8625\": [0, 0.69224, 0, 0],\n \"8630\": [0, 0.43056, 0, 0],\n \"8631\": [0, 0.43056, 0, 0],\n \"8634\": [0.08198, 0.58198, 0, 0],\n \"8635\": [0.08198, 0.58198, 0, 0],\n \"8638\": [0.19444, 0.69224, 0, 0],\n \"8639\": [0.19444, 0.69224, 0, 0],\n \"8642\": [0.19444, 0.69224, 0, 0],\n \"8643\": [0.19444, 0.69224, 0, 0],\n \"8644\": [0.1808, 0.675, 0, 0],\n \"8646\": [0.1808, 0.675, 0, 0],\n \"8647\": [0.1808, 0.675, 0, 0],\n \"8648\": [0.19444, 0.69224, 0, 0],\n \"8649\": [0.1808, 0.675, 0, 0],\n \"8650\": [0.19444, 0.69224, 0, 0],\n \"8651\": [0.01354, 0.52239, 0, 0],\n \"8652\": [0.01354, 0.52239, 0, 0],\n \"8653\": [-0.13313, 0.36687, 0, 0],\n \"8654\": [-0.13313, 0.36687, 0, 0],\n \"8655\": [-0.13313, 0.36687, 0, 0],\n \"8666\": [0.13667, 0.63667, 0, 0],\n \"8667\": [0.13667, 0.63667, 0, 0],\n \"8669\": [-0.13313, 0.37788, 0, 0],\n \"8672\": [-0.064, 0.437, 0, 0],\n \"8674\": [-0.064, 0.437, 0, 0],\n \"8705\": [0, 0.825, 0, 0],\n \"8708\": [0, 0.68889, 0, 0],\n \"8709\": [0.08167, 0.58167, 0, 0],\n \"8717\": [0, 0.43056, 0, 0],\n \"8722\": [-0.03598, 0.46402, 0, 0],\n \"8724\": [0.08198, 0.69224, 0, 0],\n \"8726\": [0.08167, 0.58167, 0, 0],\n \"8733\": [0, 0.69224, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8737\": [0, 0.69224, 0, 0],\n \"8738\": [0.03517, 0.52239, 0, 0],\n \"8739\": [0.08167, 0.58167, 0, 0],\n \"8740\": [0.25142, 0.74111, 0, 0],\n \"8741\": [0.08167, 0.58167, 0, 0],\n \"8742\": [0.25142, 0.74111, 0, 0],\n \"8756\": [0, 0.69224, 0, 0],\n \"8757\": [0, 0.69224, 0, 0],\n \"8764\": [-0.13313, 0.36687, 0, 0],\n \"8765\": [-0.13313, 0.37788, 0, 0],\n \"8769\": [-0.13313, 0.36687, 0, 0],\n \"8770\": [-0.03625, 0.46375, 0, 0],\n \"8774\": [0.30274, 0.79383, 0, 0],\n \"8776\": [-0.01688, 0.48312, 0, 0],\n \"8778\": [0.08167, 0.58167, 0, 0],\n \"8782\": [0.06062, 0.54986, 0, 0],\n \"8783\": [0.06062, 0.54986, 0, 0],\n \"8785\": [0.08198, 0.58198, 0, 0],\n \"8786\": [0.08198, 0.58198, 0, 0],\n \"8787\": [0.08198, 0.58198, 0, 0],\n \"8790\": [0, 0.69224, 0, 0],\n \"8791\": [0.22958, 0.72958, 0, 0],\n \"8796\": [0.08198, 0.91667, 0, 0],\n \"8806\": [0.25583, 0.75583, 0, 0],\n \"8807\": [0.25583, 0.75583, 0, 0],\n \"8808\": [0.25142, 0.75726, 0, 0],\n \"8809\": [0.25142, 0.75726, 0, 0],\n \"8812\": [0.25583, 0.75583, 0, 0],\n \"8814\": [0.20576, 0.70576, 0, 0],\n \"8815\": [0.20576, 0.70576, 0, 0],\n \"8816\": [0.30274, 0.79383, 0, 0],\n \"8817\": [0.30274, 0.79383, 0, 0],\n \"8818\": [0.22958, 0.72958, 0, 0],\n \"8819\": [0.22958, 0.72958, 0, 0],\n \"8822\": [0.1808, 0.675, 0, 0],\n \"8823\": [0.1808, 0.675, 0, 0],\n \"8828\": [0.13667, 0.63667, 0, 0],\n \"8829\": [0.13667, 0.63667, 0, 0],\n \"8830\": [0.22958, 0.72958, 0, 0],\n \"8831\": [0.22958, 0.72958, 0, 0],\n \"8832\": [0.20576, 0.70576, 0, 0],\n \"8833\": [0.20576, 0.70576, 0, 0],\n \"8840\": [0.30274, 0.79383, 0, 0],\n \"8841\": [0.30274, 0.79383, 0, 0],\n \"8842\": [0.13597, 0.63597, 0, 0],\n \"8843\": [0.13597, 0.63597, 0, 0],\n \"8847\": [0.03517, 0.54986, 0, 0],\n \"8848\": [0.03517, 0.54986, 0, 0],\n \"8858\": [0.08198, 0.58198, 0, 0],\n \"8859\": [0.08198, 0.58198, 0, 0],\n \"8861\": [0.08198, 0.58198, 0, 0],\n \"8862\": [0, 0.675, 0, 0],\n \"8863\": [0, 0.675, 0, 0],\n \"8864\": [0, 0.675, 0, 0],\n \"8865\": [0, 0.675, 0, 0],\n \"8872\": [0, 0.69224, 0, 0],\n \"8873\": [0, 0.69224, 0, 0],\n \"8874\": [0, 0.69224, 0, 0],\n \"8876\": [0, 0.68889, 0, 0],\n \"8877\": [0, 0.68889, 0, 0],\n \"8878\": [0, 0.68889, 0, 0],\n \"8879\": [0, 0.68889, 0, 0],\n \"8882\": [0.03517, 0.54986, 0, 0],\n \"8883\": [0.03517, 0.54986, 0, 0],\n \"8884\": [0.13667, 0.63667, 0, 0],\n \"8885\": [0.13667, 0.63667, 0, 0],\n \"8888\": [0, 0.54986, 0, 0],\n \"8890\": [0.19444, 0.43056, 0, 0],\n \"8891\": [0.19444, 0.69224, 0, 0],\n \"8892\": [0.19444, 0.69224, 0, 0],\n \"8901\": [0, 0.54986, 0, 0],\n \"8903\": [0.08167, 0.58167, 0, 0],\n \"8905\": [0.08167, 0.58167, 0, 0],\n \"8906\": [0.08167, 0.58167, 0, 0],\n \"8907\": [0, 0.69224, 0, 0],\n \"8908\": [0, 0.69224, 0, 0],\n \"8909\": [-0.03598, 0.46402, 0, 0],\n \"8910\": [0, 0.54986, 0, 0],\n \"8911\": [0, 0.54986, 0, 0],\n \"8912\": [0.03517, 0.54986, 0, 0],\n \"8913\": [0.03517, 0.54986, 0, 0],\n \"8914\": [0, 0.54986, 0, 0],\n \"8915\": [0, 0.54986, 0, 0],\n \"8916\": [0, 0.69224, 0, 0],\n \"8918\": [0.0391, 0.5391, 0, 0],\n \"8919\": [0.0391, 0.5391, 0, 0],\n \"8920\": [0.03517, 0.54986, 0, 0],\n \"8921\": [0.03517, 0.54986, 0, 0],\n \"8922\": [0.38569, 0.88569, 0, 0],\n \"8923\": [0.38569, 0.88569, 0, 0],\n \"8926\": [0.13667, 0.63667, 0, 0],\n \"8927\": [0.13667, 0.63667, 0, 0],\n \"8928\": [0.30274, 0.79383, 0, 0],\n \"8929\": [0.30274, 0.79383, 0, 0],\n \"8934\": [0.23222, 0.74111, 0, 0],\n \"8935\": [0.23222, 0.74111, 0, 0],\n \"8936\": [0.23222, 0.74111, 0, 0],\n \"8937\": [0.23222, 0.74111, 0, 0],\n \"8938\": [0.20576, 0.70576, 0, 0],\n \"8939\": [0.20576, 0.70576, 0, 0],\n \"8940\": [0.30274, 0.79383, 0, 0],\n \"8941\": [0.30274, 0.79383, 0, 0],\n \"8994\": [0.19444, 0.69224, 0, 0],\n \"8995\": [0.19444, 0.69224, 0, 0],\n \"9416\": [0.15559, 0.69224, 0, 0],\n \"9484\": [0, 0.69224, 0, 0],\n \"9488\": [0, 0.69224, 0, 0],\n \"9492\": [0, 0.37788, 0, 0],\n \"9496\": [0, 0.37788, 0, 0],\n \"9585\": [0.19444, 0.68889, 0, 0],\n \"9586\": [0.19444, 0.74111, 0, 0],\n \"9632\": [0, 0.675, 0, 0],\n \"9633\": [0, 0.675, 0, 0],\n \"9650\": [0, 0.54986, 0, 0],\n \"9651\": [0, 0.54986, 0, 0],\n \"9654\": [0.03517, 0.54986, 0, 0],\n \"9660\": [0, 0.54986, 0, 0],\n \"9661\": [0, 0.54986, 0, 0],\n \"9664\": [0.03517, 0.54986, 0, 0],\n \"9674\": [0.11111, 0.69224, 0, 0],\n \"9733\": [0.19444, 0.69224, 0, 0],\n \"10003\": [0, 0.69224, 0, 0],\n \"10016\": [0, 0.69224, 0, 0],\n \"10731\": [0.11111, 0.69224, 0, 0],\n \"10846\": [0.19444, 0.75583, 0, 0],\n \"10877\": [0.13667, 0.63667, 0, 0],\n \"10878\": [0.13667, 0.63667, 0, 0],\n \"10885\": [0.25583, 0.75583, 0, 0],\n \"10886\": [0.25583, 0.75583, 0, 0],\n \"10887\": [0.13597, 0.63597, 0, 0],\n \"10888\": [0.13597, 0.63597, 0, 0],\n \"10889\": [0.26167, 0.75726, 0, 0],\n \"10890\": [0.26167, 0.75726, 0, 0],\n \"10891\": [0.48256, 0.98256, 0, 0],\n \"10892\": [0.48256, 0.98256, 0, 0],\n \"10901\": [0.13667, 0.63667, 0, 0],\n \"10902\": [0.13667, 0.63667, 0, 0],\n \"10933\": [0.25142, 0.75726, 0, 0],\n \"10934\": [0.25142, 0.75726, 0, 0],\n \"10935\": [0.26167, 0.75726, 0, 0],\n \"10936\": [0.26167, 0.75726, 0, 0],\n \"10937\": [0.26167, 0.75726, 0, 0],\n \"10938\": [0.26167, 0.75726, 0, 0],\n \"10949\": [0.25583, 0.75583, 0, 0],\n \"10950\": [0.25583, 0.75583, 0, 0],\n \"10955\": [0.28481, 0.79383, 0, 0],\n \"10956\": [0.28481, 0.79383, 0, 0],\n \"57350\": [0.08167, 0.58167, 0, 0],\n \"57351\": [0.08167, 0.58167, 0, 0],\n \"57352\": [0.08167, 0.58167, 0, 0],\n \"57353\": [0, 0.43056, 0.04028, 0],\n \"57356\": [0.25142, 0.75726, 0, 0],\n \"57357\": [0.25142, 0.75726, 0, 0],\n \"57358\": [0.41951, 0.91951, 0, 0],\n \"57359\": [0.30274, 0.79383, 0, 0],\n \"57360\": [0.30274, 0.79383, 0, 0],\n \"57361\": [0.41951, 0.91951, 0, 0],\n \"57366\": [0.25142, 0.75726, 0, 0],\n \"57367\": [0.25142, 0.75726, 0, 0],\n \"57368\": [0.25142, 0.75726, 0, 0],\n \"57369\": [0.25142, 0.75726, 0, 0],\n \"57370\": [0.13597, 0.63597, 0, 0],\n \"57371\": [0.13597, 0.63597, 0, 0],\n },\n \"Caligraphic-Regular\": {\n \"48\": [0, 0.43056, 0, 0],\n \"49\": [0, 0.43056, 0, 0],\n \"50\": [0, 0.43056, 0, 0],\n \"51\": [0.19444, 0.43056, 0, 0],\n \"52\": [0.19444, 0.43056, 0, 0],\n \"53\": [0.19444, 0.43056, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0.19444, 0.43056, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0.19444, 0.43056, 0, 0],\n \"65\": [0, 0.68333, 0, 0.19445],\n \"66\": [0, 0.68333, 0.03041, 0.13889],\n \"67\": [0, 0.68333, 0.05834, 0.13889],\n \"68\": [0, 0.68333, 0.02778, 0.08334],\n \"69\": [0, 0.68333, 0.08944, 0.11111],\n \"70\": [0, 0.68333, 0.09931, 0.11111],\n \"71\": [0.09722, 0.68333, 0.0593, 0.11111],\n \"72\": [0, 0.68333, 0.00965, 0.11111],\n \"73\": [0, 0.68333, 0.07382, 0],\n \"74\": [0.09722, 0.68333, 0.18472, 0.16667],\n \"75\": [0, 0.68333, 0.01445, 0.05556],\n \"76\": [0, 0.68333, 0, 0.13889],\n \"77\": [0, 0.68333, 0, 0.13889],\n \"78\": [0, 0.68333, 0.14736, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.11111],\n \"80\": [0, 0.68333, 0.08222, 0.08334],\n \"81\": [0.09722, 0.68333, 0, 0.11111],\n \"82\": [0, 0.68333, 0, 0.08334],\n \"83\": [0, 0.68333, 0.075, 0.13889],\n \"84\": [0, 0.68333, 0.25417, 0],\n \"85\": [0, 0.68333, 0.09931, 0.08334],\n \"86\": [0, 0.68333, 0.08222, 0],\n \"87\": [0, 0.68333, 0.08222, 0.08334],\n \"88\": [0, 0.68333, 0.14643, 0.13889],\n \"89\": [0.09722, 0.68333, 0.08222, 0.08334],\n \"90\": [0, 0.68333, 0.07944, 0.13889],\n },\n \"Fraktur-Regular\": {\n \"33\": [0, 0.69141, 0, 0],\n \"34\": [0, 0.69141, 0, 0],\n \"38\": [0, 0.69141, 0, 0],\n \"39\": [0, 0.69141, 0, 0],\n \"40\": [0.24982, 0.74947, 0, 0],\n \"41\": [0.24982, 0.74947, 0, 0],\n \"42\": [0, 0.62119, 0, 0],\n \"43\": [0.08319, 0.58283, 0, 0],\n \"44\": [0, 0.10803, 0, 0],\n \"45\": [0.08319, 0.58283, 0, 0],\n \"46\": [0, 0.10803, 0, 0],\n \"47\": [0.24982, 0.74947, 0, 0],\n \"48\": [0, 0.47534, 0, 0],\n \"49\": [0, 0.47534, 0, 0],\n \"50\": [0, 0.47534, 0, 0],\n \"51\": [0.18906, 0.47534, 0, 0],\n \"52\": [0.18906, 0.47534, 0, 0],\n \"53\": [0.18906, 0.47534, 0, 0],\n \"54\": [0, 0.69141, 0, 0],\n \"55\": [0.18906, 0.47534, 0, 0],\n \"56\": [0, 0.69141, 0, 0],\n \"57\": [0.18906, 0.47534, 0, 0],\n \"58\": [0, 0.47534, 0, 0],\n \"59\": [0.12604, 0.47534, 0, 0],\n \"61\": [-0.13099, 0.36866, 0, 0],\n \"63\": [0, 0.69141, 0, 0],\n \"65\": [0, 0.69141, 0, 0],\n \"66\": [0, 0.69141, 0, 0],\n \"67\": [0, 0.69141, 0, 0],\n \"68\": [0, 0.69141, 0, 0],\n \"69\": [0, 0.69141, 0, 0],\n \"70\": [0.12604, 0.69141, 0, 0],\n \"71\": [0, 0.69141, 0, 0],\n \"72\": [0.06302, 0.69141, 0, 0],\n \"73\": [0, 0.69141, 0, 0],\n \"74\": [0.12604, 0.69141, 0, 0],\n \"75\": [0, 0.69141, 0, 0],\n \"76\": [0, 0.69141, 0, 0],\n \"77\": [0, 0.69141, 0, 0],\n \"78\": [0, 0.69141, 0, 0],\n \"79\": [0, 0.69141, 0, 0],\n \"80\": [0.18906, 0.69141, 0, 0],\n \"81\": [0.03781, 0.69141, 0, 0],\n \"82\": [0, 0.69141, 0, 0],\n \"83\": [0, 0.69141, 0, 0],\n \"84\": [0, 0.69141, 0, 0],\n \"85\": [0, 0.69141, 0, 0],\n \"86\": [0, 0.69141, 0, 0],\n \"87\": [0, 0.69141, 0, 0],\n \"88\": [0, 0.69141, 0, 0],\n \"89\": [0.18906, 0.69141, 0, 0],\n \"90\": [0.12604, 0.69141, 0, 0],\n \"91\": [0.24982, 0.74947, 0, 0],\n \"93\": [0.24982, 0.74947, 0, 0],\n \"94\": [0, 0.69141, 0, 0],\n \"97\": [0, 0.47534, 0, 0],\n \"98\": [0, 0.69141, 0, 0],\n \"99\": [0, 0.47534, 0, 0],\n \"100\": [0, 0.62119, 0, 0],\n \"101\": [0, 0.47534, 0, 0],\n \"102\": [0.18906, 0.69141, 0, 0],\n \"103\": [0.18906, 0.47534, 0, 0],\n \"104\": [0.18906, 0.69141, 0, 0],\n \"105\": [0, 0.69141, 0, 0],\n \"106\": [0, 0.69141, 0, 0],\n \"107\": [0, 0.69141, 0, 0],\n \"108\": [0, 0.69141, 0, 0],\n \"109\": [0, 0.47534, 0, 0],\n \"110\": [0, 0.47534, 0, 0],\n \"111\": [0, 0.47534, 0, 0],\n \"112\": [0.18906, 0.52396, 0, 0],\n \"113\": [0.18906, 0.47534, 0, 0],\n \"114\": [0, 0.47534, 0, 0],\n \"115\": [0, 0.47534, 0, 0],\n \"116\": [0, 0.62119, 0, 0],\n \"117\": [0, 0.47534, 0, 0],\n \"118\": [0, 0.52396, 0, 0],\n \"119\": [0, 0.52396, 0, 0],\n \"120\": [0.18906, 0.47534, 0, 0],\n \"121\": [0.18906, 0.47534, 0, 0],\n \"122\": [0.18906, 0.47534, 0, 0],\n \"8216\": [0, 0.69141, 0, 0],\n \"8217\": [0, 0.69141, 0, 0],\n \"58112\": [0, 0.62119, 0, 0],\n \"58113\": [0, 0.62119, 0, 0],\n \"58114\": [0.18906, 0.69141, 0, 0],\n \"58115\": [0.18906, 0.69141, 0, 0],\n \"58116\": [0.18906, 0.47534, 0, 0],\n \"58117\": [0, 0.69141, 0, 0],\n \"58118\": [0, 0.62119, 0, 0],\n \"58119\": [0, 0.47534, 0, 0],\n },\n \"Main-Bold\": {\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.13333, 0.63333, 0, 0],\n \"44\": [0.19444, 0.15556, 0, 0],\n \"45\": [0, 0.44444, 0, 0],\n \"46\": [0, 0.15556, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.64444, 0, 0],\n \"49\": [0, 0.64444, 0, 0],\n \"50\": [0, 0.64444, 0, 0],\n \"51\": [0, 0.64444, 0, 0],\n \"52\": [0, 0.64444, 0, 0],\n \"53\": [0, 0.64444, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0, 0.64444, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0, 0.64444, 0, 0],\n \"58\": [0, 0.44444, 0, 0],\n \"59\": [0.19444, 0.44444, 0, 0],\n \"60\": [0.08556, 0.58556, 0, 0],\n \"61\": [-0.10889, 0.39111, 0, 0],\n \"62\": [0.08556, 0.58556, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.68611, 0, 0],\n \"66\": [0, 0.68611, 0, 0],\n \"67\": [0, 0.68611, 0, 0],\n \"68\": [0, 0.68611, 0, 0],\n \"69\": [0, 0.68611, 0, 0],\n \"70\": [0, 0.68611, 0, 0],\n \"71\": [0, 0.68611, 0, 0],\n \"72\": [0, 0.68611, 0, 0],\n \"73\": [0, 0.68611, 0, 0],\n \"74\": [0, 0.68611, 0, 0],\n \"75\": [0, 0.68611, 0, 0],\n \"76\": [0, 0.68611, 0, 0],\n \"77\": [0, 0.68611, 0, 0],\n \"78\": [0, 0.68611, 0, 0],\n \"79\": [0, 0.68611, 0, 0],\n \"80\": [0, 0.68611, 0, 0],\n \"81\": [0.19444, 0.68611, 0, 0],\n \"82\": [0, 0.68611, 0, 0],\n \"83\": [0, 0.68611, 0, 0],\n \"84\": [0, 0.68611, 0, 0],\n \"85\": [0, 0.68611, 0, 0],\n \"86\": [0, 0.68611, 0.01597, 0],\n \"87\": [0, 0.68611, 0.01597, 0],\n \"88\": [0, 0.68611, 0, 0],\n \"89\": [0, 0.68611, 0.02875, 0],\n \"90\": [0, 0.68611, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"92\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.31, 0.13444, 0.03194, 0],\n \"96\": [0, 0.69444, 0, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0, 0.69444, 0.10903, 0],\n \"103\": [0.19444, 0.44444, 0.01597, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.69444, 0, 0],\n \"106\": [0.19444, 0.69444, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0, 0],\n \"114\": [0, 0.44444, 0, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.63492, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.01597, 0],\n \"119\": [0, 0.44444, 0.01597, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.01597, 0],\n \"122\": [0, 0.44444, 0, 0],\n \"123\": [0.25, 0.75, 0, 0],\n \"124\": [0.25, 0.75, 0, 0],\n \"125\": [0.25, 0.75, 0, 0],\n \"126\": [0.35, 0.34444, 0, 0],\n \"168\": [0, 0.69444, 0, 0],\n \"172\": [0, 0.44444, 0, 0],\n \"175\": [0, 0.59611, 0, 0],\n \"176\": [0, 0.69444, 0, 0],\n \"177\": [0.13333, 0.63333, 0, 0],\n \"180\": [0, 0.69444, 0, 0],\n \"215\": [0.13333, 0.63333, 0, 0],\n \"247\": [0.13333, 0.63333, 0, 0],\n \"305\": [0, 0.44444, 0, 0],\n \"567\": [0.19444, 0.44444, 0, 0],\n \"710\": [0, 0.69444, 0, 0],\n \"711\": [0, 0.63194, 0, 0],\n \"713\": [0, 0.59611, 0, 0],\n \"714\": [0, 0.69444, 0, 0],\n \"715\": [0, 0.69444, 0, 0],\n \"728\": [0, 0.69444, 0, 0],\n \"729\": [0, 0.69444, 0, 0],\n \"730\": [0, 0.69444, 0, 0],\n \"732\": [0, 0.69444, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.69444, 0, 0],\n \"772\": [0, 0.59611, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.69444, 0, 0],\n \"776\": [0, 0.69444, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.63194, 0, 0],\n \"824\": [0.19444, 0.69444, 0, 0],\n \"915\": [0, 0.68611, 0, 0],\n \"916\": [0, 0.68611, 0, 0],\n \"920\": [0, 0.68611, 0, 0],\n \"923\": [0, 0.68611, 0, 0],\n \"926\": [0, 0.68611, 0, 0],\n \"928\": [0, 0.68611, 0, 0],\n \"931\": [0, 0.68611, 0, 0],\n \"933\": [0, 0.68611, 0, 0],\n \"934\": [0, 0.68611, 0, 0],\n \"936\": [0, 0.68611, 0, 0],\n \"937\": [0, 0.68611, 0, 0],\n \"8211\": [0, 0.44444, 0.03194, 0],\n \"8212\": [0, 0.44444, 0.03194, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0],\n \"8224\": [0.19444, 0.69444, 0, 0],\n \"8225\": [0.19444, 0.69444, 0, 0],\n \"8242\": [0, 0.55556, 0, 0],\n \"8407\": [0, 0.72444, 0.15486, 0],\n \"8463\": [0, 0.69444, 0, 0],\n \"8465\": [0, 0.69444, 0, 0],\n \"8467\": [0, 0.69444, 0, 0],\n \"8472\": [0.19444, 0.44444, 0, 0],\n \"8476\": [0, 0.69444, 0, 0],\n \"8501\": [0, 0.69444, 0, 0],\n \"8592\": [-0.10889, 0.39111, 0, 0],\n \"8593\": [0.19444, 0.69444, 0, 0],\n \"8594\": [-0.10889, 0.39111, 0, 0],\n \"8595\": [0.19444, 0.69444, 0, 0],\n \"8596\": [-0.10889, 0.39111, 0, 0],\n \"8597\": [0.25, 0.75, 0, 0],\n \"8598\": [0.19444, 0.69444, 0, 0],\n \"8599\": [0.19444, 0.69444, 0, 0],\n \"8600\": [0.19444, 0.69444, 0, 0],\n \"8601\": [0.19444, 0.69444, 0, 0],\n \"8636\": [-0.10889, 0.39111, 0, 0],\n \"8637\": [-0.10889, 0.39111, 0, 0],\n \"8640\": [-0.10889, 0.39111, 0, 0],\n \"8641\": [-0.10889, 0.39111, 0, 0],\n \"8656\": [-0.10889, 0.39111, 0, 0],\n \"8657\": [0.19444, 0.69444, 0, 0],\n \"8658\": [-0.10889, 0.39111, 0, 0],\n \"8659\": [0.19444, 0.69444, 0, 0],\n \"8660\": [-0.10889, 0.39111, 0, 0],\n \"8661\": [0.25, 0.75, 0, 0],\n \"8704\": [0, 0.69444, 0, 0],\n \"8706\": [0, 0.69444, 0.06389, 0],\n \"8707\": [0, 0.69444, 0, 0],\n \"8709\": [0.05556, 0.75, 0, 0],\n \"8711\": [0, 0.68611, 0, 0],\n \"8712\": [0.08556, 0.58556, 0, 0],\n \"8715\": [0.08556, 0.58556, 0, 0],\n \"8722\": [0.13333, 0.63333, 0, 0],\n \"8723\": [0.13333, 0.63333, 0, 0],\n \"8725\": [0.25, 0.75, 0, 0],\n \"8726\": [0.25, 0.75, 0, 0],\n \"8727\": [-0.02778, 0.47222, 0, 0],\n \"8728\": [-0.02639, 0.47361, 0, 0],\n \"8729\": [-0.02639, 0.47361, 0, 0],\n \"8730\": [0.18, 0.82, 0, 0],\n \"8733\": [0, 0.44444, 0, 0],\n \"8734\": [0, 0.44444, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8739\": [0.25, 0.75, 0, 0],\n \"8741\": [0.25, 0.75, 0, 0],\n \"8743\": [0, 0.55556, 0, 0],\n \"8744\": [0, 0.55556, 0, 0],\n \"8745\": [0, 0.55556, 0, 0],\n \"8746\": [0, 0.55556, 0, 0],\n \"8747\": [0.19444, 0.69444, 0.12778, 0],\n \"8764\": [-0.10889, 0.39111, 0, 0],\n \"8768\": [0.19444, 0.69444, 0, 0],\n \"8771\": [0.00222, 0.50222, 0, 0],\n \"8776\": [0.02444, 0.52444, 0, 0],\n \"8781\": [0.00222, 0.50222, 0, 0],\n \"8801\": [0.00222, 0.50222, 0, 0],\n \"8804\": [0.19667, 0.69667, 0, 0],\n \"8805\": [0.19667, 0.69667, 0, 0],\n \"8810\": [0.08556, 0.58556, 0, 0],\n \"8811\": [0.08556, 0.58556, 0, 0],\n \"8826\": [0.08556, 0.58556, 0, 0],\n \"8827\": [0.08556, 0.58556, 0, 0],\n \"8834\": [0.08556, 0.58556, 0, 0],\n \"8835\": [0.08556, 0.58556, 0, 0],\n \"8838\": [0.19667, 0.69667, 0, 0],\n \"8839\": [0.19667, 0.69667, 0, 0],\n \"8846\": [0, 0.55556, 0, 0],\n \"8849\": [0.19667, 0.69667, 0, 0],\n \"8850\": [0.19667, 0.69667, 0, 0],\n \"8851\": [0, 0.55556, 0, 0],\n \"8852\": [0, 0.55556, 0, 0],\n \"8853\": [0.13333, 0.63333, 0, 0],\n \"8854\": [0.13333, 0.63333, 0, 0],\n \"8855\": [0.13333, 0.63333, 0, 0],\n \"8856\": [0.13333, 0.63333, 0, 0],\n \"8857\": [0.13333, 0.63333, 0, 0],\n \"8866\": [0, 0.69444, 0, 0],\n \"8867\": [0, 0.69444, 0, 0],\n \"8868\": [0, 0.69444, 0, 0],\n \"8869\": [0, 0.69444, 0, 0],\n \"8900\": [-0.02639, 0.47361, 0, 0],\n \"8901\": [-0.02639, 0.47361, 0, 0],\n \"8902\": [-0.02778, 0.47222, 0, 0],\n \"8968\": [0.25, 0.75, 0, 0],\n \"8969\": [0.25, 0.75, 0, 0],\n \"8970\": [0.25, 0.75, 0, 0],\n \"8971\": [0.25, 0.75, 0, 0],\n \"8994\": [-0.13889, 0.36111, 0, 0],\n \"8995\": [-0.13889, 0.36111, 0, 0],\n \"9651\": [0.19444, 0.69444, 0, 0],\n \"9657\": [-0.02778, 0.47222, 0, 0],\n \"9661\": [0.19444, 0.69444, 0, 0],\n \"9667\": [-0.02778, 0.47222, 0, 0],\n \"9711\": [0.19444, 0.69444, 0, 0],\n \"9824\": [0.12963, 0.69444, 0, 0],\n \"9825\": [0.12963, 0.69444, 0, 0],\n \"9826\": [0.12963, 0.69444, 0, 0],\n \"9827\": [0.12963, 0.69444, 0, 0],\n \"9837\": [0, 0.75, 0, 0],\n \"9838\": [0.19444, 0.69444, 0, 0],\n \"9839\": [0.19444, 0.69444, 0, 0],\n \"10216\": [0.25, 0.75, 0, 0],\n \"10217\": [0.25, 0.75, 0, 0],\n \"10815\": [0, 0.68611, 0, 0],\n \"10927\": [0.19667, 0.69667, 0, 0],\n \"10928\": [0.19667, 0.69667, 0, 0],\n },\n \"Main-Italic\": {\n \"33\": [0, 0.69444, 0.12417, 0],\n \"34\": [0, 0.69444, 0.06961, 0],\n \"35\": [0.19444, 0.69444, 0.06616, 0],\n \"37\": [0.05556, 0.75, 0.13639, 0],\n \"38\": [0, 0.69444, 0.09694, 0],\n \"39\": [0, 0.69444, 0.12417, 0],\n \"40\": [0.25, 0.75, 0.16194, 0],\n \"41\": [0.25, 0.75, 0.03694, 0],\n \"42\": [0, 0.75, 0.14917, 0],\n \"43\": [0.05667, 0.56167, 0.03694, 0],\n \"44\": [0.19444, 0.10556, 0, 0],\n \"45\": [0, 0.43056, 0.02826, 0],\n \"46\": [0, 0.10556, 0, 0],\n \"47\": [0.25, 0.75, 0.16194, 0],\n \"48\": [0, 0.64444, 0.13556, 0],\n \"49\": [0, 0.64444, 0.13556, 0],\n \"50\": [0, 0.64444, 0.13556, 0],\n \"51\": [0, 0.64444, 0.13556, 0],\n \"52\": [0.19444, 0.64444, 0.13556, 0],\n \"53\": [0, 0.64444, 0.13556, 0],\n \"54\": [0, 0.64444, 0.13556, 0],\n \"55\": [0.19444, 0.64444, 0.13556, 0],\n \"56\": [0, 0.64444, 0.13556, 0],\n \"57\": [0, 0.64444, 0.13556, 0],\n \"58\": [0, 0.43056, 0.0582, 0],\n \"59\": [0.19444, 0.43056, 0.0582, 0],\n \"61\": [-0.13313, 0.36687, 0.06616, 0],\n \"63\": [0, 0.69444, 0.1225, 0],\n \"64\": [0, 0.69444, 0.09597, 0],\n \"65\": [0, 0.68333, 0, 0],\n \"66\": [0, 0.68333, 0.10257, 0],\n \"67\": [0, 0.68333, 0.14528, 0],\n \"68\": [0, 0.68333, 0.09403, 0],\n \"69\": [0, 0.68333, 0.12028, 0],\n \"70\": [0, 0.68333, 0.13305, 0],\n \"71\": [0, 0.68333, 0.08722, 0],\n \"72\": [0, 0.68333, 0.16389, 0],\n \"73\": [0, 0.68333, 0.15806, 0],\n \"74\": [0, 0.68333, 0.14028, 0],\n \"75\": [0, 0.68333, 0.14528, 0],\n \"76\": [0, 0.68333, 0, 0],\n \"77\": [0, 0.68333, 0.16389, 0],\n \"78\": [0, 0.68333, 0.16389, 0],\n \"79\": [0, 0.68333, 0.09403, 0],\n \"80\": [0, 0.68333, 0.10257, 0],\n \"81\": [0.19444, 0.68333, 0.09403, 0],\n \"82\": [0, 0.68333, 0.03868, 0],\n \"83\": [0, 0.68333, 0.11972, 0],\n \"84\": [0, 0.68333, 0.13305, 0],\n \"85\": [0, 0.68333, 0.16389, 0],\n \"86\": [0, 0.68333, 0.18361, 0],\n \"87\": [0, 0.68333, 0.18361, 0],\n \"88\": [0, 0.68333, 0.15806, 0],\n \"89\": [0, 0.68333, 0.19383, 0],\n \"90\": [0, 0.68333, 0.14528, 0],\n \"91\": [0.25, 0.75, 0.1875, 0],\n \"93\": [0.25, 0.75, 0.10528, 0],\n \"94\": [0, 0.69444, 0.06646, 0],\n \"95\": [0.31, 0.12056, 0.09208, 0],\n \"97\": [0, 0.43056, 0.07671, 0],\n \"98\": [0, 0.69444, 0.06312, 0],\n \"99\": [0, 0.43056, 0.05653, 0],\n \"100\": [0, 0.69444, 0.10333, 0],\n \"101\": [0, 0.43056, 0.07514, 0],\n \"102\": [0.19444, 0.69444, 0.21194, 0],\n \"103\": [0.19444, 0.43056, 0.08847, 0],\n \"104\": [0, 0.69444, 0.07671, 0],\n \"105\": [0, 0.65536, 0.1019, 0],\n \"106\": [0.19444, 0.65536, 0.14467, 0],\n \"107\": [0, 0.69444, 0.10764, 0],\n \"108\": [0, 0.69444, 0.10333, 0],\n \"109\": [0, 0.43056, 0.07671, 0],\n \"110\": [0, 0.43056, 0.07671, 0],\n \"111\": [0, 0.43056, 0.06312, 0],\n \"112\": [0.19444, 0.43056, 0.06312, 0],\n \"113\": [0.19444, 0.43056, 0.08847, 0],\n \"114\": [0, 0.43056, 0.10764, 0],\n \"115\": [0, 0.43056, 0.08208, 0],\n \"116\": [0, 0.61508, 0.09486, 0],\n \"117\": [0, 0.43056, 0.07671, 0],\n \"118\": [0, 0.43056, 0.10764, 0],\n \"119\": [0, 0.43056, 0.10764, 0],\n \"120\": [0, 0.43056, 0.12042, 0],\n \"121\": [0.19444, 0.43056, 0.08847, 0],\n \"122\": [0, 0.43056, 0.12292, 0],\n \"126\": [0.35, 0.31786, 0.11585, 0],\n \"163\": [0, 0.69444, 0, 0],\n \"305\": [0, 0.43056, 0, 0.02778],\n \"567\": [0.19444, 0.43056, 0, 0.08334],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0.09694, 0],\n \"770\": [0, 0.69444, 0.06646, 0],\n \"771\": [0, 0.66786, 0.11585, 0],\n \"772\": [0, 0.56167, 0.10333, 0],\n \"774\": [0, 0.69444, 0.10806, 0],\n \"775\": [0, 0.66786, 0.11752, 0],\n \"776\": [0, 0.66786, 0.10474, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0.1225, 0],\n \"780\": [0, 0.62847, 0.08295, 0],\n \"915\": [0, 0.68333, 0.13305, 0],\n \"916\": [0, 0.68333, 0, 0],\n \"920\": [0, 0.68333, 0.09403, 0],\n \"923\": [0, 0.68333, 0, 0],\n \"926\": [0, 0.68333, 0.15294, 0],\n \"928\": [0, 0.68333, 0.16389, 0],\n \"931\": [0, 0.68333, 0.12028, 0],\n \"933\": [0, 0.68333, 0.11111, 0],\n \"934\": [0, 0.68333, 0.05986, 0],\n \"936\": [0, 0.68333, 0.11111, 0],\n \"937\": [0, 0.68333, 0.10257, 0],\n \"8211\": [0, 0.43056, 0.09208, 0],\n \"8212\": [0, 0.43056, 0.09208, 0],\n \"8216\": [0, 0.69444, 0.12417, 0],\n \"8217\": [0, 0.69444, 0.12417, 0],\n \"8220\": [0, 0.69444, 0.1685, 0],\n \"8221\": [0, 0.69444, 0.06961, 0],\n \"8463\": [0, 0.68889, 0, 0],\n },\n \"Main-Regular\": {\n \"32\": [0, 0, 0, 0],\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.08333, 0.58333, 0, 0],\n \"44\": [0.19444, 0.10556, 0, 0],\n \"45\": [0, 0.43056, 0, 0],\n \"46\": [0, 0.10556, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.64444, 0, 0],\n \"49\": [0, 0.64444, 0, 0],\n \"50\": [0, 0.64444, 0, 0],\n \"51\": [0, 0.64444, 0, 0],\n \"52\": [0, 0.64444, 0, 0],\n \"53\": [0, 0.64444, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0, 0.64444, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0, 0.64444, 0, 0],\n \"58\": [0, 0.43056, 0, 0],\n \"59\": [0.19444, 0.43056, 0, 0],\n \"60\": [0.0391, 0.5391, 0, 0],\n \"61\": [-0.13313, 0.36687, 0, 0],\n \"62\": [0.0391, 0.5391, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.68333, 0, 0],\n \"66\": [0, 0.68333, 0, 0],\n \"67\": [0, 0.68333, 0, 0],\n \"68\": [0, 0.68333, 0, 0],\n \"69\": [0, 0.68333, 0, 0],\n \"70\": [0, 0.68333, 0, 0],\n \"71\": [0, 0.68333, 0, 0],\n \"72\": [0, 0.68333, 0, 0],\n \"73\": [0, 0.68333, 0, 0],\n \"74\": [0, 0.68333, 0, 0],\n \"75\": [0, 0.68333, 0, 0],\n \"76\": [0, 0.68333, 0, 0],\n \"77\": [0, 0.68333, 0, 0],\n \"78\": [0, 0.68333, 0, 0],\n \"79\": [0, 0.68333, 0, 0],\n \"80\": [0, 0.68333, 0, 0],\n \"81\": [0.19444, 0.68333, 0, 0],\n \"82\": [0, 0.68333, 0, 0],\n \"83\": [0, 0.68333, 0, 0],\n \"84\": [0, 0.68333, 0, 0],\n \"85\": [0, 0.68333, 0, 0],\n \"86\": [0, 0.68333, 0.01389, 0],\n \"87\": [0, 0.68333, 0.01389, 0],\n \"88\": [0, 0.68333, 0, 0],\n \"89\": [0, 0.68333, 0.025, 0],\n \"90\": [0, 0.68333, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"92\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.31, 0.12056, 0.02778, 0],\n \"96\": [0, 0.69444, 0, 0],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.43056, 0, 0],\n \"102\": [0, 0.69444, 0.07778, 0],\n \"103\": [0.19444, 0.43056, 0.01389, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.66786, 0, 0],\n \"106\": [0.19444, 0.66786, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0],\n \"112\": [0.19444, 0.43056, 0, 0],\n \"113\": [0.19444, 0.43056, 0, 0],\n \"114\": [0, 0.43056, 0, 0],\n \"115\": [0, 0.43056, 0, 0],\n \"116\": [0, 0.61508, 0, 0],\n \"117\": [0, 0.43056, 0, 0],\n \"118\": [0, 0.43056, 0.01389, 0],\n \"119\": [0, 0.43056, 0.01389, 0],\n \"120\": [0, 0.43056, 0, 0],\n \"121\": [0.19444, 0.43056, 0.01389, 0],\n \"122\": [0, 0.43056, 0, 0],\n \"123\": [0.25, 0.75, 0, 0],\n \"124\": [0.25, 0.75, 0, 0],\n \"125\": [0.25, 0.75, 0, 0],\n \"126\": [0.35, 0.31786, 0, 0],\n \"160\": [0, 0, 0, 0],\n \"168\": [0, 0.66786, 0, 0],\n \"172\": [0, 0.43056, 0, 0],\n \"175\": [0, 0.56778, 0, 0],\n \"176\": [0, 0.69444, 0, 0],\n \"177\": [0.08333, 0.58333, 0, 0],\n \"180\": [0, 0.69444, 0, 0],\n \"215\": [0.08333, 0.58333, 0, 0],\n \"247\": [0.08333, 0.58333, 0, 0],\n \"305\": [0, 0.43056, 0, 0],\n \"567\": [0.19444, 0.43056, 0, 0],\n \"710\": [0, 0.69444, 0, 0],\n \"711\": [0, 0.62847, 0, 0],\n \"713\": [0, 0.56778, 0, 0],\n \"714\": [0, 0.69444, 0, 0],\n \"715\": [0, 0.69444, 0, 0],\n \"728\": [0, 0.69444, 0, 0],\n \"729\": [0, 0.66786, 0, 0],\n \"730\": [0, 0.69444, 0, 0],\n \"732\": [0, 0.66786, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.66786, 0, 0],\n \"772\": [0, 0.56778, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.66786, 0, 0],\n \"776\": [0, 0.66786, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.62847, 0, 0],\n \"824\": [0.19444, 0.69444, 0, 0],\n \"915\": [0, 0.68333, 0, 0],\n \"916\": [0, 0.68333, 0, 0],\n \"920\": [0, 0.68333, 0, 0],\n \"923\": [0, 0.68333, 0, 0],\n \"926\": [0, 0.68333, 0, 0],\n \"928\": [0, 0.68333, 0, 0],\n \"931\": [0, 0.68333, 0, 0],\n \"933\": [0, 0.68333, 0, 0],\n \"934\": [0, 0.68333, 0, 0],\n \"936\": [0, 0.68333, 0, 0],\n \"937\": [0, 0.68333, 0, 0],\n \"8211\": [0, 0.43056, 0.02778, 0],\n \"8212\": [0, 0.43056, 0.02778, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0],\n \"8224\": [0.19444, 0.69444, 0, 0],\n \"8225\": [0.19444, 0.69444, 0, 0],\n \"8230\": [0, 0.12, 0, 0],\n \"8242\": [0, 0.55556, 0, 0],\n \"8407\": [0, 0.71444, 0.15382, 0],\n \"8463\": [0, 0.68889, 0, 0],\n \"8465\": [0, 0.69444, 0, 0],\n \"8467\": [0, 0.69444, 0, 0.11111],\n \"8472\": [0.19444, 0.43056, 0, 0.11111],\n \"8476\": [0, 0.69444, 0, 0],\n \"8501\": [0, 0.69444, 0, 0],\n \"8592\": [-0.13313, 0.36687, 0, 0],\n \"8593\": [0.19444, 0.69444, 0, 0],\n \"8594\": [-0.13313, 0.36687, 0, 0],\n \"8595\": [0.19444, 0.69444, 0, 0],\n \"8596\": [-0.13313, 0.36687, 0, 0],\n \"8597\": [0.25, 0.75, 0, 0],\n \"8598\": [0.19444, 0.69444, 0, 0],\n \"8599\": [0.19444, 0.69444, 0, 0],\n \"8600\": [0.19444, 0.69444, 0, 0],\n \"8601\": [0.19444, 0.69444, 0, 0],\n \"8614\": [0.011, 0.511, 0, 0],\n \"8617\": [0.011, 0.511, 0, 0],\n \"8618\": [0.011, 0.511, 0, 0],\n \"8636\": [-0.13313, 0.36687, 0, 0],\n \"8637\": [-0.13313, 0.36687, 0, 0],\n \"8640\": [-0.13313, 0.36687, 0, 0],\n \"8641\": [-0.13313, 0.36687, 0, 0],\n \"8652\": [0.011, 0.671, 0, 0],\n \"8656\": [-0.13313, 0.36687, 0, 0],\n \"8657\": [0.19444, 0.69444, 0, 0],\n \"8658\": [-0.13313, 0.36687, 0, 0],\n \"8659\": [0.19444, 0.69444, 0, 0],\n \"8660\": [-0.13313, 0.36687, 0, 0],\n \"8661\": [0.25, 0.75, 0, 0],\n \"8704\": [0, 0.69444, 0, 0],\n \"8706\": [0, 0.69444, 0.05556, 0.08334],\n \"8707\": [0, 0.69444, 0, 0],\n \"8709\": [0.05556, 0.75, 0, 0],\n \"8711\": [0, 0.68333, 0, 0],\n \"8712\": [0.0391, 0.5391, 0, 0],\n \"8715\": [0.0391, 0.5391, 0, 0],\n \"8722\": [0.08333, 0.58333, 0, 0],\n \"8723\": [0.08333, 0.58333, 0, 0],\n \"8725\": [0.25, 0.75, 0, 0],\n \"8726\": [0.25, 0.75, 0, 0],\n \"8727\": [-0.03472, 0.46528, 0, 0],\n \"8728\": [-0.05555, 0.44445, 0, 0],\n \"8729\": [-0.05555, 0.44445, 0, 0],\n \"8730\": [0.2, 0.8, 0, 0],\n \"8733\": [0, 0.43056, 0, 0],\n \"8734\": [0, 0.43056, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8739\": [0.25, 0.75, 0, 0],\n \"8741\": [0.25, 0.75, 0, 0],\n \"8743\": [0, 0.55556, 0, 0],\n \"8744\": [0, 0.55556, 0, 0],\n \"8745\": [0, 0.55556, 0, 0],\n \"8746\": [0, 0.55556, 0, 0],\n \"8747\": [0.19444, 0.69444, 0.11111, 0],\n \"8764\": [-0.13313, 0.36687, 0, 0],\n \"8768\": [0.19444, 0.69444, 0, 0],\n \"8771\": [-0.03625, 0.46375, 0, 0],\n \"8773\": [-0.022, 0.589, 0, 0],\n \"8776\": [-0.01688, 0.48312, 0, 0],\n \"8781\": [-0.03625, 0.46375, 0, 0],\n \"8784\": [-0.133, 0.67, 0, 0],\n \"8800\": [0.215, 0.716, 0, 0],\n \"8801\": [-0.03625, 0.46375, 0, 0],\n \"8804\": [0.13597, 0.63597, 0, 0],\n \"8805\": [0.13597, 0.63597, 0, 0],\n \"8810\": [0.0391, 0.5391, 0, 0],\n \"8811\": [0.0391, 0.5391, 0, 0],\n \"8826\": [0.0391, 0.5391, 0, 0],\n \"8827\": [0.0391, 0.5391, 0, 0],\n \"8834\": [0.0391, 0.5391, 0, 0],\n \"8835\": [0.0391, 0.5391, 0, 0],\n \"8838\": [0.13597, 0.63597, 0, 0],\n \"8839\": [0.13597, 0.63597, 0, 0],\n \"8846\": [0, 0.55556, 0, 0],\n \"8849\": [0.13597, 0.63597, 0, 0],\n \"8850\": [0.13597, 0.63597, 0, 0],\n \"8851\": [0, 0.55556, 0, 0],\n \"8852\": [0, 0.55556, 0, 0],\n \"8853\": [0.08333, 0.58333, 0, 0],\n \"8854\": [0.08333, 0.58333, 0, 0],\n \"8855\": [0.08333, 0.58333, 0, 0],\n \"8856\": [0.08333, 0.58333, 0, 0],\n \"8857\": [0.08333, 0.58333, 0, 0],\n \"8866\": [0, 0.69444, 0, 0],\n \"8867\": [0, 0.69444, 0, 0],\n \"8868\": [0, 0.69444, 0, 0],\n \"8869\": [0, 0.69444, 0, 0],\n \"8872\": [0.249, 0.75, 0, 0],\n \"8900\": [-0.05555, 0.44445, 0, 0],\n \"8901\": [-0.05555, 0.44445, 0, 0],\n \"8902\": [-0.03472, 0.46528, 0, 0],\n \"8904\": [0.005, 0.505, 0, 0],\n \"8942\": [0.03, 0.9, 0, 0],\n \"8943\": [-0.19, 0.31, 0, 0],\n \"8945\": [-0.1, 0.82, 0, 0],\n \"8968\": [0.25, 0.75, 0, 0],\n \"8969\": [0.25, 0.75, 0, 0],\n \"8970\": [0.25, 0.75, 0, 0],\n \"8971\": [0.25, 0.75, 0, 0],\n \"8994\": [-0.14236, 0.35764, 0, 0],\n \"8995\": [-0.14236, 0.35764, 0, 0],\n \"9136\": [0.244, 0.744, 0, 0],\n \"9137\": [0.244, 0.744, 0, 0],\n \"9651\": [0.19444, 0.69444, 0, 0],\n \"9657\": [-0.03472, 0.46528, 0, 0],\n \"9661\": [0.19444, 0.69444, 0, 0],\n \"9667\": [-0.03472, 0.46528, 0, 0],\n \"9711\": [0.19444, 0.69444, 0, 0],\n \"9824\": [0.12963, 0.69444, 0, 0],\n \"9825\": [0.12963, 0.69444, 0, 0],\n \"9826\": [0.12963, 0.69444, 0, 0],\n \"9827\": [0.12963, 0.69444, 0, 0],\n \"9837\": [0, 0.75, 0, 0],\n \"9838\": [0.19444, 0.69444, 0, 0],\n \"9839\": [0.19444, 0.69444, 0, 0],\n \"10216\": [0.25, 0.75, 0, 0],\n \"10217\": [0.25, 0.75, 0, 0],\n \"10222\": [0.244, 0.744, 0, 0],\n \"10223\": [0.244, 0.744, 0, 0],\n \"10229\": [0.011, 0.511, 0, 0],\n \"10230\": [0.011, 0.511, 0, 0],\n \"10231\": [0.011, 0.511, 0, 0],\n \"10232\": [0.024, 0.525, 0, 0],\n \"10233\": [0.024, 0.525, 0, 0],\n \"10234\": [0.024, 0.525, 0, 0],\n \"10236\": [0.011, 0.511, 0, 0],\n \"10815\": [0, 0.68333, 0, 0],\n \"10927\": [0.13597, 0.63597, 0, 0],\n \"10928\": [0.13597, 0.63597, 0, 0],\n },\n \"Math-BoldItalic\": {\n \"47\": [0.19444, 0.69444, 0, 0],\n \"65\": [0, 0.68611, 0, 0],\n \"66\": [0, 0.68611, 0.04835, 0],\n \"67\": [0, 0.68611, 0.06979, 0],\n \"68\": [0, 0.68611, 0.03194, 0],\n \"69\": [0, 0.68611, 0.05451, 0],\n \"70\": [0, 0.68611, 0.15972, 0],\n \"71\": [0, 0.68611, 0, 0],\n \"72\": [0, 0.68611, 0.08229, 0],\n \"73\": [0, 0.68611, 0.07778, 0],\n \"74\": [0, 0.68611, 0.10069, 0],\n \"75\": [0, 0.68611, 0.06979, 0],\n \"76\": [0, 0.68611, 0, 0],\n \"77\": [0, 0.68611, 0.11424, 0],\n \"78\": [0, 0.68611, 0.11424, 0],\n \"79\": [0, 0.68611, 0.03194, 0],\n \"80\": [0, 0.68611, 0.15972, 0],\n \"81\": [0.19444, 0.68611, 0, 0],\n \"82\": [0, 0.68611, 0.00421, 0],\n \"83\": [0, 0.68611, 0.05382, 0],\n \"84\": [0, 0.68611, 0.15972, 0],\n \"85\": [0, 0.68611, 0.11424, 0],\n \"86\": [0, 0.68611, 0.25555, 0],\n \"87\": [0, 0.68611, 0.15972, 0],\n \"88\": [0, 0.68611, 0.07778, 0],\n \"89\": [0, 0.68611, 0.25555, 0],\n \"90\": [0, 0.68611, 0.06979, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0.19444, 0.69444, 0.11042, 0],\n \"103\": [0.19444, 0.44444, 0.03704, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.69326, 0, 0],\n \"106\": [0.19444, 0.69326, 0.0622, 0],\n \"107\": [0, 0.69444, 0.01852, 0],\n \"108\": [0, 0.69444, 0.0088, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0.03704, 0],\n \"114\": [0, 0.44444, 0.03194, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.63492, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.03704, 0],\n \"119\": [0, 0.44444, 0.02778, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.03704, 0],\n \"122\": [0, 0.44444, 0.04213, 0],\n \"915\": [0, 0.68611, 0.15972, 0],\n \"916\": [0, 0.68611, 0, 0],\n \"920\": [0, 0.68611, 0.03194, 0],\n \"923\": [0, 0.68611, 0, 0],\n \"926\": [0, 0.68611, 0.07458, 0],\n \"928\": [0, 0.68611, 0.08229, 0],\n \"931\": [0, 0.68611, 0.05451, 0],\n \"933\": [0, 0.68611, 0.15972, 0],\n \"934\": [0, 0.68611, 0, 0],\n \"936\": [0, 0.68611, 0.11653, 0],\n \"937\": [0, 0.68611, 0.04835, 0],\n \"945\": [0, 0.44444, 0, 0],\n \"946\": [0.19444, 0.69444, 0.03403, 0],\n \"947\": [0.19444, 0.44444, 0.06389, 0],\n \"948\": [0, 0.69444, 0.03819, 0],\n \"949\": [0, 0.44444, 0, 0],\n \"950\": [0.19444, 0.69444, 0.06215, 0],\n \"951\": [0.19444, 0.44444, 0.03704, 0],\n \"952\": [0, 0.69444, 0.03194, 0],\n \"953\": [0, 0.44444, 0, 0],\n \"954\": [0, 0.44444, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.44444, 0, 0],\n \"957\": [0, 0.44444, 0.06898, 0],\n \"958\": [0.19444, 0.69444, 0.03021, 0],\n \"959\": [0, 0.44444, 0, 0],\n \"960\": [0, 0.44444, 0.03704, 0],\n \"961\": [0.19444, 0.44444, 0, 0],\n \"962\": [0.09722, 0.44444, 0.07917, 0],\n \"963\": [0, 0.44444, 0.03704, 0],\n \"964\": [0, 0.44444, 0.13472, 0],\n \"965\": [0, 0.44444, 0.03704, 0],\n \"966\": [0.19444, 0.44444, 0, 0],\n \"967\": [0.19444, 0.44444, 0, 0],\n \"968\": [0.19444, 0.69444, 0.03704, 0],\n \"969\": [0, 0.44444, 0.03704, 0],\n \"977\": [0, 0.69444, 0, 0],\n \"981\": [0.19444, 0.69444, 0, 0],\n \"982\": [0, 0.44444, 0.03194, 0],\n \"1009\": [0.19444, 0.44444, 0, 0],\n \"1013\": [0, 0.44444, 0, 0],\n },\n \"Math-Italic\": {\n \"47\": [0.19444, 0.69444, 0, 0],\n \"65\": [0, 0.68333, 0, 0.13889],\n \"66\": [0, 0.68333, 0.05017, 0.08334],\n \"67\": [0, 0.68333, 0.07153, 0.08334],\n \"68\": [0, 0.68333, 0.02778, 0.05556],\n \"69\": [0, 0.68333, 0.05764, 0.08334],\n \"70\": [0, 0.68333, 0.13889, 0.08334],\n \"71\": [0, 0.68333, 0, 0.08334],\n \"72\": [0, 0.68333, 0.08125, 0.05556],\n \"73\": [0, 0.68333, 0.07847, 0.11111],\n \"74\": [0, 0.68333, 0.09618, 0.16667],\n \"75\": [0, 0.68333, 0.07153, 0.05556],\n \"76\": [0, 0.68333, 0, 0.02778],\n \"77\": [0, 0.68333, 0.10903, 0.08334],\n \"78\": [0, 0.68333, 0.10903, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.08334],\n \"80\": [0, 0.68333, 0.13889, 0.08334],\n \"81\": [0.19444, 0.68333, 0, 0.08334],\n \"82\": [0, 0.68333, 0.00773, 0.08334],\n \"83\": [0, 0.68333, 0.05764, 0.08334],\n \"84\": [0, 0.68333, 0.13889, 0.08334],\n \"85\": [0, 0.68333, 0.10903, 0.02778],\n \"86\": [0, 0.68333, 0.22222, 0],\n \"87\": [0, 0.68333, 0.13889, 0],\n \"88\": [0, 0.68333, 0.07847, 0.08334],\n \"89\": [0, 0.68333, 0.22222, 0],\n \"90\": [0, 0.68333, 0.07153, 0.08334],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0.05556],\n \"100\": [0, 0.69444, 0, 0.16667],\n \"101\": [0, 0.43056, 0, 0.05556],\n \"102\": [0.19444, 0.69444, 0.10764, 0.16667],\n \"103\": [0.19444, 0.43056, 0.03588, 0.02778],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.65952, 0, 0],\n \"106\": [0.19444, 0.65952, 0.05724, 0],\n \"107\": [0, 0.69444, 0.03148, 0],\n \"108\": [0, 0.69444, 0.01968, 0.08334],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0.05556],\n \"112\": [0.19444, 0.43056, 0, 0.08334],\n \"113\": [0.19444, 0.43056, 0.03588, 0.08334],\n \"114\": [0, 0.43056, 0.02778, 0.05556],\n \"115\": [0, 0.43056, 0, 0.05556],\n \"116\": [0, 0.61508, 0, 0.08334],\n \"117\": [0, 0.43056, 0, 0.02778],\n \"118\": [0, 0.43056, 0.03588, 0.02778],\n \"119\": [0, 0.43056, 0.02691, 0.08334],\n \"120\": [0, 0.43056, 0, 0.02778],\n \"121\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"122\": [0, 0.43056, 0.04398, 0.05556],\n \"915\": [0, 0.68333, 0.13889, 0.08334],\n \"916\": [0, 0.68333, 0, 0.16667],\n \"920\": [0, 0.68333, 0.02778, 0.08334],\n \"923\": [0, 0.68333, 0, 0.16667],\n \"926\": [0, 0.68333, 0.07569, 0.08334],\n \"928\": [0, 0.68333, 0.08125, 0.05556],\n \"931\": [0, 0.68333, 0.05764, 0.08334],\n \"933\": [0, 0.68333, 0.13889, 0.05556],\n \"934\": [0, 0.68333, 0, 0.08334],\n \"936\": [0, 0.68333, 0.11, 0.05556],\n \"937\": [0, 0.68333, 0.05017, 0.08334],\n \"945\": [0, 0.43056, 0.0037, 0.02778],\n \"946\": [0.19444, 0.69444, 0.05278, 0.08334],\n \"947\": [0.19444, 0.43056, 0.05556, 0],\n \"948\": [0, 0.69444, 0.03785, 0.05556],\n \"949\": [0, 0.43056, 0, 0.08334],\n \"950\": [0.19444, 0.69444, 0.07378, 0.08334],\n \"951\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"952\": [0, 0.69444, 0.02778, 0.08334],\n \"953\": [0, 0.43056, 0, 0.05556],\n \"954\": [0, 0.43056, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.43056, 0, 0.02778],\n \"957\": [0, 0.43056, 0.06366, 0.02778],\n \"958\": [0.19444, 0.69444, 0.04601, 0.11111],\n \"959\": [0, 0.43056, 0, 0.05556],\n \"960\": [0, 0.43056, 0.03588, 0],\n \"961\": [0.19444, 0.43056, 0, 0.08334],\n \"962\": [0.09722, 0.43056, 0.07986, 0.08334],\n \"963\": [0, 0.43056, 0.03588, 0],\n \"964\": [0, 0.43056, 0.1132, 0.02778],\n \"965\": [0, 0.43056, 0.03588, 0.02778],\n \"966\": [0.19444, 0.43056, 0, 0.08334],\n \"967\": [0.19444, 0.43056, 0, 0.05556],\n \"968\": [0.19444, 0.69444, 0.03588, 0.11111],\n \"969\": [0, 0.43056, 0.03588, 0],\n \"977\": [0, 0.69444, 0, 0.08334],\n \"981\": [0.19444, 0.69444, 0, 0.08334],\n \"982\": [0, 0.43056, 0.02778, 0],\n \"1009\": [0.19444, 0.43056, 0, 0.08334],\n \"1013\": [0, 0.43056, 0, 0.05556],\n },\n \"Math-Regular\": {\n \"65\": [0, 0.68333, 0, 0.13889],\n \"66\": [0, 0.68333, 0.05017, 0.08334],\n \"67\": [0, 0.68333, 0.07153, 0.08334],\n \"68\": [0, 0.68333, 0.02778, 0.05556],\n \"69\": [0, 0.68333, 0.05764, 0.08334],\n \"70\": [0, 0.68333, 0.13889, 0.08334],\n \"71\": [0, 0.68333, 0, 0.08334],\n \"72\": [0, 0.68333, 0.08125, 0.05556],\n \"73\": [0, 0.68333, 0.07847, 0.11111],\n \"74\": [0, 0.68333, 0.09618, 0.16667],\n \"75\": [0, 0.68333, 0.07153, 0.05556],\n \"76\": [0, 0.68333, 0, 0.02778],\n \"77\": [0, 0.68333, 0.10903, 0.08334],\n \"78\": [0, 0.68333, 0.10903, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.08334],\n \"80\": [0, 0.68333, 0.13889, 0.08334],\n \"81\": [0.19444, 0.68333, 0, 0.08334],\n \"82\": [0, 0.68333, 0.00773, 0.08334],\n \"83\": [0, 0.68333, 0.05764, 0.08334],\n \"84\": [0, 0.68333, 0.13889, 0.08334],\n \"85\": [0, 0.68333, 0.10903, 0.02778],\n \"86\": [0, 0.68333, 0.22222, 0],\n \"87\": [0, 0.68333, 0.13889, 0],\n \"88\": [0, 0.68333, 0.07847, 0.08334],\n \"89\": [0, 0.68333, 0.22222, 0],\n \"90\": [0, 0.68333, 0.07153, 0.08334],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0.05556],\n \"100\": [0, 0.69444, 0, 0.16667],\n \"101\": [0, 0.43056, 0, 0.05556],\n \"102\": [0.19444, 0.69444, 0.10764, 0.16667],\n \"103\": [0.19444, 0.43056, 0.03588, 0.02778],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.65952, 0, 0],\n \"106\": [0.19444, 0.65952, 0.05724, 0],\n \"107\": [0, 0.69444, 0.03148, 0],\n \"108\": [0, 0.69444, 0.01968, 0.08334],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0.05556],\n \"112\": [0.19444, 0.43056, 0, 0.08334],\n \"113\": [0.19444, 0.43056, 0.03588, 0.08334],\n \"114\": [0, 0.43056, 0.02778, 0.05556],\n \"115\": [0, 0.43056, 0, 0.05556],\n \"116\": [0, 0.61508, 0, 0.08334],\n \"117\": [0, 0.43056, 0, 0.02778],\n \"118\": [0, 0.43056, 0.03588, 0.02778],\n \"119\": [0, 0.43056, 0.02691, 0.08334],\n \"120\": [0, 0.43056, 0, 0.02778],\n \"121\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"122\": [0, 0.43056, 0.04398, 0.05556],\n \"915\": [0, 0.68333, 0.13889, 0.08334],\n \"916\": [0, 0.68333, 0, 0.16667],\n \"920\": [0, 0.68333, 0.02778, 0.08334],\n \"923\": [0, 0.68333, 0, 0.16667],\n \"926\": [0, 0.68333, 0.07569, 0.08334],\n \"928\": [0, 0.68333, 0.08125, 0.05556],\n \"931\": [0, 0.68333, 0.05764, 0.08334],\n \"933\": [0, 0.68333, 0.13889, 0.05556],\n \"934\": [0, 0.68333, 0, 0.08334],\n \"936\": [0, 0.68333, 0.11, 0.05556],\n \"937\": [0, 0.68333, 0.05017, 0.08334],\n \"945\": [0, 0.43056, 0.0037, 0.02778],\n \"946\": [0.19444, 0.69444, 0.05278, 0.08334],\n \"947\": [0.19444, 0.43056, 0.05556, 0],\n \"948\": [0, 0.69444, 0.03785, 0.05556],\n \"949\": [0, 0.43056, 0, 0.08334],\n \"950\": [0.19444, 0.69444, 0.07378, 0.08334],\n \"951\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"952\": [0, 0.69444, 0.02778, 0.08334],\n \"953\": [0, 0.43056, 0, 0.05556],\n \"954\": [0, 0.43056, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.43056, 0, 0.02778],\n \"957\": [0, 0.43056, 0.06366, 0.02778],\n \"958\": [0.19444, 0.69444, 0.04601, 0.11111],\n \"959\": [0, 0.43056, 0, 0.05556],\n \"960\": [0, 0.43056, 0.03588, 0],\n \"961\": [0.19444, 0.43056, 0, 0.08334],\n \"962\": [0.09722, 0.43056, 0.07986, 0.08334],\n \"963\": [0, 0.43056, 0.03588, 0],\n \"964\": [0, 0.43056, 0.1132, 0.02778],\n \"965\": [0, 0.43056, 0.03588, 0.02778],\n \"966\": [0.19444, 0.43056, 0, 0.08334],\n \"967\": [0.19444, 0.43056, 0, 0.05556],\n \"968\": [0.19444, 0.69444, 0.03588, 0.11111],\n \"969\": [0, 0.43056, 0.03588, 0],\n \"977\": [0, 0.69444, 0, 0.08334],\n \"981\": [0.19444, 0.69444, 0, 0.08334],\n \"982\": [0, 0.43056, 0.02778, 0],\n \"1009\": [0.19444, 0.43056, 0, 0.08334],\n \"1013\": [0, 0.43056, 0, 0.05556],\n },\n \"SansSerif-Regular\": {\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.08333, 0.58333, 0, 0],\n \"44\": [0.125, 0.08333, 0, 0],\n \"45\": [0, 0.44444, 0, 0],\n \"46\": [0, 0.08333, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.65556, 0, 0],\n \"49\": [0, 0.65556, 0, 0],\n \"50\": [0, 0.65556, 0, 0],\n \"51\": [0, 0.65556, 0, 0],\n \"52\": [0, 0.65556, 0, 0],\n \"53\": [0, 0.65556, 0, 0],\n \"54\": [0, 0.65556, 0, 0],\n \"55\": [0, 0.65556, 0, 0],\n \"56\": [0, 0.65556, 0, 0],\n \"57\": [0, 0.65556, 0, 0],\n \"58\": [0, 0.44444, 0, 0],\n \"59\": [0.125, 0.44444, 0, 0],\n \"61\": [-0.13, 0.37, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.69444, 0, 0],\n \"66\": [0, 0.69444, 0, 0],\n \"67\": [0, 0.69444, 0, 0],\n \"68\": [0, 0.69444, 0, 0],\n \"69\": [0, 0.69444, 0, 0],\n \"70\": [0, 0.69444, 0, 0],\n \"71\": [0, 0.69444, 0, 0],\n \"72\": [0, 0.69444, 0, 0],\n \"73\": [0, 0.69444, 0, 0],\n \"74\": [0, 0.69444, 0, 0],\n \"75\": [0, 0.69444, 0, 0],\n \"76\": [0, 0.69444, 0, 0],\n \"77\": [0, 0.69444, 0, 0],\n \"78\": [0, 0.69444, 0, 0],\n \"79\": [0, 0.69444, 0, 0],\n \"80\": [0, 0.69444, 0, 0],\n \"81\": [0.125, 0.69444, 0, 0],\n \"82\": [0, 0.69444, 0, 0],\n \"83\": [0, 0.69444, 0, 0],\n \"84\": [0, 0.69444, 0, 0],\n \"85\": [0, 0.69444, 0, 0],\n \"86\": [0, 0.69444, 0.01389, 0],\n \"87\": [0, 0.69444, 0.01389, 0],\n \"88\": [0, 0.69444, 0, 0],\n \"89\": [0, 0.69444, 0.025, 0],\n \"90\": [0, 0.69444, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.35, 0.09444, 0.02778, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0, 0.69444, 0.06944, 0],\n \"103\": [0.19444, 0.44444, 0.01389, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.67937, 0, 0],\n \"106\": [0.19444, 0.67937, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0, 0],\n \"114\": [0, 0.44444, 0.01389, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.57143, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.01389, 0],\n \"119\": [0, 0.44444, 0.01389, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.01389, 0],\n \"122\": [0, 0.44444, 0, 0],\n \"126\": [0.35, 0.32659, 0, 0],\n \"305\": [0, 0.44444, 0, 0],\n \"567\": [0.19444, 0.44444, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.67659, 0, 0],\n \"772\": [0, 0.60889, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.67937, 0, 0],\n \"776\": [0, 0.67937, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.63194, 0, 0],\n \"915\": [0, 0.69444, 0, 0],\n \"916\": [0, 0.69444, 0, 0],\n \"920\": [0, 0.69444, 0, 0],\n \"923\": [0, 0.69444, 0, 0],\n \"926\": [0, 0.69444, 0, 0],\n \"928\": [0, 0.69444, 0, 0],\n \"931\": [0, 0.69444, 0, 0],\n \"933\": [0, 0.69444, 0, 0],\n \"934\": [0, 0.69444, 0, 0],\n \"936\": [0, 0.69444, 0, 0],\n \"937\": [0, 0.69444, 0, 0],\n \"8211\": [0, 0.44444, 0.02778, 0],\n \"8212\": [0, 0.44444, 0.02778, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0],\n },\n \"Script-Regular\": {\n \"65\": [0, 0.7, 0.22925, 0],\n \"66\": [0, 0.7, 0.04087, 0],\n \"67\": [0, 0.7, 0.1689, 0],\n \"68\": [0, 0.7, 0.09371, 0],\n \"69\": [0, 0.7, 0.18583, 0],\n \"70\": [0, 0.7, 0.13634, 0],\n \"71\": [0, 0.7, 0.17322, 0],\n \"72\": [0, 0.7, 0.29694, 0],\n \"73\": [0, 0.7, 0.19189, 0],\n \"74\": [0.27778, 0.7, 0.19189, 0],\n \"75\": [0, 0.7, 0.31259, 0],\n \"76\": [0, 0.7, 0.19189, 0],\n \"77\": [0, 0.7, 0.15981, 0],\n \"78\": [0, 0.7, 0.3525, 0],\n \"79\": [0, 0.7, 0.08078, 0],\n \"80\": [0, 0.7, 0.08078, 0],\n \"81\": [0, 0.7, 0.03305, 0],\n \"82\": [0, 0.7, 0.06259, 0],\n \"83\": [0, 0.7, 0.19189, 0],\n \"84\": [0, 0.7, 0.29087, 0],\n \"85\": [0, 0.7, 0.25815, 0],\n \"86\": [0, 0.7, 0.27523, 0],\n \"87\": [0, 0.7, 0.27523, 0],\n \"88\": [0, 0.7, 0.26006, 0],\n \"89\": [0, 0.7, 0.2939, 0],\n \"90\": [0, 0.7, 0.24037, 0],\n },\n \"Size1-Regular\": {\n \"40\": [0.35001, 0.85, 0, 0],\n \"41\": [0.35001, 0.85, 0, 0],\n \"47\": [0.35001, 0.85, 0, 0],\n \"91\": [0.35001, 0.85, 0, 0],\n \"92\": [0.35001, 0.85, 0, 0],\n \"93\": [0.35001, 0.85, 0, 0],\n \"123\": [0.35001, 0.85, 0, 0],\n \"125\": [0.35001, 0.85, 0, 0],\n \"710\": [0, 0.72222, 0, 0],\n \"732\": [0, 0.72222, 0, 0],\n \"770\": [0, 0.72222, 0, 0],\n \"771\": [0, 0.72222, 0, 0],\n \"8214\": [-0.00099, 0.601, 0, 0],\n \"8593\": [1e-05, 0.6, 0, 0],\n \"8595\": [1e-05, 0.6, 0, 0],\n \"8657\": [1e-05, 0.6, 0, 0],\n \"8659\": [1e-05, 0.6, 0, 0],\n \"8719\": [0.25001, 0.75, 0, 0],\n \"8720\": [0.25001, 0.75, 0, 0],\n \"8721\": [0.25001, 0.75, 0, 0],\n \"8730\": [0.35001, 0.85, 0, 0],\n \"8739\": [-0.00599, 0.606, 0, 0],\n \"8741\": [-0.00599, 0.606, 0, 0],\n \"8747\": [0.30612, 0.805, 0.19445, 0],\n \"8748\": [0.306, 0.805, 0.19445, 0],\n \"8749\": [0.306, 0.805, 0.19445, 0],\n \"8750\": [0.30612, 0.805, 0.19445, 0],\n \"8896\": [0.25001, 0.75, 0, 0],\n \"8897\": [0.25001, 0.75, 0, 0],\n \"8898\": [0.25001, 0.75, 0, 0],\n \"8899\": [0.25001, 0.75, 0, 0],\n \"8968\": [0.35001, 0.85, 0, 0],\n \"8969\": [0.35001, 0.85, 0, 0],\n \"8970\": [0.35001, 0.85, 0, 0],\n \"8971\": [0.35001, 0.85, 0, 0],\n \"9168\": [-0.00099, 0.601, 0, 0],\n \"10216\": [0.35001, 0.85, 0, 0],\n \"10217\": [0.35001, 0.85, 0, 0],\n \"10752\": [0.25001, 0.75, 0, 0],\n \"10753\": [0.25001, 0.75, 0, 0],\n \"10754\": [0.25001, 0.75, 0, 0],\n \"10756\": [0.25001, 0.75, 0, 0],\n \"10758\": [0.25001, 0.75, 0, 0],\n },\n \"Size2-Regular\": {\n \"40\": [0.65002, 1.15, 0, 0],\n \"41\": [0.65002, 1.15, 0, 0],\n \"47\": [0.65002, 1.15, 0, 0],\n \"91\": [0.65002, 1.15, 0, 0],\n \"92\": [0.65002, 1.15, 0, 0],\n \"93\": [0.65002, 1.15, 0, 0],\n \"123\": [0.65002, 1.15, 0, 0],\n \"125\": [0.65002, 1.15, 0, 0],\n \"710\": [0, 0.75, 0, 0],\n \"732\": [0, 0.75, 0, 0],\n \"770\": [0, 0.75, 0, 0],\n \"771\": [0, 0.75, 0, 0],\n \"8719\": [0.55001, 1.05, 0, 0],\n \"8720\": [0.55001, 1.05, 0, 0],\n \"8721\": [0.55001, 1.05, 0, 0],\n \"8730\": [0.65002, 1.15, 0, 0],\n \"8747\": [0.86225, 1.36, 0.44445, 0],\n \"8748\": [0.862, 1.36, 0.44445, 0],\n \"8749\": [0.862, 1.36, 0.44445, 0],\n \"8750\": [0.86225, 1.36, 0.44445, 0],\n \"8896\": [0.55001, 1.05, 0, 0],\n \"8897\": [0.55001, 1.05, 0, 0],\n \"8898\": [0.55001, 1.05, 0, 0],\n \"8899\": [0.55001, 1.05, 0, 0],\n \"8968\": [0.65002, 1.15, 0, 0],\n \"8969\": [0.65002, 1.15, 0, 0],\n \"8970\": [0.65002, 1.15, 0, 0],\n \"8971\": [0.65002, 1.15, 0, 0],\n \"10216\": [0.65002, 1.15, 0, 0],\n \"10217\": [0.65002, 1.15, 0, 0],\n \"10752\": [0.55001, 1.05, 0, 0],\n \"10753\": [0.55001, 1.05, 0, 0],\n \"10754\": [0.55001, 1.05, 0, 0],\n \"10756\": [0.55001, 1.05, 0, 0],\n \"10758\": [0.55001, 1.05, 0, 0],\n },\n \"Size3-Regular\": {\n \"40\": [0.95003, 1.45, 0, 0],\n \"41\": [0.95003, 1.45, 0, 0],\n \"47\": [0.95003, 1.45, 0, 0],\n \"91\": [0.95003, 1.45, 0, 0],\n \"92\": [0.95003, 1.45, 0, 0],\n \"93\": [0.95003, 1.45, 0, 0],\n \"123\": [0.95003, 1.45, 0, 0],\n \"125\": [0.95003, 1.45, 0, 0],\n \"710\": [0, 0.75, 0, 0],\n \"732\": [0, 0.75, 0, 0],\n \"770\": [0, 0.75, 0, 0],\n \"771\": [0, 0.75, 0, 0],\n \"8730\": [0.95003, 1.45, 0, 0],\n \"8968\": [0.95003, 1.45, 0, 0],\n \"8969\": [0.95003, 1.45, 0, 0],\n \"8970\": [0.95003, 1.45, 0, 0],\n \"8971\": [0.95003, 1.45, 0, 0],\n \"10216\": [0.95003, 1.45, 0, 0],\n \"10217\": [0.95003, 1.45, 0, 0],\n },\n \"Size4-Regular\": {\n \"40\": [1.25003, 1.75, 0, 0],\n \"41\": [1.25003, 1.75, 0, 0],\n \"47\": [1.25003, 1.75, 0, 0],\n \"91\": [1.25003, 1.75, 0, 0],\n \"92\": [1.25003, 1.75, 0, 0],\n \"93\": [1.25003, 1.75, 0, 0],\n \"123\": [1.25003, 1.75, 0, 0],\n \"125\": [1.25003, 1.75, 0, 0],\n \"710\": [0, 0.825, 0, 0],\n \"732\": [0, 0.825, 0, 0],\n \"770\": [0, 0.825, 0, 0],\n \"771\": [0, 0.825, 0, 0],\n \"8730\": [1.25003, 1.75, 0, 0],\n \"8968\": [1.25003, 1.75, 0, 0],\n \"8969\": [1.25003, 1.75, 0, 0],\n \"8970\": [1.25003, 1.75, 0, 0],\n \"8971\": [1.25003, 1.75, 0, 0],\n \"9115\": [0.64502, 1.155, 0, 0],\n \"9116\": [1e-05, 0.6, 0, 0],\n \"9117\": [0.64502, 1.155, 0, 0],\n \"9118\": [0.64502, 1.155, 0, 0],\n \"9119\": [1e-05, 0.6, 0, 0],\n \"9120\": [0.64502, 1.155, 0, 0],\n \"9121\": [0.64502, 1.155, 0, 0],\n \"9122\": [-0.00099, 0.601, 0, 0],\n \"9123\": [0.64502, 1.155, 0, 0],\n \"9124\": [0.64502, 1.155, 0, 0],\n \"9125\": [-0.00099, 0.601, 0, 0],\n \"9126\": [0.64502, 1.155, 0, 0],\n \"9127\": [1e-05, 0.9, 0, 0],\n \"9128\": [0.65002, 1.15, 0, 0],\n \"9129\": [0.90001, 0, 0, 0],\n \"9130\": [0, 0.3, 0, 0],\n \"9131\": [1e-05, 0.9, 0, 0],\n \"9132\": [0.65002, 1.15, 0, 0],\n \"9133\": [0.90001, 0, 0, 0],\n \"9143\": [0.88502, 0.915, 0, 0],\n \"10216\": [1.25003, 1.75, 0, 0],\n \"10217\": [1.25003, 1.75, 0, 0],\n \"57344\": [-0.00499, 0.605, 0, 0],\n \"57345\": [-0.00499, 0.605, 0, 0],\n \"57680\": [0, 0.12, 0, 0],\n \"57681\": [0, 0.12, 0, 0],\n \"57682\": [0, 0.12, 0, 0],\n \"57683\": [0, 0.12, 0, 0],\n },\n \"Typewriter-Regular\": {\n \"33\": [0, 0.61111, 0, 0],\n \"34\": [0, 0.61111, 0, 0],\n \"35\": [0, 0.61111, 0, 0],\n \"36\": [0.08333, 0.69444, 0, 0],\n \"37\": [0.08333, 0.69444, 0, 0],\n \"38\": [0, 0.61111, 0, 0],\n \"39\": [0, 0.61111, 0, 0],\n \"40\": [0.08333, 0.69444, 0, 0],\n \"41\": [0.08333, 0.69444, 0, 0],\n \"42\": [0, 0.52083, 0, 0],\n \"43\": [-0.08056, 0.53055, 0, 0],\n \"44\": [0.13889, 0.125, 0, 0],\n \"45\": [-0.08056, 0.53055, 0, 0],\n \"46\": [0, 0.125, 0, 0],\n \"47\": [0.08333, 0.69444, 0, 0],\n \"48\": [0, 0.61111, 0, 0],\n \"49\": [0, 0.61111, 0, 0],\n \"50\": [0, 0.61111, 0, 0],\n \"51\": [0, 0.61111, 0, 0],\n \"52\": [0, 0.61111, 0, 0],\n \"53\": [0, 0.61111, 0, 0],\n \"54\": [0, 0.61111, 0, 0],\n \"55\": [0, 0.61111, 0, 0],\n \"56\": [0, 0.61111, 0, 0],\n \"57\": [0, 0.61111, 0, 0],\n \"58\": [0, 0.43056, 0, 0],\n \"59\": [0.13889, 0.43056, 0, 0],\n \"60\": [-0.05556, 0.55556, 0, 0],\n \"61\": [-0.19549, 0.41562, 0, 0],\n \"62\": [-0.05556, 0.55556, 0, 0],\n \"63\": [0, 0.61111, 0, 0],\n \"64\": [0, 0.61111, 0, 0],\n \"65\": [0, 0.61111, 0, 0],\n \"66\": [0, 0.61111, 0, 0],\n \"67\": [0, 0.61111, 0, 0],\n \"68\": [0, 0.61111, 0, 0],\n \"69\": [0, 0.61111, 0, 0],\n \"70\": [0, 0.61111, 0, 0],\n \"71\": [0, 0.61111, 0, 0],\n \"72\": [0, 0.61111, 0, 0],\n \"73\": [0, 0.61111, 0, 0],\n \"74\": [0, 0.61111, 0, 0],\n \"75\": [0, 0.61111, 0, 0],\n \"76\": [0, 0.61111, 0, 0],\n \"77\": [0, 0.61111, 0, 0],\n \"78\": [0, 0.61111, 0, 0],\n \"79\": [0, 0.61111, 0, 0],\n \"80\": [0, 0.61111, 0, 0],\n \"81\": [0.13889, 0.61111, 0, 0],\n \"82\": [0, 0.61111, 0, 0],\n \"83\": [0, 0.61111, 0, 0],\n \"84\": [0, 0.61111, 0, 0],\n \"85\": [0, 0.61111, 0, 0],\n \"86\": [0, 0.61111, 0, 0],\n \"87\": [0, 0.61111, 0, 0],\n \"88\": [0, 0.61111, 0, 0],\n \"89\": [0, 0.61111, 0, 0],\n \"90\": [0, 0.61111, 0, 0],\n \"91\": [0.08333, 0.69444, 0, 0],\n \"92\": [0.08333, 0.69444, 0, 0],\n \"93\": [0.08333, 0.69444, 0, 0],\n \"94\": [0, 0.61111, 0, 0],\n \"95\": [0.09514, 0, 0, 0],\n \"96\": [0, 0.61111, 0, 0],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.61111, 0, 0],\n \"99\": [0, 0.43056, 0, 0],\n \"100\": [0, 0.61111, 0, 0],\n \"101\": [0, 0.43056, 0, 0],\n \"102\": [0, 0.61111, 0, 0],\n \"103\": [0.22222, 0.43056, 0, 0],\n \"104\": [0, 0.61111, 0, 0],\n \"105\": [0, 0.61111, 0, 0],\n \"106\": [0.22222, 0.61111, 0, 0],\n \"107\": [0, 0.61111, 0, 0],\n \"108\": [0, 0.61111, 0, 0],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0],\n \"112\": [0.22222, 0.43056, 0, 0],\n \"113\": [0.22222, 0.43056, 0, 0],\n \"114\": [0, 0.43056, 0, 0],\n \"115\": [0, 0.43056, 0, 0],\n \"116\": [0, 0.55358, 0, 0],\n \"117\": [0, 0.43056, 0, 0],\n \"118\": [0, 0.43056, 0, 0],\n \"119\": [0, 0.43056, 0, 0],\n \"120\": [0, 0.43056, 0, 0],\n \"121\": [0.22222, 0.43056, 0, 0],\n \"122\": [0, 0.43056, 0, 0],\n \"123\": [0.08333, 0.69444, 0, 0],\n \"124\": [0.08333, 0.69444, 0, 0],\n \"125\": [0.08333, 0.69444, 0, 0],\n \"126\": [0, 0.61111, 0, 0],\n \"127\": [0, 0.61111, 0, 0],\n \"305\": [0, 0.43056, 0, 0],\n \"567\": [0.22222, 0.43056, 0, 0],\n \"768\": [0, 0.61111, 0, 0],\n \"769\": [0, 0.61111, 0, 0],\n \"770\": [0, 0.61111, 0, 0],\n \"771\": [0, 0.61111, 0, 0],\n \"772\": [0, 0.56555, 0, 0],\n \"774\": [0, 0.61111, 0, 0],\n \"776\": [0, 0.61111, 0, 0],\n \"778\": [0, 0.61111, 0, 0],\n \"780\": [0, 0.56597, 0, 0],\n \"915\": [0, 0.61111, 0, 0],\n \"916\": [0, 0.61111, 0, 0],\n \"920\": [0, 0.61111, 0, 0],\n \"923\": [0, 0.61111, 0, 0],\n \"926\": [0, 0.61111, 0, 0],\n \"928\": [0, 0.61111, 0, 0],\n \"931\": [0, 0.61111, 0, 0],\n \"933\": [0, 0.61111, 0, 0],\n \"934\": [0, 0.61111, 0, 0],\n \"936\": [0, 0.61111, 0, 0],\n \"937\": [0, 0.61111, 0, 0],\n \"2018\": [0, 0.61111, 0, 0],\n \"2019\": [0, 0.61111, 0, 0],\n \"8242\": [0, 0.61111, 0, 0],\n },\n};\n","/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\nvar _rules = [\n // First 2 params - rule name & source. Secondary array - list of rules,\n // which can be terminated by this one.\n [ 'table', require('./rules_block/table'), [ 'paragraph', 'reference' ] ],\n [ 'code', require('./rules_block/code') ],\n [ 'fence', require('./rules_block/fence'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n [ 'blockquote', require('./rules_block/blockquote'), [ 'paragraph', 'reference', 'list' ] ],\n [ 'hr', require('./rules_block/hr'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n [ 'list', require('./rules_block/list'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'reference', require('./rules_block/reference') ],\n [ 'heading', require('./rules_block/heading'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'lheading', require('./rules_block/lheading') ],\n [ 'html_block', require('./rules_block/html_block'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'paragraph', require('./rules_block/paragraph') ]\n];\n\n\n/**\n * new ParserBlock()\n **/\nfunction ParserBlock() {\n /**\n * ParserBlock#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of block rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], { alt: (_rules[i][2] || []).slice() });\n }\n}\n\n\n// Generate tokens for input range\n//\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n var ok, i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n line = startLine,\n hasEmptyLines = false,\n maxNesting = state.md.options.maxNesting;\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line);\n if (line >= endLine) { break; }\n\n // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n if (state.sCount[line] < state.blkIndent) { break; }\n\n // If nesting level exceeded - skip tail to the end. That's not ordinary\n // situation and we should not care about content.\n if (state.level >= maxNesting) {\n state.line = endLine;\n break;\n }\n\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n\n for (i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false);\n if (ok) { break; }\n }\n\n // set state.tight iff we had an empty line before current tag\n // i.e. latest empty line should not count\n state.tight = !hasEmptyLines;\n\n // paragraph might \"eat\" one newline after it in nested lists\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true;\n }\n\n line = state.line;\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true;\n line++;\n\n // two empty lines should stop the parser in list mode\n if (line < endLine && state.parentType === 'list' && state.isEmpty(line)) { break; }\n state.line = line;\n }\n }\n};\n\n\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\nParserBlock.prototype.parse = function (src, md, env, outTokens) {\n var state;\n\n if (!src) { return; }\n\n state = new this.State(src, md, env, outTokens);\n\n this.tokenize(state, state.line, state.lineMax);\n};\n\n\nParserBlock.prototype.State = require('./rules_block/state_block');\n\n\nmodule.exports = ParserBlock;\n","var utils = require(\"./utils\");\nvar ParseError = require(\"./ParseError\");\n\n/* This file contains a list of functions that we parse, identified by\n * the calls to defineFunction.\n *\n * The first argument to defineFunction is a single name or a list of names.\n * All functions named in such a list will share a single implementation.\n *\n * Each declared function can have associated properties, which\n * include the following:\n *\n * - numArgs: The number of arguments the function takes.\n * If this is the only property, it can be passed as a number\n * instead of an element of a properties object.\n * - argTypes: (optional) An array corresponding to each argument of the\n * function, giving the type of argument that should be parsed. Its\n * length should be equal to `numArgs + numOptionalArgs`. Valid\n * types:\n * - \"size\": A size-like thing, such as \"1em\" or \"5ex\"\n * - \"color\": An html color, like \"#abc\" or \"blue\"\n * - \"original\": The same type as the environment that the\n * function being parsed is in (e.g. used for the\n * bodies of functions like \\color where the first\n * argument is special and the second argument is\n * parsed normally)\n * Other possible types (probably shouldn't be used)\n * - \"text\": Text-like (e.g. \\text)\n * - \"math\": Normal math\n * If undefined, this will be treated as an appropriate length\n * array of \"original\" strings\n * - greediness: (optional) The greediness of the function to use ungrouped\n * arguments.\n *\n * E.g. if you have an expression\n * \\sqrt \\frac 1 2\n * since \\frac has greediness=2 vs \\sqrt's greediness=1, \\frac\n * will use the two arguments '1' and '2' as its two arguments,\n * then that whole function will be used as the argument to\n * \\sqrt. On the other hand, the expressions\n * \\frac \\frac 1 2 3\n * and\n * \\frac \\sqrt 1 2\n * will fail because \\frac and \\frac have equal greediness\n * and \\sqrt has a lower greediness than \\frac respectively. To\n * make these parse, we would have to change them to:\n * \\frac {\\frac 1 2} 3\n * and\n * \\frac {\\sqrt 1} 2\n *\n * The default value is `1`\n * - allowedInText: (optional) Whether or not the function is allowed inside\n * text mode (default false)\n * - numOptionalArgs: (optional) The number of optional arguments the function\n * should parse. If the optional arguments aren't found,\n * `null` will be passed to the handler in their place.\n * (default 0)\n *\n * The last argument is that implementation, the handler for the function(s).\n * It is called to handle these functions and their arguments.\n * It receives two arguments:\n * - context contains information and references provided by the parser\n * - args is an array of arguments obtained from TeX input\n * The context contains the following properties:\n * - funcName: the text (i.e. name) of the function, including \\\n * - parser: the parser object\n * - lexer: the lexer object\n * - positions: the positions in the overall string of the function\n * and the arguments.\n * The latter three should only be used to produce error messages.\n *\n * The function should return an object with the following keys:\n * - type: The type of element that this is. This is then used in\n * buildHTML/buildMathML to determine which function\n * should be called to build this node into a DOM node\n * Any other data can be added to the object, which will be passed\n * in to the function in buildHTML/buildMathML as `group.value`.\n */\n\nfunction defineFunction(names, props, handler) {\n if (typeof names === \"string\") {\n names = [names];\n }\n if (typeof props === \"number\") {\n props = { numArgs: props };\n }\n // Set default values of functions\n var data = {\n numArgs: props.numArgs,\n argTypes: props.argTypes,\n greediness: (props.greediness === undefined) ? 1 : props.greediness,\n allowedInText: !!props.allowedInText,\n numOptionalArgs: props.numOptionalArgs || 0,\n handler: handler,\n };\n for (var i = 0; i < names.length; ++i) {\n module.exports[names[i]] = data;\n }\n}\n\n// A normal square root\ndefineFunction(\"\\\\sqrt\", {\n numArgs: 1,\n numOptionalArgs: 1,\n}, function(context, args) {\n var index = args[0];\n var body = args[1];\n return {\n type: \"sqrt\",\n body: body,\n index: index,\n };\n});\n\n// Some non-mathy text\ndefineFunction(\"\\\\text\", {\n numArgs: 1,\n argTypes: [\"text\"],\n greediness: 2,\n}, function(context, args) {\n var body = args[0];\n // Since the corresponding buildHTML/buildMathML function expects a\n // list of elements, we normalize for different kinds of arguments\n // TODO(emily): maybe this should be done somewhere else\n var inner;\n if (body.type === \"ordgroup\") {\n inner = body.value;\n } else {\n inner = [body];\n }\n\n return {\n type: \"text\",\n body: inner,\n };\n});\n\n// A two-argument custom color\ndefineFunction(\"\\\\color\", {\n numArgs: 2,\n allowedInText: true,\n greediness: 3,\n argTypes: [\"color\", \"original\"],\n}, function(context, args) {\n var color = args[0];\n var body = args[1];\n // Normalize the different kinds of bodies (see \\text above)\n var inner;\n if (body.type === \"ordgroup\") {\n inner = body.value;\n } else {\n inner = [body];\n }\n\n return {\n type: \"color\",\n color: color.value,\n value: inner,\n };\n});\n\n// An overline\ndefineFunction(\"\\\\overline\", {\n numArgs: 1,\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"overline\",\n body: body,\n };\n});\n\n// An underline\ndefineFunction(\"\\\\underline\", {\n numArgs: 1,\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"underline\",\n body: body,\n };\n});\n\n// A box of the width and height\ndefineFunction(\"\\\\rule\", {\n numArgs: 2,\n numOptionalArgs: 1,\n argTypes: [\"size\", \"size\", \"size\"],\n}, function(context, args) {\n var shift = args[0];\n var width = args[1];\n var height = args[2];\n return {\n type: \"rule\",\n shift: shift && shift.value,\n width: width.value,\n height: height.value,\n };\n});\n\n// A KaTeX logo\ndefineFunction(\"\\\\KaTeX\", {\n numArgs: 0,\n}, function(context) {\n return {\n type: \"katex\",\n };\n});\n\ndefineFunction(\"\\\\phantom\", {\n numArgs: 1,\n}, function(context, args) {\n var body = args[0];\n var inner;\n if (body.type === \"ordgroup\") {\n inner = body.value;\n } else {\n inner = [body];\n }\n\n return {\n type: \"phantom\",\n value: inner,\n };\n});\n\n// Extra data needed for the delimiter handler down below\nvar delimiterSizes = {\n \"\\\\bigl\" : {type: \"open\", size: 1},\n \"\\\\Bigl\" : {type: \"open\", size: 2},\n \"\\\\biggl\": {type: \"open\", size: 3},\n \"\\\\Biggl\": {type: \"open\", size: 4},\n \"\\\\bigr\" : {type: \"close\", size: 1},\n \"\\\\Bigr\" : {type: \"close\", size: 2},\n \"\\\\biggr\": {type: \"close\", size: 3},\n \"\\\\Biggr\": {type: \"close\", size: 4},\n \"\\\\bigm\" : {type: \"rel\", size: 1},\n \"\\\\Bigm\" : {type: \"rel\", size: 2},\n \"\\\\biggm\": {type: \"rel\", size: 3},\n \"\\\\Biggm\": {type: \"rel\", size: 4},\n \"\\\\big\" : {type: \"textord\", size: 1},\n \"\\\\Big\" : {type: \"textord\", size: 2},\n \"\\\\bigg\" : {type: \"textord\", size: 3},\n \"\\\\Bigg\" : {type: \"textord\", size: 4},\n};\n\nvar delimiters = [\n \"(\", \")\", \"[\", \"\\\\lbrack\", \"]\", \"\\\\rbrack\",\n \"\\\\{\", \"\\\\lbrace\", \"\\\\}\", \"\\\\rbrace\",\n \"\\\\lfloor\", \"\\\\rfloor\", \"\\\\lceil\", \"\\\\rceil\",\n \"<\", \">\", \"\\\\langle\", \"\\\\rangle\", \"\\\\lt\", \"\\\\gt\",\n \"\\\\lvert\", \"\\\\rvert\", \"\\\\lVert\", \"\\\\rVert\",\n \"\\\\lgroup\", \"\\\\rgroup\", \"\\\\lmoustache\", \"\\\\rmoustache\",\n \"/\", \"\\\\backslash\",\n \"|\", \"\\\\vert\", \"\\\\|\", \"\\\\Vert\",\n \"\\\\uparrow\", \"\\\\Uparrow\",\n \"\\\\downarrow\", \"\\\\Downarrow\",\n \"\\\\updownarrow\", \"\\\\Updownarrow\",\n \".\",\n];\n\nvar fontAliases = {\n \"\\\\Bbb\": \"\\\\mathbb\",\n \"\\\\bold\": \"\\\\mathbf\",\n \"\\\\frak\": \"\\\\mathfrak\",\n};\n\n// Single-argument color functions\ndefineFunction([\n \"\\\\blue\", \"\\\\orange\", \"\\\\pink\", \"\\\\red\",\n \"\\\\green\", \"\\\\gray\", \"\\\\purple\",\n \"\\\\blueA\", \"\\\\blueB\", \"\\\\blueC\", \"\\\\blueD\", \"\\\\blueE\",\n \"\\\\tealA\", \"\\\\tealB\", \"\\\\tealC\", \"\\\\tealD\", \"\\\\tealE\",\n \"\\\\greenA\", \"\\\\greenB\", \"\\\\greenC\", \"\\\\greenD\", \"\\\\greenE\",\n \"\\\\goldA\", \"\\\\goldB\", \"\\\\goldC\", \"\\\\goldD\", \"\\\\goldE\",\n \"\\\\redA\", \"\\\\redB\", \"\\\\redC\", \"\\\\redD\", \"\\\\redE\",\n \"\\\\maroonA\", \"\\\\maroonB\", \"\\\\maroonC\", \"\\\\maroonD\", \"\\\\maroonE\",\n \"\\\\purpleA\", \"\\\\purpleB\", \"\\\\purpleC\", \"\\\\purpleD\", \"\\\\purpleE\",\n \"\\\\mintA\", \"\\\\mintB\", \"\\\\mintC\",\n \"\\\\grayA\", \"\\\\grayB\", \"\\\\grayC\", \"\\\\grayD\", \"\\\\grayE\",\n \"\\\\grayF\", \"\\\\grayG\", \"\\\\grayH\", \"\\\\grayI\",\n \"\\\\kaBlue\", \"\\\\kaGreen\",\n], {\n numArgs: 1,\n allowedInText: true,\n greediness: 3,\n}, function(context, args) {\n var body = args[0];\n var atoms;\n if (body.type === \"ordgroup\") {\n atoms = body.value;\n } else {\n atoms = [body];\n }\n\n return {\n type: \"color\",\n color: \"katex-\" + context.funcName.slice(1),\n value: atoms,\n };\n});\n\n// There are 2 flags for operators; whether they produce limits in\n// displaystyle, and whether they are symbols and should grow in\n// displaystyle. These four groups cover the four possible choices.\n\n// No limits, not symbols\ndefineFunction([\n \"\\\\arcsin\", \"\\\\arccos\", \"\\\\arctan\", \"\\\\arg\", \"\\\\cos\", \"\\\\cosh\",\n \"\\\\cot\", \"\\\\coth\", \"\\\\csc\", \"\\\\deg\", \"\\\\dim\", \"\\\\exp\", \"\\\\hom\",\n \"\\\\ker\", \"\\\\lg\", \"\\\\ln\", \"\\\\log\", \"\\\\sec\", \"\\\\sin\", \"\\\\sinh\",\n \"\\\\tan\", \"\\\\tanh\",\n], {\n numArgs: 0,\n}, function(context) {\n return {\n type: \"op\",\n limits: false,\n symbol: false,\n body: context.funcName,\n };\n});\n\n// Limits, not symbols\ndefineFunction([\n \"\\\\det\", \"\\\\gcd\", \"\\\\inf\", \"\\\\lim\", \"\\\\liminf\", \"\\\\limsup\", \"\\\\max\",\n \"\\\\min\", \"\\\\Pr\", \"\\\\sup\",\n], {\n numArgs: 0,\n}, function(context) {\n return {\n type: \"op\",\n limits: true,\n symbol: false,\n body: context.funcName,\n };\n});\n\n// No limits, symbols\ndefineFunction([\n \"\\\\int\", \"\\\\iint\", \"\\\\iiint\", \"\\\\oint\",\n], {\n numArgs: 0,\n}, function(context) {\n return {\n type: \"op\",\n limits: false,\n symbol: true,\n body: context.funcName,\n };\n});\n\n// Limits, symbols\ndefineFunction([\n \"\\\\coprod\", \"\\\\bigvee\", \"\\\\bigwedge\", \"\\\\biguplus\", \"\\\\bigcap\",\n \"\\\\bigcup\", \"\\\\intop\", \"\\\\prod\", \"\\\\sum\", \"\\\\bigotimes\",\n \"\\\\bigoplus\", \"\\\\bigodot\", \"\\\\bigsqcup\", \"\\\\smallint\",\n], {\n numArgs: 0,\n}, function(context) {\n return {\n type: \"op\",\n limits: true,\n symbol: true,\n body: context.funcName,\n };\n});\n\n// Fractions\ndefineFunction([\n \"\\\\dfrac\", \"\\\\frac\", \"\\\\tfrac\",\n \"\\\\dbinom\", \"\\\\binom\", \"\\\\tbinom\",\n], {\n numArgs: 2,\n greediness: 2,\n}, function(context, args) {\n var numer = args[0];\n var denom = args[1];\n var hasBarLine;\n var leftDelim = null;\n var rightDelim = null;\n var size = \"auto\";\n\n switch (context.funcName) {\n case \"\\\\dfrac\":\n case \"\\\\frac\":\n case \"\\\\tfrac\":\n hasBarLine = true;\n break;\n case \"\\\\dbinom\":\n case \"\\\\binom\":\n case \"\\\\tbinom\":\n hasBarLine = false;\n leftDelim = \"(\";\n rightDelim = \")\";\n break;\n default:\n throw new Error(\"Unrecognized genfrac command\");\n }\n\n switch (context.funcName) {\n case \"\\\\dfrac\":\n case \"\\\\dbinom\":\n size = \"display\";\n break;\n case \"\\\\tfrac\":\n case \"\\\\tbinom\":\n size = \"text\";\n break;\n }\n\n return {\n type: \"genfrac\",\n numer: numer,\n denom: denom,\n hasBarLine: hasBarLine,\n leftDelim: leftDelim,\n rightDelim: rightDelim,\n size: size,\n };\n});\n\n// Left and right overlap functions\ndefineFunction([\"\\\\llap\", \"\\\\rlap\"], {\n numArgs: 1,\n allowedInText: true,\n}, function(context, args) {\n var body = args[0];\n return {\n type: context.funcName.slice(1),\n body: body,\n };\n});\n\n// Delimiter functions\ndefineFunction([\n \"\\\\bigl\", \"\\\\Bigl\", \"\\\\biggl\", \"\\\\Biggl\",\n \"\\\\bigr\", \"\\\\Bigr\", \"\\\\biggr\", \"\\\\Biggr\",\n \"\\\\bigm\", \"\\\\Bigm\", \"\\\\biggm\", \"\\\\Biggm\",\n \"\\\\big\", \"\\\\Big\", \"\\\\bigg\", \"\\\\Bigg\",\n \"\\\\left\", \"\\\\right\",\n], {\n numArgs: 1,\n}, function(context, args) {\n var delim = args[0];\n if (!utils.contains(delimiters, delim.value)) {\n throw new ParseError(\n \"Invalid delimiter: '\" + delim.value + \"' after '\" +\n context.funcName + \"'\",\n context.lexer, context.positions[1]);\n }\n\n // \\left and \\right are caught somewhere in Parser.js, which is\n // why this data doesn't match what is in buildHTML.\n if (context.funcName === \"\\\\left\" || context.funcName === \"\\\\right\") {\n return {\n type: \"leftright\",\n value: delim.value,\n };\n } else {\n return {\n type: \"delimsizing\",\n size: delimiterSizes[context.funcName].size,\n delimType: delimiterSizes[context.funcName].type,\n value: delim.value,\n };\n }\n});\n\n// Sizing functions (handled in Parser.js explicitly, hence no handler)\ndefineFunction([\n \"\\\\tiny\", \"\\\\scriptsize\", \"\\\\footnotesize\", \"\\\\small\",\n \"\\\\normalsize\", \"\\\\large\", \"\\\\Large\", \"\\\\LARGE\", \"\\\\huge\", \"\\\\Huge\",\n], 0, null);\n\n// Style changing functions (handled in Parser.js explicitly, hence no\n// handler)\ndefineFunction([\n \"\\\\displaystyle\", \"\\\\textstyle\", \"\\\\scriptstyle\",\n \"\\\\scriptscriptstyle\",\n], 0, null);\n\ndefineFunction([\n // styles\n \"\\\\mathrm\", \"\\\\mathit\", \"\\\\mathbf\",\n\n // families\n \"\\\\mathbb\", \"\\\\mathcal\", \"\\\\mathfrak\", \"\\\\mathscr\", \"\\\\mathsf\",\n \"\\\\mathtt\",\n\n // aliases\n \"\\\\Bbb\", \"\\\\bold\", \"\\\\frak\",\n], {\n numArgs: 1,\n greediness: 2,\n}, function(context, args) {\n var body = args[0];\n var func = context.funcName;\n if (func in fontAliases) {\n func = fontAliases[func];\n }\n return {\n type: \"font\",\n font: func.slice(1),\n body: body,\n };\n});\n\n// Accents\ndefineFunction([\n \"\\\\acute\", \"\\\\grave\", \"\\\\ddot\", \"\\\\tilde\", \"\\\\bar\", \"\\\\breve\",\n \"\\\\check\", \"\\\\hat\", \"\\\\vec\", \"\\\\dot\",\n // We don't support expanding accents yet\n // \"\\\\widetilde\", \"\\\\widehat\"\n], {\n numArgs: 1,\n}, function(context, args) {\n var base = args[0];\n return {\n type: \"accent\",\n accent: context.funcName,\n base: base,\n };\n});\n\n// Infix generalized fractions\ndefineFunction([\"\\\\over\", \"\\\\choose\"], {\n numArgs: 0,\n}, function(context) {\n var replaceWith;\n switch (context.funcName) {\n case \"\\\\over\":\n replaceWith = \"\\\\frac\";\n break;\n case \"\\\\choose\":\n replaceWith = \"\\\\binom\";\n break;\n default:\n throw new Error(\"Unrecognized infix genfrac command\");\n }\n return {\n type: \"infix\",\n replaceWith: replaceWith,\n };\n});\n\n// Row breaks for aligned data\ndefineFunction([\"\\\\\\\\\", \"\\\\cr\"], {\n numArgs: 0,\n numOptionalArgs: 1,\n argTypes: [\"size\"],\n}, function(context, args) {\n var size = args[0];\n return {\n type: \"cr\",\n size: size,\n };\n});\n\n// Environment delimiters\ndefineFunction([\"\\\\begin\", \"\\\\end\"], {\n numArgs: 1,\n argTypes: [\"text\"],\n}, function(context, args) {\n var nameGroup = args[0];\n if (nameGroup.type !== \"ordgroup\") {\n throw new ParseError(\n \"Invalid environment name\",\n context.lexer, context.positions[1]);\n }\n var name = \"\";\n for (var i = 0; i < nameGroup.value.length; ++i) {\n name += nameGroup.value[i].value;\n }\n return {\n type: \"environment\",\n name: name,\n namepos: context.positions[1],\n };\n});\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// Process ^superscript^\n\n'use strict';\n\n// same as UNESCAPE_MD_RE plus a space\nvar UNESCAPE_RE = /\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;\n\nfunction superscript(state, silent) {\n var found,\n content,\n token,\n max = state.posMax,\n start = state.pos;\n\n if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; }\n if (silent) { return false; } // don't run any pairs in validation mode\n if (start + 2 >= max) { return false; }\n\n state.pos = start + 1;\n\n while (state.pos < max) {\n if (state.src.charCodeAt(state.pos) === 0x5E/* ^ */) {\n found = true;\n break;\n }\n\n state.md.inline.skipToken(state);\n }\n\n if (!found || start + 1 === state.pos) {\n state.pos = start;\n return false;\n }\n\n content = state.src.slice(start + 1, state.pos);\n\n // don't allow unescaped spaces/newlines inside\n if (content.match(/(^|[^\\\\])(\\\\\\\\)*\\s/)) {\n state.pos = start;\n return false;\n }\n\n // found!\n state.posMax = state.pos;\n state.pos = start + 1;\n\n // Earlier we checked !silent, but this implementation does not need it\n token = state.push('sup_open', 'sup', 1);\n token.markup = '^';\n\n token = state.push('text', '', 0);\n token.content = content.replace(UNESCAPE_RE, '$1');\n\n token = state.push('sup_close', 'sup', -1);\n token.markup = '^';\n\n state.pos = state.posMax + 1;\n state.posMax = max;\n return true;\n}\n\n\nmodule.exports = function sup_plugin(md) {\n md.inline.ruler.after('emphasis', 'sup', superscript);\n};\n","module.exports=/[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/","/**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n'use strict';\n\n\nvar assign = require('./common/utils').assign;\nvar unescapeAll = require('./common/utils').unescapeAll;\nvar escapeHtml = require('./common/utils').escapeHtml;\n\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar default_rules = {};\n\n\ndefault_rules.code_inline = function (tokens, idx, options, env, slf) {\n var token = tokens[idx],\n attrs = slf.renderAttrs(token);\n\n return '' +\n escapeHtml(tokens[idx].content) +\n '';\n};\n\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n var token = tokens[idx],\n attrs = slf.renderAttrs(token);\n\n return '' +\n escapeHtml(tokens[idx].content) +\n '\\n';\n};\n\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n var token = tokens[idx],\n info = token.info ? unescapeAll(token.info).trim() : '',\n langName = '',\n highlighted, i, tmpAttrs, tmpToken;\n\n if (info) {\n langName = info.split(/\\s+/g)[0];\n }\n\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName) || escapeHtml(token.content);\n } else {\n highlighted = escapeHtml(token.content);\n }\n\n if (highlighted.indexOf(''\n + highlighted\n + '\\n';\n }\n\n\n return '
'\n        + highlighted\n        + '
\\n';\n};\n\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n\n // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] =\n slf.renderInlineAsText(token.children, options, env);\n\n return slf.renderToken(tokens, idx, options);\n};\n\n\ndefault_rules.hardbreak = function (tokens, idx, options /*, env */) {\n return options.xhtmlOut ? '
\\n' : '
\\n';\n};\ndefault_rules.softbreak = function (tokens, idx, options /*, env */) {\n return options.breaks ? (options.xhtmlOut ? '
\\n' : '
\\n') : '\\n';\n};\n\n\ndefault_rules.text = function (tokens, idx /*, options, env */) {\n return escapeHtml(tokens[idx].content);\n};\n\n\ndefault_rules.html_block = function (tokens, idx /*, options, env */) {\n return tokens[idx].content;\n};\ndefault_rules.html_inline = function (tokens, idx /*, options, env */) {\n return tokens[idx].content;\n};\n\n\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\nfunction Renderer() {\n\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return ''; };\n * md.renderer.rules.strong_close = function () { return ''; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independed static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules);\n}\n\n\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\nRenderer.prototype.renderAttrs = function renderAttrs(token) {\n var i, l, result;\n\n if (!token.attrs) { return ''; }\n\n result = '';\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"';\n }\n\n return result;\n};\n\n\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\nRenderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n var nextToken,\n result = '',\n needLf = false,\n token = tokens[idx];\n\n // Tight list paragraphs\n if (token.hidden) {\n return '';\n }\n\n // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n';\n }\n\n // Add token name, e.g. ``.\n //\n needLf = false;\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>';\n\n return result;\n};\n\n\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\nRenderer.prototype.renderInline = function (tokens, options, env) {\n var type,\n result = '',\n rules = this.rules;\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options);\n }\n }\n\n return result;\n};\n\n\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n var result = '';\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n if (tokens[i].type === 'text') {\n result += tokens[i].content;\n } else if (tokens[i].type === 'image') {\n result += this.renderInlineAsText(tokens[i].children, options, env);\n }\n }\n\n return result;\n};\n\n\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\nRenderer.prototype.render = function (tokens, options, env) {\n var i, len, type,\n result = '',\n rules = this.rules;\n\n for (i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env);\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[tokens[i].type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options, env);\n }\n }\n\n return result;\n};\n\nmodule.exports = Renderer;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","// Parse link title\n//\n'use strict';\n\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\n\nmodule.exports = function parseLinkTitle(str, pos, max) {\n var code,\n marker,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (pos >= max) { return result; }\n\n marker = str.charCodeAt(pos);\n\n if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return result; }\n\n pos++;\n\n // if opening marker is \"(\", switch it to closing marker \")\"\n if (marker === 0x28) { marker = 0x29; }\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n if (code === marker) {\n result.pos = pos + 1;\n result.lines = lines;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n } else if (code === 0x0A) {\n lines++;\n } else if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos++;\n if (str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n\n pos++;\n }\n\n return result;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","/*\n * List of Unicode code that are flagged as mark.\n *\n * Contains Unicode code of:\n * - Mc = Mark, spacing combining\n * - Me = Mark, enclosing\n * - Mn = Mark, nonspacing\n *\n * This list has been computed from http://unicode.org/Public/UNIDATA/UnicodeData.txt\n * curl -s http://unicode.org/Public/UNIDATA/UnicodeData.txt | grep -E ';Mc;|;Me;|;Mn;' | cut -d \\; -f 1 | xargs -I{} printf '%d, ' 0x{}\n *\n */\nexports.M = [768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1471, 1473, 1474, 1476, 1477, 1479, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1648, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1759, 1760, 1761, 1762, 1763, 1764, 1767, 1768, 1770, 1771, 1772, 1773, 1809, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2070, 2071, 2072, 2073, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2085, 2086, 2087, 2089, 2090, 2091, 2092, 2093, 2137, 2138, 2139, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2362, 2363, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2402, 2403, 2433, 2434, 2435, 2492, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2503, 2504, 2507, 2508, 2509, 2519, 2530, 2531, 2561, 2562, 2563, 2620, 2622, 2623, 2624, 2625, 2626, 2631, 2632, 2635, 2636, 2637, 2641, 2672, 2673, 2677, 2689, 2690, 2691, 2748, 2750, 2751, 2752, 2753, 2754, 2755, 2756, 2757, 2759, 2760, 2761, 2763, 2764, 2765, 2786, 2787, 2817, 2818, 2819, 2876, 2878, 2879, 2880, 2881, 2882, 2883, 2884, 2887, 2888, 2891, 2892, 2893, 2902, 2903, 2914, 2915, 2946, 3006, 3007, 3008, 3009, 3010, 3014, 3015, 3016, 3018, 3019, 3020, 3021, 3031, 3072, 3073, 3074, 3075, 3134, 3135, 3136, 3137, 3138, 3139, 3140, 3142, 3143, 3144, 3146, 3147, 3148, 3149, 3157, 3158, 3170, 3171, 3201, 3202, 3203, 3260, 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3270, 3271, 3272, 3274, 3275, 3276, 3277, 3285, 3286, 3298, 3299, 3329, 3330, 3331, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3398, 3399, 3400, 3402, 3403, 3404, 3405, 3415, 3426, 3427, 3458, 3459, 3530, 3535, 3536, 3537, 3538, 3539, 3540, 3542, 3544, 3545, 3546, 3547, 3548, 3549, 3550, 3551, 3570, 3571, 3633, 3636, 3637, 3638, 3639, 3640, 3641, 3642, 3655, 3656, 3657, 3658, 3659, 3660, 3661, 3662, 3761, 3764, 3765, 3766, 3767, 3768, 3769, 3771, 3772, 3784, 3785, 3786, 3787, 3788, 3789, 3864, 3865, 3893, 3895, 3897, 3902, 3903, 3953, 3954, 3955, 3956, 3957, 3958, 3959, 3960, 3961, 3962, 3963, 3964, 3965, 3966, 3967, 3968, 3969, 3970, 3971, 3972, 3974, 3975, 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989, 3990, 3991, 3993, 3994, 3995, 3996, 3997, 3998, 3999, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, 4009, 4010, 4011, 4012, 4013, 4014, 4015, 4016, 4017, 4018, 4019, 4020, 4021, 4022, 4023, 4024, 4025, 4026, 4027, 4028, 4038, 4139, 4140, 4141, 4142, 4143, 4144, 4145, 4146, 4147, 4148, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157, 4158, 4182, 4183, 4184, 4185, 4190, 4191, 4192, 4194, 4195, 4196, 4199, 4200, 4201, 4202, 4203, 4204, 4205, 4209, 4210, 4211, 4212, 4226, 4227, 4228, 4229, 4230, 4231, 4232, 4233, 4234, 4235, 4236, 4237, 4239, 4250, 4251, 4252, 4253, 4957, 4958, 4959, 5906, 5907, 5908, 5938, 5939, 5940, 5970, 5971, 6002, 6003, 6068, 6069, 6070, 6071, 6072, 6073, 6074, 6075, 6076, 6077, 6078, 6079, 6080, 6081, 6082, 6083, 6084, 6085, 6086, 6087, 6088, 6089, 6090, 6091, 6092, 6093, 6094, 6095, 6096, 6097, 6098, 6099, 6109, 6155, 6156, 6157, 6313, 6432, 6433, 6434, 6435, 6436, 6437, 6438, 6439, 6440, 6441, 6442, 6443, 6448, 6449, 6450, 6451, 6452, 6453, 6454, 6455, 6456, 6457, 6458, 6459, 6679, 6680, 6681, 6682, 6683, 6741, 6742, 6743, 6744, 6745, 6746, 6747, 6748, 6749, 6750, 6752, 6753, 6754, 6755, 6756, 6757, 6758, 6759, 6760, 6761, 6762, 6763, 6764, 6765, 6766, 6767, 6768, 6769, 6770, 6771, 6772, 6773, 6774, 6775, 6776, 6777, 6778, 6779, 6780, 6783, 6832, 6833, 6834, 6835, 6836, 6837, 6838, 6839, 6840, 6841, 6842, 6843, 6844, 6845, 6846, 6912, 6913, 6914, 6915, 6916, 6964, 6965, 6966, 6967, 6968, 6969, 6970, 6971, 6972, 6973, 6974, 6975, 6976, 6977, 6978, 6979, 6980, 7019, 7020, 7021, 7022, 7023, 7024, 7025, 7026, 7027, 7040, 7041, 7042, 7073, 7074, 7075, 7076, 7077, 7078, 7079, 7080, 7081, 7082, 7083, 7084, 7085, 7142, 7143, 7144, 7145, 7146, 7147, 7148, 7149, 7150, 7151, 7152, 7153, 7154, 7155, 7204, 7205, 7206, 7207, 7208, 7209, 7210, 7211, 7212, 7213, 7214, 7215, 7216, 7217, 7218, 7219, 7220, 7221, 7222, 7223, 7376, 7377, 7378, 7380, 7381, 7382, 7383, 7384, 7385, 7386, 7387, 7388, 7389, 7390, 7391, 7392, 7393, 7394, 7395, 7396, 7397, 7398, 7399, 7400, 7405, 7410, 7411, 7412, 7416, 7417, 7616, 7617, 7618, 7619, 7620, 7621, 7622, 7623, 7624, 7625, 7626, 7627, 7628, 7629, 7630, 7631, 7632, 7633, 7634, 7635, 7636, 7637, 7638, 7639, 7640, 7641, 7642, 7643, 7644, 7645, 7646, 7647, 7648, 7649, 7650, 7651, 7652, 7653, 7654, 7655, 7656, 7657, 7658, 7659, 7660, 7661, 7662, 7663, 7664, 7665, 7666, 7667, 7668, 7669, 7676, 7677, 7678, 7679, 8400, 8401, 8402, 8403, 8404, 8405, 8406, 8407, 8408, 8409, 8410, 8411, 8412, 8413, 8414, 8415, 8416, 8417, 8418, 8419, 8420, 8421, 8422, 8423, 8424, 8425, 8426, 8427, 8428, 8429, 8430, 8431, 8432, 11503, 11504, 11505, 11647, 11744, 11745, 11746, 11747, 11748, 11749, 11750, 11751, 11752, 11753, 11754, 11755, 11756, 11757, 11758, 11759, 11760, 11761, 11762, 11763, 11764, 11765, 11766, 11767, 11768, 11769, 11770, 11771, 11772, 11773, 11774, 11775, 12330, 12331, 12332, 12333, 12334, 12335, 12441, 12442, 42607, 42608, 42609, 42610, 42612, 42613, 42614, 42615, 42616, 42617, 42618, 42619, 42620, 42621, 42654, 42655, 42736, 42737, 43010, 43014, 43019, 43043, 43044, 43045, 43046, 43047, 43136, 43137, 43188, 43189, 43190, 43191, 43192, 43193, 43194, 43195, 43196, 43197, 43198, 43199, 43200, 43201, 43202, 43203, 43204, 43232, 43233, 43234, 43235, 43236, 43237, 43238, 43239, 43240, 43241, 43242, 43243, 43244, 43245, 43246, 43247, 43248, 43249, 43302, 43303, 43304, 43305, 43306, 43307, 43308, 43309, 43335, 43336, 43337, 43338, 43339, 43340, 43341, 43342, 43343, 43344, 43345, 43346, 43347, 43392, 43393, 43394, 43395, 43443, 43444, 43445, 43446, 43447, 43448, 43449, 43450, 43451, 43452, 43453, 43454, 43455, 43456, 43493, 43561, 43562, 43563, 43564, 43565, 43566, 43567, 43568, 43569, 43570, 43571, 43572, 43573, 43574, 43587, 43596, 43597, 43643, 43644, 43645, 43696, 43698, 43699, 43700, 43703, 43704, 43710, 43711, 43713, 43755, 43756, 43757, 43758, 43759, 43765, 43766, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44012, 44013, 64286, 65024, 65025, 65026, 65027, 65028, 65029, 65030, 65031, 65032, 65033, 65034, 65035, 65036, 65037, 65038, 65039, 65056, 65057, 65058, 65059, 65060, 65061, 65062, 65063, 65064, 65065, 65066, 65067, 65068, 65069, 65070, 65071, 66045, 66272, 66422, 66423, 66424, 66425, 66426, 68097, 68098, 68099, 68101, 68102, 68108, 68109, 68110, 68111, 68152, 68153, 68154, 68159, 68325, 68326, 69632, 69633, 69634, 69688, 69689, 69690, 69691, 69692, 69693, 69694, 69695, 69696, 69697, 69698, 69699, 69700, 69701, 69702, 69759, 69760, 69761, 69762, 69808, 69809, 69810, 69811, 69812, 69813, 69814, 69815, 69816, 69817, 69818, 69888, 69889, 69890, 69927, 69928, 69929, 69930, 69931, 69932, 69933, 69934, 69935, 69936, 69937, 69938, 69939, 69940, 70003, 70016, 70017, 70018, 70067, 70068, 70069, 70070, 70071, 70072, 70073, 70074, 70075, 70076, 70077, 70078, 70079, 70080, 70090, 70091, 70092, 70188, 70189, 70190, 70191, 70192, 70193, 70194, 70195, 70196, 70197, 70198, 70199, 70367, 70368, 70369, 70370, 70371, 70372, 70373, 70374, 70375, 70376, 70377, 70378, 70400, 70401, 70402, 70403, 70460, 70462, 70463, 70464, 70465, 70466, 70467, 70468, 70471, 70472, 70475, 70476, 70477, 70487, 70498, 70499, 70502, 70503, 70504, 70505, 70506, 70507, 70508, 70512, 70513, 70514, 70515, 70516, 70832, 70833, 70834, 70835, 70836, 70837, 70838, 70839, 70840, 70841, 70842, 70843, 70844, 70845, 70846, 70847, 70848, 70849, 70850, 70851, 71087, 71088, 71089, 71090, 71091, 71092, 71093, 71096, 71097, 71098, 71099, 71100, 71101, 71102, 71103, 71104, 71132, 71133, 71216, 71217, 71218, 71219, 71220, 71221, 71222, 71223, 71224, 71225, 71226, 71227, 71228, 71229, 71230, 71231, 71232, 71339, 71340, 71341, 71342, 71343, 71344, 71345, 71346, 71347, 71348, 71349, 71350, 71351, 71453, 71454, 71455, 71456, 71457, 71458, 71459, 71460, 71461, 71462, 71463, 71464, 71465, 71466, 71467, 92912, 92913, 92914, 92915, 92916, 92976, 92977, 92978, 92979, 92980, 92981, 92982, 94033, 94034, 94035, 94036, 94037, 94038, 94039, 94040, 94041, 94042, 94043, 94044, 94045, 94046, 94047, 94048, 94049, 94050, 94051, 94052, 94053, 94054, 94055, 94056, 94057, 94058, 94059, 94060, 94061, 94062, 94063, 94064, 94065, 94066, 94067, 94068, 94069, 94070, 94071, 94072, 94073, 94074, 94075, 94076, 94077, 94078, 94095, 94096, 94097, 94098, 113821, 113822, 119141, 119142, 119143, 119144, 119145, 119149, 119150, 119151, 119152, 119153, 119154, 119163, 119164, 119165, 119166, 119167, 119168, 119169, 119170, 119173, 119174, 119175, 119176, 119177, 119178, 119179, 119210, 119211, 119212, 119213, 119362, 119363, 119364, 121344, 121345, 121346, 121347, 121348, 121349, 121350, 121351, 121352, 121353, 121354, 121355, 121356, 121357, 121358, 121359, 121360, 121361, 121362, 121363, 121364, 121365, 121366, 121367, 121368, 121369, 121370, 121371, 121372, 121373, 121374, 121375, 121376, 121377, 121378, 121379, 121380, 121381, 121382, 121383, 121384, 121385, 121386, 121387, 121388, 121389, 121390, 121391, 121392, 121393, 121394, 121395, 121396, 121397, 121398, 121403, 121404, 121405, 121406, 121407, 121408, 121409, 121410, 121411, 121412, 121413, 121414, 121415, 121416, 121417, 121418, 121419, 121420, 121421, 121422, 121423, 121424, 121425, 121426, 121427, 121428, 121429, 121430, 121431, 121432, 121433, 121434, 121435, 121436, 121437, 121438, 121439, 121440, 121441, 121442, 121443, 121444, 121445, 121446, 121447, 121448, 121449, 121450, 121451, 121452, 121461, 121476, 121499, 121500, 121501, 121502, 121503, 121505, 121506, 121507, 121508, 121509, 121510, 121511, 121512, 121513, 121514, 121515, 121516, 121517, 121518, 121519, 125136, 125137, 125138, 125139, 125140, 125141, 125142, 917760, 917761, 917762, 917763, 917764, 917765, 917766, 917767, 917768, 917769, 917770, 917771, 917772, 917773, 917774, 917775, 917776, 917777, 917778, 917779, 917780, 917781, 917782, 917783, 917784, 917785, 917786, 917787, 917788, 917789, 917790, 917791, 917792, 917793, 917794, 917795, 917796, 917797, 917798, 917799, 917800, 917801, 917802, 917803, 917804, 917805, 917806, 917807, 917808, 917809, 917810, 917811, 917812, 917813, 917814, 917815, 917816, 917817, 917818, 917819, 917820, 917821, 917822, 917823, 917824, 917825, 917826, 917827, 917828, 917829, 917830, 917831, 917832, 917833, 917834, 917835, 917836, 917837, 917838, 917839, 917840, 917841, 917842, 917843, 917844, 917845, 917846, 917847, 917848, 917849, 917850, 917851, 917852, 917853, 917854, 917855, 917856, 917857, 917858, 917859, 917860, 917861, 917862, 917863, 917864, 917865, 917866, 917867, 917868, 917869, 917870, 917871, 917872, 917873, 917874, 917875, 917876, 917877, 917878, 917879, 917880, 917881, 917882, 917883, 917884, 917885, 917886, 917887, 917888, 917889, 917890, 917891, 917892, 917893, 917894, 917895, 917896, 917897, 917898, 917899, 917900, 917901, 917902, 917903, 917904, 917905, 917906, 917907, 917908, 917909, 917910, 917911, 917912, 917913, 917914, 917915, 917916, 917917, 917918, 917919, 917920, 917921, 917922, 917923, 917924, 917925, 917926, 917927, 917928, 917929, 917930, 917931, 917932, 917933, 917934, 917935, 917936, 917937, 917938, 917939, 917940, 917941, 917942, 917943, 917944, 917945, 917946, 917947, 917948, 917949, 917950, 917951, 917952, 917953, 917954, 917955, 917956, 917957, 917958, 917959, 917960, 917961, 917962, 917963, 917964, 917965, 917966, 917967, 917968, 917969, 917970, 917971, 917972, 917973, 917974, 917975, 917976, 917977, 917978, 917979, 917980, 917981, 917982, 917983, 917984, 917985, 917986, 917987, 917988, 917989, 917990, 917991, 917992, 917993, 917994, 917995, 917996, 917997, 917998, 917999];\n","// GFM table, non-standard\n\n'use strict';\n\n\nfunction getLine(state, line) {\n var pos = state.bMarks[line] + state.blkIndent,\n max = state.eMarks[line];\n\n return state.src.substr(pos, max - pos);\n}\n\nfunction escapedSplit(str) {\n var result = [],\n pos = 0,\n max = str.length,\n ch,\n escapes = 0,\n lastPos = 0,\n backTicked = false,\n lastBackTick = 0;\n\n ch = str.charCodeAt(pos);\n\n while (pos < max) {\n if (ch === 0x60/* ` */ && (escapes % 2 === 0)) {\n backTicked = !backTicked;\n lastBackTick = pos;\n } else if (ch === 0x7c/* | */ && (escapes % 2 === 0) && !backTicked) {\n result.push(str.substring(lastPos, pos));\n lastPos = pos + 1;\n } else if (ch === 0x5c/* \\ */) {\n escapes++;\n } else {\n escapes = 0;\n }\n\n pos++;\n\n // If there was an un-closed backtick, go back to just after\n // the last backtick, but as if it was a normal character\n if (pos === max && backTicked) {\n backTicked = false;\n pos = lastBackTick + 1;\n }\n\n ch = str.charCodeAt(pos);\n }\n\n result.push(str.substring(lastPos));\n\n return result;\n}\n\n\nmodule.exports = function table(state, startLine, endLine, silent) {\n var ch, lineText, pos, i, nextLine, columns, columnCount, token,\n aligns, t, tableLines, tbodyLines;\n\n // should have at least three lines\n if (startLine + 2 > endLine) { return false; }\n\n nextLine = startLine + 1;\n\n if (state.sCount[nextLine] < state.blkIndent) { return false; }\n\n // first character of the second line should be '|' or '-'\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n if (pos >= state.eMarks[nextLine]) { return false; }\n\n ch = state.src.charCodeAt(pos);\n if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */) { return false; }\n\n lineText = getLine(state, startLine + 1);\n if (!/^[-:| ]+$/.test(lineText)) { return false; }\n\n columns = lineText.split('|');\n aligns = [];\n for (i = 0; i < columns.length; i++) {\n t = columns[i].trim();\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue;\n } else {\n return false;\n }\n }\n\n if (!/^:?-+:?$/.test(t)) { return false; }\n if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right');\n } else if (t.charCodeAt(0) === 0x3A/* : */) {\n aligns.push('left');\n } else {\n aligns.push('');\n }\n }\n\n lineText = getLine(state, startLine).trim();\n if (lineText.indexOf('|') === -1) { return false; }\n columns = escapedSplit(lineText.replace(/^\\||\\|$/g, ''));\n\n // header row will define an amount of columns in the entire table,\n // and align row shouldn't be smaller than that (the rest of the rows can)\n columnCount = columns.length;\n if (columnCount > aligns.length) { return false; }\n\n if (silent) { return true; }\n\n token = state.push('table_open', 'table', 1);\n token.map = tableLines = [ startLine, 0 ];\n\n token = state.push('thead_open', 'thead', 1);\n token.map = [ startLine, startLine + 1 ];\n\n token = state.push('tr_open', 'tr', 1);\n token.map = [ startLine, startLine + 1 ];\n\n for (i = 0; i < columns.length; i++) {\n token = state.push('th_open', 'th', 1);\n token.map = [ startLine, startLine + 1 ];\n if (aligns[i]) {\n token.attrs = [ [ 'style', 'text-align:' + aligns[i] ] ];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i].trim();\n token.map = [ startLine, startLine + 1 ];\n token.children = [];\n\n token = state.push('th_close', 'th', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n token = state.push('thead_close', 'thead', -1);\n\n token = state.push('tbody_open', 'tbody', 1);\n token.map = tbodyLines = [ startLine + 2, 0 ];\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n lineText = getLine(state, nextLine);\n if (lineText.indexOf('|') === -1) { break; }\n\n // keep spaces at beginning of line to indicate an empty first cell, but\n // strip trailing whitespace\n columns = escapedSplit(lineText.replace(/^\\||\\|\\s*$/g, ''));\n\n token = state.push('tr_open', 'tr', 1);\n for (i = 0; i < columnCount; i++) {\n token = state.push('td_open', 'td', 1);\n if (aligns[i]) {\n token.attrs = [ [ 'style', 'text-align:' + aligns[i] ] ];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i] ? columns[i].trim() : '';\n token.children = [];\n\n token = state.push('td_close', 'td', -1);\n }\n token = state.push('tr_close', 'tr', -1);\n }\n token = state.push('tbody_close', 'tbody', -1);\n token = state.push('table_close', 'table', -1);\n\n tableLines[1] = tbodyLines[1] = nextLine;\n state.line = nextLine;\n return true;\n};\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\n\nfunction FFT() {\n\n var window = new_float(Encoder.BLKSIZE);\n var window_s = new_float(Encoder.BLKSIZE_s / 2);\n\n var costab = [\n 9.238795325112867e-01, 3.826834323650898e-01,\n 9.951847266721969e-01, 9.801714032956060e-02,\n 9.996988186962042e-01, 2.454122852291229e-02,\n 9.999811752826011e-01, 6.135884649154475e-03\n ];\n\n function fht(fz, fzPos, n) {\n var tri = 0;\n var k4;\n var fi;\n var gi;\n\n n <<= 1;\n /* to get BLKSIZE, because of 3DNow! ASM routine */\n var fn = fzPos + n;\n k4 = 4;\n do {\n var s1, c1;\n var i, k1, k2, k3, kx;\n kx = k4 >> 1;\n k1 = k4;\n k2 = k4 << 1;\n k3 = k2 + k1;\n k4 = k2 << 1;\n fi = fzPos;\n gi = fi + kx;\n do {\n var f0, f1, f2, f3;\n f1 = fz[fi + 0] - fz[fi + k1];\n f0 = fz[fi + 0] + fz[fi + k1];\n f3 = fz[fi + k2] - fz[fi + k3];\n f2 = fz[fi + k2] + fz[fi + k3];\n fz[fi + k2] = f0 - f2;\n fz[fi + 0] = f0 + f2;\n fz[fi + k3] = f1 - f3;\n fz[fi + k1] = f1 + f3;\n f1 = fz[gi + 0] - fz[gi + k1];\n f0 = fz[gi + 0] + fz[gi + k1];\n f3 = (Util.SQRT2 * fz[gi + k3]);\n f2 = (Util.SQRT2 * fz[gi + k2]);\n fz[gi + k2] = f0 - f2;\n fz[gi + 0] = f0 + f2;\n fz[gi + k3] = f1 - f3;\n fz[gi + k1] = f1 + f3;\n gi += k4;\n fi += k4;\n } while (fi < fn);\n c1 = costab[tri + 0];\n s1 = costab[tri + 1];\n for (i = 1; i < kx; i++) {\n var c2, s2;\n c2 = 1 - (2 * s1) * s1;\n s2 = (2 * s1) * c1;\n fi = fzPos + i;\n gi = fzPos + k1 - i;\n do {\n var a, b, g0, f0, f1, g1, f2, g2, f3, g3;\n b = s2 * fz[fi + k1] - c2 * fz[gi + k1];\n a = c2 * fz[fi + k1] + s2 * fz[gi + k1];\n f1 = fz[fi + 0] - a;\n f0 = fz[fi + 0] + a;\n g1 = fz[gi + 0] - b;\n g0 = fz[gi + 0] + b;\n b = s2 * fz[fi + k3] - c2 * fz[gi + k3];\n a = c2 * fz[fi + k3] + s2 * fz[gi + k3];\n f3 = fz[fi + k2] - a;\n f2 = fz[fi + k2] + a;\n g3 = fz[gi + k2] - b;\n g2 = fz[gi + k2] + b;\n b = s1 * f2 - c1 * g3;\n a = c1 * f2 + s1 * g3;\n fz[fi + k2] = f0 - a;\n fz[fi + 0] = f0 + a;\n fz[gi + k3] = g1 - b;\n fz[gi + k1] = g1 + b;\n b = c1 * g2 - s1 * f3;\n a = s1 * g2 + c1 * f3;\n fz[gi + k2] = g0 - a;\n fz[gi + 0] = g0 + a;\n fz[fi + k3] = f1 - b;\n fz[fi + k1] = f1 + b;\n gi += k4;\n fi += k4;\n } while (fi < fn);\n c2 = c1;\n c1 = c2 * costab[tri + 0] - s1 * costab[tri + 1];\n s1 = c2 * costab[tri + 1] + s1 * costab[tri + 0];\n }\n tri += 2;\n } while (k4 < n);\n }\n\n var rv_tbl = [0x00, 0x80, 0x40,\n 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10,\n 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70,\n 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28,\n 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58,\n 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04,\n 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64,\n 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34,\n 0xb4, 0x74, 0xf4, 0x0c, 0x8c, 0x4c,\n 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c,\n 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c,\n 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22,\n 0xa2, 0x62, 0xe2, 0x12, 0x92, 0x52,\n 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a,\n 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a,\n 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a,\n 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46,\n 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16,\n 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76,\n 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e,\n 0xae, 0x6e, 0xee, 0x1e, 0x9e, 0x5e,\n 0xde, 0x3e, 0xbe, 0x7e, 0xfe];\n\n this.fft_short = function (gfc, x_real, chn, buffer, bufPos) {\n for (var b = 0; b < 3; b++) {\n var x = Encoder.BLKSIZE_s / 2;\n var k = 0xffff & ((576 / 3) * (b + 1));\n var j = Encoder.BLKSIZE_s / 8 - 1;\n do {\n var f0, f1, f2, f3, w;\n var i = rv_tbl[j << 2] & 0xff;\n\n f0 = window_s[i] * buffer[chn][bufPos + i + k];\n w = window_s[0x7f - i] * buffer[chn][bufPos + i + k + 0x80];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window_s[i + 0x40] * buffer[chn][bufPos + i + k + 0x40];\n w = window_s[0x3f - i] * buffer[chn][bufPos + i + k + 0xc0];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x -= 4;\n x_real[b][x + 0] = f0 + f2;\n x_real[b][x + 2] = f0 - f2;\n x_real[b][x + 1] = f1 + f3;\n x_real[b][x + 3] = f1 - f3;\n\n f0 = window_s[i + 0x01] * buffer[chn][bufPos + i + k + 0x01];\n w = window_s[0x7e - i] * buffer[chn][bufPos + i + k + 0x81];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window_s[i + 0x41] * buffer[chn][bufPos + i + k + 0x41];\n w = window_s[0x3e - i] * buffer[chn][bufPos + i + k + 0xc1];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 0] = f0 + f2;\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 2] = f0 - f2;\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 1] = f1 + f3;\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 3] = f1 - f3;\n } while (--j >= 0);\n\n fht(x_real[b], x, Encoder.BLKSIZE_s / 2);\n /* BLKSIZE_s/2 because of 3DNow! ASM routine */\n /* BLKSIZE/2 because of 3DNow! ASM routine */\n }\n }\n\n this.fft_long = function (gfc, y, chn, buffer, bufPos) {\n var jj = Encoder.BLKSIZE / 8 - 1;\n var x = Encoder.BLKSIZE / 2;\n\n do {\n var f0, f1, f2, f3, w;\n var i = rv_tbl[jj] & 0xff;\n f0 = window[i] * buffer[chn][bufPos + i];\n w = window[i + 0x200] * buffer[chn][bufPos + i + 0x200];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window[i + 0x100] * buffer[chn][bufPos + i + 0x100];\n w = window[i + 0x300] * buffer[chn][bufPos + i + 0x300];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x -= 4;\n y[x + 0] = f0 + f2;\n y[x + 2] = f0 - f2;\n y[x + 1] = f1 + f3;\n y[x + 3] = f1 - f3;\n\n f0 = window[i + 0x001] * buffer[chn][bufPos + i + 0x001];\n w = window[i + 0x201] * buffer[chn][bufPos + i + 0x201];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window[i + 0x101] * buffer[chn][bufPos + i + 0x101];\n w = window[i + 0x301] * buffer[chn][bufPos + i + 0x301];\n f3 = f2 - w;\n f2 = f2 + w;\n\n y[x + Encoder.BLKSIZE / 2 + 0] = f0 + f2;\n y[x + Encoder.BLKSIZE / 2 + 2] = f0 - f2;\n y[x + Encoder.BLKSIZE / 2 + 1] = f1 + f3;\n y[x + Encoder.BLKSIZE / 2 + 3] = f1 - f3;\n } while (--jj >= 0);\n\n fht(y, x, Encoder.BLKSIZE / 2);\n /* BLKSIZE/2 because of 3DNow! ASM routine */\n }\n\n this.init_fft = function (gfc) {\n /* The type of window used here will make no real difference, but */\n /*\n * in the interest of merging nspsytune stuff - switch to blackman\n * window\n */\n for (var i = 0; i < Encoder.BLKSIZE; i++)\n /* blackman window */\n window[i] = (0.42 - 0.5 * Math.cos(2 * Math.PI * (i + .5)\n / Encoder.BLKSIZE) + 0.08 * Math.cos(4 * Math.PI * (i + .5)\n / Encoder.BLKSIZE));\n\n for (var i = 0; i < Encoder.BLKSIZE_s / 2; i++)\n window_s[i] = (0.5 * (1.0 - Math.cos(2.0 * Math.PI\n * (i + 0.5) / Encoder.BLKSIZE_s)));\n\n }\n\n}\n\nmodule.exports = FFT;\n","/* eslint no-constant-condition:0 */\nvar fontMetrics = require(\"./fontMetrics\");\nvar parseData = require(\"./parseData\");\nvar ParseError = require(\"./ParseError\");\n\nvar ParseNode = parseData.ParseNode;\n\n/**\n * Parse the body of the environment, with rows delimited by \\\\ and\n * columns delimited by &, and create a nested list in row-major order\n * with one group per cell.\n */\nfunction parseArray(parser, result) {\n var row = [];\n var body = [row];\n var rowGaps = [];\n while (true) {\n var cell = parser.parseExpression(false, null);\n row.push(new ParseNode(\"ordgroup\", cell, parser.mode));\n var next = parser.nextToken.text;\n if (next === \"&\") {\n parser.consume();\n } else if (next === \"\\\\end\") {\n break;\n } else if (next === \"\\\\\\\\\" || next === \"\\\\cr\") {\n var cr = parser.parseFunction();\n rowGaps.push(cr.value.size);\n row = [];\n body.push(row);\n } else {\n // TODO: Clean up the following hack once #385 got merged\n var pos = Math.min(parser.pos + 1, parser.lexer._input.length);\n throw new ParseError(\"Expected & or \\\\\\\\ or \\\\end\",\n parser.lexer, pos);\n }\n }\n result.body = body;\n result.rowGaps = rowGaps;\n return new ParseNode(result.type, result, parser.mode);\n}\n\n/*\n * An environment definition is very similar to a function definition:\n * it is declared with a name or a list of names, a set of properties\n * and a handler containing the actual implementation.\n *\n * The properties include:\n * - numArgs: The number of arguments after the \\begin{name} function.\n * - argTypes: (optional) Just like for a function\n * - allowedInText: (optional) Whether or not the environment is allowed inside\n * text mode (default false) (not enforced yet)\n * - numOptionalArgs: (optional) Just like for a function\n * A bare number instead of that object indicates the numArgs value.\n *\n * The handler function will receive two arguments\n * - context: information and references provided by the parser\n * - args: an array of arguments passed to \\begin{name}\n * The context contains the following properties:\n * - envName: the name of the environment, one of the listed names.\n * - parser: the parser object\n * - lexer: the lexer object\n * - positions: the positions associated with these arguments from args.\n * The handler must return a ParseResult.\n */\n\nfunction defineEnvironment(names, props, handler) {\n if (typeof names === \"string\") {\n names = [names];\n }\n if (typeof props === \"number\") {\n props = { numArgs: props };\n }\n // Set default values of environments\n var data = {\n numArgs: props.numArgs || 0,\n argTypes: props.argTypes,\n greediness: 1,\n allowedInText: !!props.allowedInText,\n numOptionalArgs: props.numOptionalArgs || 0,\n handler: handler,\n };\n for (var i = 0; i < names.length; ++i) {\n module.exports[names[i]] = data;\n }\n}\n\n// Arrays are part of LaTeX, defined in lttab.dtx so its documentation\n// is part of the source2e.pdf file of LaTeX2e source documentation.\ndefineEnvironment(\"array\", {\n numArgs: 1,\n}, function(context, args) {\n var colalign = args[0];\n colalign = colalign.value.map ? colalign.value : [colalign];\n var cols = colalign.map(function(node) {\n var ca = node.value;\n if (\"lcr\".indexOf(ca) !== -1) {\n return {\n type: \"align\",\n align: ca,\n };\n } else if (ca === \"|\") {\n return {\n type: \"separator\",\n separator: \"|\",\n };\n }\n throw new ParseError(\n \"Unknown column alignment: \" + node.value,\n context.lexer, context.positions[1]);\n });\n var res = {\n type: \"array\",\n cols: cols,\n hskipBeforeAndAfter: true, // \\@preamble in lttab.dtx\n };\n res = parseArray(context.parser, res);\n return res;\n});\n\n// The matrix environments of amsmath builds on the array environment\n// of LaTeX, which is discussed above.\ndefineEnvironment([\n \"matrix\",\n \"pmatrix\",\n \"bmatrix\",\n \"Bmatrix\",\n \"vmatrix\",\n \"Vmatrix\",\n], {\n}, function(context) {\n var delimiters = {\n \"matrix\": null,\n \"pmatrix\": [\"(\", \")\"],\n \"bmatrix\": [\"[\", \"]\"],\n \"Bmatrix\": [\"\\\\{\", \"\\\\}\"],\n \"vmatrix\": [\"|\", \"|\"],\n \"Vmatrix\": [\"\\\\Vert\", \"\\\\Vert\"],\n }[context.envName];\n var res = {\n type: \"array\",\n hskipBeforeAndAfter: false, // \\hskip -\\arraycolsep in amsmath\n };\n res = parseArray(context.parser, res);\n if (delimiters) {\n res = new ParseNode(\"leftright\", {\n body: [res],\n left: delimiters[0],\n right: delimiters[1],\n }, context.mode);\n }\n return res;\n});\n\n// A cases environment (in amsmath.sty) is almost equivalent to\n// \\def\\arraystretch{1.2}%\n// \\left\\{\\begin{array}{@{}l@{\\quad}l@{}} … \\end{array}\\right.\ndefineEnvironment(\"cases\", {\n}, function(context) {\n var res = {\n type: \"array\",\n arraystretch: 1.2,\n cols: [{\n type: \"align\",\n align: \"l\",\n pregap: 0,\n postgap: fontMetrics.metrics.quad,\n }, {\n type: \"align\",\n align: \"l\",\n pregap: 0,\n postgap: 0,\n }],\n };\n res = parseArray(context.parser, res);\n res = new ParseNode(\"leftright\", {\n body: [res],\n left: \"\\\\{\",\n right: \".\",\n }, context.mode);\n return res;\n});\n\n// An aligned environment is like the align* environment\n// except it operates within math mode.\n// Note that we assume \\nomallineskiplimit to be zero,\n// so that \\strut@ is the same as \\strut.\ndefineEnvironment(\"aligned\", {\n}, function(context) {\n var res = {\n type: \"array\",\n cols: [],\n };\n res = parseArray(context.parser, res);\n var emptyGroup = new ParseNode(\"ordgroup\", [], context.mode);\n var numCols = 0;\n res.value.body.forEach(function(row) {\n var i;\n for (i = 1; i < row.length; i += 2) {\n row[i].value.unshift(emptyGroup);\n }\n if (numCols < row.length) {\n numCols = row.length;\n }\n });\n for (var i = 0; i < numCols; ++i) {\n var align = \"r\";\n var pregap = 0;\n if (i % 2 === 1) {\n align = \"l\";\n } else if (i > 0) {\n pregap = 2; // one \\qquad between columns\n }\n res.value.cols[i] = {\n type: \"align\",\n align: align,\n pregap: pregap,\n postgap: 0,\n };\n }\n return res;\n});\n","// Parser state class\n\n'use strict';\n\nvar Token = require('../token');\nvar isSpace = require('../common/utils').isSpace;\n\n\nfunction StateBlock(src, md, env, tokens) {\n var ch, s, start, pos, len, indent, offset, indent_found;\n\n this.src = src;\n\n // link to parser instance\n this.md = md;\n\n this.env = env;\n\n //\n // Internal state vartiables\n //\n\n this.tokens = tokens;\n\n this.bMarks = []; // line begin offsets for fast jumps\n this.eMarks = []; // line end offsets for fast jumps\n this.tShift = []; // offsets of the first non-space characters (tabs not expanded)\n this.sCount = []; // indents for each line (tabs expanded)\n\n // block parser variables\n this.blkIndent = 0; // required block content indent\n // (for example, if we are in list)\n this.line = 0; // line index in src\n this.lineMax = 0; // lines count\n this.tight = false; // loose/tight mode for lists\n this.parentType = 'root'; // if `list`, block parser stops on two newlines\n this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any)\n\n this.level = 0;\n\n // renderer\n this.result = '';\n\n // Create caches\n // Generate markers.\n s = this.src;\n indent_found = false;\n\n for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {\n ch = s.charCodeAt(pos);\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++;\n\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n continue;\n } else {\n indent_found = true;\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) { pos++; }\n this.bMarks.push(start);\n this.eMarks.push(pos);\n this.tShift.push(indent);\n this.sCount.push(offset);\n\n indent_found = false;\n indent = 0;\n offset = 0;\n start = pos + 1;\n }\n }\n\n // Push fake entry to simplify cache bounds checks\n this.bMarks.push(s.length);\n this.eMarks.push(s.length);\n this.tShift.push(0);\n this.sCount.push(0);\n\n this.lineMax = this.bMarks.length - 1; // don't count last fake line\n}\n\n// Push new token to \"stream\".\n//\nStateBlock.prototype.push = function (type, tag, nesting) {\n var token = new Token(type, tag, nesting);\n token.block = true;\n\n if (nesting < 0) { this.level--; }\n token.level = this.level;\n if (nesting > 0) { this.level++; }\n\n this.tokens.push(token);\n return token;\n};\n\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n for (var max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break;\n }\n }\n return from;\n};\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n var ch;\n\n for (var max = this.src.length; pos < max; pos++) {\n ch = this.src.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n }\n return pos;\n};\n\n// Skip spaces from given position in reverse.\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n if (pos <= min) { return pos; }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1; }\n }\n return pos;\n};\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars(pos, code) {\n for (var max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) { break; }\n }\n return pos;\n};\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n if (pos <= min) { return pos; }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) { return pos + 1; }\n }\n return pos;\n};\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n var i, lineIndent, ch, first, last, queue, lineStart,\n line = begin;\n\n if (begin >= end) {\n return '';\n }\n\n queue = new Array(end - begin);\n\n for (i = 0; line < end; line++, i++) {\n lineIndent = 0;\n lineStart = first = this.bMarks[line];\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1;\n } else {\n last = this.eMarks[line];\n }\n\n while (first < last && lineIndent < indent) {\n ch = this.src.charCodeAt(first);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - lineIndent % 4;\n } else {\n lineIndent++;\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++;\n } else {\n break;\n }\n\n first++;\n }\n\n queue[i] = this.src.slice(first, last);\n }\n\n return queue.join('');\n};\n\n// re-export Token class to use in block rules\nStateBlock.prototype.Token = Token;\n\n\nmodule.exports = StateBlock;\n","// For each opening emphasis-like marker find a matching closing one\n//\n'use strict';\n\n\nmodule.exports = function link_pairs(state) {\n var i, j, lastDelim, currDelim,\n delimiters = state.delimiters,\n max = state.delimiters.length;\n\n for (i = 0; i < max; i++) {\n lastDelim = delimiters[i];\n\n if (!lastDelim.close) { continue; }\n\n j = i - lastDelim.jump - 1;\n\n while (j >= 0) {\n currDelim = delimiters[j];\n\n if (currDelim.open &&\n currDelim.marker === lastDelim.marker &&\n currDelim.end < 0 &&\n currDelim.level === lastDelim.level) {\n\n lastDelim.jump = i - j;\n lastDelim.open = false;\n currDelim.end = i;\n currDelim.jump = 0;\n break;\n }\n\n j -= currDelim.jump + 1;\n }\n }\n};\n","module.exports = function () { /* empty */ };\n","// markdown-it default options\n\n'use strict';\n\n\nmodule.exports = {\n options: {\n html: false, // Enable HTML tags in source\n xhtmlOut: false, // Use '/' to close single tags (
)\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with = 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += '\\ufffd';\n }\n\n return result;\n });\n}\n\n\ndecode.defaultChars = ';/?:@&=+$,#';\ndecode.componentChars = '';\n\n\nmodule.exports = decode;\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","module.exports = require('./_hide');\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABTFJREFUeF7tml2IHEUQgKtmnw5RERTMhYCRqBgFXzwUYsIJJsL5L/7EnwPRnerJYhSMMaCgmxcjGv+isNfV5+WEKHiLCBH/4kMU/6Io6EPEKKhojEGjF30Rjr0uGcmGvrnZ2dl1d+92dvvtdqtrq76u6qruPoQeH9jj/kMfQD8CepxAPwV6PAA6vwkGQXCltZZE5FxEXIGI26y1U8aYLxdiMTqaAkRUBIBHYhw9CgBbmfmZTkPoGAAiIgDQdRwsM/NNnYTQSQD7AOCiFM51FEJHACilbhGRl13nEXFIRG4EgAdioITpEKZL20dHABDROwCwruoNIr6ktb49/DsIglXW2g8jnh4CgAuZ+dd2E2g7AKXUiIi8EVn9dVrrd6ufKaVWish+V0ZENhhjxroeABFNAUAY6tXxFjOPRB1TSu0UkTucz3cx82hXA/B9fwgRP4us/nqt9StRx6IlUkTeM8Zc2u0AxhHxLseJz5l5KM6pzAEgoiUA8DMA5JzNb4PWOjavMwdAKfWkiNznrPbh6enpM8vl8j+9EgF/AsApVWdF5EFjzLZaOZ2pCPB9fwsiPuY6W6lUlk5MTIT1PXZkCgAR/QAAZzie7mDme5N29MwACILgNmvtrkhTc74xZk6jk6YMIuL7DZTBQ57n7bfWHmDmI2nntbwTJKLwXH+BY8CrzHxDPYMSjsr1ps77XkQ2G2O2p5nYUgBBEAxba/e6P2ytXTM+Pv5BPWNaCeDYb00ws9uDxJrQUgDRQw8AfMrMF9dzvvo9EUla2ZRyW5j58STZlgFQSp0lIt9Gcv9mY0x4Fkg1CoXCikql8t8psYlxDgCsj8w7ksvlLimVSgdq6UsNgIiuBYCV4aWGiJwUpxARh53PDzLzsiYcaXrKse4zWmofZeaHmgZQKBROn52dnRKR1Y1YJiKbjDFPNTKnFbJKqY0issPRNc7MflMAahBNZSczp46uVApTCsXcP+xm5muaAuD7/t5IWKc0A2ChAPi+fz8iPlE1FBHf1Fpf0TCAmLL0FyJ+ZK0ti8iPUYWe580pfwsFgIheAIA7HfueZmb3UDbH9JphSkS7AeAqRzrxojJawhYKgO/7nyCiW3oVM3MzEfALAAw6oXSe1vrrWooWCwAiCh9ZTq7aKSLDxpiaLXVSBMxpSuqt6GIAUCgUllUqlZ/cRZqZmVkyOTl5uJkI6DoA+Xx+red5exxnjzLz8TuJ2N6lVSG9GCKAiO4BgGcdn+q24plKAd/3S4gYOABeZGb3qn3eemcKABGFm90aZwNMvIYL5bIG4DcAOM0BcL0x5rWk7i0zAOIqACImlu5MRUBMBYDBwcFcsVi0PREBRHQ3ADznOPsdM59d7/CSmRQgotD5EEJ1vM7MV/cSgPC5/TKndd+utd7cSwAOAsBSB0Beax2eDBNHJlIgrgIAwGpmjv7nSTYbobgKEPYDaR5IMhEBMRXgD2Y+tV74Z6YPiKkAHzPzqv8L4G8AONHZVBbthYhSao+IrHUcTvUqlBgBMReiRWbe2qrjc5rVSSPj+/7liPh2RHYjMz+fZn7SHhA+Lm5ylDR0KWqtbfs/OOVyuVtF5DoAmJPvnuctHxsbm3dxGwekJoDR0dETBgYGvgCA8Mmpm0aq1+jjqZ3kWT6fX+553vfd4j0i7vM8b6RUKk2ntbnu602zT2NpDWihXBkAHmbmbxrRWRdAVVmax9FGfrgVsoj4OyKGj6Ffaa13NqMzNYBmlHfDnD6AblildtrYj4B20u0G3f0I6IZVaqeN/wJOeLhfF1FvlAAAAABJRU5ErkJggg==\"","// ~~strike through~~\n//\n'use strict';\n\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nmodule.exports.tokenize = function strikethrough(state, silent) {\n var i, scanned, token, len, ch,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) { return false; }\n\n if (marker !== 0x7E/* ~ */) { return false; }\n\n scanned = state.scanDelims(state.pos, true);\n len = scanned.length;\n ch = String.fromCharCode(marker);\n\n if (len < 2) { return false; }\n\n if (len % 2) {\n token = state.push('text', '', 0);\n token.content = ch;\n len--;\n }\n\n for (i = 0; i < len; i += 2) {\n token = state.push('text', '', 0);\n token.content = ch + ch;\n\n state.delimiters.push({\n marker: marker,\n jump: i,\n token: state.tokens.length - 1,\n level: state.level,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n\n return true;\n};\n\n\n// Walk through delimiter list and replace text tokens with tags\n//\nmodule.exports.postProcess = function strikethrough(state) {\n var i, j,\n startDelim,\n endDelim,\n token,\n loneMarkers = [],\n delimiters = state.delimiters,\n max = state.delimiters.length;\n\n for (i = 0; i < max; i++) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x7E/* ~ */) {\n continue;\n }\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n\n token = state.tokens[startDelim.token];\n token.type = 's_open';\n token.tag = 's';\n token.nesting = 1;\n token.markup = '~~';\n token.content = '';\n\n token = state.tokens[endDelim.token];\n token.type = 's_close';\n token.tag = 's';\n token.nesting = -1;\n token.markup = '~~';\n token.content = '';\n\n if (state.tokens[endDelim.token - 1].type === 'text' &&\n state.tokens[endDelim.token - 1].content === '~') {\n\n loneMarkers.push(endDelim.token - 1);\n }\n }\n\n // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n while (loneMarkers.length) {\n i = loneMarkers.pop();\n j = i + 1;\n\n while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n j++;\n }\n\n j--;\n\n if (i !== j) {\n token = state.tokens[j];\n state.tokens[j] = state.tokens[i];\n state.tokens[i] = token;\n }\n }\n};\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DropDownRefresh.vue?vue&type=style&index=0&id=7b940856&prod&scoped=true&lang=css\"","// Process ![image]( \"title\")\n\n'use strict';\n\nvar parseLinkLabel = require('../helpers/parse_link_label');\nvar parseLinkDestination = require('../helpers/parse_link_destination');\nvar parseLinkTitle = require('../helpers/parse_link_title');\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function image(state, silent) {\n var attrs,\n code,\n content,\n label,\n labelEnd,\n labelStart,\n pos,\n ref,\n res,\n title,\n token,\n tokens,\n start,\n href = '',\n oldPos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false; }\n if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false; }\n\n labelStart = state.pos + 2;\n labelEnd = parseLinkLabel(state, state.pos + 1, false);\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false; }\n\n pos = labelEnd + 1;\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n if (pos >= max) { return false; }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos;\n res = parseLinkDestination(state.src, pos, state.posMax);\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = parseLinkTitle(state.src, pos, state.posMax);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n state.pos = oldPos;\n return false;\n }\n pos++;\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false; }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1;\n pos = parseLinkLabel(state, pos);\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd); }\n\n ref = state.env.references[normalizeReference(label)];\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n href = ref.href;\n title = ref.title;\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd);\n\n state.md.inline.parse(\n content,\n state.md,\n state.env,\n tokens = []\n );\n\n token = state.push('image', 'img', 0);\n token.attrs = attrs = [ [ 'src', href ], [ 'alt', '' ] ];\n token.children = tokens;\n token.content = content;\n\n if (title) {\n attrs.push([ 'title', title ]);\n }\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};\n","var MPEGMode = require('./MPEGMode.js');\n\nfunction LameGlobalFlags() {\n\n this.class_id = 0;\n\n /* input description */\n\n /**\n * number of samples. default=-1\n */\n this.num_samples = 0;\n /**\n * input number of channels. default=2\n */\n this.num_channels = 0;\n /**\n * input_samp_rate in Hz. default=44.1 kHz\n */\n this.in_samplerate = 0;\n /**\n * output_samp_rate. default: LAME picks best value at least not used for\n * MP3 decoding: Remember 44.1 kHz MP3s and AC97\n */\n this.out_samplerate = 0;\n /**\n * scale input by this amount before encoding at least not used for MP3\n * decoding\n */\n this.scale = 0.;\n /**\n * scale input of channel 0 (left) by this amount before encoding\n */\n this.scale_left = 0.;\n /**\n * scale input of channel 1 (right) by this amount before encoding\n */\n this.scale_right = 0.;\n\n /* general control params */\n /**\n * collect data for a MP3 frame analyzer?\n */\n this.analysis = false;\n /**\n * add Xing VBR tag?\n */\n this.bWriteVbrTag = false;\n\n /**\n * use lame/mpglib to convert mp3 to wav\n */\n this.decode_only = false;\n /**\n * quality setting 0=best, 9=worst default=5\n */\n this.quality = 0;\n /**\n * see enum default = LAME picks best value\n */\n this.mode = MPEGMode.STEREO;\n /**\n * force M/S mode. requires mode=1\n */\n this.force_ms = false;\n /**\n * use free format? default=0\n */\n this.free_format = false;\n /**\n * find the RG value? default=0\n */\n this.findReplayGain = false;\n /**\n * decode on the fly? default=0\n */\n this.decode_on_the_fly = false;\n /**\n * 1 (default) writes ID3 tags, 0 not\n */\n this.write_id3tag_automatic = false;\n\n /*\n * set either brate>0 or compression_ratio>0, LAME will compute the value of\n * the variable not set. Default is compression_ratio = 11.025\n */\n /**\n * bitrate\n */\n this.brate = 0;\n /**\n * sizeof(wav file)/sizeof(mp3 file)\n */\n this.compression_ratio = 0.;\n\n /* frame params */\n /**\n * mark as copyright. default=0\n */\n this.copyright = 0;\n /**\n * mark as original. default=1\n */\n this.original = 0;\n /**\n * the MP3 'private extension' bit. Meaningless\n */\n this.extension = 0;\n /**\n * Input PCM is emphased PCM (for instance from one of the rarely emphased\n * CDs), it is STRONGLY not recommended to use this, because psycho does not\n * take it into account, and last but not least many decoders don't care\n * about these bits\n */\n this.emphasis = 0;\n /**\n * use 2 bytes per frame for a CRC checksum. default=0\n */\n this.error_protection = 0;\n /**\n * enforce ISO spec as much as possible\n */\n this.strict_ISO = false;\n\n /**\n * use bit reservoir?\n */\n this.disable_reservoir = false;\n\n /* quantization/noise shaping */\n this.quant_comp = 0;\n this.quant_comp_short = 0;\n this.experimentalY = false;\n this.experimentalZ = 0;\n this.exp_nspsytune = 0;\n\n this.preset = 0;\n\n /* VBR control */\n this.VBR = null;\n /**\n * Range [0,...,1[\n */\n this.VBR_q_frac = 0.;\n /**\n * Range [0,...,9]\n */\n this.VBR_q = 0;\n this.VBR_mean_bitrate_kbps = 0;\n this.VBR_min_bitrate_kbps = 0;\n this.VBR_max_bitrate_kbps = 0;\n /**\n * strictly enforce VBR_min_bitrate normaly, it will be violated for analog\n * silence\n */\n this.VBR_hard_min = 0;\n\n /* resampling and filtering */\n\n /**\n * freq in Hz. 0=lame choses. -1=no filter\n */\n this.lowpassfreq = 0;\n /**\n * freq in Hz. 0=lame choses. -1=no filter\n */\n this.highpassfreq = 0;\n /**\n * freq width of filter, in Hz (default=15%)\n */\n this.lowpasswidth = 0;\n /**\n * freq width of filter, in Hz (default=15%)\n */\n this.highpasswidth = 0;\n\n /*\n * psycho acoustics and other arguments which you should not change unless\n * you know what you are doing\n */\n\n this.maskingadjust = 0.;\n this.maskingadjust_short = 0.;\n /**\n * only use ATH\n */\n this.ATHonly = false;\n /**\n * only use ATH for short blocks\n */\n this.ATHshort = false;\n /**\n * disable ATH\n */\n this.noATH = false;\n /**\n * select ATH formula\n */\n this.ATHtype = 0;\n /**\n * change ATH formula 4 shape\n */\n this.ATHcurve = 0.;\n /**\n * lower ATH by this many db\n */\n this.ATHlower = 0.;\n /**\n * select ATH auto-adjust scheme\n */\n this.athaa_type = 0;\n /**\n * select ATH auto-adjust loudness calc\n */\n this.athaa_loudapprox = 0;\n /**\n * dB, tune active region of auto-level\n */\n this.athaa_sensitivity = 0.;\n this.short_blocks = null;\n /**\n * use temporal masking effect\n */\n this.useTemporal = false;\n this.interChRatio = 0.;\n /**\n * Naoki's adjustment of Mid/Side maskings\n */\n this.msfix = 0.;\n\n /**\n * 0 off, 1 on\n */\n this.tune = false;\n /**\n * used to pass values for debugging and stuff\n */\n this.tune_value_a = 0.;\n\n /************************************************************************/\n /* internal variables, do not set... */\n /* provided because they may be of use to calling application */\n /************************************************************************/\n\n /**\n * 0=MPEG-2/2.5 1=MPEG-1\n */\n this.version = 0;\n this.encoder_delay = 0;\n /**\n * number of samples of padding appended to input\n */\n this.encoder_padding = 0;\n this.framesize = 0;\n /**\n * number of frames encoded\n */\n this.frameNum = 0;\n /**\n * is this struct owned by calling program or lame?\n */\n this.lame_allocated_gfp = 0;\n /**************************************************************************/\n /* more internal variables are stored in this structure: */\n /**************************************************************************/\n this.internal_flags = null;\n}\n\nmodule.exports = LameGlobalFlags;\n","var Encoder = require('./Encoder.js');\n\nvar L3Side = {};\n\n\n\t/**\n\t * max scalefactor band, max(SBMAX_l, SBMAX_s*3, (SBMAX_s-3)*3+8)\n\t */\nL3Side.SFBMAX = (Encoder.SBMAX_s * 3);\n\nmodule.exports = L3Side;\n","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n'use strict';\n\n\nvar arrayReplaceAt = require('../common/utils').arrayReplaceAt;\n\n\nfunction isLinkOpen(str) {\n return /^\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n}\n\n\nmodule.exports = function linkify(state) {\n var i, j, l, tokens, token, currentToken, nodes, ln, text, pos, lastPos,\n level, htmlLinkLevel, url, fullUrl, urlText,\n blockTokens = state.tokens,\n links;\n\n if (!state.md.options.linkify) { return; }\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' ||\n !state.md.linkify.pretest(blockTokens[j].content)) {\n continue;\n }\n\n tokens = blockTokens[j].children;\n\n htmlLinkLevel = 0;\n\n // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n for (i = tokens.length - 1; i >= 0; i--) {\n currentToken = tokens[i];\n\n // Skip content of markdown links\n if (currentToken.type === 'link_close') {\n i--;\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--;\n }\n continue;\n }\n\n // Skip content of html tag links\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--;\n }\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++;\n }\n }\n if (htmlLinkLevel > 0) { continue; }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n\n text = currentToken.content;\n links = state.md.linkify.match(text);\n\n // Now split string to nodes\n nodes = [];\n level = currentToken.level;\n lastPos = 0;\n\n for (ln = 0; ln < links.length; ln++) {\n\n url = links[ln].url;\n fullUrl = state.md.normalizeLink(url);\n if (!state.md.validateLink(fullUrl)) { continue; }\n\n urlText = links[ln].text;\n\n // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '');\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '');\n } else {\n urlText = state.md.normalizeLinkText(urlText);\n }\n\n pos = links[ln].index;\n\n if (pos > lastPos) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos, pos);\n token.level = level;\n nodes.push(token);\n }\n\n token = new state.Token('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.level = level++;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n\n token = new state.Token('text', '', 0);\n token.content = urlText;\n token.level = level;\n nodes.push(token);\n\n token = new state.Token('link_close', 'a', -1);\n token.level = --level;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n\n lastPos = links[ln].lastIndex;\n }\n if (lastPos < text.length) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos);\n token.level = level;\n nodes.push(token);\n }\n\n // replace current node\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n }\n }\n }\n};\n","// Code block (4 spaces padded)\n\n'use strict';\n\n\nmodule.exports = function code(state, startLine, endLine/*, silent*/) {\n var nextLine, last, token, emptyLines = 0;\n\n if (state.sCount[startLine] - state.blkIndent < 4) { return false; }\n\n last = nextLine = startLine + 1;\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n emptyLines++;\n\n // workaround for lists: 2 blank lines should terminate indented\n // code block, but not fenced code block\n if (emptyLines >= 2 && state.parentType === 'list') {\n break;\n }\n\n nextLine++;\n continue;\n }\n\n emptyLines = 0;\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++;\n last = nextLine;\n continue;\n }\n break;\n }\n\n state.line = last;\n\n token = state.push('code_block', 'code', 0);\n token.content = state.getLines(startLine, last, 4 + state.blkIndent, true);\n token.map = [ startLine, state.line ];\n\n return true;\n};\n","/**\n * vue-markdown v2.2.4\n * https://github.com/miaolz123/vue-markdown\n * MIT License\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"babel-runtime/core-js/get-iterator\"), require(\"babel-runtime/core-js/object/keys\"), require(\"markdown-it\"), require(\"markdown-it-emoji\"), require(\"markdown-it-sub\"), require(\"markdown-it-sup\"), require(\"markdown-it-footnote\"), require(\"markdown-it-deflist\"), require(\"markdown-it-abbr\"), require(\"markdown-it-ins\"), require(\"markdown-it-mark\"), require(\"markdown-it-toc-and-anchor\"), require(\"markdown-it-katex\"), require(\"markdown-it-task-lists\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"babel-runtime/core-js/get-iterator\", \"babel-runtime/core-js/object/keys\", \"markdown-it\", \"markdown-it-emoji\", \"markdown-it-sub\", \"markdown-it-sup\", \"markdown-it-footnote\", \"markdown-it-deflist\", \"markdown-it-abbr\", \"markdown-it-ins\", \"markdown-it-mark\", \"markdown-it-toc-and-anchor\", \"markdown-it-katex\", \"markdown-it-task-lists\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueMarkdown\"] = factory(require(\"babel-runtime/core-js/get-iterator\"), require(\"babel-runtime/core-js/object/keys\"), require(\"markdown-it\"), require(\"markdown-it-emoji\"), require(\"markdown-it-sub\"), require(\"markdown-it-sup\"), require(\"markdown-it-footnote\"), require(\"markdown-it-deflist\"), require(\"markdown-it-abbr\"), require(\"markdown-it-ins\"), require(\"markdown-it-mark\"), require(\"markdown-it-toc-and-anchor\"), require(\"markdown-it-katex\"), require(\"markdown-it-task-lists\"));\n\telse\n\t\troot[\"VueMarkdown\"] = factory(root[\"babel-runtime/core-js/get-iterator\"], root[\"babel-runtime/core-js/object/keys\"], root[\"markdown-it\"], root[\"markdown-it-emoji\"], root[\"markdown-it-sub\"], root[\"markdown-it-sup\"], root[\"markdown-it-footnote\"], root[\"markdown-it-deflist\"], root[\"markdown-it-abbr\"], root[\"markdown-it-ins\"], root[\"markdown-it-mark\"], root[\"markdown-it-toc-and-anchor\"], root[\"markdown-it-katex\"], root[\"markdown-it-task-lists\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_5__, __WEBPACK_EXTERNAL_MODULE_6__, __WEBPACK_EXTERNAL_MODULE_7__, __WEBPACK_EXTERNAL_MODULE_8__, __WEBPACK_EXTERNAL_MODULE_9__, __WEBPACK_EXTERNAL_MODULE_10__, __WEBPACK_EXTERNAL_MODULE_11__, __WEBPACK_EXTERNAL_MODULE_12__, __WEBPACK_EXTERNAL_MODULE_13__, __WEBPACK_EXTERNAL_MODULE_14__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _getIterator2 = __webpack_require__(1);\n\n\tvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\n\tvar _keys = __webpack_require__(2);\n\n\tvar _keys2 = _interopRequireDefault(_keys);\n\n\tvar _markdownIt = __webpack_require__(3);\n\n\tvar _markdownIt2 = _interopRequireDefault(_markdownIt);\n\n\tvar _markdownItEmoji = __webpack_require__(4);\n\n\tvar _markdownItEmoji2 = _interopRequireDefault(_markdownItEmoji);\n\n\tvar _markdownItSub = __webpack_require__(5);\n\n\tvar _markdownItSub2 = _interopRequireDefault(_markdownItSub);\n\n\tvar _markdownItSup = __webpack_require__(6);\n\n\tvar _markdownItSup2 = _interopRequireDefault(_markdownItSup);\n\n\tvar _markdownItFootnote = __webpack_require__(7);\n\n\tvar _markdownItFootnote2 = _interopRequireDefault(_markdownItFootnote);\n\n\tvar _markdownItDeflist = __webpack_require__(8);\n\n\tvar _markdownItDeflist2 = _interopRequireDefault(_markdownItDeflist);\n\n\tvar _markdownItAbbr = __webpack_require__(9);\n\n\tvar _markdownItAbbr2 = _interopRequireDefault(_markdownItAbbr);\n\n\tvar _markdownItIns = __webpack_require__(10);\n\n\tvar _markdownItIns2 = _interopRequireDefault(_markdownItIns);\n\n\tvar _markdownItMark = __webpack_require__(11);\n\n\tvar _markdownItMark2 = _interopRequireDefault(_markdownItMark);\n\n\tvar _markdownItTocAndAnchor = __webpack_require__(12);\n\n\tvar _markdownItTocAndAnchor2 = _interopRequireDefault(_markdownItTocAndAnchor);\n\n\tvar _markdownItKatex = __webpack_require__(13);\n\n\tvar _markdownItKatex2 = _interopRequireDefault(_markdownItKatex);\n\n\tvar _markdownItTaskLists = __webpack_require__(14);\n\n\tvar _markdownItTaskLists2 = _interopRequireDefault(_markdownItTaskLists);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.default = {\n\t md: new _markdownIt2.default(),\n\n\t template: '
',\n\n\t data: function data() {\n\t return {\n\t sourceData: this.source\n\t };\n\t },\n\n\n\t props: {\n\t watches: {\n\t type: Array,\n\t default: function _default() {\n\t return ['source', 'show', 'toc'];\n\t }\n\t },\n\t source: {\n\t type: String,\n\t default: ''\n\t },\n\t show: {\n\t type: Boolean,\n\t default: true\n\t },\n\t highlight: {\n\t type: Boolean,\n\t default: true\n\t },\n\t html: {\n\t type: Boolean,\n\t default: true\n\t },\n\t xhtmlOut: {\n\t type: Boolean,\n\t default: true\n\t },\n\t breaks: {\n\t type: Boolean,\n\t default: true\n\t },\n\t linkify: {\n\t type: Boolean,\n\t default: true\n\t },\n\t emoji: {\n\t type: Boolean,\n\t default: true\n\t },\n\t typographer: {\n\t type: Boolean,\n\t default: true\n\t },\n\t langPrefix: {\n\t type: String,\n\t default: 'language-'\n\t },\n\t quotes: {\n\t type: String,\n\t default: '“”‘’'\n\t },\n\t tableClass: {\n\t type: String,\n\t default: 'table'\n\t },\n\t taskLists: {\n\t type: Boolean,\n\t default: true\n\t },\n\t toc: {\n\t type: Boolean,\n\t default: false\n\t },\n\t tocId: {\n\t type: String\n\t },\n\t tocClass: {\n\t type: String,\n\t default: 'table-of-contents'\n\t },\n\t tocFirstLevel: {\n\t type: Number,\n\t default: 2\n\t },\n\t tocLastLevel: {\n\t type: Number\n\t },\n\t tocAnchorLink: {\n\t type: Boolean,\n\t default: true\n\t },\n\t tocAnchorClass: {\n\t type: String,\n\t default: 'toc-anchor'\n\t },\n\t tocAnchorLinkSymbol: {\n\t type: String,\n\t default: '#'\n\t },\n\t tocAnchorLinkSpace: {\n\t type: Boolean,\n\t default: true\n\t },\n\t tocAnchorLinkClass: {\n\t type: String,\n\t default: 'toc-anchor-link'\n\t },\n\t anchorAttributes: {\n\t type: Object,\n\t default: function _default() {\n\t return {};\n\t }\n\t },\n\t prerender: {\n\t type: Function,\n\t default: function _default(sourceData) {\n\t return sourceData;\n\t }\n\t },\n\t postrender: {\n\t type: Function,\n\t default: function _default(htmlData) {\n\t return htmlData;\n\t }\n\t }\n\t },\n\n\t computed: {\n\t tocLastLevelComputed: function tocLastLevelComputed() {\n\t return this.tocLastLevel > this.tocFirstLevel ? this.tocLastLevel : this.tocFirstLevel + 1;\n\t }\n\t },\n\n\t render: function render(createElement) {\n\t var _this = this;\n\n\t this.md = new _markdownIt2.default().use(_markdownItSub2.default).use(_markdownItSup2.default).use(_markdownItFootnote2.default).use(_markdownItDeflist2.default).use(_markdownItAbbr2.default).use(_markdownItIns2.default).use(_markdownItMark2.default).use(_markdownItKatex2.default, { \"throwOnError\": false, \"errorColor\": \" #cc0000\" }).use(_markdownItTaskLists2.default, { enabled: this.taskLists });\n\n\t if (this.emoji) {\n\t this.md.use(_markdownItEmoji2.default);\n\t }\n\n\t this.md.set({\n\t html: this.html,\n\t xhtmlOut: this.xhtmlOut,\n\t breaks: this.breaks,\n\t linkify: this.linkify,\n\t typographer: this.typographer,\n\t langPrefix: this.langPrefix,\n\t quotes: this.quotes\n\t });\n\t this.md.renderer.rules.table_open = function () {\n\t return '\\n';\n\t };\n\t var defaultLinkRenderer = this.md.renderer.rules.link_open || function (tokens, idx, options, env, self) {\n\t return self.renderToken(tokens, idx, options);\n\t };\n\t this.md.renderer.rules.link_open = function (tokens, idx, options, env, self) {\n\t (0, _keys2.default)(_this.anchorAttributes).map(function (attribute) {\n\t var aIndex = tokens[idx].attrIndex(attribute);\n\t var value = _this.anchorAttributes[attribute];\n\t if (aIndex < 0) {\n\t tokens[idx].attrPush([attribute, value]); // add new attribute\n\t } else {\n\t tokens[idx].attrs[aIndex][1] = value;\n\t }\n\t });\n\t return defaultLinkRenderer(tokens, idx, options, env, self);\n\t };\n\n\t if (this.toc) {\n\t this.md.use(_markdownItTocAndAnchor2.default, {\n\t tocClassName: this.tocClass,\n\t tocFirstLevel: this.tocFirstLevel,\n\t tocLastLevel: this.tocLastLevelComputed,\n\t anchorLink: this.tocAnchorLink,\n\t anchorLinkSymbol: this.tocAnchorLinkSymbol,\n\t anchorLinkSpace: this.tocAnchorLinkSpace,\n\t anchorClassName: this.tocAnchorClass,\n\t anchorLinkSymbolClassName: this.tocAnchorLinkClass,\n\t tocCallback: function tocCallback(tocMarkdown, tocArray, tocHtml) {\n\t if (tocHtml) {\n\t if (_this.tocId && document.getElementById(_this.tocId)) {\n\t document.getElementById(_this.tocId).innerHTML = tocHtml;\n\t }\n\n\t _this.$emit('toc-rendered', tocHtml);\n\t }\n\t }\n\t });\n\t }\n\n\t var outHtml = this.show ? this.md.render(this.prerender(this.sourceData)) : '';\n\t outHtml = this.postrender(outHtml);\n\n\t this.$emit('rendered', outHtml);\n\t return createElement('div', {\n\t domProps: {\n\t innerHTML: outHtml\n\t }\n\t });\n\t },\n\t beforeMount: function beforeMount() {\n\t var _this2 = this;\n\n\t if (this.$slots.default) {\n\t this.sourceData = '';\n\t var _iteratorNormalCompletion = true;\n\t var _didIteratorError = false;\n\t var _iteratorError = undefined;\n\n\t try {\n\t for (var _iterator = (0, _getIterator3.default)(this.$slots.default), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t var slot = _step.value;\n\n\t this.sourceData += slot.text;\n\t }\n\t } catch (err) {\n\t _didIteratorError = true;\n\t _iteratorError = err;\n\t } finally {\n\t try {\n\t if (!_iteratorNormalCompletion && _iterator.return) {\n\t _iterator.return();\n\t }\n\t } finally {\n\t if (_didIteratorError) {\n\t throw _iteratorError;\n\t }\n\t }\n\t }\n\t }\n\n\t this.$watch('source', function () {\n\t _this2.sourceData = _this2.prerender(_this2.source);\n\t _this2.$forceUpdate();\n\t });\n\n\t this.watches.forEach(function (v) {\n\t _this2.$watch(v, function () {\n\t _this2.$forceUpdate();\n\t });\n\t });\n\t }\n\t};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_5__;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_7__;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_8__;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_9__;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_10__;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_11__;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_12__;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_13__;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_14__;\n\n/***/ })\n/******/ ])\n});\n;","module.exports = \"data:image/png;base64,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\"","'use strict';\n\nmodule.exports = function inline(state) {\n var tokens = state.tokens, tok, i, l;\n\n // Parse inlines\n for (i = 0, l = tokens.length; i < l; i++) {\n tok = tokens[i];\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n }\n }\n};\n","module.exports = \"data:image/png;base64,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\"","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var Encoder = require('./Encoder.js');\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nfunction III_psy_xmin() {\n this.l = new_float(Encoder.SBMAX_l);\n this.s = new_float_n([Encoder.SBMAX_s, 3]);\n\n var self = this;\n this.assign = function (iii_psy_xmin) {\n System.arraycopy(iii_psy_xmin.l, 0, self.l, 0, Encoder.SBMAX_l);\n for (var i = 0; i < Encoder.SBMAX_s; i++) {\n for (var j = 0; j < 3; j++) {\n self.s[i][j] = iii_psy_xmin.s[i][j];\n }\n }\n }\n}\n\nmodule.exports = III_psy_xmin;\n","/**\n * This is a module for storing settings passed into KaTeX. It correctly handles\n * default settings.\n */\n\n/**\n * Helper function for getting a default value if the value is undefined\n */\nfunction get(option, defaultValue) {\n return option === undefined ? defaultValue : option;\n}\n\n/**\n * The main Settings object\n *\n * The current options stored are:\n * - displayMode: Whether the expression should be typeset by default in\n * textstyle or displaystyle (default false)\n */\nfunction Settings(options) {\n // allow null options\n options = options || {};\n this.displayMode = get(options.displayMode, false);\n this.throwOnError = get(options.throwOnError, true);\n this.errorColor = get(options.errorColor, \"#cc0000\");\n}\n\nmodule.exports = Settings;\n","function VBRQuantize() {\n var qupvt;\n var tak;\n\n this.setModules = function (_qupvt, _tk) {\n qupvt = _qupvt;\n tak = _tk;\n }\n //TODO\n\n}\n\nmodule.exports = VBRQuantize;\n","/* Process inline math */\n/*\nLike markdown-it-simplemath, this is a stripped down, simplified version of:\nhttps://github.com/runarberg/markdown-it-math\n\nIt differs in that it takes (a subset of) LaTeX as input and relies on KaTeX\nfor rendering output.\n*/\n\n/*jslint node: true */\n'use strict';\n\nvar katex = require('katex');\n\n// Test if potential opening or closing delimieter\n// Assumes that there is a \"$\" at state.src[pos]\nfunction isValidDelim(state, pos) {\n var prevChar, nextChar,\n max = state.posMax,\n can_open = true,\n can_close = true;\n\n prevChar = pos > 0 ? state.src.charCodeAt(pos - 1) : -1;\n nextChar = pos + 1 <= max ? state.src.charCodeAt(pos + 1) : -1;\n\n // Check non-whitespace conditions for opening and closing, and\n // check that closing delimeter isn't followed by a number\n if (prevChar === 0x20/* \" \" */ || prevChar === 0x09/* \\t */ ||\n (nextChar >= 0x30/* \"0\" */ && nextChar <= 0x39/* \"9\" */)) {\n can_close = false;\n }\n if (nextChar === 0x20/* \" \" */ || nextChar === 0x09/* \\t */) {\n can_open = false;\n }\n\n return {\n can_open: can_open,\n can_close: can_close\n };\n}\n\nfunction math_inline(state, silent) {\n var start, match, token, res, pos, esc_count;\n\n if (state.src[state.pos] !== \"$\") { return false; }\n\n res = isValidDelim(state, state.pos);\n if (!res.can_open) {\n if (!silent) { state.pending += \"$\"; }\n state.pos += 1;\n return true;\n }\n\n // First check for and bypass all properly escaped delimieters\n // This loop will assume that the first leading backtick can not\n // be the first character in state.src, which is known since\n // we have found an opening delimieter already.\n start = state.pos + 1;\n match = start;\n while ( (match = state.src.indexOf(\"$\", match)) !== -1) {\n // Found potential $, look for escapes, pos will point to\n // first non escape when complete\n pos = match - 1;\n while (state.src[pos] === \"\\\\\") { pos -= 1; }\n\n // Even number of escapes, potential closing delimiter found\n if ( ((match - pos) % 2) == 1 ) { break; }\n match += 1;\n }\n\n // No closing delimter found. Consume $ and continue.\n if (match === -1) {\n if (!silent) { state.pending += \"$\"; }\n state.pos = start;\n return true;\n }\n\n // Check if we have empty content, ie: $$. Do not parse.\n if (match - start === 0) {\n if (!silent) { state.pending += \"$$\"; }\n state.pos = start + 1;\n return true;\n }\n\n // Check for valid closing delimiter\n res = isValidDelim(state, match);\n if (!res.can_close) {\n if (!silent) { state.pending += \"$\"; }\n state.pos = start;\n return true;\n }\n\n if (!silent) {\n token = state.push('math_inline', 'math', 0);\n token.markup = \"$\";\n token.content = state.src.slice(start, match);\n }\n\n state.pos = match + 1;\n return true;\n}\n\nfunction math_block(state, start, end, silent){\n var firstLine, lastLine, next, lastPos, found = false, token,\n pos = state.bMarks[start] + state.tShift[start],\n max = state.eMarks[start]\n\n if(pos + 2 > max){ return false; }\n if(state.src.slice(pos,pos+2)!=='$$'){ return false; }\n\n pos += 2;\n firstLine = state.src.slice(pos,max);\n\n if(silent){ return true; }\n if(firstLine.trim().slice(-2)==='$$'){\n // Single line expression\n firstLine = firstLine.trim().slice(0, -2);\n found = true;\n }\n\n for(next = start; !found; ){\n\n next++;\n\n if(next >= end){ break; }\n\n pos = state.bMarks[next]+state.tShift[next];\n max = state.eMarks[next];\n\n if(pos < max && state.tShift[next] < state.blkIndent){\n // non-empty line with negative indent should stop the list:\n break;\n }\n\n if(state.src.slice(pos,max).trim().slice(-2)==='$$'){\n lastPos = state.src.slice(0,max).lastIndexOf('$$');\n lastLine = state.src.slice(pos,lastPos);\n found = true;\n }\n\n }\n\n state.line = next + 1;\n\n token = state.push('math_block', 'math', 0);\n token.block = true;\n token.content = (firstLine && firstLine.trim() ? firstLine + '\\n' : '')\n + state.getLines(start + 1, next, state.tShift[start], true)\n + (lastLine && lastLine.trim() ? lastLine : '');\n token.map = [ start, state.line ];\n token.markup = '$$';\n return true;\n}\n\nmodule.exports = function math_plugin(md, options) {\n // Default options\n\n options = options || {};\n\n // set KaTeX as the renderer for markdown-it-simplemath\n var katexInline = function(latex){\n options.displayMode = false;\n try{\n return katex.renderToString(latex, options);\n }\n catch(error){\n if(options.throwOnError){ console.log(error); }\n return latex;\n }\n };\n\n var inlineRenderer = function(tokens, idx){\n return katexInline(tokens[idx].content);\n };\n\n var katexBlock = function(latex){\n options.displayMode = true;\n try{\n return \"

\" + katex.renderToString(latex, options) + \"

\";\n }\n catch(error){\n if(options.throwOnError){ console.log(error); }\n return latex;\n }\n }\n\n var blockRenderer = function(tokens, idx){\n return katexBlock(tokens[idx].content) + '\\n';\n }\n\n md.inline.ruler.after('escape', 'math_inline', math_inline);\n md.block.ruler.after('blockquote', 'math_block', math_block, {\n alt: [ 'paragraph', 'reference', 'blockquote', 'list' ]\n });\n md.renderer.rules.math_inline = inlineRenderer;\n md.renderer.rules.math_block = blockRenderer;\n};\n","module.exports=/[\\0-\\x1F\\x7F-\\x9F]/","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\nvar _rules = [\n [ 'normalize', require('./rules_core/normalize') ],\n [ 'block', require('./rules_core/block') ],\n [ 'inline', require('./rules_core/inline') ],\n [ 'linkify', require('./rules_core/linkify') ],\n [ 'replacements', require('./rules_core/replacements') ],\n [ 'smartquotes', require('./rules_core/smartquotes') ]\n];\n\n\n/**\n * new Core()\n **/\nfunction Core() {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n}\n\n\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\nCore.prototype.process = function (state) {\n var i, l, rules;\n\n rules = this.ruler.getRules('');\n\n for (i = 0, l = rules.length; i < l; i++) {\n rules[i](state);\n }\n};\n\nCore.prototype.State = require('./rules_core/state_core');\n\n\nmodule.exports = Core;\n","// Emoticons -> Emoji mapping.\n//\n// (!) Some patterns skipped, to avoid collisions\n// without increase matcher complicity. Than can change in future.\n//\n// Places to look for more emoticons info:\n//\n// - http://en.wikipedia.org/wiki/List_of_emoticons#Western\n// - https://github.com/wooorm/emoticon/blob/master/Support.md\n// - http://factoryjoe.com/projects/emoticons/\n//\n'use strict';\n\nmodule.exports = {\n angry: [ '>:(', '>:-(' ],\n blush: [ ':\")', ':-\")' ],\n broken_heart: [ ' (https://www.zhuyuntao.cn)\r\n * @license MIT\r\n * \r\n */\r\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.Recorder=e():t.Recorder=e()}(this,function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=1)}([function(t,e,n){\"use strict\";function i(t,e,n){for(var i=0;ie?e:n,u=r,c=new ArrayBuffer(44+t.byteLength),l=new DataView(c),f=o,p=0;i(l,p,\"RIFF\"),p+=4,l.setUint32(p,36+t.byteLength,a),i(l,p+=4,\"WAVE\"),i(l,p+=4,\"fmt \"),p+=4,l.setUint32(p,16,a),p+=4,l.setUint16(p,1,a),p+=2,l.setUint16(p,f,a),p+=2,l.setUint32(p,s,a),p+=4,l.setUint32(p,f*s*(u/8),a),p+=4,l.setUint16(p,f*(u/8),a),p+=2,l.setUint16(p,u,a),i(l,p+=2,\"data\"),p+=4,l.setUint32(p,t.byteLength,a),p+=4;for(var d=0;d44&&s.default.play(t.buffer)},e.prototype.getPlayTime=function(){return s.default.getPlayTime()},e.prototype.pausePlay=function(){!this.isrecording&&this.isplaying&&(this.isplaying=!1,this.onpauseplay&&this.onpauseplay(),s.default.pausePlay())},e.prototype.resumePlay=function(){this.isrecording||this.isplaying||(this.isplaying=!0,this.onresumeplay&&this.onresumeplay(),s.default.resumePlay())},e.prototype.stopPlay=function(){this.isrecording||(this.isplaying=!1,this.onstopplay&&this.onstopplay(),s.default.stopPlay())},e.prototype.destroy=function(){return s.default.destroyPlay(),this.destroyRecord()},e.prototype.getRecordAnalyseData=function(){return this.getAnalyseData()},e.prototype.getPlayAnalyseData=function(){return s.default.getAnalyseData()},e.prototype.getPCM=function(){this.stop();var t=this.getData();return t=a.compress(t,this.inputSampleRate,this.outputSampleRate),a.encodePCM(t,this.oututSampleBits,this.littleEdian)},e.prototype.getPCMBlob=function(){return new Blob([this.getPCM()])},e.prototype.downloadPCM=function(t){void 0===t&&(t=\"recorder\");var e=this.getPCMBlob();r.downloadPCM(e,t)},e.prototype.getWAV=function(){var t=this.getPCM();return a.encodeWAV(t,this.inputSampleRate,this.outputSampleRate,this.config.numChannels,this.oututSampleBits,this.littleEdian)},e.prototype.getWAVBlob=function(){return new Blob([this.getWAV()],{type:\"audio/wav\"})},e.prototype.downloadWAV=function(t){void 0===t&&(t=\"recorder\");var e=this.getWAVBlob();r.downloadWAV(e,t)},e.prototype.download=function(t,e,n){r.download(t,e,n)},e.prototype.getChannelData=function(){var t=this.getPCM(),e=t.byteLength,n=this.littleEdian,i={left:null,right:null};if(2===this.config.numChannels){var o=new DataView(new ArrayBuffer(e/2)),r=new DataView(new ArrayBuffer(e/2));if(16===this.config.sampleBits)for(var a=0;a= 0; j--) {\n if (stack[j].level <= thisLevel) { break; }\n }\n stack.length = j + 1;\n\n if (token.type !== 'text') { continue; }\n\n text = token.content;\n pos = 0;\n max = text.length;\n\n /*eslint no-labels:0,block-scoped-var:0*/\n OUTER:\n while (pos < max) {\n QUOTE_RE.lastIndex = pos;\n t = QUOTE_RE.exec(text);\n if (!t) { break; }\n\n canOpen = canClose = true;\n pos = t.index + 1;\n isSingle = (t[0] === \"'\");\n\n // Find previous character,\n // default to space if it's the beginning of the line\n //\n lastChar = 0x20;\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1);\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type !== 'text') { continue; }\n\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n break;\n }\n }\n\n // Find next character,\n // default to space if it's the end of the line\n //\n nextChar = 0x20;\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos);\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type !== 'text') { continue; }\n\n nextChar = tokens[j].content.charCodeAt(0);\n break;\n }\n }\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n canOpen = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false;\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false;\n }\n }\n\n if (nextChar === 0x22 /* \" */ && t[0] === '\"') {\n if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false;\n }\n }\n\n if (canOpen && canClose) {\n // treat this as the middle of the word\n canOpen = false;\n canClose = isNextPunctChar;\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n continue;\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n item = stack[j];\n if (stack[j].level < thisLevel) { break; }\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j];\n\n if (isSingle) {\n openQuote = state.md.options.quotes[2];\n closeQuote = state.md.options.quotes[3];\n } else {\n openQuote = state.md.options.quotes[0];\n closeQuote = state.md.options.quotes[1];\n }\n\n // replace token.content *before* tokens[item.token].content,\n // because, if they are pointing at the same token, replaceAt\n // could mess up indices when quote length != 1\n token.content = replaceAt(token.content, t.index, closeQuote);\n tokens[item.token].content = replaceAt(\n tokens[item.token].content, item.pos, openQuote);\n\n pos += closeQuote.length - 1;\n if (item.token === i) { pos += openQuote.length - 1; }\n\n text = token.content;\n max = text.length;\n\n stack.length = j;\n continue OUTER;\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n });\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n }\n }\n}\n\n\nmodule.exports = function smartquotes(state) {\n /*eslint max-depth:0*/\n var blkIdx;\n\n if (!state.md.options.typographer) { return; }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n if (state.tokens[blkIdx].type !== 'inline' ||\n !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue;\n }\n\n process_inlines(state.tokens[blkIdx].children, state);\n }\n};\n","'use strict';\n\n// Use direct extract instead of `regenerate` to reduse browserified size\nvar src_Any = exports.src_Any = require('uc.micro/properties/Any/regex').source;\nvar src_Cc = exports.src_Cc = require('uc.micro/categories/Cc/regex').source;\nvar src_Z = exports.src_Z = require('uc.micro/categories/Z/regex').source;\nvar src_P = exports.src_P = require('uc.micro/categories/P/regex').source;\n\n// \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\nvar src_ZPCc = exports.src_ZPCc = [ src_Z, src_P, src_Cc ].join('|');\n\n// \\p{\\Z\\Cc} (white spaces + control)\nvar src_ZCc = exports.src_ZCc = [ src_Z, src_Cc ].join('|');\n\n// All possible word characters (everything without punctuation, spaces & controls)\n// Defined via punctuation & spaces to save space\n// Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\nvar src_pseudo_letter = '(?:(?!>|<|' + src_ZPCc + ')' + src_Any + ')';\n// The same as abothe but without [0-9]\n// var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar src_ip4 = exports.src_ip4 =\n\n '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)';\n\n// Prohibit [@/] in user/pass to avoid wrong domain fetch.\nexports.src_auth = '(?:(?:(?!' + src_ZCc + '|[@/]).)+@)?';\n\nvar src_port = exports.src_port =\n\n '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?';\n\nvar src_host_terminator = exports.src_host_terminator =\n\n '(?=$|>|<|' + src_ZPCc + ')(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|' + src_ZPCc + '))';\n\nvar src_path = exports.src_path =\n\n '(?:' +\n '[/?#]' +\n '(?:' +\n '(?!' + src_ZCc + '|[()[\\\\]{}.,\"\\'?!\\\\-<>]).|' +\n '\\\\[(?:(?!' + src_ZCc + '|\\\\]).)*\\\\]|' +\n '\\\\((?:(?!' + src_ZCc + '|[)]).)*\\\\)|' +\n '\\\\{(?:(?!' + src_ZCc + '|[}]).)*\\\\}|' +\n '\\\\\"(?:(?!' + src_ZCc + '|[\"]).)+\\\\\"|' +\n \"\\\\'(?:(?!\" + src_ZCc + \"|[']).)+\\\\'|\" +\n \"\\\\'(?=\" + src_pseudo_letter + ').|' + // allow `I'm_king` if no pair found\n '\\\\.{2,3}[a-zA-Z0-9%/]|' + // github has ... in commit range links. Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // until more examples found.\n '\\\\.(?!' + src_ZCc + '|[.]).|' +\n '\\\\-(?!--(?:[^-]|$))(?:-*)|' + // `---` => long dash, terminate\n '\\\\,(?!' + src_ZCc + ').|' + // allow `,,,` in paths\n '\\\\!(?!' + src_ZCc + '|[!]).|' +\n '\\\\?(?!' + src_ZCc + '|[?]).' +\n ')+' +\n '|\\\\/' +\n ')?';\n\nvar src_email_name = exports.src_email_name =\n\n '[\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]+';\n\nvar src_xn = exports.src_xn =\n\n 'xn--[a-z0-9\\\\-]{1,59}';\n\n// More to read about domain names\n// http://serverfault.com/questions/638260/\n\nvar src_domain_root = exports.src_domain_root =\n\n // Allow letters & digits (http://test1)\n '(?:' +\n src_xn +\n '|' +\n src_pseudo_letter + '{1,63}' +\n ')';\n\nvar src_domain = exports.src_domain =\n\n '(?:' +\n src_xn +\n '|' +\n '(?:' + src_pseudo_letter + ')' +\n '|' +\n // don't allow `--` in domain names, because:\n // - that can conflict with markdown — / –\n // - nobody use those anyway\n '(?:' + src_pseudo_letter + '(?:-(?!-)|' + src_pseudo_letter + '){0,61}' + src_pseudo_letter + ')' +\n ')';\n\nvar src_host = exports.src_host =\n\n '(?:' +\n // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n '(?:(?:(?:' + src_domain + ')\\\\.)*' + src_domain_root + ')' +\n ')';\n\nvar tpl_host_fuzzy = exports.tpl_host_fuzzy =\n\n '(?:' +\n src_ip4 +\n '|' +\n '(?:(?:(?:' + src_domain + ')\\\\.)+(?:%TLDS%))' +\n ')';\n\nvar tpl_host_no_ip_fuzzy = exports.tpl_host_no_ip_fuzzy =\n\n '(?:(?:(?:' + src_domain + ')\\\\.)+(?:%TLDS%))';\n\nexports.src_host_strict =\n\n src_host + src_host_terminator;\n\nvar tpl_host_fuzzy_strict = exports.tpl_host_fuzzy_strict =\n\n tpl_host_fuzzy + src_host_terminator;\n\nexports.src_host_port_strict =\n\n src_host + src_port + src_host_terminator;\n\nvar tpl_host_port_fuzzy_strict = exports.tpl_host_port_fuzzy_strict =\n\n tpl_host_fuzzy + src_port + src_host_terminator;\n\nvar tpl_host_port_no_ip_fuzzy_strict = exports.tpl_host_port_no_ip_fuzzy_strict =\n\n tpl_host_no_ip_fuzzy + src_port + src_host_terminator;\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Main rules\n\n// Rude test fuzzy links by host, for quick deny\nexports.tpl_host_fuzzy_test =\n\n 'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + src_ZPCc + '|>|$))';\n\nexports.tpl_email_fuzzy =\n\n '(^|<|>|\\\\(|' + src_ZCc + ')(' + src_email_name + '@' + tpl_host_fuzzy_strict + ')';\n\nexports.tpl_link_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|]|' + src_ZPCc + '))' +\n '((?![$+<=>^`|])' + tpl_host_port_fuzzy_strict + src_path + ')';\n\nexports.tpl_link_no_ip_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|]|' + src_ZPCc + '))' +\n '((?![$+<=>^`|])' + tpl_host_port_no_ip_fuzzy_strict + src_path + ')';\n","/**\n * This file contains a list of utility functions which are useful in other\n * files.\n */\n\n/**\n * Provide an `indexOf` function which works in IE8, but defers to native if\n * possible.\n */\nvar nativeIndexOf = Array.prototype.indexOf;\nvar indexOf = function(list, elem) {\n if (list == null) {\n return -1;\n }\n if (nativeIndexOf && list.indexOf === nativeIndexOf) {\n return list.indexOf(elem);\n }\n var i = 0;\n var l = list.length;\n for (; i < l; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * Return whether an element is contained in a list\n */\nvar contains = function(list, elem) {\n return indexOf(list, elem) !== -1;\n};\n\n/**\n * Provide a default value if a setting is undefined\n */\nvar deflt = function(setting, defaultIfUndefined) {\n return setting === undefined ? defaultIfUndefined : setting;\n};\n\n// hyphenate and escape adapted from Facebook's React under Apache 2 license\n\nvar uppercase = /([A-Z])/g;\nvar hyphenate = function(str) {\n return str.replace(uppercase, \"-$1\").toLowerCase();\n};\n\nvar ESCAPE_LOOKUP = {\n \"&\": \"&\",\n \">\": \">\",\n \"<\": \"<\",\n \"\\\"\": \""\",\n \"'\": \"'\",\n};\n\nvar ESCAPE_REGEX = /[&><\"']/g;\n\nfunction escaper(match) {\n return ESCAPE_LOOKUP[match];\n}\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escape(text) {\n return (\"\" + text).replace(ESCAPE_REGEX, escaper);\n}\n\n/**\n * A function to set the text content of a DOM element in all supported\n * browsers. Note that we don't define this if there is no document.\n */\nvar setTextContent;\nif (typeof document !== \"undefined\") {\n var testNode = document.createElement(\"span\");\n if (\"textContent\" in testNode) {\n setTextContent = function(node, text) {\n node.textContent = text;\n };\n } else {\n setTextContent = function(node, text) {\n node.innerText = text;\n };\n }\n}\n\n/**\n * A function to clear a node.\n */\nfunction clearNode(node) {\n setTextContent(node, \"\");\n}\n\nmodule.exports = {\n contains: contains,\n deflt: deflt,\n escape: escape,\n hyphenate: hyphenate,\n indexOf: indexOf,\n setTextContent: setTextContent,\n clearNode: clearNode,\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"refresh-moudle\",style:({transform: 'translate3d(0,' + _vm.top + 'px, 0)'}),on:{\"touchstart\":function($event){return _vm.touchStart($event)},\"touchmove\":function($event){return _vm.touchMove($event)},\"touchend\":function($event){return _vm.touchEnd($event)}}},[_c('div',{staticClass:\"pull-refresh\"},[_vm._t(\"pull-refresh\",function(){return [(_vm.dropDownState==1)?_c('div',{staticClass:\"down-tip\"},[(_vm.ispc)?_c('span',{staticClass:\"down-text\",on:{\"click\":_vm.refresh}},[_vm._v(_vm._s(_vm.title))]):_c('span',{staticClass:\"down-text\"},[_vm._v(_vm._s(_vm.title))])]):_vm._e(),(_vm.dropDownState==2)?_c('div',{staticClass:\"up-tip\"},[_c('span',{staticClass:\"up-text\"},[_vm._v(_vm._s(_vm.dropDownInfo.upText))])]):_vm._e(),(_vm.dropDownState==3)?_c('div',{staticClass:\"refresh-tip\"},[_c('span',{staticClass:\"refresh-text\"},[_vm._v(_vm._s(_vm.dropDownInfo.refreshText))])]):_vm._e()]}),_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\t\nexport default {\n props: {\n onRefresh: {\n type: Function,\n required: false\n },\r\n\ttitle:{\r\n\t\ttype:String\r\n\t},\r\n\tispc:{\r\n\t\ttype:Boolean\r\n\t},\r\n\tisrefresh:{\r\n\t\ttype:Boolean\r\n\t}\n },\n data () {\n return {\n defaultOffset: 50, // 默认高度, 相应的修改.releshMoudle的margin-top和.down-tip, .up-tip, .refresh-tip的height\n top: 0,\n scrollIsToTop: 0,\n startY: 0,\n isDropDown: false, // 是否下拉\n isRefreshing: false, // 是否正在刷新\n dropDownState: 1, // 显示1:下拉可以刷新, 2:松开立即刷新, 3:正在刷新数据中...\n dropDownInfo: {\n downText: '下拉可以刷新',\n downImg: 'arrow.png',\n upText: '松开立即刷新',\n upImg: 'arrow.png',\n refreshText: '正在刷新数据...',\n refreshImg: 'loading.png'\n }\n }\n },\n created () {\n if (document.querySelector('.refresh-moudle')) {\n // 获取不同手机的物理像素(dpr),以便适配rem\n this.defaultOffset = document.querySelector('.refresh-moudle').clientHeight || this.defaultOffset\n }\n },\n methods: {\n /**\n * 触摸开始,手指点击屏幕时\n * @param {object} e Touch 对象包含的属性\n */\n touchStart (e) {\t\n this.startY = e.targetTouches[0].pageY;\r\n\t //console.log(this.startY)\n },\n\n /**\n * 接触点改变,滑动时\n * @param {object} e Touch 对象包含的属性\n */\n touchMove (e) {\t\t\r\n\t\tif(this.isrefresh){\r\n\t\t\tthis.scrollIsToTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop // safari 获取scrollTop用window.pageYOffset\r\n\t\t\tif (e.targetTouches[0].pageY > this.startY) {\r\n\t\t\t // 下拉\r\n\t\t\t this.isDropDown = true\r\n\t\t\t if (this.scrollIsToTop === 0 && !this.isRefreshing) {\r\n\t\t\t // 拉动的距离\r\n\t\t\t let diff = e.targetTouches[0].pageY - this.startY - this.scrollIsToTop\r\n\t\t\t this.top = Math.pow(diff, 0.8) + (this.dropDownState === 3 ? this.defaultOffset : 0)\r\n\t\t\t if (this.top >= this.defaultOffset) {\r\n\t\t\t this.dropDownState = 2\r\n\t\t\t e.preventDefault()\r\n\t\t\t } else {\r\n\t\t\t this.dropDownState = 1\r\n\t\t\t // 去掉会导致ios无法刷新\r\n\t\t\t e.preventDefault()\r\n\t\t\t }\r\n\t\t\t }\r\n\t\t\t} else {\r\n\t\t\t this.isDropDown = false\r\n\t\t\t this.dropDownState = 1\r\n\t\t\t}\r\n\t\t}\n \n },\n\n /**\n * 触摸结束,手指离开屏幕时\n * @param {object} e Touch 对象包含的属性\n */\n touchEnd (e) {\n if (this.isDropDown && !this.isRefreshing) {\n if (this.top >= this.defaultOffset) {\n // do refresh\n this.refresh()\n this.isRefreshing = true\n } else {\n // cancel refresh\n this.isRefreshing = false\n this.isDropDown = false\n this.dropDownState = 1\n this.top = 0\n }\n }\n },\n\n /**\n * 刷新\n */\n refresh () {\n this.dropDownState = 3\n this.top = this.defaultOffset\n // 这是全是静态数据,延时1200毫秒,给用户一个刷新的感觉,如果是接口数据的话,直接调接口即可\n setTimeout(() => {\n this.onRefresh(this.refreshDone)\n }, 1200)\n },\n\n /**\n * 刷新完成\n */\n refreshDone () {\n this.isRefreshing = false\n this.isDropDown = false\n this.dropDownState = 1\n this.top = 0\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DropDownRefresh.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DropDownRefresh.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DropDownRefresh.vue?vue&type=template&id=7b940856&scoped=true&lang=html\"\nimport script from \"./DropDownRefresh.vue?vue&type=script&lang=ts\"\nexport * from \"./DropDownRefresh.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DropDownRefresh.vue?vue&type=style&index=0&id=7b940856&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b940856\",\n null\n \n)\n\nexport default component.exports","module.exports = true;\n","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n\n'use strict';\n\n\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\nfunction isTerminatorChar(ch) {\n switch (ch) {\n case 0x0A/* \\n */:\n case 0x21/* ! */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2D/* - */:\n case 0x3A/* : */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true;\n default:\n return false;\n }\n}\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos;\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n if (pos === state.pos) { return false; }\n\n if (!silent) { state.pending += state.src.slice(state.pos, pos); }\n\n state.pos = pos;\n\n return true;\n};\n\n// Alternative implementation, for memory.\n//\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParcerInline` property. Probably, will switch to it sometime, such\n// flexibility required.\n\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos,\n idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n // first char is terminator -> empty text\n if (idx === 0) { return false; }\n\n // no terminator -> text till end of string\n if (idx < 0) {\n if (!silent) { state.pending += state.src.slice(pos); }\n state.pos = state.src.length;\n return true;\n }\n\n if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n state.pos += idx;\n\n return true;\n};*/\n","/*\n * quantize_pvt source file\n *\n * Copyright (c) 1999-2002 Takehiro Tominaga\n * Copyright (c) 2000-2002 Robert Hegemann\n * Copyright (c) 2001 Naoki Shibata\n * Copyright (c) 2002-2005 Gabriel Bouvigne\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: QuantizePVT.java,v 1.24 2011/05/24 20:48:06 kenchis Exp $ */\nvar ScaleFac = require('./ScaleFac.js');\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\nvar MeanBits = require('./MeanBits.js');\nvar LameInternalFlags = require('./LameInternalFlags.js');\n\nQuantizePVT.Q_MAX = (256 + 1);\nQuantizePVT.Q_MAX2 = 116;\nQuantizePVT.LARGE_BITS = 100000;\nQuantizePVT.IXMAX_VAL = 8206;\n\nfunction QuantizePVT() {\n\n var tak = null;\n var rv = null;\n var psy = null;\n\n this.setModules = function (_tk, _rv, _psy) {\n tak = _tk;\n rv = _rv;\n psy = _psy;\n };\n\n function POW20(x) {\n assert(0 <= (x + QuantizePVT.Q_MAX2) && x < QuantizePVT.Q_MAX);\n return pow20[x + QuantizePVT.Q_MAX2];\n }\n\n this.IPOW20 = function (x) {\n assert(0 <= x && x < QuantizePVT.Q_MAX);\n return ipow20[x];\n }\n\n /**\n * smallest such that 1.0+DBL_EPSILON != 1.0\n */\n var DBL_EPSILON = 2.2204460492503131e-016;\n\n /**\n * ix always <= 8191+15. see count_bits()\n */\n var IXMAX_VAL = QuantizePVT.IXMAX_VAL;\n\n var PRECALC_SIZE = (IXMAX_VAL + 2);\n\n var Q_MAX = QuantizePVT.Q_MAX;\n\n\n /**\n * \n * minimum possible number of\n * -cod_info.global_gain + ((scalefac[] + (cod_info.preflag ? pretab[sfb] : 0))\n * << (cod_info.scalefac_scale + 1)) + cod_info.subblock_gain[cod_info.window[sfb]] * 8;\n *\n * for long block, 0+((15+3)<<2) = 18*4 = 72\n * for short block, 0+(15<<2)+7*8 = 15*4+56 = 116\n * \n */\n var Q_MAX2 = QuantizePVT.Q_MAX2;\n\n var LARGE_BITS = QuantizePVT.LARGE_BITS;\n\n\n /**\n * Assuming dynamic range=96dB, this value should be 92\n */\n var NSATHSCALE = 100;\n\n /**\n * The following table is used to implement the scalefactor partitioning for\n * MPEG2 as described in section 2.4.3.2 of the IS. The indexing corresponds\n * to the way the tables are presented in the IS:\n *\n * [table_number][row_in_table][column of nr_of_sfb]\n */\n this.nr_of_sfb_block = [\n [[6, 5, 5, 5], [9, 9, 9, 9], [6, 9, 9, 9]],\n [[6, 5, 7, 3], [9, 9, 12, 6], [6, 9, 12, 6]],\n [[11, 10, 0, 0], [18, 18, 0, 0], [15, 18, 0, 0]],\n [[7, 7, 7, 0], [12, 12, 12, 0], [6, 15, 12, 0]],\n [[6, 6, 6, 3], [12, 9, 9, 6], [6, 12, 9, 6]],\n [[8, 8, 5, 0], [15, 12, 9, 0], [6, 18, 9, 0]]];\n\n /**\n * Table B.6: layer3 preemphasis\n */\n var pretab = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,\n 2, 2, 3, 3, 3, 2, 0];\n this.pretab = pretab;\n\n /**\n * Here are MPEG1 Table B.8 and MPEG2 Table B.1 -- Layer III scalefactor\n * bands.
\n * Index into this using a method such as:
\n * idx = fr_ps.header.sampling_frequency + (fr_ps.header.version * 3)\n */\n this.sfBandIndex = [\n // Table B.2.b: 22.05 kHz\n new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192]\n , [0, 0, 0, 0, 0, 0, 0] // sfb21 pseudo sub bands\n , [0, 0, 0, 0, 0, 0, 0] // sfb12 pseudo sub bands\n ),\n /* Table B.2.c: 24 kHz */ /* docs: 332. mpg123(broken): 330 */\n new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136, 162, 194, 232, 278, 332, 394, 464,\n 540, 576],\n [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.2.a: 16 kHz */\n new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.b: 44.1 kHz */\n new ScaleFac([0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110, 134, 162, 196, 238, 288, 342, 418,\n 576],\n [0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.c: 48 kHz */\n new ScaleFac([0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106, 128, 156, 190, 230, 276, 330, 384,\n 576],\n [0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.a: 32 kHz */\n new ScaleFac([0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126, 156, 194, 240, 296, 364, 448, 550,\n 576],\n [0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 11.025 kHz */\n new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3,\n 402 / 3, 522 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 12 kHz */\n new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3,\n 402 / 3, 522 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 8 kHz */\n new ScaleFac([0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192, 232, 280, 336, 400, 476, 566, 568, 570,\n 572, 574, 576],\n [0 / 3, 24 / 3, 48 / 3, 72 / 3, 108 / 3, 156 / 3, 216 / 3, 288 / 3, 372 / 3, 480 / 3, 486 / 3,\n 492 / 3, 498 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n )\n ];\n\n var pow20 = new_float(Q_MAX + Q_MAX2 + 1);\n var ipow20 = new_float(Q_MAX);\n var pow43 = new_float(PRECALC_SIZE);\n\n var adj43 = new_float(PRECALC_SIZE);\n this.adj43 = adj43;\n\n /**\n *
\n     * compute the ATH for each scalefactor band cd range: 0..96db\n     *\n     * Input: 3.3kHz signal 32767 amplitude (3.3kHz is where ATH is smallest =\n     * -5db) longblocks: sfb=12 en0/bw=-11db max_en0 = 1.3db shortblocks: sfb=5\n     * -9db 0db\n     *\n     * Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) longblocks: amp=1\n     * sfb=12 en0/bw=-103 db max_en0 = -92db amp=32767 sfb=12 -12 db -1.4db\n     *\n     * Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) shortblocks: amp=1\n     * sfb=5 en0/bw= -99 -86 amp=32767 sfb=5 -9 db 4db\n     *\n     *\n     * MAX energy of largest wave at 3.3kHz = 1db AVE energy of largest wave at\n     * 3.3kHz = -11db Let's take AVE: -11db = maximum signal in sfb=12. Dynamic\n     * range of CD: 96db. Therefor energy of smallest audible wave in sfb=12 =\n     * -11 - 96 = -107db = ATH at 3.3kHz.\n     *\n     * ATH formula for this wave: -5db. To adjust to LAME scaling, we need ATH =\n     * ATH_formula - 103 (db) ATH = ATH * 2.5e-10 (ener)\n     * 
\n */\n function ATHmdct(gfp, f) {\n var ath = psy.ATHformula(f, gfp);\n\n ath -= NSATHSCALE;\n\n /* modify the MDCT scaling for the ATH and convert to energy */\n ath = Math.pow(10.0, ath / 10.0 + gfp.ATHlower);\n return ath;\n }\n\n function compute_ath(gfp) {\n var ATH_l = gfp.internal_flags.ATH.l;\n var ATH_psfb21 = gfp.internal_flags.ATH.psfb21;\n var ATH_s = gfp.internal_flags.ATH.s;\n var ATH_psfb12 = gfp.internal_flags.ATH.psfb12;\n var gfc = gfp.internal_flags;\n var samp_freq = gfp.out_samplerate;\n\n for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n var start = gfc.scalefac_band.l[sfb];\n var end = gfc.scalefac_band.l[sfb + 1];\n ATH_l[sfb] = Float.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 576);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_l[sfb] = Math.min(ATH_l[sfb], ATH_f);\n }\n }\n\n for (var sfb = 0; sfb < Encoder.PSFB21; sfb++) {\n var start = gfc.scalefac_band.psfb21[sfb];\n var end = gfc.scalefac_band.psfb21[sfb + 1];\n ATH_psfb21[sfb] = Float.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 576);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_psfb21[sfb] = Math.min(ATH_psfb21[sfb], ATH_f);\n }\n }\n\n for (var sfb = 0; sfb < Encoder.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n ATH_s[sfb] = Float.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 192);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_s[sfb] = Math.min(ATH_s[sfb], ATH_f);\n }\n ATH_s[sfb] *= (gfc.scalefac_band.s[sfb + 1] - gfc.scalefac_band.s[sfb]);\n }\n\n for (var sfb = 0; sfb < Encoder.PSFB12; sfb++) {\n var start = gfc.scalefac_band.psfb12[sfb];\n var end = gfc.scalefac_band.psfb12[sfb + 1];\n ATH_psfb12[sfb] = Float.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 192);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_psfb12[sfb] = Math.min(ATH_psfb12[sfb], ATH_f);\n }\n /* not sure about the following */\n ATH_psfb12[sfb] *= (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]);\n }\n\n /*\n * no-ATH mode: reduce ATH to -200 dB\n */\n if (gfp.noATH) {\n for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n ATH_l[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder.PSFB21; sfb++) {\n ATH_psfb21[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder.SBMAX_s; sfb++) {\n ATH_s[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder.PSFB12; sfb++) {\n ATH_psfb12[sfb] = 1E-20;\n }\n }\n\n /*\n * work in progress, don't rely on it too much\n */\n gfc.ATH.floor = 10. * Math.log10(ATHmdct(gfp, -1.));\n }\n\n /**\n * initialization for iteration_loop\n */\n this.iteration_init = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n var i;\n\n if (gfc.iteration_init_init == 0) {\n gfc.iteration_init_init = 1;\n\n l3_side.main_data_begin = 0;\n compute_ath(gfp);\n\n pow43[0] = 0.0;\n for (i = 1; i < PRECALC_SIZE; i++)\n pow43[i] = Math.pow(i, 4.0 / 3.0);\n\n for (i = 0; i < PRECALC_SIZE - 1; i++)\n adj43[i] = ((i + 1) - Math.pow(\n 0.5 * (pow43[i] + pow43[i + 1]), 0.75));\n adj43[i] = 0.5;\n\n for (i = 0; i < Q_MAX; i++)\n ipow20[i] = Math.pow(2.0, (i - 210) * -0.1875);\n for (i = 0; i <= Q_MAX + Q_MAX2; i++)\n pow20[i] = Math.pow(2.0, (i - 210 - Q_MAX2) * 0.25);\n\n tak.huffman_init(gfc);\n\n {\n var bass, alto, treble, sfb21;\n\n i = (gfp.exp_nspsytune >> 2) & 63;\n if (i >= 32)\n i -= 64;\n bass = Math.pow(10, i / 4.0 / 10.0);\n\n i = (gfp.exp_nspsytune >> 8) & 63;\n if (i >= 32)\n i -= 64;\n alto = Math.pow(10, i / 4.0 / 10.0);\n\n i = (gfp.exp_nspsytune >> 14) & 63;\n if (i >= 32)\n i -= 64;\n treble = Math.pow(10, i / 4.0 / 10.0);\n\n /*\n * to be compatible with Naoki's original code, the next 6 bits\n * define only the amount of changing treble for sfb21\n */\n i = (gfp.exp_nspsytune >> 20) & 63;\n if (i >= 32)\n i -= 64;\n sfb21 = treble * Math.pow(10, i / 4.0 / 10.0);\n for (i = 0; i < Encoder.SBMAX_l; i++) {\n var f;\n if (i <= 6)\n f = bass;\n else if (i <= 13)\n f = alto;\n else if (i <= 20)\n f = treble;\n else\n f = sfb21;\n\n gfc.nsPsy.longfact[i] = f;\n }\n for (i = 0; i < Encoder.SBMAX_s; i++) {\n var f;\n if (i <= 5)\n f = bass;\n else if (i <= 10)\n f = alto;\n else if (i <= 11)\n f = treble;\n else\n f = sfb21;\n\n gfc.nsPsy.shortfact[i] = f;\n }\n }\n }\n }\n\n /**\n * allocate bits among 2 channels based on PE
\n * mt 6/99
\n * bugfixes rh 8/01: often allocated more than the allowed 4095 bits\n */\n this.on_pe = function (gfp, pe,\n targ_bits, mean_bits, gr, cbr) {\n var gfc = gfp.internal_flags;\n var tbits = 0, bits;\n var add_bits = new_int(2);\n var ch;\n\n /* allocate targ_bits for granule */\n var mb = new MeanBits(tbits);\n var extra_bits = rv.ResvMaxBits(gfp, mean_bits, mb, cbr);\n tbits = mb.bits;\n /* maximum allowed bits for this granule */\n var max_bits = tbits + extra_bits;\n if (max_bits > LameInternalFlags.MAX_BITS_PER_GRANULE) {\n // hard limit per granule\n max_bits = LameInternalFlags.MAX_BITS_PER_GRANULE;\n }\n for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n /******************************************************************\n * allocate bits for each channel\n ******************************************************************/\n targ_bits[ch] = Math.min(LameInternalFlags.MAX_BITS_PER_CHANNEL,\n tbits / gfc.channels_out);\n\n add_bits[ch] = 0 | (targ_bits[ch] * pe[gr][ch] / 700.0 - targ_bits[ch]);\n\n /* at most increase bits by 1.5*average */\n if (add_bits[ch] > mean_bits * 3 / 4)\n add_bits[ch] = mean_bits * 3 / 4;\n if (add_bits[ch] < 0)\n add_bits[ch] = 0;\n\n if (add_bits[ch] + targ_bits[ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL)\n add_bits[ch] = Math.max(0,\n LameInternalFlags.MAX_BITS_PER_CHANNEL - targ_bits[ch]);\n\n bits += add_bits[ch];\n }\n if (bits > extra_bits) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n add_bits[ch] = extra_bits * add_bits[ch] / bits;\n }\n }\n\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[ch] += add_bits[ch];\n extra_bits -= add_bits[ch];\n }\n\n for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n bits += targ_bits[ch];\n }\n if (bits > LameInternalFlags.MAX_BITS_PER_GRANULE) {\n var sum = 0;\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[ch] *= LameInternalFlags.MAX_BITS_PER_GRANULE;\n targ_bits[ch] /= bits;\n sum += targ_bits[ch];\n }\n assert(sum <= LameInternalFlags.MAX_BITS_PER_GRANULE);\n }\n\n return max_bits;\n }\n\n this.reduce_side = function (targ_bits, ms_ener_ratio, mean_bits, max_bits) {\n assert(max_bits <= LameInternalFlags.MAX_BITS_PER_GRANULE);\n assert(targ_bits[0] + targ_bits[1] <= LameInternalFlags.MAX_BITS_PER_GRANULE);\n\n /*\n * ms_ener_ratio = 0: allocate 66/33 mid/side fac=.33 ms_ener_ratio =.5:\n * allocate 50/50 mid/side fac= 0\n */\n /* 75/25 split is fac=.5 */\n var fac = .33 * (.5 - ms_ener_ratio) / .5;\n if (fac < 0)\n fac = 0;\n if (fac > .5)\n fac = .5;\n\n /* number of bits to move from side channel to mid channel */\n /* move_bits = fac*targ_bits[1]; */\n var move_bits = 0 | (fac * .5 * (targ_bits[0] + targ_bits[1]));\n\n if (move_bits > LameInternalFlags.MAX_BITS_PER_CHANNEL - targ_bits[0]) {\n move_bits = LameInternalFlags.MAX_BITS_PER_CHANNEL - targ_bits[0];\n }\n if (move_bits < 0)\n move_bits = 0;\n\n if (targ_bits[1] >= 125) {\n /* dont reduce side channel below 125 bits */\n if (targ_bits[1] - move_bits > 125) {\n\n /* if mid channel already has 2x more than average, dont bother */\n /* mean_bits = bits per granule (for both channels) */\n if (targ_bits[0] < mean_bits)\n targ_bits[0] += move_bits;\n targ_bits[1] -= move_bits;\n } else {\n targ_bits[0] += targ_bits[1] - 125;\n targ_bits[1] = 125;\n }\n }\n\n move_bits = targ_bits[0] + targ_bits[1];\n if (move_bits > max_bits) {\n targ_bits[0] = (max_bits * targ_bits[0]) / move_bits;\n targ_bits[1] = (max_bits * targ_bits[1]) / move_bits;\n }\n assert(targ_bits[0] <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n assert(targ_bits[1] <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n assert(targ_bits[0] + targ_bits[1] <= LameInternalFlags.MAX_BITS_PER_GRANULE);\n };\n\n /**\n * Robert Hegemann 2001-04-27:\n * this adjusts the ATH, keeping the original noise floor\n * affects the higher frequencies more than the lower ones\n */\n this.athAdjust = function (a, x, athFloor) {\n /*\n * work in progress\n */\n var o = 90.30873362;\n var p = 94.82444863;\n var u = Util.FAST_LOG10_X(x, 10.0);\n var v = a * a;\n var w = 0.0;\n u -= athFloor;\n /* undo scaling */\n if (v > 1E-20)\n w = 1. + Util.FAST_LOG10_X(v, 10.0 / o);\n if (w < 0)\n w = 0.;\n u *= w;\n u += athFloor + o - p;\n /* redo scaling */\n\n return Math.pow(10., 0.1 * u);\n };\n\n /**\n * Calculate the allowed distortion for each scalefactor band, as determined\n * by the psychoacoustic model. xmin(sb) = ratio(sb) * en(sb) / bw(sb)\n *\n * returns number of sfb's with energy > ATH\n */\n this.calc_xmin = function (gfp, ratio, cod_info, pxmin) {\n var pxminPos = 0;\n var gfc = gfp.internal_flags;\n var gsfb, j = 0, ath_over = 0;\n var ATH = gfc.ATH;\n var xr = cod_info.xr;\n var enable_athaa_fix = (gfp.VBR == VbrMode.vbr_mtrh) ? 1 : 0;\n var masking_lower = gfc.masking_lower;\n\n if (gfp.VBR == VbrMode.vbr_mtrh || gfp.VBR == VbrMode.vbr_mt) {\n /* was already done in PSY-Model */\n masking_lower = 1.0;\n }\n\n for (gsfb = 0; gsfb < cod_info.psy_lmax; gsfb++) {\n var en0, xmin;\n var rh1, rh2;\n var width, l;\n\n if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh)\n xmin = athAdjust(ATH.adjust, ATH.l[gsfb], ATH.floor);\n else\n xmin = ATH.adjust * ATH.l[gsfb];\n\n width = cod_info.width[gsfb];\n rh1 = xmin / width;\n rh2 = DBL_EPSILON;\n l = width >> 1;\n en0 = 0.0;\n do {\n var xa, xb;\n xa = xr[j] * xr[j];\n en0 += xa;\n rh2 += (xa < rh1) ? xa : rh1;\n j++;\n xb = xr[j] * xr[j];\n en0 += xb;\n rh2 += (xb < rh1) ? xb : rh1;\n j++;\n } while (--l > 0);\n if (en0 > xmin)\n ath_over++;\n\n if (gsfb == Encoder.SBPSY_l) {\n var x = xmin * gfc.nsPsy.longfact[gsfb];\n if (rh2 < x) {\n rh2 = x;\n }\n }\n if (enable_athaa_fix != 0) {\n xmin = rh2;\n }\n if (!gfp.ATHonly) {\n var e = ratio.en.l[gsfb];\n if (e > 0.0) {\n var x;\n x = en0 * ratio.thm.l[gsfb] * masking_lower / e;\n if (enable_athaa_fix != 0)\n x *= gfc.nsPsy.longfact[gsfb];\n if (xmin < x)\n xmin = x;\n }\n }\n if (enable_athaa_fix != 0)\n pxmin[pxminPos++] = xmin;\n else\n pxmin[pxminPos++] = xmin * gfc.nsPsy.longfact[gsfb];\n }\n /* end of long block loop */\n\n /* use this function to determine the highest non-zero coeff */\n var max_nonzero = 575;\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n // NORM, START or STOP type, but not SHORT\n var k = 576;\n while (k-- != 0 && BitStream.EQ(xr[k], 0)) {\n max_nonzero = k;\n }\n }\n cod_info.max_nonzero_coeff = max_nonzero;\n\n for (var sfb = cod_info.sfb_smin; gsfb < cod_info.psymax; sfb++, gsfb += 3) {\n var width, b;\n var tmpATH;\n if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh)\n tmpATH = athAdjust(ATH.adjust, ATH.s[sfb], ATH.floor);\n else\n tmpATH = ATH.adjust * ATH.s[sfb];\n\n width = cod_info.width[gsfb];\n for (b = 0; b < 3; b++) {\n var en0 = 0.0, xmin;\n var rh1, rh2;\n var l = width >> 1;\n\n rh1 = tmpATH / width;\n rh2 = DBL_EPSILON;\n do {\n var xa, xb;\n xa = xr[j] * xr[j];\n en0 += xa;\n rh2 += (xa < rh1) ? xa : rh1;\n j++;\n xb = xr[j] * xr[j];\n en0 += xb;\n rh2 += (xb < rh1) ? xb : rh1;\n j++;\n } while (--l > 0);\n if (en0 > tmpATH)\n ath_over++;\n if (sfb == Encoder.SBPSY_s) {\n var x = tmpATH * gfc.nsPsy.shortfact[sfb];\n if (rh2 < x) {\n rh2 = x;\n }\n }\n if (enable_athaa_fix != 0)\n xmin = rh2;\n else\n xmin = tmpATH;\n\n if (!gfp.ATHonly && !gfp.ATHshort) {\n var e = ratio.en.s[sfb][b];\n if (e > 0.0) {\n var x;\n x = en0 * ratio.thm.s[sfb][b] * masking_lower / e;\n if (enable_athaa_fix != 0)\n x *= gfc.nsPsy.shortfact[sfb];\n if (xmin < x)\n xmin = x;\n }\n }\n if (enable_athaa_fix != 0)\n pxmin[pxminPos++] = xmin;\n else\n pxmin[pxminPos++] = xmin * gfc.nsPsy.shortfact[sfb];\n }\n /* b */\n if (gfp.useTemporal) {\n if (pxmin[pxminPos - 3] > pxmin[pxminPos - 3 + 1])\n pxmin[pxminPos - 3 + 1] += (pxmin[pxminPos - 3] - pxmin[pxminPos - 3 + 1])\n * gfc.decay;\n if (pxmin[pxminPos - 3 + 1] > pxmin[pxminPos - 3 + 2])\n pxmin[pxminPos - 3 + 2] += (pxmin[pxminPos - 3 + 1] - pxmin[pxminPos - 3 + 2])\n * gfc.decay;\n }\n }\n /* end of short block sfb loop */\n\n return ath_over;\n };\n\n function StartLine(j) {\n this.s = j;\n }\n\n this.calc_noise_core = function (cod_info, startline, l, step) {\n var noise = 0;\n var j = startline.s;\n var ix = cod_info.l3_enc;\n\n if (j > cod_info.count1) {\n while ((l--) != 0) {\n var temp;\n temp = cod_info.xr[j];\n j++;\n noise += temp * temp;\n temp = cod_info.xr[j];\n j++;\n noise += temp * temp;\n }\n } else if (j > cod_info.big_values) {\n var ix01 = new_float(2);\n ix01[0] = 0;\n ix01[1] = step;\n while ((l--) != 0) {\n var temp;\n temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n j++;\n noise += temp * temp;\n temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n j++;\n noise += temp * temp;\n }\n } else {\n while ((l--) != 0) {\n var temp;\n temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n j++;\n noise += temp * temp;\n temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n j++;\n noise += temp * temp;\n }\n }\n\n startline.s = j;\n return noise;\n }\n\n /**\n *
\n     * -oo dB  =>  -1.00\n     * - 6 dB  =>  -0.97\n     * - 3 dB  =>  -0.80\n     * - 2 dB  =>  -0.64\n     * - 1 dB  =>  -0.38\n     *   0 dB  =>   0.00\n     * + 1 dB  =>  +0.49\n     * + 2 dB  =>  +1.06\n     * + 3 dB  =>  +1.68\n     * + 6 dB  =>  +3.69\n     * +10 dB  =>  +6.45\n     * 
\n */\n this.calc_noise = function (cod_info, l3_xmin, distort, res, prev_noise) {\n var distortPos = 0;\n var l3_xminPos = 0;\n var sfb, l, over = 0;\n var over_noise_db = 0;\n /* 0 dB relative to masking */\n var tot_noise_db = 0;\n /* -200 dB relative to masking */\n var max_noise = -20.0;\n var j = 0;\n var scalefac = cod_info.scalefac;\n var scalefacPos = 0;\n\n res.over_SSD = 0;\n\n for (sfb = 0; sfb < cod_info.psymax; sfb++) {\n var s = cod_info.global_gain\n - (((scalefac[scalefacPos++]) + (cod_info.preflag != 0 ? pretab[sfb]\n : 0)) << (cod_info.scalefac_scale + 1))\n - cod_info.subblock_gain[cod_info.window[sfb]] * 8;\n var noise = 0.0;\n\n if (prev_noise != null && (prev_noise.step[sfb] == s)) {\n\n /* use previously computed values */\n noise = prev_noise.noise[sfb];\n j += cod_info.width[sfb];\n distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n\n noise = prev_noise.noise_log[sfb];\n\n } else {\n var step = POW20(s);\n l = cod_info.width[sfb] >> 1;\n\n if ((j + cod_info.width[sfb]) > cod_info.max_nonzero_coeff) {\n var usefullsize;\n usefullsize = cod_info.max_nonzero_coeff - j + 1;\n\n if (usefullsize > 0)\n l = usefullsize >> 1;\n else\n l = 0;\n }\n\n var sl = new StartLine(j);\n noise = this.calc_noise_core(cod_info, sl, l, step);\n j = sl.s;\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.step[sfb] = s;\n prev_noise.noise[sfb] = noise;\n }\n\n noise = distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n\n /* multiplying here is adding in dB, but can overflow */\n noise = Util.FAST_LOG10(Math.max(noise, 1E-20));\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.noise_log[sfb] = noise;\n }\n }\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.global_gain = cod_info.global_gain;\n }\n\n tot_noise_db += noise;\n\n if (noise > 0.0) {\n var tmp;\n\n tmp = Math.max(0 | (noise * 10 + .5), 1);\n res.over_SSD += tmp * tmp;\n\n over++;\n /* multiplying here is adding in dB -but can overflow */\n /* over_noise *= noise; */\n over_noise_db += noise;\n }\n max_noise = Math.max(max_noise, noise);\n\n }\n\n res.over_count = over;\n res.tot_noise = tot_noise_db;\n res.over_noise = over_noise_db;\n res.max_noise = max_noise;\n\n return over;\n }\n\n /**\n * updates plotting data\n *\n * Mark Taylor 2000-??-??\n *\n * Robert Hegemann: moved noise/distortion calc into it\n */\n this.set_pinfo = function (gfp, cod_info, ratio, gr, ch) {\n var gfc = gfp.internal_flags;\n var sfb, sfb2;\n var l;\n var en0, en1;\n var ifqstep = (cod_info.scalefac_scale == 0) ? .5 : 1.0;\n var scalefac = cod_info.scalefac;\n\n var l3_xmin = new_float(L3Side.SFBMAX);\n var xfsf = new_float(L3Side.SFBMAX);\n var noise = new CalcNoiseResult();\n\n calc_xmin(gfp, ratio, cod_info, l3_xmin);\n calc_noise(cod_info, l3_xmin, xfsf, noise, null);\n\n var j = 0;\n sfb2 = cod_info.sfb_lmax;\n if (cod_info.block_type != Encoder.SHORT_TYPE\n && 0 == cod_info.mixed_block_flag)\n sfb2 = 22;\n for (sfb = 0; sfb < sfb2; sfb++) {\n var start = gfc.scalefac_band.l[sfb];\n var end = gfc.scalefac_band.l[sfb + 1];\n var bw = end - start;\n for (en0 = 0.0; j < end; j++)\n en0 += cod_info.xr[j] * cod_info.xr[j];\n en0 /= bw;\n /* convert to MDCT units */\n /* scaling so it shows up on FFT plot */\n en1 = 1e15;\n gfc.pinfo.en[gr][ch][sfb] = en1 * en0;\n gfc.pinfo.xfsf[gr][ch][sfb] = en1 * l3_xmin[sfb] * xfsf[sfb] / bw;\n\n if (ratio.en.l[sfb] > 0 && !gfp.ATHonly)\n en0 = en0 / ratio.en.l[sfb];\n else\n en0 = 0.0;\n\n gfc.pinfo.thr[gr][ch][sfb] = en1\n * Math.max(en0 * ratio.thm.l[sfb], gfc.ATH.l[sfb]);\n\n /* there is no scalefactor bands >= SBPSY_l */\n gfc.pinfo.LAMEsfb[gr][ch][sfb] = 0;\n if (cod_info.preflag != 0 && sfb >= 11)\n gfc.pinfo.LAMEsfb[gr][ch][sfb] = -ifqstep * pretab[sfb];\n\n if (sfb < Encoder.SBPSY_l) {\n /* scfsi should be decoded by caller side */\n assert(scalefac[sfb] >= 0);\n gfc.pinfo.LAMEsfb[gr][ch][sfb] -= ifqstep * scalefac[sfb];\n }\n }\n /* for sfb */\n\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n sfb2 = sfb;\n for (sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n var bw = end - start;\n for (var i = 0; i < 3; i++) {\n for (en0 = 0.0, l = start; l < end; l++) {\n en0 += cod_info.xr[j] * cod_info.xr[j];\n j++;\n }\n en0 = Math.max(en0 / bw, 1e-20);\n /* convert to MDCT units */\n /* scaling so it shows up on FFT plot */\n en1 = 1e15;\n\n gfc.pinfo.en_s[gr][ch][3 * sfb + i] = en1 * en0;\n gfc.pinfo.xfsf_s[gr][ch][3 * sfb + i] = en1 * l3_xmin[sfb2]\n * xfsf[sfb2] / bw;\n if (ratio.en.s[sfb][i] > 0)\n en0 = en0 / ratio.en.s[sfb][i];\n else\n en0 = 0.0;\n if (gfp.ATHonly || gfp.ATHshort)\n en0 = 0;\n\n gfc.pinfo.thr_s[gr][ch][3 * sfb + i] = en1\n * Math.max(en0 * ratio.thm.s[sfb][i],\n gfc.ATH.s[sfb]);\n\n /* there is no scalefactor bands >= SBPSY_s */\n gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] = -2.0\n * cod_info.subblock_gain[i];\n if (sfb < Encoder.SBPSY_s) {\n gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] -= ifqstep\n * scalefac[sfb2];\n }\n sfb2++;\n }\n }\n }\n /* block type short */\n gfc.pinfo.LAMEqss[gr][ch] = cod_info.global_gain;\n gfc.pinfo.LAMEmainbits[gr][ch] = cod_info.part2_3_length\n + cod_info.part2_length;\n gfc.pinfo.LAMEsfbits[gr][ch] = cod_info.part2_length;\n\n gfc.pinfo.over[gr][ch] = noise.over_count;\n gfc.pinfo.max_noise[gr][ch] = noise.max_noise * 10.0;\n gfc.pinfo.over_noise[gr][ch] = noise.over_noise * 10.0;\n gfc.pinfo.tot_noise[gr][ch] = noise.tot_noise * 10.0;\n gfc.pinfo.over_SSD[gr][ch] = noise.over_SSD;\n }\n\n /**\n * updates plotting data for a whole frame\n *\n * Robert Hegemann 2000-10-21\n */\n function set_frame_pinfo(gfp, ratio) {\n var gfc = gfp.internal_flags;\n\n gfc.masking_lower = 1.0;\n\n /*\n * for every granule and channel patch l3_enc and set info\n */\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n var scalefac_sav = new_int(L3Side.SFBMAX);\n System.arraycopy(cod_info.scalefac, 0, scalefac_sav, 0,\n scalefac_sav.length);\n\n /*\n * reconstruct the scalefactors in case SCFSI was used\n */\n if (gr == 1) {\n var sfb;\n for (sfb = 0; sfb < cod_info.sfb_lmax; sfb++) {\n if (cod_info.scalefac[sfb] < 0) /* scfsi */\n cod_info.scalefac[sfb] = gfc.l3_side.tt[0][ch].scalefac[sfb];\n }\n }\n\n set_pinfo(gfp, cod_info, ratio[gr][ch], gr, ch);\n System.arraycopy(scalefac_sav, 0, cod_info.scalefac, 0,\n scalefac_sav.length);\n }\n /* for ch */\n }\n /* for gr */\n }\n\n}\n\nmodule.exports = QuantizePVT;\n","// Simple typographyc replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// (p) (P) -> §\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → –, --- → —\n//\n'use strict';\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - miltiplication 2 x 4 -> 2 × 4\n\nvar RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/;\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nvar SCOPED_ABBR_TEST_RE = /\\((c|tm|r|p)\\)/i;\n\nvar SCOPED_ABBR_RE = /\\((c|tm|r|p)\\)/ig;\nvar SCOPED_ABBR = {\n c: '©',\n r: '®',\n p: '§',\n tm: '™'\n};\n\nfunction replaceFn(match, name) {\n return SCOPED_ABBR[name.toLowerCase()];\n}\n\nfunction replace_scoped(inlineTokens) {\n var i, token;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n if (token.type === 'text') {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n }\n }\n}\n\nfunction replace_rare(inlineTokens) {\n var i, token;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n if (token.type === 'text') {\n if (RARE_RE.test(token.content)) {\n token.content = token.content\n .replace(/\\+-/g, '±')\n // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n // em-dash\n .replace(/(^|[^-])---([^-]|$)/mg, '$1\\u2014$2')\n // en-dash\n .replace(/(^|\\s)--(\\s|$)/mg, '$1\\u2013$2')\n .replace(/(^|[^-\\s])--([^-\\s]|$)/mg, '$1\\u2013$2');\n }\n }\n }\n}\n\n\nmodule.exports = function replace(state) {\n var blkIdx;\n\n if (!state.md.options.typographer) { return; }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n if (state.tokens[blkIdx].type !== 'inline') { continue; }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children);\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children);\n }\n\n }\n};\n","// HTML5 entities map: { name -> utf16string }\n//\n'use strict';\n\n/*eslint quotes:0*/\nmodule.exports = require('entities/maps/entities.json');\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar IIISideInfo = require('./IIISideInfo.js');\nvar ScaleFac = require('./ScaleFac.js');\nvar NsPsy = require('./NsPsy.js');\nvar VBRSeekInfo = require('./VBRSeekInfo.js');\nvar III_psy_xmin = require('./III_psy_xmin.js');\nvar Encoder = require('./Encoder.js');\nvar L3Side = require('./L3Side.js');\n\n\nLameInternalFlags.MFSIZE = (3 * 1152 + Encoder.ENCDELAY - Encoder.MDCTDELAY);\nLameInternalFlags.MAX_HEADER_BUF = 256;\nLameInternalFlags.MAX_BITS_PER_CHANNEL = 4095;\nLameInternalFlags.MAX_BITS_PER_GRANULE = 7680;\nLameInternalFlags.BPC = 320;\n\nfunction LameInternalFlags() {\n var MAX_HEADER_LEN = 40;\n\n\n /********************************************************************\n * internal variables NOT set by calling program, and should not be *\n * modified by the calling program *\n ********************************************************************/\n\n /**\n * Some remarks to the Class_ID field: The Class ID is an Identifier for a\n * pointer to this struct. It is very unlikely that a pointer to\n * lame_global_flags has the same 32 bits in it's structure (large and other\n * special properties, for instance prime).\n *\n * To test that the structure is right and initialized, use: if ( gfc .\n * Class_ID == LAME_ID ) ... Other remark: If you set a flag to 0 for uninit\n * data and 1 for init data, the right test should be \"if (flag == 1)\" and\n * NOT \"if (flag)\". Unintended modification of this element will be\n * otherwise misinterpreted as an init.\n */\n this.Class_ID = 0;\n\n this.lame_encode_frame_init = 0;\n this.iteration_init_init = 0;\n this.fill_buffer_resample_init = 0;\n\n //public float mfbuf[][] = new float[2][MFSIZE];\n this.mfbuf = new_float_n([2, LameInternalFlags.MFSIZE]);\n\n /**\n * granules per frame\n */\n this.mode_gr = 0;\n /**\n * number of channels in the input data stream (PCM or decoded PCM)\n */\n this.channels_in = 0;\n /**\n * number of channels in the output data stream (not used for decoding)\n */\n this.channels_out = 0;\n /**\n * input_samp_rate/output_samp_rate\n */\n //public double resample_ratio;\n this.resample_ratio = 0.;\n\n this.mf_samples_to_encode = 0;\n this.mf_size = 0;\n /**\n * min bitrate index\n */\n this.VBR_min_bitrate = 0;\n /**\n * max bitrate index\n */\n this.VBR_max_bitrate = 0;\n this.bitrate_index = 0;\n this.samplerate_index = 0;\n this.mode_ext = 0;\n\n /* lowpass and highpass filter control */\n /**\n * normalized frequency bounds of passband\n */\n this.lowpass1 = 0.;\n this.lowpass2 = 0.;\n /**\n * normalized frequency bounds of passband\n */\n this.highpass1 = 0.;\n this.highpass2 = 0.;\n\n /**\n * 0 = none 1 = ISO AAC model 2 = allow scalefac_select=1\n */\n this.noise_shaping = 0;\n\n /**\n * 0 = ISO model: amplify all distorted bands
\n * 1 = amplify within 50% of max (on db scale)
\n * 2 = amplify only most distorted band
\n * 3 = method 1 and refine with method 2
\n */\n this.noise_shaping_amp = 0;\n /**\n * 0 = no substep
\n * 1 = use substep shaping at last step(VBR only)
\n * (not implemented yet)
\n * 2 = use substep inside loop
\n * 3 = use substep inside loop and last step
\n */\n this.substep_shaping = 0;\n\n /**\n * 1 = gpsycho. 0 = none\n */\n this.psymodel = 0;\n /**\n * 0 = stop at over=0, all scalefacs amplified or
\n * a scalefac has reached max value
\n * 1 = stop when all scalefacs amplified or a scalefac has reached max value
\n * 2 = stop when all scalefacs amplified\n */\n this.noise_shaping_stop = 0;\n\n /**\n * 0 = no, 1 = yes\n */\n this.subblock_gain = 0;\n /**\n * 0 = no. 1=outside loop 2=inside loop(slow)\n */\n this.use_best_huffman = 0;\n\n /**\n * 0 = stop early after 0 distortion found. 1 = full search\n */\n this.full_outer_loop = 0;\n\n //public IIISideInfo l3_side = new IIISideInfo();\n this.l3_side = new IIISideInfo();\n this.ms_ratio = new_float(2);\n\n /* used for padding */\n /**\n * padding for the current frame?\n */\n this.padding = 0;\n this.frac_SpF = 0;\n this.slot_lag = 0;\n\n /**\n * optional ID3 tags\n */\n //public ID3TagSpec tag_spec;\n this.tag_spec = null;\n this.nMusicCRC = 0;\n\n /* variables used by Quantize */\n //public int OldValue[] = new int[2];\n this.OldValue = new_int(2);\n //public int CurrentStep[] = new int[2];\n this.CurrentStep = new_int(2);\n\n this.masking_lower = 0.;\n //public int bv_scf[] = new int[576];\n this.bv_scf = new_int(576);\n //public int pseudohalf[] = new int[L3Side.SFBMAX];\n this.pseudohalf = new_int(L3Side.SFBMAX);\n\n /**\n * will be set in lame_init_params\n */\n this.sfb21_extra = false;\n\n /* BPC = maximum number of filter convolution windows to precompute */\n //public float[][] inbuf_old = new float[2][];\n this.inbuf_old = new Array(2);\n //public float[][] blackfilt = new float[2 * BPC + 1][];\n this.blackfilt = new Array(2 * LameInternalFlags.BPC + 1);\n //public double itime[] = new double[2];\n this.itime = new_double(2);\n this.sideinfo_len = 0;\n\n /* variables for newmdct.c */\n //public float sb_sample[][][][] = new float[2][2][18][Encoder.SBLIMIT];\n this.sb_sample = new_float_n([2, 2, 18, Encoder.SBLIMIT]);\n this.amp_filter = new_float(32);\n\n /* variables for BitStream */\n\n /**\n *
\n     * mpeg1: buffer=511 bytes  smallest frame: 96-38(sideinfo)=58\n     * max number of frames in reservoir:  8\n     * mpeg2: buffer=255 bytes.  smallest frame: 24-23bytes=1\n     * with VBR, if you are encoding all silence, it is possible to\n     * have 8kbs/24khz frames with 1byte of data each, which means we need\n     * to buffer up to 255 headers!\n     * 
\n */\n /**\n * also, max_header_buf has to be a power of two\n */\n /**\n * max size of header is 38\n */\n\n function Header() {\n this.write_timing = 0;\n this.ptr = 0;\n //public byte buf[] = new byte[MAX_HEADER_LEN];\n this.buf = new_byte(MAX_HEADER_LEN);\n }\n\n this.header = new Array(LameInternalFlags.MAX_HEADER_BUF);\n\n this.h_ptr = 0;\n this.w_ptr = 0;\n this.ancillary_flag = 0;\n\n /* variables for Reservoir */\n /**\n * in bits\n */\n this.ResvSize = 0;\n /**\n * in bits\n */\n this.ResvMax = 0;\n\n //public ScaleFac scalefac_band = new ScaleFac();\n this.scalefac_band = new ScaleFac();\n\n /* daa from PsyModel */\n /* The static variables \"r\", \"phi_sav\", \"new\", \"old\" and \"oldest\" have */\n /* to be remembered for the unpredictability measure. For \"r\" and */\n /* \"phi_sav\", the first index from the left is the channel select and */\n /* the second index is the \"age\" of the data. */\n this.minval_l = new_float(Encoder.CBANDS);\n this.minval_s = new_float(Encoder.CBANDS);\n this.nb_1 = new_float_n([4, Encoder.CBANDS]);\n this.nb_2 = new_float_n([4, Encoder.CBANDS]);\n this.nb_s1 = new_float_n([4, Encoder.CBANDS]);\n this.nb_s2 = new_float_n([4, Encoder.CBANDS]);\n this.s3_ss = null;\n this.s3_ll = null;\n this.decay = 0.;\n\n //public III_psy_xmin[] thm = new III_psy_xmin[4];\n //public III_psy_xmin[] en = new III_psy_xmin[4];\n this.thm = new Array(4);\n this.en = new Array(4);\n\n /**\n * fft and energy calculation\n */\n this.tot_ener = new_float(4);\n\n /* loudness calculation (for adaptive threshold of hearing) */\n /**\n * loudness^2 approx. per granule and channel\n */\n this.loudness_sq = new_float_n([2, 2]);\n /**\n * account for granule delay of L3psycho_anal\n */\n this.loudness_sq_save = new_float(2);\n\n /**\n * Scale Factor Bands\n */\n this.mld_l = new_float(Encoder.SBMAX_l);\n this.mld_s = new_float(Encoder.SBMAX_s);\n this.bm_l = new_int(Encoder.SBMAX_l);\n this.bo_l = new_int(Encoder.SBMAX_l);\n this.bm_s = new_int(Encoder.SBMAX_s);\n this.bo_s = new_int(Encoder.SBMAX_s);\n this.npart_l = 0;\n this.npart_s = 0;\n\n this.s3ind = new_int_n([Encoder.CBANDS, 2]);\n this.s3ind_s = new_int_n([Encoder.CBANDS, 2]);\n\n this.numlines_s = new_int(Encoder.CBANDS);\n this.numlines_l = new_int(Encoder.CBANDS);\n this.rnumlines_l = new_float(Encoder.CBANDS);\n this.mld_cb_l = new_float(Encoder.CBANDS);\n this.mld_cb_s = new_float(Encoder.CBANDS);\n this.numlines_s_num1 = 0;\n this.numlines_l_num1 = 0;\n\n /* ratios */\n this.pe = new_float(4);\n this.ms_ratio_s_old = 0.;\n this.ms_ratio_l_old = 0.;\n this.ms_ener_ratio_old = 0.;\n\n /**\n * block type\n */\n this.blocktype_old = new_int(2);\n\n /**\n * variables used for --nspsytune\n */\n this.nsPsy = new NsPsy();\n\n /**\n * used for Xing VBR header\n */\n this.VBR_seek_table = new VBRSeekInfo();\n\n /**\n * all ATH related stuff\n */\n //public ATH ATH;\n this.ATH = null;\n\n this.PSY = null;\n\n this.nogap_total = 0;\n this.nogap_current = 0;\n\n /* ReplayGain */\n this.decode_on_the_fly = true;\n this.findReplayGain = true;\n this.findPeakSample = true;\n this.PeakSample = 0.;\n this.RadioGain = 0;\n this.AudiophileGain = 0;\n //public ReplayGain rgdata;\n this.rgdata = null;\n\n /**\n * gain change required for preventing clipping\n */\n this.noclipGainChange = 0;\n /**\n * user-specified scale factor required for preventing clipping\n */\n this.noclipScale = 0.;\n\n /* simple statistics */\n this.bitrate_stereoMode_Hist = new_int_n([16, 4 + 1]);\n /**\n * norm/start/short/stop/mixed(short)/sum\n */\n this.bitrate_blockType_Hist = new_int_n([16, 4 + 1 + 1]);\n\n //public PlottingData pinfo;\n //public MPGLib.mpstr_tag hip;\n this.pinfo = null;\n this.hip = null;\n\n this.in_buffer_nsamples = 0;\n //public float[] in_buffer_0;\n //public float[] in_buffer_1;\n this.in_buffer_0 = null;\n this.in_buffer_1 = null;\n\n //public IIterationLoop iteration_loop;\n this.iteration_loop = null;\n\n for (var i = 0; i < this.en.length; i++) {\n this.en[i] = new III_psy_xmin();\n }\n for (var i = 0; i < this.thm.length; i++) {\n this.thm[i] = new III_psy_xmin();\n }\n for (var i = 0; i < this.header.length; i++) {\n this.header[i] = new Header();\n }\n\n}\n\nmodule.exports = LameInternalFlags;\n","// Markdown-it plugin to render GitHub-style task lists; see\n//\n// https://github.com/blog/1375-task-lists-in-gfm-issues-pulls-comments\n// https://github.com/blog/1825-task-lists-in-all-markdown-documents\n\nvar disableCheckboxes = true;\nvar useLabelWrapper = false;\nvar useLabelAfter = false;\n\nmodule.exports = function(md, options) {\n\tif (options) {\n\t\tdisableCheckboxes = !options.enabled;\n\t\tuseLabelWrapper = !!options.label;\n\t\tuseLabelAfter = !!options.labelAfter;\n\t}\n\n\tmd.core.ruler.after('inline', 'github-task-lists', function(state) {\n\t\tvar tokens = state.tokens;\n\t\tfor (var i = 2; i < tokens.length; i++) {\n\t\t\tif (isTodoItem(tokens, i)) {\n\t\t\t\ttodoify(tokens[i], state.Token);\n\t\t\t\tattrSet(tokens[i-2], 'class', 'task-list-item' + (!disableCheckboxes ? ' enabled' : ''));\n\t\t\t\tattrSet(tokens[parentToken(tokens, i-2)], 'class', 'contains-task-list');\n\t\t\t}\n\t\t}\n\t});\n};\n\nfunction attrSet(token, name, value) {\n\tvar index = token.attrIndex(name);\n\tvar attr = [name, value];\n\n\tif (index < 0) {\n\t\ttoken.attrPush(attr);\n\t} else {\n\t\ttoken.attrs[index] = attr;\n\t}\n}\n\nfunction parentToken(tokens, index) {\n\tvar targetLevel = tokens[index].level - 1;\n\tfor (var i = index - 1; i >= 0; i--) {\n\t\tif (tokens[i].level === targetLevel) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction isTodoItem(tokens, index) {\n\treturn isInline(tokens[index]) &&\n\t isParagraph(tokens[index - 1]) &&\n\t isListItem(tokens[index - 2]) &&\n\t startsWithTodoMarkdown(tokens[index]);\n}\n\nfunction todoify(token, TokenConstructor) {\n\ttoken.children.unshift(makeCheckbox(token, TokenConstructor));\n\ttoken.children[1].content = token.children[1].content.slice(3);\n\ttoken.content = token.content.slice(3);\n\n\tif (useLabelWrapper) {\n\t\tif (useLabelAfter) {\n\t\t\ttoken.children.pop();\n\n\t\t\t// Use large random number as id property of the checkbox.\n\t\t\tvar id = 'task-item-' + Math.ceil(Math.random() * (10000 * 1000) - 1000);\n\t\t\ttoken.children[0].content = token.children[0].content.slice(0, -1) + ' id=\"' + id + '\">';\n\t\t\ttoken.children.push(afterLabel(token.content, id, TokenConstructor));\n\t\t} else {\n\t\t\ttoken.children.unshift(beginLabel(TokenConstructor));\n\t\t\ttoken.children.push(endLabel(TokenConstructor));\n\t\t}\n\t}\n}\n\nfunction makeCheckbox(token, TokenConstructor) {\n\tvar checkbox = new TokenConstructor('html_inline', '', 0);\n\tvar disabledAttr = disableCheckboxes ? ' disabled=\"\" ' : '';\n\tif (token.content.indexOf('[ ] ') === 0) {\n\t\tcheckbox.content = '';\n\t} else if (token.content.indexOf('[x] ') === 0 || token.content.indexOf('[X] ') === 0) {\n\t\tcheckbox.content = '';\n\t}\n\treturn checkbox;\n}\n\n// these next two functions are kind of hacky; probably should really be a\n// true block-level token with .tag=='label'\nfunction beginLabel(TokenConstructor) {\n\tvar token = new TokenConstructor('html_inline', '', 0);\n\ttoken.content = '';\n\treturn token;\n}\n\nfunction afterLabel(content, id, TokenConstructor) {\n\tvar token = new TokenConstructor('html_inline', '', 0);\n\ttoken.content = '';\n\ttoken.attrs = [{for: id}];\n\treturn token;\n}\n\nfunction isInline(token) { return token.type === 'inline'; }\nfunction isParagraph(token) { return token.type === 'paragraph_open'; }\nfunction isListItem(token) { return token.type === 'list_item_open'; }\n\nfunction startsWithTodoMarkdown(token) {\n\t// leading whitespace in a list item is already trimmed off by markdown-it\n\treturn token.content.indexOf('[ ] ') === 0 || token.content.indexOf('[x] ') === 0 || token.content.indexOf('[X] ') === 0;\n}\n","// fences (``` lang, ~~~ lang)\n\n'use strict';\n\n\nmodule.exports = function fence(state, startLine, endLine, silent) {\n var marker, len, params, nextLine, mem, token, markup,\n haveEndMarker = false,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (pos + 3 > max) { return false; }\n\n marker = state.src.charCodeAt(pos);\n\n if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n return false;\n }\n\n // scan marker length\n mem = pos;\n pos = state.skipChars(pos, marker);\n\n len = pos - mem;\n\n if (len < 3) { return false; }\n\n markup = state.src.slice(mem, pos);\n params = state.src.slice(pos, max);\n\n if (params.indexOf('`') >= 0) { return false; }\n\n // Since start is found, we can report success here in validation mode\n if (silent) { return true; }\n\n // search end of block\n nextLine = startLine;\n\n for (;;) {\n nextLine++;\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break;\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break;\n }\n\n if (state.src.charCodeAt(pos) !== marker) { continue; }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue;\n }\n\n pos = state.skipChars(pos, marker);\n\n // closing code fence must be at least as long as the opening one\n if (pos - mem < len) { continue; }\n\n // make sure tail has spaces only\n pos = state.skipSpaces(pos);\n\n if (pos < max) { continue; }\n\n haveEndMarker = true;\n // found!\n break;\n }\n\n // If a fence has heading spaces, they should be removed from its inner block\n len = state.sCount[startLine];\n\n state.line = nextLine + (haveEndMarker ? 1 : 0);\n\n token = state.push('fence', 'code', 0);\n token.info = params;\n token.content = state.getLines(startLine + 1, nextLine, len, true);\n token.markup = markup;\n token.map = [ startLine, state.line ];\n\n return true;\n};\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\n\n//package mp3;\n\n/**\n * Variables used for --nspsytune\n *\n * @author Ken\n *\n */\nfunction NsPsy() {\n this.last_en_subshort = new_float_n([4, 9]);\n this.lastAttacks = new_int(4);\n this.pefirbuf = new_float(19);\n this.longfact = new_float(Encoder.SBMAX_l);\n this.shortfact = new_float(Encoder.SBMAX_s);\n\n /**\n * short block tuning\n */\n this.attackthre = 0.;\n this.attackthre_s = 0.;\n}\n\nmodule.exports = NsPsy;\n","// Process html tags\n\n'use strict';\n\n\nvar HTML_TAG_RE = require('../common/html_re').HTML_TAG_RE;\n\n\nfunction isLetter(ch) {\n /*eslint no-bitwise:0*/\n var lc = ch | 0x20; // to lower case\n return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */);\n}\n\n\nmodule.exports = function html_inline(state, silent) {\n var ch, match, max, token,\n pos = state.pos;\n\n if (!state.md.options.html) { return false; }\n\n // Check start\n max = state.posMax;\n if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||\n pos + 2 >= max) {\n return false;\n }\n\n // Quick fail on second char\n ch = state.src.charCodeAt(pos + 1);\n if (ch !== 0x21/* ! */ &&\n ch !== 0x3F/* ? */ &&\n ch !== 0x2F/* / */ &&\n !isLetter(ch)) {\n return false;\n }\n\n match = state.src.slice(pos).match(HTML_TAG_RE);\n if (!match) { return false; }\n\n if (!silent) {\n token = state.push('html_inline', '', 0);\n token.content = state.src.slice(pos, pos + match[0].length);\n }\n state.pos += match[0].length;\n return true;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","/* eslint no-console:0 */\n/**\n * This is the main entry point for KaTeX. Here, we expose functions for\n * rendering expressions either to DOM nodes or to markup strings.\n *\n * We also expose the ParseError class to check if errors thrown from KaTeX are\n * errors in the expression, or errors in javascript handling.\n */\n\nvar ParseError = require(\"./src/ParseError\");\nvar Settings = require(\"./src/Settings\");\n\nvar buildTree = require(\"./src/buildTree\");\nvar parseTree = require(\"./src/parseTree\");\nvar utils = require(\"./src/utils\");\n\n/**\n * Parse and build an expression, and place that expression in the DOM node\n * given.\n */\nvar render = function(expression, baseNode, options) {\n utils.clearNode(baseNode);\n\n var settings = new Settings(options);\n\n var tree = parseTree(expression, settings);\n var node = buildTree(tree, expression, settings).toNode();\n\n baseNode.appendChild(node);\n};\n\n// KaTeX's styles don't work properly in quirks mode. Print out an error, and\n// disable rendering.\nif (typeof document !== \"undefined\") {\n if (document.compatMode !== \"CSS1Compat\") {\n typeof console !== \"undefined\" && console.warn(\n \"Warning: KaTeX doesn't work in quirks mode. Make sure your \" +\n \"website has a suitable doctype.\");\n\n render = function() {\n throw new ParseError(\"KaTeX doesn't work in quirks mode.\");\n };\n }\n}\n\n/**\n * Parse and build an expression, and return the markup for that.\n */\nvar renderToString = function(expression, options) {\n var settings = new Settings(options);\n\n var tree = parseTree(expression, settings);\n return buildTree(tree, expression, settings).toMarkup();\n};\n\n/**\n * Parse an expression and return the parse tree.\n */\nvar generateParseTree = function(expression, options) {\n var settings = new Settings(options);\n return parseTree(expression, settings);\n};\n\nmodule.exports = {\n render: render,\n renderToString: renderToString,\n /**\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __parse: generateParseTree,\n ParseError: ParseError,\n};\n","// Process *this* and _that_\n//\n'use strict';\n\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nmodule.exports.tokenize = function emphasis(state, silent) {\n var i, scanned, token,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) { return false; }\n\n if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false; }\n\n scanned = state.scanDelims(state.pos, marker === 0x2A);\n\n for (i = 0; i < scanned.length; i++) {\n token = state.push('text', '', 0);\n token.content = String.fromCharCode(marker);\n\n state.delimiters.push({\n // Char code of the starting marker (number).\n //\n marker: marker,\n\n // An amount of characters before this one that's equivalent to\n // current one. In plain English: if this delimiter does not open\n // an emphasis, neither do previous `jump` characters.\n //\n // Used to skip sequences like \"*****\" in one step, for 1st asterisk\n // value will be 0, for 2nd it's 1 and so on.\n //\n jump: i,\n\n // A position of the token this delimiter corresponds to.\n //\n token: state.tokens.length - 1,\n\n // Token level.\n //\n level: state.level,\n\n // If this delimiter is matched as a valid opener, `end` will be\n // equal to its position, otherwise it's `-1`.\n //\n end: -1,\n\n // Boolean flags that determine if this delimiter could open or close\n // an emphasis.\n //\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n\n return true;\n};\n\n\n// Walk through delimiter list and replace text tokens with tags\n//\nmodule.exports.postProcess = function emphasis(state) {\n var i,\n startDelim,\n endDelim,\n token,\n ch,\n isStrong,\n delimiters = state.delimiters,\n max = state.delimiters.length;\n\n for (i = 0; i < max; i++) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {\n continue;\n }\n\n // Process only opening markers\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n\n // If the next delimiter has the same marker and is adjacent to this one,\n // merge those into one strong delimiter.\n //\n // `whatever` -> `whatever`\n //\n isStrong = i + 1 < max &&\n delimiters[i + 1].end === startDelim.end - 1 &&\n delimiters[i + 1].token === startDelim.token + 1 &&\n delimiters[startDelim.end - 1].token === endDelim.token - 1 &&\n delimiters[i + 1].marker === startDelim.marker;\n\n ch = String.fromCharCode(startDelim.marker);\n\n token = state.tokens[startDelim.token];\n token.type = isStrong ? 'strong_open' : 'em_open';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = 1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n\n token = state.tokens[endDelim.token];\n token.type = isStrong ? 'strong_close' : 'em_close';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = -1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n\n if (isStrong) {\n state.tokens[delimiters[i + 1].token].content = '';\n state.tokens[delimiters[startDelim.end - 1].token].content = '';\n i++;\n }\n }\n};\n","/* eslint no-console:0 */\n/**\n * This module contains general functions that can be used for building\n * different kinds of domTree nodes in a consistent manner.\n */\n\nvar domTree = require(\"./domTree\");\nvar fontMetrics = require(\"./fontMetrics\");\nvar symbols = require(\"./symbols\");\nvar utils = require(\"./utils\");\n\nvar greekCapitals = [\n \"\\\\Gamma\",\n \"\\\\Delta\",\n \"\\\\Theta\",\n \"\\\\Lambda\",\n \"\\\\Xi\",\n \"\\\\Pi\",\n \"\\\\Sigma\",\n \"\\\\Upsilon\",\n \"\\\\Phi\",\n \"\\\\Psi\",\n \"\\\\Omega\",\n];\n\nvar dotlessLetters = [\n \"\\u0131\", // dotless i, \\imath\n \"\\u0237\", // dotless j, \\jmath\n];\n\n/**\n * Makes a symbolNode after translation via the list of symbols in symbols.js.\n * Correctly pulls out metrics for the character, and optionally takes a list of\n * classes to be attached to the node.\n */\nvar makeSymbol = function(value, style, mode, color, classes) {\n // Replace the value with its replaced value from symbol.js\n if (symbols[mode][value] && symbols[mode][value].replace) {\n value = symbols[mode][value].replace;\n }\n\n var metrics = fontMetrics.getCharacterMetrics(value, style);\n\n var symbolNode;\n if (metrics) {\n symbolNode = new domTree.symbolNode(\n value, metrics.height, metrics.depth, metrics.italic, metrics.skew,\n classes);\n } else {\n // TODO(emily): Figure out a good way to only print this in development\n typeof console !== \"undefined\" && console.warn(\n \"No character metrics for '\" + value + \"' in style '\" +\n style + \"'\");\n symbolNode = new domTree.symbolNode(value, 0, 0, 0, 0, classes);\n }\n\n if (color) {\n symbolNode.style.color = color;\n }\n\n return symbolNode;\n};\n\n/**\n * Makes a symbol in Main-Regular or AMS-Regular.\n * Used for rel, bin, open, close, inner, and punct.\n */\nvar mathsym = function(value, mode, color, classes) {\n // Decide what font to render the symbol in by its entry in the symbols\n // table.\n // Have a special case for when the value = \\ because the \\ is used as a\n // textord in unsupported command errors but cannot be parsed as a regular\n // text ordinal and is therefore not present as a symbol in the symbols\n // table for text\n if (value === \"\\\\\" || symbols[mode][value].font === \"main\") {\n return makeSymbol(value, \"Main-Regular\", mode, color, classes);\n } else {\n return makeSymbol(\n value, \"AMS-Regular\", mode, color, classes.concat([\"amsrm\"]));\n }\n};\n\n/**\n * Makes a symbol in the default font for mathords and textords.\n */\nvar mathDefault = function(value, mode, color, classes, type) {\n if (type === \"mathord\") {\n return mathit(value, mode, color, classes);\n } else if (type === \"textord\") {\n return makeSymbol(\n value, \"Main-Regular\", mode, color, classes.concat([\"mathrm\"]));\n } else {\n throw new Error(\"unexpected type: \" + type + \" in mathDefault\");\n }\n};\n\n/**\n * Makes a symbol in the italic math font.\n */\nvar mathit = function(value, mode, color, classes) {\n if (/[0-9]/.test(value.charAt(0)) ||\n // glyphs for \\imath and \\jmath do not exist in Math-Italic so we\n // need to use Main-Italic instead\n utils.contains(dotlessLetters, value) ||\n utils.contains(greekCapitals, value)) {\n return makeSymbol(\n value, \"Main-Italic\", mode, color, classes.concat([\"mainit\"]));\n } else {\n return makeSymbol(\n value, \"Math-Italic\", mode, color, classes.concat([\"mathit\"]));\n }\n};\n\n/**\n * Makes either a mathord or textord in the correct font and color.\n */\nvar makeOrd = function(group, options, type) {\n var mode = group.mode;\n var value = group.value;\n if (symbols[mode][value] && symbols[mode][value].replace) {\n value = symbols[mode][value].replace;\n }\n\n var classes = [\"mord\"];\n var color = options.getColor();\n\n var font = options.font;\n if (font) {\n if (font === \"mathit\" || utils.contains(dotlessLetters, value)) {\n return mathit(value, mode, color, classes);\n } else {\n var fontName = fontMap[font].fontName;\n if (fontMetrics.getCharacterMetrics(value, fontName)) {\n return makeSymbol(\n value, fontName, mode, color, classes.concat([font]));\n } else {\n return mathDefault(value, mode, color, classes, type);\n }\n }\n } else {\n return mathDefault(value, mode, color, classes, type);\n }\n};\n\n/**\n * Calculate the height, depth, and maxFontSize of an element based on its\n * children.\n */\nvar sizeElementFromChildren = function(elem) {\n var height = 0;\n var depth = 0;\n var maxFontSize = 0;\n\n if (elem.children) {\n for (var i = 0; i < elem.children.length; i++) {\n if (elem.children[i].height > height) {\n height = elem.children[i].height;\n }\n if (elem.children[i].depth > depth) {\n depth = elem.children[i].depth;\n }\n if (elem.children[i].maxFontSize > maxFontSize) {\n maxFontSize = elem.children[i].maxFontSize;\n }\n }\n }\n\n elem.height = height;\n elem.depth = depth;\n elem.maxFontSize = maxFontSize;\n};\n\n/**\n * Makes a span with the given list of classes, list of children, and color.\n */\nvar makeSpan = function(classes, children, color) {\n var span = new domTree.span(classes, children);\n\n sizeElementFromChildren(span);\n\n if (color) {\n span.style.color = color;\n }\n\n return span;\n};\n\n/**\n * Makes a document fragment with the given list of children.\n */\nvar makeFragment = function(children) {\n var fragment = new domTree.documentFragment(children);\n\n sizeElementFromChildren(fragment);\n\n return fragment;\n};\n\n/**\n * Makes an element placed in each of the vlist elements to ensure that each\n * element has the same max font size. To do this, we create a zero-width space\n * with the correct font size.\n */\nvar makeFontSizer = function(options, fontSize) {\n var fontSizeInner = makeSpan([], [new domTree.symbolNode(\"\\u200b\")]);\n fontSizeInner.style.fontSize =\n (fontSize / options.style.sizeMultiplier) + \"em\";\n\n var fontSizer = makeSpan(\n [\"fontsize-ensurer\", \"reset-\" + options.size, \"size5\"],\n [fontSizeInner]);\n\n return fontSizer;\n};\n\n/**\n * Makes a vertical list by stacking elements and kerns on top of each other.\n * Allows for many different ways of specifying the positioning method.\n *\n * Arguments:\n * - children: A list of child or kern nodes to be stacked on top of each other\n * (i.e. the first element will be at the bottom, and the last at\n * the top). Element nodes are specified as\n * {type: \"elem\", elem: node}\n * while kern nodes are specified as\n * {type: \"kern\", size: size}\n * - positionType: The method by which the vlist should be positioned. Valid\n * values are:\n * - \"individualShift\": The children list only contains elem\n * nodes, and each node contains an extra\n * \"shift\" value of how much it should be\n * shifted (note that shifting is always\n * moving downwards). positionData is\n * ignored.\n * - \"top\": The positionData specifies the topmost point of\n * the vlist (note this is expected to be a height,\n * so positive values move up)\n * - \"bottom\": The positionData specifies the bottommost point\n * of the vlist (note this is expected to be a\n * depth, so positive values move down\n * - \"shift\": The vlist will be positioned such that its\n * baseline is positionData away from the baseline\n * of the first child. Positive values move\n * downwards.\n * - \"firstBaseline\": The vlist will be positioned such that\n * its baseline is aligned with the\n * baseline of the first child.\n * positionData is ignored. (this is\n * equivalent to \"shift\" with\n * positionData=0)\n * - positionData: Data used in different ways depending on positionType\n * - options: An Options object\n *\n */\nvar makeVList = function(children, positionType, positionData, options) {\n var depth;\n var currPos;\n var i;\n if (positionType === \"individualShift\") {\n var oldChildren = children;\n children = [oldChildren[0]];\n\n // Add in kerns to the list of children to get each element to be\n // shifted to the correct specified shift\n depth = -oldChildren[0].shift - oldChildren[0].elem.depth;\n currPos = depth;\n for (i = 1; i < oldChildren.length; i++) {\n var diff = -oldChildren[i].shift - currPos -\n oldChildren[i].elem.depth;\n var size = diff -\n (oldChildren[i - 1].elem.height +\n oldChildren[i - 1].elem.depth);\n\n currPos = currPos + diff;\n\n children.push({type: \"kern\", size: size});\n children.push(oldChildren[i]);\n }\n } else if (positionType === \"top\") {\n // We always start at the bottom, so calculate the bottom by adding up\n // all the sizes\n var bottom = positionData;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"kern\") {\n bottom -= children[i].size;\n } else {\n bottom -= children[i].elem.height + children[i].elem.depth;\n }\n }\n depth = bottom;\n } else if (positionType === \"bottom\") {\n depth = -positionData;\n } else if (positionType === \"shift\") {\n depth = -children[0].elem.depth - positionData;\n } else if (positionType === \"firstBaseline\") {\n depth = -children[0].elem.depth;\n } else {\n depth = 0;\n }\n\n // Make the fontSizer\n var maxFontSize = 0;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"elem\") {\n maxFontSize = Math.max(maxFontSize, children[i].elem.maxFontSize);\n }\n }\n var fontSizer = makeFontSizer(options, maxFontSize);\n\n // Create a new list of actual children at the correct offsets\n var realChildren = [];\n currPos = depth;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"kern\") {\n currPos += children[i].size;\n } else {\n var child = children[i].elem;\n\n var shift = -child.depth - currPos;\n currPos += child.height + child.depth;\n\n var childWrap = makeSpan([], [fontSizer, child]);\n childWrap.height -= shift;\n childWrap.depth += shift;\n childWrap.style.top = shift + \"em\";\n\n realChildren.push(childWrap);\n }\n }\n\n // Add in an element at the end with no offset to fix the calculation of\n // baselines in some browsers (namely IE, sometimes safari)\n var baselineFix = makeSpan(\n [\"baseline-fix\"], [fontSizer, new domTree.symbolNode(\"\\u200b\")]);\n realChildren.push(baselineFix);\n\n var vlist = makeSpan([\"vlist\"], realChildren);\n // Fix the final height and depth, in case there were kerns at the ends\n // since the makeSpan calculation won't take that in to account.\n vlist.height = Math.max(currPos, vlist.height);\n vlist.depth = Math.max(-depth, vlist.depth);\n return vlist;\n};\n\n// A table of size -> font size for the different sizing functions\nvar sizingMultiplier = {\n size1: 0.5,\n size2: 0.7,\n size3: 0.8,\n size4: 0.9,\n size5: 1.0,\n size6: 1.2,\n size7: 1.44,\n size8: 1.73,\n size9: 2.07,\n size10: 2.49,\n};\n\n// A map of spacing functions to their attributes, like size and corresponding\n// CSS class\nvar spacingFunctions = {\n \"\\\\qquad\": {\n size: \"2em\",\n className: \"qquad\",\n },\n \"\\\\quad\": {\n size: \"1em\",\n className: \"quad\",\n },\n \"\\\\enspace\": {\n size: \"0.5em\",\n className: \"enspace\",\n },\n \"\\\\;\": {\n size: \"0.277778em\",\n className: \"thickspace\",\n },\n \"\\\\:\": {\n size: \"0.22222em\",\n className: \"mediumspace\",\n },\n \"\\\\,\": {\n size: \"0.16667em\",\n className: \"thinspace\",\n },\n \"\\\\!\": {\n size: \"-0.16667em\",\n className: \"negativethinspace\",\n },\n};\n\n/**\n * Maps TeX font commands to objects containing:\n * - variant: string used for \"mathvariant\" attribute in buildMathML.js\n * - fontName: the \"style\" parameter to fontMetrics.getCharacterMetrics\n */\n// A map between tex font commands an MathML mathvariant attribute values\nvar fontMap = {\n // styles\n \"mathbf\": {\n variant: \"bold\",\n fontName: \"Main-Bold\",\n },\n \"mathrm\": {\n variant: \"normal\",\n fontName: \"Main-Regular\",\n },\n\n // \"mathit\" is missing because it requires the use of two fonts: Main-Italic\n // and Math-Italic. This is handled by a special case in makeOrd which ends\n // up calling mathit.\n\n // families\n \"mathbb\": {\n variant: \"double-struck\",\n fontName: \"AMS-Regular\",\n },\n \"mathcal\": {\n variant: \"script\",\n fontName: \"Caligraphic-Regular\",\n },\n \"mathfrak\": {\n variant: \"fraktur\",\n fontName: \"Fraktur-Regular\",\n },\n \"mathscr\": {\n variant: \"script\",\n fontName: \"Script-Regular\",\n },\n \"mathsf\": {\n variant: \"sans-serif\",\n fontName: \"SansSerif-Regular\",\n },\n \"mathtt\": {\n variant: \"monospace\",\n fontName: \"Typewriter-Regular\",\n },\n};\n\nmodule.exports = {\n fontMap: fontMap,\n makeSymbol: makeSymbol,\n mathsym: mathsym,\n makeSpan: makeSpan,\n makeFragment: makeFragment,\n makeVList: makeVList,\n makeOrd: makeOrd,\n sizingMultiplier: sizingMultiplier,\n spacingFunctions: spacingFunctions,\n};\n","/**\n * The resulting parse tree nodes of the parse tree.\n */\nfunction ParseNode(type, value, mode) {\n this.type = type;\n this.value = value;\n this.mode = mode;\n}\n\nmodule.exports = {\n ParseNode: ParseNode,\n};\n\n","module.exports=/[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/","/* eslint no-unused-vars:0 */\n\nvar Style = require(\"./Style\");\n\n/**\n * This file contains metrics regarding fonts and individual symbols. The sigma\n * and xi variables, as well as the metricMap map contain data extracted from\n * TeX, TeX font metrics, and the TTF files. These data are then exposed via the\n * `metrics` variable and the getCharacterMetrics function.\n */\n\n// These font metrics are extracted from TeX by using\n// \\font\\a=cmmi10\n// \\showthe\\fontdimenX\\a\n// where X is the corresponding variable number. These correspond to the font\n// parameters of the symbol fonts. In TeX, there are actually three sets of\n// dimensions, one for each of textstyle, scriptstyle, and scriptscriptstyle,\n// but we only use the textstyle ones, and scale certain dimensions accordingly.\n// See the TeXbook, page 441.\nvar sigma1 = 0.025;\nvar sigma2 = 0;\nvar sigma3 = 0;\nvar sigma4 = 0;\nvar sigma5 = 0.431;\nvar sigma6 = 1;\nvar sigma7 = 0;\nvar sigma8 = 0.677;\nvar sigma9 = 0.394;\nvar sigma10 = 0.444;\nvar sigma11 = 0.686;\nvar sigma12 = 0.345;\nvar sigma13 = 0.413;\nvar sigma14 = 0.363;\nvar sigma15 = 0.289;\nvar sigma16 = 0.150;\nvar sigma17 = 0.247;\nvar sigma18 = 0.386;\nvar sigma19 = 0.050;\nvar sigma20 = 2.390;\nvar sigma21 = 1.01;\nvar sigma21Script = 0.81;\nvar sigma21ScriptScript = 0.71;\nvar sigma22 = 0.250;\n\n// These font metrics are extracted from TeX by using\n// \\font\\a=cmex10\n// \\showthe\\fontdimenX\\a\n// where X is the corresponding variable number. These correspond to the font\n// parameters of the extension fonts (family 3). See the TeXbook, page 441.\nvar xi1 = 0;\nvar xi2 = 0;\nvar xi3 = 0;\nvar xi4 = 0;\nvar xi5 = 0.431;\nvar xi6 = 1;\nvar xi7 = 0;\nvar xi8 = 0.04;\nvar xi9 = 0.111;\nvar xi10 = 0.166;\nvar xi11 = 0.2;\nvar xi12 = 0.6;\nvar xi13 = 0.1;\n\n// This value determines how large a pt is, for metrics which are defined in\n// terms of pts.\n// This value is also used in katex.less; if you change it make sure the values\n// match.\nvar ptPerEm = 10.0;\n\n// The space between adjacent `|` columns in an array definition. From\n// `\\showthe\\doublerulesep` in LaTeX.\nvar doubleRuleSep = 2.0 / ptPerEm;\n\n/**\n * This is just a mapping from common names to real metrics\n */\nvar metrics = {\n xHeight: sigma5,\n quad: sigma6,\n num1: sigma8,\n num2: sigma9,\n num3: sigma10,\n denom1: sigma11,\n denom2: sigma12,\n sup1: sigma13,\n sup2: sigma14,\n sup3: sigma15,\n sub1: sigma16,\n sub2: sigma17,\n supDrop: sigma18,\n subDrop: sigma19,\n axisHeight: sigma22,\n defaultRuleThickness: xi8,\n bigOpSpacing1: xi9,\n bigOpSpacing2: xi10,\n bigOpSpacing3: xi11,\n bigOpSpacing4: xi12,\n bigOpSpacing5: xi13,\n ptPerEm: ptPerEm,\n emPerEx: sigma5 / sigma6,\n doubleRuleSep: doubleRuleSep,\n\n // TODO(alpert): Missing parallel structure here. We should probably add\n // style-specific metrics for all of these.\n delim1: sigma20,\n getDelim2: function(style) {\n if (style.size === Style.TEXT.size) {\n return sigma21;\n } else if (style.size === Style.SCRIPT.size) {\n return sigma21Script;\n } else if (style.size === Style.SCRIPTSCRIPT.size) {\n return sigma21ScriptScript;\n }\n throw new Error(\"Unexpected style size: \" + style.size);\n },\n};\n\n// This map contains a mapping from font name and character code to character\n// metrics, including height, depth, italic correction, and skew (kern from the\n// character to the corresponding \\skewchar)\n// This map is generated via `make metrics`. It should not be changed manually.\nvar metricMap = require(\"./fontMetricsData\");\n\n/**\n * This function is a convenience function for looking up information in the\n * metricMap table. It takes a character as a string, and a style.\n *\n * Note: the `width` property may be undefined if fontMetricsData.js wasn't\n * built using `Make extended_metrics`.\n */\nvar getCharacterMetrics = function(character, style) {\n var metrics = metricMap[style][character.charCodeAt(0)];\n if (metrics) {\n return {\n depth: metrics[0],\n height: metrics[1],\n italic: metrics[2],\n skew: metrics[3],\n width: metrics[4],\n };\n }\n};\n\nmodule.exports = {\n metrics: metrics,\n getCharacterMetrics: getCharacterMetrics,\n};\n","// Process [link]( \"stuff\")\n\n'use strict';\n\nvar parseLinkLabel = require('../helpers/parse_link_label');\nvar parseLinkDestination = require('../helpers/parse_link_destination');\nvar parseLinkTitle = require('../helpers/parse_link_title');\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function link(state, silent) {\n var attrs,\n code,\n label,\n labelEnd,\n labelStart,\n pos,\n res,\n ref,\n title,\n token,\n href = '',\n oldPos = state.pos,\n max = state.posMax,\n start = state.pos;\n\n if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false; }\n\n labelStart = state.pos + 1;\n labelEnd = parseLinkLabel(state, state.pos, true);\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false; }\n\n pos = labelEnd + 1;\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n if (pos >= max) { return false; }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos;\n res = parseLinkDestination(state.src, pos, state.posMax);\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = parseLinkTitle(state.src, pos, state.posMax);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n state.pos = oldPos;\n return false;\n }\n pos++;\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false; }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1;\n pos = parseLinkLabel(state, pos);\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd); }\n\n ref = state.env.references[normalizeReference(label)];\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n href = ref.href;\n title = ref.title;\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n state.pos = labelStart;\n state.posMax = labelEnd;\n\n token = state.push('link_open', 'a', 1);\n token.attrs = attrs = [ [ 'href', href ] ];\n if (title) {\n attrs.push([ 'title', title ]);\n }\n\n state.md.inline.tokenize(state);\n\n token = state.push('link_close', 'a', -1);\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","'use strict';\n\n\nmodule.exports = function ins_plugin(md) {\n // Insert each marker as a separate text token, and add it to delimiter list\n //\n function tokenize(state, silent) {\n var i, scanned, token, len, ch,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) { return false; }\n\n if (marker !== 0x2B/* + */) { return false; }\n\n scanned = state.scanDelims(state.pos, true);\n len = scanned.length;\n ch = String.fromCharCode(marker);\n\n if (len < 2) { return false; }\n\n if (len % 2) {\n token = state.push('text', '', 0);\n token.content = ch;\n len--;\n }\n\n for (i = 0; i < len; i += 2) {\n token = state.push('text', '', 0);\n token.content = ch + ch;\n\n state.delimiters.push({\n marker: marker,\n jump: i,\n token: state.tokens.length - 1,\n level: state.level,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n\n return true;\n }\n\n\n // Walk through delimiter list and replace text tokens with tags\n //\n function postProcess(state) {\n var i, j,\n startDelim,\n endDelim,\n token,\n loneMarkers = [],\n delimiters = state.delimiters,\n max = state.delimiters.length;\n\n for (i = 0; i < max; i++) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x2B/* + */) {\n continue;\n }\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n\n token = state.tokens[startDelim.token];\n token.type = 'ins_open';\n token.tag = 'ins';\n token.nesting = 1;\n token.markup = '++';\n token.content = '';\n\n token = state.tokens[endDelim.token];\n token.type = 'ins_close';\n token.tag = 'ins';\n token.nesting = -1;\n token.markup = '++';\n token.content = '';\n\n if (state.tokens[endDelim.token - 1].type === 'text' &&\n state.tokens[endDelim.token - 1].content === '+') {\n\n loneMarkers.push(endDelim.token - 1);\n }\n }\n\n // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n while (loneMarkers.length) {\n i = loneMarkers.pop();\n j = i + 1;\n\n while (j < state.tokens.length && state.tokens[j].type === 'ins_close') {\n j++;\n }\n\n j--;\n\n if (i !== j) {\n token = state.tokens[j];\n state.tokens[j] = state.tokens[i];\n state.tokens[i] = token;\n }\n }\n }\n\n md.inline.ruler.before('emphasis', 'ins', tokenize);\n md.inline.ruler2.before('emphasis', 'ins', postProcess);\n};\n","/* eslint no-console:0 */\n/**\n * This file does the main work of building a domTree structure from a parse\n * tree. The entry point is the `buildHTML` function, which takes a parse tree.\n * Then, the buildExpression, buildGroup, and various groupTypes functions are\n * called, to produce a final HTML tree.\n */\n\nvar ParseError = require(\"./ParseError\");\nvar Style = require(\"./Style\");\n\nvar buildCommon = require(\"./buildCommon\");\nvar delimiter = require(\"./delimiter\");\nvar domTree = require(\"./domTree\");\nvar fontMetrics = require(\"./fontMetrics\");\nvar utils = require(\"./utils\");\n\nvar makeSpan = buildCommon.makeSpan;\n\n/**\n * Take a list of nodes, build them in order, and return a list of the built\n * nodes. This function handles the `prev` node correctly, and passes the\n * previous element from the list as the prev of the next element.\n */\nvar buildExpression = function(expression, options, prev) {\n var groups = [];\n for (var i = 0; i < expression.length; i++) {\n var group = expression[i];\n groups.push(buildGroup(group, options, prev));\n prev = group;\n }\n return groups;\n};\n\n// List of types used by getTypeOfGroup,\n// see https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types\nvar groupToType = {\n mathord: \"mord\",\n textord: \"mord\",\n bin: \"mbin\",\n rel: \"mrel\",\n text: \"mord\",\n open: \"mopen\",\n close: \"mclose\",\n inner: \"minner\",\n genfrac: \"mord\",\n array: \"mord\",\n spacing: \"mord\",\n punct: \"mpunct\",\n ordgroup: \"mord\",\n op: \"mop\",\n katex: \"mord\",\n overline: \"mord\",\n underline: \"mord\",\n rule: \"mord\",\n leftright: \"minner\",\n sqrt: \"mord\",\n accent: \"mord\",\n};\n\n/**\n * Gets the final math type of an expression, given its group type. This type is\n * used to determine spacing between elements, and affects bin elements by\n * causing them to change depending on what types are around them. This type\n * must be attached to the outermost node of an element as a CSS class so that\n * spacing with its surrounding elements works correctly.\n *\n * Some elements can be mapped one-to-one from group type to math type, and\n * those are listed in the `groupToType` table.\n *\n * Others (usually elements that wrap around other elements) often have\n * recursive definitions, and thus call `getTypeOfGroup` on their inner\n * elements.\n */\nvar getTypeOfGroup = function(group) {\n if (group == null) {\n // Like when typesetting $^3$\n return groupToType.mathord;\n } else if (group.type === \"supsub\") {\n return getTypeOfGroup(group.value.base);\n } else if (group.type === \"llap\" || group.type === \"rlap\") {\n return getTypeOfGroup(group.value);\n } else if (group.type === \"color\") {\n return getTypeOfGroup(group.value.value);\n } else if (group.type === \"sizing\") {\n return getTypeOfGroup(group.value.value);\n } else if (group.type === \"styling\") {\n return getTypeOfGroup(group.value.value);\n } else if (group.type === \"delimsizing\") {\n return groupToType[group.value.delimType];\n } else {\n return groupToType[group.type];\n }\n};\n\n/**\n * Sometimes, groups perform special rules when they have superscripts or\n * subscripts attached to them. This function lets the `supsub` group know that\n * its inner element should handle the superscripts and subscripts instead of\n * handling them itself.\n */\nvar shouldHandleSupSub = function(group, options) {\n if (!group) {\n return false;\n } else if (group.type === \"op\") {\n // Operators handle supsubs differently when they have limits\n // (e.g. `\\displaystyle\\sum_2^3`)\n return group.value.limits &&\n (options.style.size === Style.DISPLAY.size ||\n group.value.alwaysHandleSupSub);\n } else if (group.type === \"accent\") {\n return isCharacterBox(group.value.base);\n } else {\n return null;\n }\n};\n\n/**\n * Sometimes we want to pull out the innermost element of a group. In most\n * cases, this will just be the group itself, but when ordgroups and colors have\n * a single element, we want to pull that out.\n */\nvar getBaseElem = function(group) {\n if (!group) {\n return false;\n } else if (group.type === \"ordgroup\") {\n if (group.value.length === 1) {\n return getBaseElem(group.value[0]);\n } else {\n return group;\n }\n } else if (group.type === \"color\") {\n if (group.value.value.length === 1) {\n return getBaseElem(group.value.value[0]);\n } else {\n return group;\n }\n } else {\n return group;\n }\n};\n\n/**\n * TeXbook algorithms often reference \"character boxes\", which are simply groups\n * with a single character in them. To decide if something is a character box,\n * we find its innermost group, and see if it is a single character.\n */\nvar isCharacterBox = function(group) {\n var baseElem = getBaseElem(group);\n\n // These are all they types of groups which hold single characters\n return baseElem.type === \"mathord\" ||\n baseElem.type === \"textord\" ||\n baseElem.type === \"bin\" ||\n baseElem.type === \"rel\" ||\n baseElem.type === \"inner\" ||\n baseElem.type === \"open\" ||\n baseElem.type === \"close\" ||\n baseElem.type === \"punct\";\n};\n\nvar makeNullDelimiter = function(options) {\n return makeSpan([\n \"sizing\", \"reset-\" + options.size, \"size5\",\n options.style.reset(), Style.TEXT.cls(),\n \"nulldelimiter\",\n ]);\n};\n\n/**\n * This is a map of group types to the function used to handle that type.\n * Simpler types come at the beginning, while complicated types come afterwards.\n */\nvar groupTypes = {};\n\ngroupTypes.mathord = function(group, options, prev) {\n return buildCommon.makeOrd(group, options, \"mathord\");\n};\n\ngroupTypes.textord = function(group, options, prev) {\n return buildCommon.makeOrd(group, options, \"textord\");\n};\n\ngroupTypes.bin = function(group, options, prev) {\n var className = \"mbin\";\n // Pull out the most recent element. Do some special handling to find\n // things at the end of a \\color group. Note that we don't use the same\n // logic for ordgroups (which count as ords).\n var prevAtom = prev;\n while (prevAtom && prevAtom.type === \"color\") {\n var atoms = prevAtom.value.value;\n prevAtom = atoms[atoms.length - 1];\n }\n // See TeXbook pg. 442-446, Rules 5 and 6, and the text before Rule 19.\n // Here, we determine whether the bin should turn into an ord. We\n // currently only apply Rule 5.\n if (!prev || utils.contains([\"mbin\", \"mopen\", \"mrel\", \"mop\", \"mpunct\"],\n getTypeOfGroup(prevAtom))) {\n group.type = \"textord\";\n className = \"mord\";\n }\n\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [className]);\n};\n\ngroupTypes.rel = function(group, options, prev) {\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [\"mrel\"]);\n};\n\ngroupTypes.open = function(group, options, prev) {\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [\"mopen\"]);\n};\n\ngroupTypes.close = function(group, options, prev) {\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [\"mclose\"]);\n};\n\ngroupTypes.inner = function(group, options, prev) {\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [\"minner\"]);\n};\n\ngroupTypes.punct = function(group, options, prev) {\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [\"mpunct\"]);\n};\n\ngroupTypes.ordgroup = function(group, options, prev) {\n return makeSpan(\n [\"mord\", options.style.cls()],\n buildExpression(group.value, options.reset())\n );\n};\n\ngroupTypes.text = function(group, options, prev) {\n return makeSpan([\"text\", \"mord\", options.style.cls()],\n buildExpression(group.value.body, options.reset()));\n};\n\ngroupTypes.color = function(group, options, prev) {\n var elements = buildExpression(\n group.value.value,\n options.withColor(group.value.color),\n prev\n );\n\n // \\color isn't supposed to affect the type of the elements it contains.\n // To accomplish this, we wrap the results in a fragment, so the inner\n // elements will be able to directly interact with their neighbors. For\n // example, `\\color{red}{2 +} 3` has the same spacing as `2 + 3`\n return new buildCommon.makeFragment(elements);\n};\n\ngroupTypes.supsub = function(group, options, prev) {\n // Superscript and subscripts are handled in the TeXbook on page\n // 445-446, rules 18(a-f).\n\n // Here is where we defer to the inner group if it should handle\n // superscripts and subscripts itself.\n if (shouldHandleSupSub(group.value.base, options)) {\n return groupTypes[group.value.base.type](group, options, prev);\n }\n\n var base = buildGroup(group.value.base, options.reset());\n var supmid;\n var submid;\n var sup;\n var sub;\n\n if (group.value.sup) {\n sup = buildGroup(group.value.sup,\n options.withStyle(options.style.sup()));\n supmid = makeSpan(\n [options.style.reset(), options.style.sup().cls()], [sup]);\n }\n\n if (group.value.sub) {\n sub = buildGroup(group.value.sub,\n options.withStyle(options.style.sub()));\n submid = makeSpan(\n [options.style.reset(), options.style.sub().cls()], [sub]);\n }\n\n // Rule 18a\n var supShift;\n var subShift;\n if (isCharacterBox(group.value.base)) {\n supShift = 0;\n subShift = 0;\n } else {\n supShift = base.height - fontMetrics.metrics.supDrop;\n subShift = base.depth + fontMetrics.metrics.subDrop;\n }\n\n // Rule 18c\n var minSupShift;\n if (options.style === Style.DISPLAY) {\n minSupShift = fontMetrics.metrics.sup1;\n } else if (options.style.cramped) {\n minSupShift = fontMetrics.metrics.sup3;\n } else {\n minSupShift = fontMetrics.metrics.sup2;\n }\n\n // scriptspace is a font-size-independent size, so scale it\n // appropriately\n var multiplier = Style.TEXT.sizeMultiplier *\n options.style.sizeMultiplier;\n var scriptspace =\n (0.5 / fontMetrics.metrics.ptPerEm) / multiplier + \"em\";\n\n var supsub;\n if (!group.value.sup) {\n // Rule 18b\n subShift = Math.max(\n subShift, fontMetrics.metrics.sub1,\n sub.height - 0.8 * fontMetrics.metrics.xHeight);\n\n supsub = buildCommon.makeVList([\n {type: \"elem\", elem: submid},\n ], \"shift\", subShift, options);\n\n supsub.children[0].style.marginRight = scriptspace;\n\n // Subscripts shouldn't be shifted by the base's italic correction.\n // Account for that by shifting the subscript back the appropriate\n // amount. Note we only do this when the base is a single symbol.\n if (base instanceof domTree.symbolNode) {\n supsub.children[0].style.marginLeft = -base.italic + \"em\";\n }\n } else if (!group.value.sub) {\n // Rule 18c, d\n supShift = Math.max(supShift, minSupShift,\n sup.depth + 0.25 * fontMetrics.metrics.xHeight);\n\n supsub = buildCommon.makeVList([\n {type: \"elem\", elem: supmid},\n ], \"shift\", -supShift, options);\n\n supsub.children[0].style.marginRight = scriptspace;\n } else {\n supShift = Math.max(\n supShift, minSupShift,\n sup.depth + 0.25 * fontMetrics.metrics.xHeight);\n subShift = Math.max(subShift, fontMetrics.metrics.sub2);\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness;\n\n // Rule 18e\n if ((supShift - sup.depth) - (sub.height - subShift) <\n 4 * ruleWidth) {\n subShift = 4 * ruleWidth - (supShift - sup.depth) + sub.height;\n var psi = 0.8 * fontMetrics.metrics.xHeight -\n (supShift - sup.depth);\n if (psi > 0) {\n supShift += psi;\n subShift -= psi;\n }\n }\n\n supsub = buildCommon.makeVList([\n {type: \"elem\", elem: submid, shift: subShift},\n {type: \"elem\", elem: supmid, shift: -supShift},\n ], \"individualShift\", null, options);\n\n // See comment above about subscripts not being shifted\n if (base instanceof domTree.symbolNode) {\n supsub.children[0].style.marginLeft = -base.italic + \"em\";\n }\n\n supsub.children[0].style.marginRight = scriptspace;\n supsub.children[1].style.marginRight = scriptspace;\n }\n\n return makeSpan([getTypeOfGroup(group.value.base)],\n [base, supsub]);\n};\n\ngroupTypes.genfrac = function(group, options, prev) {\n // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).\n // Figure out what style this fraction should be in based on the\n // function used\n var fstyle = options.style;\n if (group.value.size === \"display\") {\n fstyle = Style.DISPLAY;\n } else if (group.value.size === \"text\") {\n fstyle = Style.TEXT;\n }\n\n var nstyle = fstyle.fracNum();\n var dstyle = fstyle.fracDen();\n\n var numer = buildGroup(group.value.numer, options.withStyle(nstyle));\n var numerreset = makeSpan([fstyle.reset(), nstyle.cls()], [numer]);\n\n var denom = buildGroup(group.value.denom, options.withStyle(dstyle));\n var denomreset = makeSpan([fstyle.reset(), dstyle.cls()], [denom]);\n\n var ruleWidth;\n if (group.value.hasBarLine) {\n ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n options.style.sizeMultiplier;\n } else {\n ruleWidth = 0;\n }\n\n // Rule 15b\n var numShift;\n var clearance;\n var denomShift;\n if (fstyle.size === Style.DISPLAY.size) {\n numShift = fontMetrics.metrics.num1;\n if (ruleWidth > 0) {\n clearance = 3 * ruleWidth;\n } else {\n clearance = 7 * fontMetrics.metrics.defaultRuleThickness;\n }\n denomShift = fontMetrics.metrics.denom1;\n } else {\n if (ruleWidth > 0) {\n numShift = fontMetrics.metrics.num2;\n clearance = ruleWidth;\n } else {\n numShift = fontMetrics.metrics.num3;\n clearance = 3 * fontMetrics.metrics.defaultRuleThickness;\n }\n denomShift = fontMetrics.metrics.denom2;\n }\n\n var frac;\n if (ruleWidth === 0) {\n // Rule 15c\n var candiateClearance =\n (numShift - numer.depth) - (denom.height - denomShift);\n if (candiateClearance < clearance) {\n numShift += 0.5 * (clearance - candiateClearance);\n denomShift += 0.5 * (clearance - candiateClearance);\n }\n\n frac = buildCommon.makeVList([\n {type: \"elem\", elem: denomreset, shift: denomShift},\n {type: \"elem\", elem: numerreset, shift: -numShift},\n ], \"individualShift\", null, options);\n } else {\n // Rule 15d\n var axisHeight = fontMetrics.metrics.axisHeight;\n\n if ((numShift - numer.depth) - (axisHeight + 0.5 * ruleWidth) <\n clearance) {\n numShift +=\n clearance - ((numShift - numer.depth) -\n (axisHeight + 0.5 * ruleWidth));\n }\n\n if ((axisHeight - 0.5 * ruleWidth) - (denom.height - denomShift) <\n clearance) {\n denomShift +=\n clearance - ((axisHeight - 0.5 * ruleWidth) -\n (denom.height - denomShift));\n }\n\n var mid = makeSpan(\n [options.style.reset(), Style.TEXT.cls(), \"frac-line\"]);\n // Manually set the height of the line because its height is\n // created in CSS\n mid.height = ruleWidth;\n\n var midShift = -(axisHeight - 0.5 * ruleWidth);\n\n frac = buildCommon.makeVList([\n {type: \"elem\", elem: denomreset, shift: denomShift},\n {type: \"elem\", elem: mid, shift: midShift},\n {type: \"elem\", elem: numerreset, shift: -numShift},\n ], \"individualShift\", null, options);\n }\n\n // Since we manually change the style sometimes (with \\dfrac or \\tfrac),\n // account for the possible size change here.\n frac.height *= fstyle.sizeMultiplier / options.style.sizeMultiplier;\n frac.depth *= fstyle.sizeMultiplier / options.style.sizeMultiplier;\n\n // Rule 15e\n var delimSize;\n if (fstyle.size === Style.DISPLAY.size) {\n delimSize = fontMetrics.metrics.delim1;\n } else {\n delimSize = fontMetrics.metrics.getDelim2(fstyle);\n }\n\n var leftDelim;\n var rightDelim;\n if (group.value.leftDelim == null) {\n leftDelim = makeNullDelimiter(options);\n } else {\n leftDelim = delimiter.customSizedDelim(\n group.value.leftDelim, delimSize, true,\n options.withStyle(fstyle), group.mode);\n }\n if (group.value.rightDelim == null) {\n rightDelim = makeNullDelimiter(options);\n } else {\n rightDelim = delimiter.customSizedDelim(\n group.value.rightDelim, delimSize, true,\n options.withStyle(fstyle), group.mode);\n }\n\n return makeSpan(\n [\"mord\", options.style.reset(), fstyle.cls()],\n [leftDelim, makeSpan([\"mfrac\"], [frac]), rightDelim],\n options.getColor());\n};\n\ngroupTypes.array = function(group, options, prev) {\n var r;\n var c;\n var nr = group.value.body.length;\n var nc = 0;\n var body = new Array(nr);\n\n // Horizontal spacing\n var pt = 1 / fontMetrics.metrics.ptPerEm;\n var arraycolsep = 5 * pt; // \\arraycolsep in article.cls\n\n // Vertical spacing\n var baselineskip = 12 * pt; // see size10.clo\n // Default \\arraystretch from lttab.dtx\n // TODO(gagern): may get redefined once we have user-defined macros\n var arraystretch = utils.deflt(group.value.arraystretch, 1);\n var arrayskip = arraystretch * baselineskip;\n var arstrutHeight = 0.7 * arrayskip; // \\strutbox in ltfsstrc.dtx and\n var arstrutDepth = 0.3 * arrayskip; // \\@arstrutbox in lttab.dtx\n\n var totalHeight = 0;\n for (r = 0; r < group.value.body.length; ++r) {\n var inrow = group.value.body[r];\n var height = arstrutHeight; // \\@array adds an \\@arstrut\n var depth = arstrutDepth; // to each tow (via the template)\n\n if (nc < inrow.length) {\n nc = inrow.length;\n }\n\n var outrow = new Array(inrow.length);\n for (c = 0; c < inrow.length; ++c) {\n var elt = buildGroup(inrow[c], options);\n if (depth < elt.depth) {\n depth = elt.depth;\n }\n if (height < elt.height) {\n height = elt.height;\n }\n outrow[c] = elt;\n }\n\n var gap = 0;\n if (group.value.rowGaps[r]) {\n gap = group.value.rowGaps[r].value;\n switch (gap.unit) {\n case \"em\":\n gap = gap.number;\n break;\n case \"ex\":\n gap = gap.number * fontMetrics.metrics.emPerEx;\n break;\n default:\n console.error(\"Can't handle unit \" + gap.unit);\n gap = 0;\n }\n if (gap > 0) { // \\@argarraycr\n gap += arstrutDepth;\n if (depth < gap) {\n depth = gap; // \\@xargarraycr\n }\n gap = 0;\n }\n }\n\n outrow.height = height;\n outrow.depth = depth;\n totalHeight += height;\n outrow.pos = totalHeight;\n totalHeight += depth + gap; // \\@yargarraycr\n body[r] = outrow;\n }\n\n var offset = totalHeight / 2 + fontMetrics.metrics.axisHeight;\n var colDescriptions = group.value.cols || [];\n var cols = [];\n var colSep;\n var colDescrNum;\n for (c = 0, colDescrNum = 0;\n // Continue while either there are more columns or more column\n // descriptions, so trailing separators don't get lost.\n c < nc || colDescrNum < colDescriptions.length;\n ++c, ++colDescrNum) {\n\n var colDescr = colDescriptions[colDescrNum] || {};\n\n var firstSeparator = true;\n while (colDescr.type === \"separator\") {\n // If there is more than one separator in a row, add a space\n // between them.\n if (!firstSeparator) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width =\n fontMetrics.metrics.doubleRuleSep + \"em\";\n cols.push(colSep);\n }\n\n if (colDescr.separator === \"|\") {\n var separator = makeSpan(\n [\"vertical-separator\"],\n []);\n separator.style.height = totalHeight + \"em\";\n separator.style.verticalAlign =\n -(totalHeight - offset) + \"em\";\n\n cols.push(separator);\n } else {\n throw new ParseError(\n \"Invalid separator type: \" + colDescr.separator);\n }\n\n colDescrNum++;\n colDescr = colDescriptions[colDescrNum] || {};\n firstSeparator = false;\n }\n\n if (c >= nc) {\n continue;\n }\n\n var sepwidth;\n if (c > 0 || group.value.hskipBeforeAndAfter) {\n sepwidth = utils.deflt(colDescr.pregap, arraycolsep);\n if (sepwidth !== 0) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = sepwidth + \"em\";\n cols.push(colSep);\n }\n }\n\n var col = [];\n for (r = 0; r < nr; ++r) {\n var row = body[r];\n var elem = row[c];\n if (!elem) {\n continue;\n }\n var shift = row.pos - offset;\n elem.depth = row.depth;\n elem.height = row.height;\n col.push({type: \"elem\", elem: elem, shift: shift});\n }\n\n col = buildCommon.makeVList(col, \"individualShift\", null, options);\n col = makeSpan(\n [\"col-align-\" + (colDescr.align || \"c\")],\n [col]);\n cols.push(col);\n\n if (c < nc - 1 || group.value.hskipBeforeAndAfter) {\n sepwidth = utils.deflt(colDescr.postgap, arraycolsep);\n if (sepwidth !== 0) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = sepwidth + \"em\";\n cols.push(colSep);\n }\n }\n }\n body = makeSpan([\"mtable\"], cols);\n return makeSpan([\"mord\"], [body], options.getColor());\n};\n\ngroupTypes.spacing = function(group, options, prev) {\n if (group.value === \"\\\\ \" || group.value === \"\\\\space\" ||\n group.value === \" \" || group.value === \"~\") {\n // Spaces are generated by adding an actual space. Each of these\n // things has an entry in the symbols table, so these will be turned\n // into appropriate outputs.\n return makeSpan(\n [\"mord\", \"mspace\"],\n [buildCommon.mathsym(group.value, group.mode)]\n );\n } else {\n // Other kinds of spaces are of arbitrary width. We use CSS to\n // generate these.\n return makeSpan(\n [\"mord\", \"mspace\",\n buildCommon.spacingFunctions[group.value].className]);\n }\n};\n\ngroupTypes.llap = function(group, options, prev) {\n var inner = makeSpan(\n [\"inner\"], [buildGroup(group.value.body, options.reset())]);\n var fix = makeSpan([\"fix\"], []);\n return makeSpan(\n [\"llap\", options.style.cls()], [inner, fix]);\n};\n\ngroupTypes.rlap = function(group, options, prev) {\n var inner = makeSpan(\n [\"inner\"], [buildGroup(group.value.body, options.reset())]);\n var fix = makeSpan([\"fix\"], []);\n return makeSpan(\n [\"rlap\", options.style.cls()], [inner, fix]);\n};\n\ngroupTypes.op = function(group, options, prev) {\n // Operators are handled in the TeXbook pg. 443-444, rule 13(a).\n var supGroup;\n var subGroup;\n var hasLimits = false;\n if (group.type === \"supsub\" ) {\n // If we have limits, supsub will pass us its group to handle. Pull\n // out the superscript and subscript and set the group to the op in\n // its base.\n supGroup = group.value.sup;\n subGroup = group.value.sub;\n group = group.value.base;\n hasLimits = true;\n }\n\n // Most operators have a large successor symbol, but these don't.\n var noSuccessor = [\n \"\\\\smallint\",\n ];\n\n var large = false;\n if (options.style.size === Style.DISPLAY.size &&\n group.value.symbol &&\n !utils.contains(noSuccessor, group.value.body)) {\n\n // Most symbol operators get larger in displaystyle (rule 13)\n large = true;\n }\n\n var base;\n var baseShift = 0;\n var slant = 0;\n if (group.value.symbol) {\n // If this is a symbol, create the symbol.\n var style = large ? \"Size2-Regular\" : \"Size1-Regular\";\n base = buildCommon.makeSymbol(\n group.value.body, style, \"math\", options.getColor(),\n [\"op-symbol\", large ? \"large-op\" : \"small-op\", \"mop\"]);\n\n // Shift the symbol so its center lies on the axis (rule 13). It\n // appears that our fonts have the centers of the symbols already\n // almost on the axis, so these numbers are very small. Note we\n // don't actually apply this here, but instead it is used either in\n // the vlist creation or separately when there are no limits.\n baseShift = (base.height - base.depth) / 2 -\n fontMetrics.metrics.axisHeight *\n options.style.sizeMultiplier;\n\n // The slant of the symbol is just its italic correction.\n slant = base.italic;\n } else {\n // Otherwise, this is a text operator. Build the text from the\n // operator's name.\n // TODO(emily): Add a space in the middle of some of these\n // operators, like \\limsup\n var output = [];\n for (var i = 1; i < group.value.body.length; i++) {\n output.push(buildCommon.mathsym(group.value.body[i], group.mode));\n }\n base = makeSpan([\"mop\"], output, options.getColor());\n }\n\n if (hasLimits) {\n // IE 8 clips \\int if it is in a display: inline-block. We wrap it\n // in a new span so it is an inline, and works.\n base = makeSpan([], [base]);\n\n var supmid;\n var supKern;\n var submid;\n var subKern;\n // We manually have to handle the superscripts and subscripts. This,\n // aside from the kern calculations, is copied from supsub.\n if (supGroup) {\n var sup = buildGroup(\n supGroup, options.withStyle(options.style.sup()));\n supmid = makeSpan(\n [options.style.reset(), options.style.sup().cls()], [sup]);\n\n supKern = Math.max(\n fontMetrics.metrics.bigOpSpacing1,\n fontMetrics.metrics.bigOpSpacing3 - sup.depth);\n }\n\n if (subGroup) {\n var sub = buildGroup(\n subGroup, options.withStyle(options.style.sub()));\n submid = makeSpan(\n [options.style.reset(), options.style.sub().cls()],\n [sub]);\n\n subKern = Math.max(\n fontMetrics.metrics.bigOpSpacing2,\n fontMetrics.metrics.bigOpSpacing4 - sub.height);\n }\n\n // Build the final group as a vlist of the possible subscript, base,\n // and possible superscript.\n var finalGroup;\n var top;\n var bottom;\n if (!supGroup) {\n top = base.height - baseShift;\n\n finalGroup = buildCommon.makeVList([\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5},\n {type: \"elem\", elem: submid},\n {type: \"kern\", size: subKern},\n {type: \"elem\", elem: base},\n ], \"top\", top, options);\n\n // Here, we shift the limits by the slant of the symbol. Note\n // that we are supposed to shift the limits by 1/2 of the slant,\n // but since we are centering the limits adding a full slant of\n // margin will shift by 1/2 that.\n finalGroup.children[0].style.marginLeft = -slant + \"em\";\n } else if (!subGroup) {\n bottom = base.depth + baseShift;\n\n finalGroup = buildCommon.makeVList([\n {type: \"elem\", elem: base},\n {type: \"kern\", size: supKern},\n {type: \"elem\", elem: supmid},\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5},\n ], \"bottom\", bottom, options);\n\n // See comment above about slants\n finalGroup.children[1].style.marginLeft = slant + \"em\";\n } else if (!supGroup && !subGroup) {\n // This case probably shouldn't occur (this would mean the\n // supsub was sending us a group with no superscript or\n // subscript) but be safe.\n return base;\n } else {\n bottom = fontMetrics.metrics.bigOpSpacing5 +\n submid.height + submid.depth +\n subKern +\n base.depth + baseShift;\n\n finalGroup = buildCommon.makeVList([\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5},\n {type: \"elem\", elem: submid},\n {type: \"kern\", size: subKern},\n {type: \"elem\", elem: base},\n {type: \"kern\", size: supKern},\n {type: \"elem\", elem: supmid},\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5},\n ], \"bottom\", bottom, options);\n\n // See comment above about slants\n finalGroup.children[0].style.marginLeft = -slant + \"em\";\n finalGroup.children[2].style.marginLeft = slant + \"em\";\n }\n\n return makeSpan([\"mop\", \"op-limits\"], [finalGroup]);\n } else {\n if (group.value.symbol) {\n base.style.top = baseShift + \"em\";\n }\n\n return base;\n }\n};\n\ngroupTypes.katex = function(group, options, prev) {\n // The KaTeX logo. The offsets for the K and a were chosen to look\n // good, but the offsets for the T, E, and X were taken from the\n // definition of \\TeX in TeX (see TeXbook pg. 356)\n var k = makeSpan(\n [\"k\"], [buildCommon.mathsym(\"K\", group.mode)]);\n var a = makeSpan(\n [\"a\"], [buildCommon.mathsym(\"A\", group.mode)]);\n\n a.height = (a.height + 0.2) * 0.75;\n a.depth = (a.height - 0.2) * 0.75;\n\n var t = makeSpan(\n [\"t\"], [buildCommon.mathsym(\"T\", group.mode)]);\n var e = makeSpan(\n [\"e\"], [buildCommon.mathsym(\"E\", group.mode)]);\n\n e.height = (e.height - 0.2155);\n e.depth = (e.depth + 0.2155);\n\n var x = makeSpan(\n [\"x\"], [buildCommon.mathsym(\"X\", group.mode)]);\n\n return makeSpan(\n [\"katex-logo\", \"mord\"], [k, a, t, e, x], options.getColor());\n};\n\ngroupTypes.overline = function(group, options, prev) {\n // Overlines are handled in the TeXbook pg 443, Rule 9.\n\n // Build the inner group in the cramped style.\n var innerGroup = buildGroup(group.value.body,\n options.withStyle(options.style.cramp()));\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n options.style.sizeMultiplier;\n\n // Create the line above the body\n var line = makeSpan(\n [options.style.reset(), Style.TEXT.cls(), \"overline-line\"]);\n line.height = ruleWidth;\n line.maxFontSize = 1.0;\n\n // Generate the vlist, with the appropriate kerns\n var vlist = buildCommon.makeVList([\n {type: \"elem\", elem: innerGroup},\n {type: \"kern\", size: 3 * ruleWidth},\n {type: \"elem\", elem: line},\n {type: \"kern\", size: ruleWidth},\n ], \"firstBaseline\", null, options);\n\n return makeSpan([\"overline\", \"mord\"], [vlist], options.getColor());\n};\n\ngroupTypes.underline = function(group, options, prev) {\n // Underlines are handled in the TeXbook pg 443, Rule 10.\n\n // Build the inner group.\n var innerGroup = buildGroup(group.value.body, options);\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n options.style.sizeMultiplier;\n\n // Create the line above the body\n var line = makeSpan(\n [options.style.reset(), Style.TEXT.cls(), \"underline-line\"]);\n line.height = ruleWidth;\n line.maxFontSize = 1.0;\n\n // Generate the vlist, with the appropriate kerns\n var vlist = buildCommon.makeVList([\n {type: \"kern\", size: ruleWidth},\n {type: \"elem\", elem: line},\n {type: \"kern\", size: 3 * ruleWidth},\n {type: \"elem\", elem: innerGroup},\n ], \"top\", innerGroup.height, options);\n\n return makeSpan([\"underline\", \"mord\"], [vlist], options.getColor());\n};\n\ngroupTypes.sqrt = function(group, options, prev) {\n // Square roots are handled in the TeXbook pg. 443, Rule 11.\n\n // First, we do the same steps as in overline to build the inner group\n // and line\n var inner = buildGroup(group.value.body,\n options.withStyle(options.style.cramp()));\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n options.style.sizeMultiplier;\n\n var line = makeSpan(\n [options.style.reset(), Style.TEXT.cls(), \"sqrt-line\"], [],\n options.getColor());\n line.height = ruleWidth;\n line.maxFontSize = 1.0;\n\n var phi = ruleWidth;\n if (options.style.id < Style.TEXT.id) {\n phi = fontMetrics.metrics.xHeight;\n }\n\n // Calculate the clearance between the body and line\n var lineClearance = ruleWidth + phi / 4;\n\n var innerHeight =\n (inner.height + inner.depth) * options.style.sizeMultiplier;\n var minDelimiterHeight = innerHeight + lineClearance + ruleWidth;\n\n // Create a \\surd delimiter of the required minimum size\n var delim = makeSpan([\"sqrt-sign\"], [\n delimiter.customSizedDelim(\"\\\\surd\", minDelimiterHeight,\n false, options, group.mode)],\n options.getColor());\n\n var delimDepth = (delim.height + delim.depth) - ruleWidth;\n\n // Adjust the clearance based on the delimiter size\n if (delimDepth > inner.height + inner.depth + lineClearance) {\n lineClearance =\n (lineClearance + delimDepth - inner.height - inner.depth) / 2;\n }\n\n // Shift the delimiter so that its top lines up with the top of the line\n var delimShift = -(inner.height + lineClearance + ruleWidth) + delim.height;\n delim.style.top = delimShift + \"em\";\n delim.height -= delimShift;\n delim.depth += delimShift;\n\n // We add a special case here, because even when `inner` is empty, we\n // still get a line. So, we use a simple heuristic to decide if we\n // should omit the body entirely. (note this doesn't work for something\n // like `\\sqrt{\\rlap{x}}`, but if someone is doing that they deserve for\n // it not to work.\n var body;\n if (inner.height === 0 && inner.depth === 0) {\n body = makeSpan();\n } else {\n body = buildCommon.makeVList([\n {type: \"elem\", elem: inner},\n {type: \"kern\", size: lineClearance},\n {type: \"elem\", elem: line},\n {type: \"kern\", size: ruleWidth},\n ], \"firstBaseline\", null, options);\n }\n\n if (!group.value.index) {\n return makeSpan([\"sqrt\", \"mord\"], [delim, body]);\n } else {\n // Handle the optional root index\n\n // The index is always in scriptscript style\n var root = buildGroup(\n group.value.index,\n options.withStyle(Style.SCRIPTSCRIPT));\n var rootWrap = makeSpan(\n [options.style.reset(), Style.SCRIPTSCRIPT.cls()],\n [root]);\n\n // Figure out the height and depth of the inner part\n var innerRootHeight = Math.max(delim.height, body.height);\n var innerRootDepth = Math.max(delim.depth, body.depth);\n\n // The amount the index is shifted by. This is taken from the TeX\n // source, in the definition of `\\r@@t`.\n var toShift = 0.6 * (innerRootHeight - innerRootDepth);\n\n // Build a VList with the superscript shifted up correctly\n var rootVList = buildCommon.makeVList(\n [{type: \"elem\", elem: rootWrap}],\n \"shift\", -toShift, options);\n // Add a class surrounding it so we can add on the appropriate\n // kerning\n var rootVListWrap = makeSpan([\"root\"], [rootVList]);\n\n return makeSpan([\"sqrt\", \"mord\"], [rootVListWrap, delim, body]);\n }\n};\n\ngroupTypes.sizing = function(group, options, prev) {\n // Handle sizing operators like \\Huge. Real TeX doesn't actually allow\n // these functions inside of math expressions, so we do some special\n // handling.\n var inner = buildExpression(group.value.value,\n options.withSize(group.value.size), prev);\n\n var span = makeSpan([\"mord\"],\n [makeSpan([\"sizing\", \"reset-\" + options.size, group.value.size,\n options.style.cls()],\n inner)]);\n\n // Calculate the correct maxFontSize manually\n var fontSize = buildCommon.sizingMultiplier[group.value.size];\n span.maxFontSize = fontSize * options.style.sizeMultiplier;\n\n return span;\n};\n\ngroupTypes.styling = function(group, options, prev) {\n // Style changes are handled in the TeXbook on pg. 442, Rule 3.\n\n // Figure out what style we're changing to.\n var style = {\n \"display\": Style.DISPLAY,\n \"text\": Style.TEXT,\n \"script\": Style.SCRIPT,\n \"scriptscript\": Style.SCRIPTSCRIPT,\n };\n\n var newStyle = style[group.value.style];\n\n // Build the inner expression in the new style.\n var inner = buildExpression(\n group.value.value, options.withStyle(newStyle), prev);\n\n return makeSpan([options.style.reset(), newStyle.cls()], inner);\n};\n\ngroupTypes.font = function(group, options, prev) {\n var font = group.value.font;\n return buildGroup(group.value.body, options.withFont(font), prev);\n};\n\ngroupTypes.delimsizing = function(group, options, prev) {\n var delim = group.value.value;\n\n if (delim === \".\") {\n // Empty delimiters still count as elements, even though they don't\n // show anything.\n return makeSpan([groupToType[group.value.delimType]]);\n }\n\n // Use delimiter.sizedDelim to generate the delimiter.\n return makeSpan(\n [groupToType[group.value.delimType]],\n [delimiter.sizedDelim(\n delim, group.value.size, options, group.mode)]);\n};\n\ngroupTypes.leftright = function(group, options, prev) {\n // Build the inner expression\n var inner = buildExpression(group.value.body, options.reset());\n\n var innerHeight = 0;\n var innerDepth = 0;\n\n // Calculate its height and depth\n for (var i = 0; i < inner.length; i++) {\n innerHeight = Math.max(inner[i].height, innerHeight);\n innerDepth = Math.max(inner[i].depth, innerDepth);\n }\n\n // The size of delimiters is the same, regardless of what style we are\n // in. Thus, to correctly calculate the size of delimiter we need around\n // a group, we scale down the inner size based on the size.\n innerHeight *= options.style.sizeMultiplier;\n innerDepth *= options.style.sizeMultiplier;\n\n var leftDelim;\n if (group.value.left === \".\") {\n // Empty delimiters in \\left and \\right make null delimiter spaces.\n leftDelim = makeNullDelimiter(options);\n } else {\n // Otherwise, use leftRightDelim to generate the correct sized\n // delimiter.\n leftDelim = delimiter.leftRightDelim(\n group.value.left, innerHeight, innerDepth, options,\n group.mode);\n }\n // Add it to the beginning of the expression\n inner.unshift(leftDelim);\n\n var rightDelim;\n // Same for the right delimiter\n if (group.value.right === \".\") {\n rightDelim = makeNullDelimiter(options);\n } else {\n rightDelim = delimiter.leftRightDelim(\n group.value.right, innerHeight, innerDepth, options,\n group.mode);\n }\n // Add it to the end of the expression.\n inner.push(rightDelim);\n\n return makeSpan(\n [\"minner\", options.style.cls()], inner, options.getColor());\n};\n\ngroupTypes.rule = function(group, options, prev) {\n // Make an empty span for the rule\n var rule = makeSpan([\"mord\", \"rule\"], [], options.getColor());\n\n // Calculate the shift, width, and height of the rule, and account for units\n var shift = 0;\n if (group.value.shift) {\n shift = group.value.shift.number;\n if (group.value.shift.unit === \"ex\") {\n shift *= fontMetrics.metrics.xHeight;\n }\n }\n\n var width = group.value.width.number;\n if (group.value.width.unit === \"ex\") {\n width *= fontMetrics.metrics.xHeight;\n }\n\n var height = group.value.height.number;\n if (group.value.height.unit === \"ex\") {\n height *= fontMetrics.metrics.xHeight;\n }\n\n // The sizes of rules are absolute, so make it larger if we are in a\n // smaller style.\n shift /= options.style.sizeMultiplier;\n width /= options.style.sizeMultiplier;\n height /= options.style.sizeMultiplier;\n\n // Style the rule to the right size\n rule.style.borderRightWidth = width + \"em\";\n rule.style.borderTopWidth = height + \"em\";\n rule.style.bottom = shift + \"em\";\n\n // Record the height and width\n rule.width = width;\n rule.height = height + shift;\n rule.depth = -shift;\n\n return rule;\n};\n\ngroupTypes.accent = function(group, options, prev) {\n // Accents are handled in the TeXbook pg. 443, rule 12.\n var base = group.value.base;\n\n var supsubGroup;\n if (group.type === \"supsub\") {\n // If our base is a character box, and we have superscripts and\n // subscripts, the supsub will defer to us. In particular, we want\n // to attach the superscripts and subscripts to the inner body (so\n // that the position of the superscripts and subscripts won't be\n // affected by the height of the accent). We accomplish this by\n // sticking the base of the accent into the base of the supsub, and\n // rendering that, while keeping track of where the accent is.\n\n // The supsub group is the group that was passed in\n var supsub = group;\n // The real accent group is the base of the supsub group\n group = supsub.value.base;\n // The character box is the base of the accent group\n base = group.value.base;\n // Stick the character box into the base of the supsub group\n supsub.value.base = base;\n\n // Rerender the supsub group with its new base, and store that\n // result.\n supsubGroup = buildGroup(\n supsub, options.reset(), prev);\n }\n\n // Build the base group\n var body = buildGroup(\n base, options.withStyle(options.style.cramp()));\n\n // Calculate the skew of the accent. This is based on the line \"If the\n // nucleus is not a single character, let s = 0; otherwise set s to the\n // kern amount for the nucleus followed by the \\skewchar of its font.\"\n // Note that our skew metrics are just the kern between each character\n // and the skewchar.\n var skew;\n if (isCharacterBox(base)) {\n // If the base is a character box, then we want the skew of the\n // innermost character. To do that, we find the innermost character:\n var baseChar = getBaseElem(base);\n // Then, we render its group to get the symbol inside it\n var baseGroup = buildGroup(\n baseChar, options.withStyle(options.style.cramp()));\n // Finally, we pull the skew off of the symbol.\n skew = baseGroup.skew;\n // Note that we now throw away baseGroup, because the layers we\n // removed with getBaseElem might contain things like \\color which\n // we can't get rid of.\n // TODO(emily): Find a better way to get the skew\n } else {\n skew = 0;\n }\n\n // calculate the amount of space between the body and the accent\n var clearance = Math.min(body.height, fontMetrics.metrics.xHeight);\n\n // Build the accent\n var accent = buildCommon.makeSymbol(\n group.value.accent, \"Main-Regular\", \"math\", options.getColor());\n // Remove the italic correction of the accent, because it only serves to\n // shift the accent over to a place we don't want.\n accent.italic = 0;\n\n // The \\vec character that the fonts use is a combining character, and\n // thus shows up much too far to the left. To account for this, we add a\n // specific class which shifts the accent over to where we want it.\n // TODO(emily): Fix this in a better way, like by changing the font\n var vecClass = group.value.accent === \"\\\\vec\" ? \"accent-vec\" : null;\n\n var accentBody = makeSpan([\"accent-body\", vecClass], [\n makeSpan([], [accent])]);\n\n accentBody = buildCommon.makeVList([\n {type: \"elem\", elem: body},\n {type: \"kern\", size: -clearance},\n {type: \"elem\", elem: accentBody},\n ], \"firstBaseline\", null, options);\n\n // Shift the accent over by the skew. Note we shift by twice the skew\n // because we are centering the accent, so by adding 2*skew to the left,\n // we shift it to the right by 1*skew.\n accentBody.children[1].style.marginLeft = 2 * skew + \"em\";\n\n var accentWrap = makeSpan([\"mord\", \"accent\"], [accentBody]);\n\n if (supsubGroup) {\n // Here, we replace the \"base\" child of the supsub with our newly\n // generated accent.\n supsubGroup.children[0] = accentWrap;\n\n // Since we don't rerun the height calculation after replacing the\n // accent, we manually recalculate height.\n supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height);\n\n // Accents should always be ords, even when their innards are not.\n supsubGroup.classes[0] = \"mord\";\n\n return supsubGroup;\n } else {\n return accentWrap;\n }\n};\n\ngroupTypes.phantom = function(group, options, prev) {\n var elements = buildExpression(\n group.value.value,\n options.withPhantom(),\n prev\n );\n\n // \\phantom isn't supposed to affect the elements it contains.\n // See \"color\" for more details.\n return new buildCommon.makeFragment(elements);\n};\n\n/**\n * buildGroup is the function that takes a group and calls the correct groupType\n * function for it. It also handles the interaction of size and style changes\n * between parents and children.\n */\nvar buildGroup = function(group, options, prev) {\n if (!group) {\n return makeSpan();\n }\n\n if (groupTypes[group.type]) {\n // Call the groupTypes function\n var groupNode = groupTypes[group.type](group, options, prev);\n var multiplier;\n\n // If the style changed between the parent and the current group,\n // account for the size difference\n if (options.style !== options.parentStyle) {\n multiplier = options.style.sizeMultiplier /\n options.parentStyle.sizeMultiplier;\n\n groupNode.height *= multiplier;\n groupNode.depth *= multiplier;\n }\n\n // If the size changed between the parent and the current group, account\n // for that size difference.\n if (options.size !== options.parentSize) {\n multiplier = buildCommon.sizingMultiplier[options.size] /\n buildCommon.sizingMultiplier[options.parentSize];\n\n groupNode.height *= multiplier;\n groupNode.depth *= multiplier;\n }\n\n return groupNode;\n } else {\n throw new ParseError(\n \"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n\n/**\n * Take an entire parse tree, and build it into an appropriate set of HTML\n * nodes.\n */\nvar buildHTML = function(tree, options) {\n // buildExpression is destructive, so we need to make a clone\n // of the incoming tree so that it isn't accidentally changed\n tree = JSON.parse(JSON.stringify(tree));\n\n // Build the expression contained in the tree\n var expression = buildExpression(tree, options);\n var body = makeSpan([\"base\", options.style.cls()], expression);\n\n // Add struts, which ensure that the top of the HTML element falls at the\n // height of the expression, and the bottom of the HTML element falls at the\n // depth of the expression.\n var topStrut = makeSpan([\"strut\"]);\n var bottomStrut = makeSpan([\"strut\", \"bottom\"]);\n\n topStrut.style.height = body.height + \"em\";\n bottomStrut.style.height = (body.height + body.depth) + \"em\";\n // We'd like to use `vertical-align: top` but in IE 9 this lowers the\n // baseline of the box to the bottom of this strut (instead staying in the\n // normal place) so we use an absolute value for vertical-align instead\n bottomStrut.style.verticalAlign = -body.depth + \"em\";\n\n // Wrap the struts and body together\n var htmlNode = makeSpan([\"katex-html\"], [topStrut, bottomStrut, body]);\n\n htmlNode.setAttribute(\"aria-hidden\", \"true\");\n\n return htmlNode;\n};\n\nmodule.exports = buildHTML;\n","'use strict';\n\n\nmodule.exports = require('./lib/');\n","'use strict';\n\nexports.Any = require('./properties/Any/regex');\nexports.Cc = require('./categories/Cc/regex');\nexports.Cf = require('./categories/Cf/regex');\nexports.P = require('./categories/P/regex');\nexports.Z = require('./categories/Z/regex');\n","'use strict';\n\n\nvar parseLinkDestination = require('../helpers/parse_link_destination');\nvar parseLinkTitle = require('../helpers/parse_link_title');\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function reference(state, startLine, _endLine, silent) {\n var ch,\n destEndPos,\n destEndLineNo,\n endLine,\n href,\n i,\n l,\n label,\n labelEnd,\n res,\n start,\n str,\n terminate,\n terminatorRules,\n title,\n lines = 0,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine],\n nextLine = startLine + 1;\n\n if (state.src.charCodeAt(pos) !== 0x5B/* [ */) { return false; }\n\n // Simple check to quickly interrupt scan on [link](url) at the start of line.\n // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54\n while (++pos < max) {\n if (state.src.charCodeAt(pos) === 0x5D /* ] */ &&\n state.src.charCodeAt(pos - 1) !== 0x5C/* \\ */) {\n if (pos + 1 === max) { return false; }\n if (state.src.charCodeAt(pos + 1) !== 0x3A/* : */) { return false; }\n break;\n }\n }\n\n endLine = state.lineMax;\n\n // jump line-by-line until empty one or EOF\n terminatorRules = state.md.block.ruler.getRules('reference');\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue; }\n\n // Some tags can terminate paragraph without empty line.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n }\n\n str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n max = str.length;\n\n for (pos = 1; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x5B /* [ */) {\n return false;\n } else if (ch === 0x5D /* ] */) {\n labelEnd = pos;\n break;\n } else if (ch === 0x0A /* \\n */) {\n lines++;\n } else if (ch === 0x5C /* \\ */) {\n pos++;\n if (pos < max && str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return false; }\n\n // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n for (pos = labelEnd + 2; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n res = parseLinkDestination(str, pos, max);\n if (!res.ok) { return false; }\n\n href = state.md.normalizeLink(res.str);\n if (!state.md.validateLink(href)) { return false; }\n\n pos = res.pos;\n lines += res.lines;\n\n // save cursor state, we could require to rollback later\n destEndPos = pos;\n destEndLineNo = lines;\n\n // [label]: destination 'title'\n // ^^^ skipping those spaces\n start = pos;\n for (; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^ parse this\n res = parseLinkTitle(str, pos, max);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n lines += res.lines;\n } else {\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n }\n\n // skip trailing spaces until the rest of the line\n while (pos < max) {\n ch = str.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n pos++;\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n if (title) {\n // garbage at the end of the line after title,\n // but it could still be a valid reference if we roll back\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n while (pos < max) {\n ch = str.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n pos++;\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n // garbage at the end of the line\n return false;\n }\n\n label = normalizeReference(str.slice(1, labelEnd));\n if (!label) {\n // CommonMark 0.20 disallows empty labels\n return false;\n }\n\n // Reference can not terminate anything. This check is for safety only.\n /*istanbul ignore if*/\n if (silent) { return true; }\n\n if (typeof state.env.references === 'undefined') {\n state.env.references = {};\n }\n if (typeof state.env.references[label] === 'undefined') {\n state.env.references[label] = { title: title, href: href };\n }\n\n state.line = startLine + lines + 1;\n return true;\n};\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABMtJREFUeF7tm1toHGUUx39nGxpFq/WG1Ato8QJesO5ujGIVfSi0KYigWEWFWLKzplixL2pRsFXRig8WQiUzG6lIa6GgopaG1gcV77ozjdoK4hXxAoVWLFUMJHNkll1IQrLzzWSzs2N2Xvec//zPb873zczZXWGeHzLP66cNoN0B85xAewnM8wYw3wTzlr6lcAOweFpoykeibC4PyTtTP8/2aS6TwVK4FrgYOLFh4IVnfdhxwJZv4mgaLYGcpQeByw1O8DuQdx35oxabtXSTwBMGubMJOeQLd8SBEAogW9BeEbabulPY4DmyNYhvUvEVawpfeI5cY+qzFhcKIFfUp1AeNxVW2Ow5sun6tbro3w5+AxaZ5s42ToXbPFtej6ITCiBr6YDAA6aiNQD5ot6lyqumeY2IU3jNc+T2KFomAF4RuNdUtAagme0/0ZsvdB2wpWzq1wTAmwK3mAomDQDhUdeW50z9hgLIW/q+wo2mgkkDUBj2HOkx9RsKIGfpCHCVqWDSAIB/OjpZ8tmAHDPxbALgJ+ACE7Hq7ahyF0hqD6h4iHA3MAFwFDgtTQAEtpUdMbpzhQMoqI+YPzK3wBIIrtVB15ErTS5aXQDd6/WUsVH+MhGqxbQIABb4LP18SILlW/eoC6BrnZ7vj/FLmMjEz1sFgCqWV5JSmPe6AHKWBm30VZhIKwJA2O3asibMexiA5cAHYSItCQD+dB05Pcx7GIDVwJ4wkRYFwLhwyYgt39XzXxdAtqB3i7AjrQBUWeOVZHdsALmCrkPYllYAwBbXkY2zAbAR4ZnUAhD2ubasjA+gqFtQHkktADjsOnJ2bABZSwcFiikGwFiG874clGAyNe1RfxO0dJfAnWkGIMLqsi174wLYK7AqzQAUHvYceT4WgLylHytcl2YACC+7ttwXC0DO0kPAZWkGEDYuD3sS/BU4N80AgL9dR06O1wEFPY5wUsoBjLiOXB0XwGGEsyIBUFZ6JdmX5Ehskl9l0C1JfzwARd2O0hsBwNGOTi4MBpItAuC4+qzwhuTTWADyRe1R5UkgZwBh0heU+X69VMf5EDjTILfhIQJv+xkcb1Dqvs2GzgQDZ/mCrvKF7hldKj8fO4Fd3w/I6MSYnKV9QOhUxqB6Vw1fy0U4gvKt68h+A13zYaeJ2HQx+T69STO8Gze/luc6YnSxop5nTkSnmshZGnmwMlVj4ThnfPKSBCP6hh5NARA4zlka7MQvxnUvSk+5JMNx82Ntgo0+Wd7SFxQeiqNbmzbHya2X07QOCEws69XFCxZW9oNlkQtRBtySPBg5LyShqQCqS+FW4I3IhQg7XVvuiZzXagAqt9UYSyHq196moJreAbGXgvKeW5KbTQszjUsEQLULHlN42tQo/zsA9+sV6vP1vAVQ2RCLuh9lhRGEkMmOkcY0QYktgcBLpJ/gCf2uLYNxC22JB6GpJrKWWgK2QVFjQLfriGcQGykk0Q4wfVES2Fp2ZEOkygyDEwXQtVaX+h38EOL1SPXqh8UZljw5LFEAF63XzlNH+RE4Zyb3c/UOUDtfogCqG+GMP6ef6+KD8ycOoPp+sLwye5TKHyqWIAyrz7BXkp2x+jpCUksAiOC34aFtAA1HmjLBdgek7II13G67AxqONGWC/wGjbwtf2o76YgAAAABJRU5ErkJggg==\"","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\n\n\nmodule.exports.encode = require('./encode');\nmodule.exports.decode = require('./decode');\nmodule.exports.format = require('./format');\nmodule.exports.parse = require('./parse');\n","/*\n *\tMP3 huffman table selecting and bit counting\n *\n *\tCopyright (c) 1999-2005 Takehiro TOMINAGA\n *\tCopyright (c) 2002-2005 Gabriel Bouvigne\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\t See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Takehiro.java,v 1.26 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\nvar Tables = require('./Tables.js');\nvar GrInfo = require('./GrInfo.js');\nvar QuantizePVT = require('./QuantizePVT.js');\n\n\nfunction Takehiro() {\n\n var qupvt = null;\n this.qupvt = null;\n\n this.setModules = function (_qupvt) {\n this.qupvt = _qupvt;\n qupvt = _qupvt;\n }\n\n function Bits(b) {\n this.bits = 0 | b;\n }\n\n var subdv_table = [[0, 0], /* 0 bands */\n [0, 0], /* 1 bands */\n [0, 0], /* 2 bands */\n [0, 0], /* 3 bands */\n [0, 0], /* 4 bands */\n [0, 1], /* 5 bands */\n [1, 1], /* 6 bands */\n [1, 1], /* 7 bands */\n [1, 2], /* 8 bands */\n [2, 2], /* 9 bands */\n [2, 3], /* 10 bands */\n [2, 3], /* 11 bands */\n [3, 4], /* 12 bands */\n [3, 4], /* 13 bands */\n [3, 4], /* 14 bands */\n [4, 5], /* 15 bands */\n [4, 5], /* 16 bands */\n [4, 6], /* 17 bands */\n [5, 6], /* 18 bands */\n [5, 6], /* 19 bands */\n [5, 7], /* 20 bands */\n [6, 7], /* 21 bands */\n [6, 7], /* 22 bands */\n ];\n\n /**\n * nonlinear quantization of xr More accurate formula than the ISO formula.\n * Takes into account the fact that we are quantizing xr . ix, but we want\n * ix^4/3 to be as close as possible to x^4/3. (taking the nearest int would\n * mean ix is as close as possible to xr, which is different.)\n *\n * From Segher Boessenkool 11/1999\n *\n * 09/2000: ASM code removed in favor of IEEE754 hack by Takehiro Tominaga.\n * If you need the ASM code, check CVS circa Aug 2000.\n *\n * 01/2004: Optimizations by Gabriel Bouvigne\n */\n function quantize_lines_xrpow_01(l, istep, xr, xrPos, ix, ixPos) {\n var compareval0 = (1.0 - 0.4054) / istep;\n\n assert(l > 0);\n l = l >> 1;\n while ((l--) != 0) {\n ix[ixPos++] = (compareval0 > xr[xrPos++]) ? 0 : 1;\n ix[ixPos++] = (compareval0 > xr[xrPos++]) ? 0 : 1;\n }\n }\n\n /**\n * XRPOW_FTOI is a macro to convert floats to ints.
\n * if XRPOW_FTOI(x) = nearest_int(x), then QUANTFAC(x)=adj43asm[x]
\n * ROUNDFAC= -0.0946
\n *\n * if XRPOW_FTOI(x) = floor(x), then QUANTFAC(x)=asj43[x]
\n * ROUNDFAC=0.4054
\n *\n * Note: using floor() or 0| is extremely slow. On machines where the\n * TAKEHIRO_IEEE754_HACK code above does not work, it is worthwile to write\n * some ASM for XRPOW_FTOI().\n */\n function quantize_lines_xrpow(l, istep, xr, xrPos, ix, ixPos) {\n assert(l > 0);\n\n l = l >> 1;\n var remaining = l % 2;\n l = l >> 1;\n while (l-- != 0) {\n var x0, x1, x2, x3;\n var rx0, rx1, rx2, rx3;\n\n x0 = xr[xrPos++] * istep;\n x1 = xr[xrPos++] * istep;\n rx0 = 0 | x0;\n x2 = xr[xrPos++] * istep;\n rx1 = 0 | x1;\n x3 = xr[xrPos++] * istep;\n rx2 = 0 | x2;\n x0 += qupvt.adj43[rx0];\n rx3 = 0 | x3;\n x1 += qupvt.adj43[rx1];\n ix[ixPos++] = 0 | x0;\n x2 += qupvt.adj43[rx2];\n ix[ixPos++] = 0 | x1;\n x3 += qupvt.adj43[rx3];\n ix[ixPos++] = 0 | x2;\n ix[ixPos++] = 0 | x3;\n }\n if (remaining != 0) {\n var x0, x1;\n var rx0, rx1;\n\n x0 = xr[xrPos++] * istep;\n x1 = xr[xrPos++] * istep;\n rx0 = 0 | x0;\n rx1 = 0 | x1;\n x0 += qupvt.adj43[rx0];\n x1 += qupvt.adj43[rx1];\n ix[ixPos++] = 0 | x0;\n ix[ixPos++] = 0 | x1;\n }\n }\n\n /**\n * Quantization function This function will select which lines to quantize\n * and call the proper quantization function\n */\n function quantize_xrpow(xp, pi, istep, codInfo, prevNoise) {\n /* quantize on xr^(3/4) instead of xr */\n var sfb;\n var sfbmax;\n var j = 0;\n var prev_data_use;\n var accumulate = 0;\n var accumulate01 = 0;\n var xpPos = 0;\n var iData = pi;\n var iDataPos = 0;\n var acc_iData = iData;\n var acc_iDataPos = 0;\n var acc_xp = xp;\n var acc_xpPos = 0;\n\n /*\n * Reusing previously computed data does not seems to work if global\n * gain is changed. Finding why it behaves this way would allow to use a\n * cache of previously computed values (let's 10 cached values per sfb)\n * that would probably provide a noticeable speedup\n */\n prev_data_use = (prevNoise != null && (codInfo.global_gain == prevNoise.global_gain));\n\n if (codInfo.block_type == Encoder.SHORT_TYPE)\n sfbmax = 38;\n else\n sfbmax = 21;\n\n for (sfb = 0; sfb <= sfbmax; sfb++) {\n var step = -1;\n\n if (prev_data_use || codInfo.block_type == Encoder.NORM_TYPE) {\n step = codInfo.global_gain\n - ((codInfo.scalefac[sfb] + (codInfo.preflag != 0 ? qupvt.pretab[sfb]\n : 0)) << (codInfo.scalefac_scale + 1))\n - codInfo.subblock_gain[codInfo.window[sfb]] * 8;\n }\n assert(codInfo.width[sfb] >= 0);\n if (prev_data_use && (prevNoise.step[sfb] == step)) {\n /*\n * do not recompute this part, but compute accumulated lines\n */\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n } else { /* should compute this part */\n var l = codInfo.width[sfb];\n\n if ((j + codInfo.width[sfb]) > codInfo.max_nonzero_coeff) {\n /* do not compute upper zero part */\n var usefullsize;\n usefullsize = codInfo.max_nonzero_coeff - j + 1;\n Arrays.fill(pi, codInfo.max_nonzero_coeff, 576, 0);\n l = usefullsize;\n\n if (l < 0) {\n l = 0;\n }\n\n /* no need to compute higher sfb values */\n sfb = sfbmax + 1;\n }\n\n /* accumulate lines to quantize */\n if (0 == accumulate && 0 == accumulate01) {\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n if (prevNoise != null && prevNoise.sfb_count1 > 0\n && sfb >= prevNoise.sfb_count1\n && prevNoise.step[sfb] > 0\n && step >= prevNoise.step[sfb]) {\n\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate = 0;\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n accumulate01 += l;\n } else {\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n accumulate += l;\n }\n\n if (l <= 0) {\n /*\n * rh: 20040215 may happen due to \"prev_data_use\"\n * optimization\n */\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n\n break;\n /* ends for-loop */\n }\n }\n if (sfb <= sfbmax) {\n iDataPos += codInfo.width[sfb];\n xpPos += codInfo.width[sfb];\n j += codInfo.width[sfb];\n }\n }\n if (accumulate != 0) { /* last data part */\n quantize_lines_xrpow(accumulate, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n if (accumulate01 != 0) { /* last data part */\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n\n }\n\n /**\n * ix_max\n */\n function ix_max(ix, ixPos, endPos) {\n var max1 = 0, max2 = 0;\n\n do {\n var x1 = ix[ixPos++];\n var x2 = ix[ixPos++];\n if (max1 < x1)\n max1 = x1;\n\n if (max2 < x2)\n max2 = x2;\n } while (ixPos < endPos);\n if (max1 < max2)\n max1 = max2;\n return max1;\n }\n\n function count_bit_ESC(ix, ixPos, end, t1, t2, s) {\n /* ESC-table is used */\n var linbits = Tables.ht[t1].xlen * 65536 + Tables.ht[t2].xlen;\n var sum = 0, sum2;\n\n do {\n var x = ix[ixPos++];\n var y = ix[ixPos++];\n\n if (x != 0) {\n if (x > 14) {\n x = 15;\n sum += linbits;\n }\n x *= 16;\n }\n\n if (y != 0) {\n if (y > 14) {\n y = 15;\n sum += linbits;\n }\n x += y;\n }\n\n sum += Tables.largetbl[x];\n } while (ixPos < end);\n\n sum2 = sum & 0xffff;\n sum >>= 16;\n\n if (sum > sum2) {\n sum = sum2;\n t1 = t2;\n }\n\n s.bits += sum;\n return t1;\n }\n\n function count_bit_noESC(ix, ixPos, end, s) {\n /* No ESC-words */\n var sum1 = 0;\n var hlen1 = Tables.ht[1].hlen;\n\n do {\n var x = ix[ixPos + 0] * 2 + ix[ixPos + 1];\n ixPos += 2;\n sum1 += hlen1[x];\n } while (ixPos < end);\n\n s.bits += sum1;\n return 1;\n }\n\n function count_bit_noESC_from2(ix, ixPos, end, t1, s) {\n /* No ESC-words */\n var sum = 0, sum2;\n var xlen = Tables.ht[t1].xlen;\n var hlen;\n if (t1 == 2)\n hlen = Tables.table23;\n else\n hlen = Tables.table56;\n\n do {\n var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n ixPos += 2;\n sum += hlen[x];\n } while (ixPos < end);\n\n sum2 = sum & 0xffff;\n sum >>= 16;\n\n if (sum > sum2) {\n sum = sum2;\n t1++;\n }\n\n s.bits += sum;\n return t1;\n }\n\n function count_bit_noESC_from3(ix, ixPos, end, t1, s) {\n /* No ESC-words */\n var sum1 = 0;\n var sum2 = 0;\n var sum3 = 0;\n var xlen = Tables.ht[t1].xlen;\n var hlen1 = Tables.ht[t1].hlen;\n var hlen2 = Tables.ht[t1 + 1].hlen;\n var hlen3 = Tables.ht[t1 + 2].hlen;\n\n do {\n var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n ixPos += 2;\n sum1 += hlen1[x];\n sum2 += hlen2[x];\n sum3 += hlen3[x];\n } while (ixPos < end);\n var t = t1;\n if (sum1 > sum2) {\n sum1 = sum2;\n t++;\n }\n if (sum1 > sum3) {\n sum1 = sum3;\n t = t1 + 2;\n }\n s.bits += sum1;\n\n return t;\n }\n\n /*************************************************************************/\n /* choose table */\n /*************************************************************************/\n\n var huf_tbl_noESC = [1, 2, 5, 7, 7, 10, 10, 13, 13,\n 13, 13, 13, 13, 13, 13];\n\n /**\n * Choose the Huffman table that will encode ix[begin..end] with the fewest\n * bits.\n *\n * Note: This code contains knowledge about the sizes and characteristics of\n * the Huffman tables as defined in the IS (Table B.7), and will not work\n * with any arbitrary tables.\n */\n function choose_table(ix, ixPos, endPos, s) {\n var max = ix_max(ix, ixPos, endPos);\n\n switch (max) {\n case 0:\n return max;\n\n case 1:\n return count_bit_noESC(ix, ixPos, endPos, s);\n\n case 2:\n case 3:\n return count_bit_noESC_from2(ix, ixPos, endPos,\n huf_tbl_noESC[max - 1], s);\n\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n return count_bit_noESC_from3(ix, ixPos, endPos,\n huf_tbl_noESC[max - 1], s);\n\n default:\n /* try tables with linbits */\n if (max > QuantizePVT.IXMAX_VAL) {\n s.bits = QuantizePVT.LARGE_BITS;\n return -1;\n }\n max -= 15;\n var choice2;\n for (choice2 = 24; choice2 < 32; choice2++) {\n if (Tables.ht[choice2].linmax >= max) {\n break;\n }\n }\n var choice;\n for (choice = choice2 - 8; choice < 24; choice++) {\n if (Tables.ht[choice].linmax >= max) {\n break;\n }\n }\n return count_bit_ESC(ix, ixPos, endPos, choice, choice2, s);\n }\n }\n\n /**\n * count_bit\n */\n this.noquant_count_bits = function (gfc, gi, prev_noise) {\n var ix = gi.l3_enc;\n var i = Math.min(576, ((gi.max_nonzero_coeff + 2) >> 1) << 1);\n\n if (prev_noise != null)\n prev_noise.sfb_count1 = 0;\n\n /* Determine count1 region */\n for (; i > 1; i -= 2)\n if ((ix[i - 1] | ix[i - 2]) != 0)\n break;\n gi.count1 = i;\n\n /* Determines the number of bits to encode the quadruples. */\n var a1 = 0;\n var a2 = 0;\n for (; i > 3; i -= 4) {\n var p;\n /* hack to check if all values <= 1 */\n //throw \"TODO: HACK if ((((long) ix[i - 1] | (long) ix[i - 2] | (long) ix[i - 3] | (long) ix[i - 4]) & 0xffffffffL) > 1L \"\n //if (true) {\n if (((ix[i - 1] | ix[i - 2] | ix[i - 3] | ix[i - 4]) & 0x7fffffff) > 1) {\n break;\n }\n p = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1];\n a1 += Tables.t32l[p];\n a2 += Tables.t33l[p];\n }\n var bits = a1;\n gi.count1table_select = 0;\n if (a1 > a2) {\n bits = a2;\n gi.count1table_select = 1;\n }\n\n gi.count1bits = bits;\n gi.big_values = i;\n if (i == 0)\n return bits;\n\n if (gi.block_type == Encoder.SHORT_TYPE) {\n a1 = 3 * gfc.scalefac_band.s[3];\n if (a1 > gi.big_values)\n a1 = gi.big_values;\n a2 = gi.big_values;\n\n } else if (gi.block_type == Encoder.NORM_TYPE) {\n assert(i <= 576);\n /* bv_scf has 576 entries (0..575) */\n a1 = gi.region0_count = gfc.bv_scf[i - 2];\n a2 = gi.region1_count = gfc.bv_scf[i - 1];\n\n assert(a1 + a2 + 2 < Encoder.SBPSY_l);\n a2 = gfc.scalefac_band.l[a1 + a2 + 2];\n a1 = gfc.scalefac_band.l[a1 + 1];\n if (a2 < i) {\n var bi = new Bits(bits);\n gi.table_select[2] = choose_table(ix, a2, i, bi);\n bits = bi.bits;\n }\n } else {\n gi.region0_count = 7;\n /* gi.region1_count = SBPSY_l - 7 - 1; */\n gi.region1_count = Encoder.SBMAX_l - 1 - 7 - 1;\n a1 = gfc.scalefac_band.l[7 + 1];\n a2 = i;\n if (a1 > a2) {\n a1 = a2;\n }\n }\n\n /* have to allow for the case when bigvalues < region0 < region1 */\n /* (and region0, region1 are ignored) */\n a1 = Math.min(a1, i);\n a2 = Math.min(a2, i);\n\n assert(a1 >= 0);\n assert(a2 >= 0);\n\n /* Count the number of bits necessary to code the bigvalues region. */\n if (0 < a1) {\n var bi = new Bits(bits);\n gi.table_select[0] = choose_table(ix, 0, a1, bi);\n bits = bi.bits;\n }\n if (a1 < a2) {\n var bi = new Bits(bits);\n gi.table_select[1] = choose_table(ix, a1, a2, bi);\n bits = bi.bits;\n }\n if (gfc.use_best_huffman == 2) {\n gi.part2_3_length = bits;\n best_huffman_divide(gfc, gi);\n bits = gi.part2_3_length;\n }\n\n if (prev_noise != null) {\n if (gi.block_type == Encoder.NORM_TYPE) {\n var sfb = 0;\n while (gfc.scalefac_band.l[sfb] < gi.big_values) {\n sfb++;\n }\n prev_noise.sfb_count1 = sfb;\n }\n }\n\n return bits;\n }\n\n this.count_bits = function (gfc, xr, gi, prev_noise) {\n var ix = gi.l3_enc;\n\n /* since quantize_xrpow uses table lookup, we need to check this first: */\n var w = (QuantizePVT.IXMAX_VAL) / qupvt.IPOW20(gi.global_gain);\n\n if (gi.xrpow_max > w)\n return QuantizePVT.LARGE_BITS;\n\n quantize_xrpow(xr, ix, qupvt.IPOW20(gi.global_gain), gi, prev_noise);\n\n if ((gfc.substep_shaping & 2) != 0) {\n var j = 0;\n /* 0.634521682242439 = 0.5946*2**(.5*0.1875) */\n var gain = gi.global_gain + gi.scalefac_scale;\n var roundfac = 0.634521682242439 / qupvt.IPOW20(gain);\n for (var sfb = 0; sfb < gi.sfbmax; sfb++) {\n var width = gi.width[sfb];\n assert(width >= 0);\n if (0 == gfc.pseudohalf[sfb]) {\n j += width;\n } else {\n var k;\n for (k = j, j += width; k < j; ++k) {\n ix[k] = (xr[k] >= roundfac) ? ix[k] : 0;\n }\n }\n }\n }\n return this.noquant_count_bits(gfc, gi, prev_noise);\n }\n\n /**\n * re-calculate the best scalefac_compress using scfsi the saved bits are\n * kept in the bit reservoir.\n */\n function recalc_divide_init(gfc, cod_info, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n var bigv = cod_info.big_values;\n\n for (var r0 = 0; r0 <= 7 + 15; r0++) {\n r01_bits[r0] = QuantizePVT.LARGE_BITS;\n }\n\n for (var r0 = 0; r0 < 16; r0++) {\n var a1 = gfc.scalefac_band.l[r0 + 1];\n if (a1 >= bigv)\n break;\n var r0bits = 0;\n var bi = new Bits(r0bits);\n var r0t = choose_table(ix, 0, a1, bi);\n r0bits = bi.bits;\n\n for (var r1 = 0; r1 < 8; r1++) {\n var a2 = gfc.scalefac_band.l[r0 + r1 + 2];\n if (a2 >= bigv)\n break;\n var bits = r0bits;\n bi = new Bits(bits);\n var r1t = choose_table(ix, a1, a2, bi);\n bits = bi.bits;\n if (r01_bits[r0 + r1] > bits) {\n r01_bits[r0 + r1] = bits;\n r01_div[r0 + r1] = r0;\n r0_tbl[r0 + r1] = r0t;\n r1_tbl[r0 + r1] = r1t;\n }\n }\n }\n }\n\n function recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n var bigv = cod_info2.big_values;\n\n for (var r2 = 2; r2 < Encoder.SBMAX_l + 1; r2++) {\n var a2 = gfc.scalefac_band.l[r2];\n if (a2 >= bigv)\n break;\n var bits = r01_bits[r2 - 2] + cod_info2.count1bits;\n if (gi.part2_3_length <= bits)\n break;\n\n var bi = new Bits(bits);\n var r2t = choose_table(ix, a2, bigv, bi);\n bits = bi.bits;\n if (gi.part2_3_length <= bits)\n continue;\n\n gi.assign(cod_info2);\n gi.part2_3_length = bits;\n gi.region0_count = r01_div[r2 - 2];\n gi.region1_count = r2 - 2 - r01_div[r2 - 2];\n gi.table_select[0] = r0_tbl[r2 - 2];\n gi.table_select[1] = r1_tbl[r2 - 2];\n gi.table_select[2] = r2t;\n }\n }\n\n this.best_huffman_divide = function (gfc, gi) {\n var cod_info2 = new GrInfo();\n var ix = gi.l3_enc;\n var r01_bits = new_int(7 + 15 + 1);\n var r01_div = new_int(7 + 15 + 1);\n var r0_tbl = new_int(7 + 15 + 1);\n var r1_tbl = new_int(7 + 15 + 1);\n\n /* SHORT BLOCK stuff fails for MPEG2 */\n if (gi.block_type == Encoder.SHORT_TYPE && gfc.mode_gr == 1)\n return;\n\n cod_info2.assign(gi);\n if (gi.block_type == Encoder.NORM_TYPE) {\n recalc_divide_init(gfc, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl);\n recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div,\n r0_tbl, r1_tbl);\n }\n var i = cod_info2.big_values;\n if (i == 0 || (ix[i - 2] | ix[i - 1]) > 1)\n return;\n\n i = gi.count1 + 2;\n if (i > 576)\n return;\n\n /* Determines the number of bits to encode the quadruples. */\n cod_info2.assign(gi);\n cod_info2.count1 = i;\n var a1 = 0;\n var a2 = 0;\n\n assert(i <= 576);\n\n for (; i > cod_info2.big_values; i -= 4) {\n var p = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2\n + ix[i - 1];\n a1 += Tables.t32l[p];\n a2 += Tables.t33l[p];\n }\n cod_info2.big_values = i;\n\n cod_info2.count1table_select = 0;\n if (a1 > a2) {\n a1 = a2;\n cod_info2.count1table_select = 1;\n }\n\n cod_info2.count1bits = a1;\n\n if (cod_info2.block_type == Encoder.NORM_TYPE)\n recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div,\n r0_tbl, r1_tbl);\n else {\n /* Count the number of bits necessary to code the bigvalues region. */\n cod_info2.part2_3_length = a1;\n a1 = gfc.scalefac_band.l[7 + 1];\n if (a1 > i) {\n a1 = i;\n }\n if (a1 > 0) {\n var bi = new Bits(cod_info2.part2_3_length);\n cod_info2.table_select[0] = choose_table(ix, 0, a1, bi);\n cod_info2.part2_3_length = bi.bits;\n }\n if (i > a1) {\n var bi = new Bits(cod_info2.part2_3_length);\n cod_info2.table_select[1] = choose_table(ix, a1, i, bi);\n cod_info2.part2_3_length = bi.bits;\n }\n if (gi.part2_3_length > cod_info2.part2_3_length)\n gi.assign(cod_info2);\n }\n }\n\n var slen1_n = [1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16];\n var slen2_n = [1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8];\n var slen1_tab = [0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4];\n var slen2_tab = [0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3];\n Takehiro.slen1_tab = slen1_tab;\n Takehiro.slen2_tab = slen2_tab;\n\n function scfsi_calc(ch, l3_side) {\n var sfb;\n var gi = l3_side.tt[1][ch];\n var g0 = l3_side.tt[0][ch];\n\n for (var i = 0; i < Tables.scfsi_band.length - 1; i++) {\n for (sfb = Tables.scfsi_band[i]; sfb < Tables.scfsi_band[i + 1]; sfb++) {\n if (g0.scalefac[sfb] != gi.scalefac[sfb]\n && gi.scalefac[sfb] >= 0)\n break;\n }\n if (sfb == Tables.scfsi_band[i + 1]) {\n for (sfb = Tables.scfsi_band[i]; sfb < Tables.scfsi_band[i + 1]; sfb++) {\n gi.scalefac[sfb] = -1;\n }\n l3_side.scfsi[ch][i] = 1;\n }\n }\n var s1 = 0;\n var c1 = 0;\n for (sfb = 0; sfb < 11; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n c1++;\n if (s1 < gi.scalefac[sfb])\n s1 = gi.scalefac[sfb];\n }\n var s2 = 0;\n var c2 = 0;\n for (; sfb < Encoder.SBPSY_l; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n c2++;\n if (s2 < gi.scalefac[sfb])\n s2 = gi.scalefac[sfb];\n }\n\n for (var i = 0; i < 16; i++) {\n if (s1 < slen1_n[i] && s2 < slen2_n[i]) {\n var c = slen1_tab[i] * c1 + slen2_tab[i] * c2;\n if (gi.part2_length > c) {\n gi.part2_length = c;\n gi.scalefac_compress = i;\n }\n }\n }\n }\n\n /**\n * Find the optimal way to store the scalefactors. Only call this routine\n * after final scalefactors have been chosen and the channel/granule will\n * not be re-encoded.\n */\n this.best_scalefac_store = function (gfc, gr, ch, l3_side) {\n /* use scalefac_scale if we can */\n var gi = l3_side.tt[gr][ch];\n var sfb, i, j, l;\n var recalc = 0;\n\n /*\n * remove scalefacs from bands with ix=0. This idea comes from the AAC\n * ISO docs. added mt 3/00\n */\n /* check if l3_enc=0 */\n j = 0;\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n var width = gi.width[sfb];\n assert(width >= 0);\n j += width;\n for (l = -width; l < 0; l++) {\n if (gi.l3_enc[l + j] != 0)\n break;\n }\n if (l == 0)\n gi.scalefac[sfb] = recalc = -2;\n /* anything goes. */\n /*\n * only best_scalefac_store and calc_scfsi know--and only they\n * should know--about the magic number -2.\n */\n }\n\n if (0 == gi.scalefac_scale && 0 == gi.preflag) {\n var s = 0;\n for (sfb = 0; sfb < gi.sfbmax; sfb++)\n if (gi.scalefac[sfb] > 0)\n s |= gi.scalefac[sfb];\n\n if (0 == (s & 1) && s != 0) {\n for (sfb = 0; sfb < gi.sfbmax; sfb++)\n if (gi.scalefac[sfb] > 0)\n gi.scalefac[sfb] >>= 1;\n\n gi.scalefac_scale = recalc = 1;\n }\n }\n\n if (0 == gi.preflag && gi.block_type != Encoder.SHORT_TYPE\n && gfc.mode_gr == 2) {\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++)\n if (gi.scalefac[sfb] < qupvt.pretab[sfb]\n && gi.scalefac[sfb] != -2)\n break;\n if (sfb == Encoder.SBPSY_l) {\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++)\n if (gi.scalefac[sfb] > 0)\n gi.scalefac[sfb] -= qupvt.pretab[sfb];\n\n gi.preflag = recalc = 1;\n }\n }\n\n for (i = 0; i < 4; i++)\n l3_side.scfsi[ch][i] = 0;\n\n if (gfc.mode_gr == 2 && gr == 1\n && l3_side.tt[0][ch].block_type != Encoder.SHORT_TYPE\n && l3_side.tt[1][ch].block_type != Encoder.SHORT_TYPE) {\n scfsi_calc(ch, l3_side);\n recalc = 0;\n }\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] == -2) {\n gi.scalefac[sfb] = 0;\n /* if anything goes, then 0 is a good choice */\n }\n }\n if (recalc != 0) {\n if (gfc.mode_gr == 2) {\n this.scale_bitcount(gi);\n } else {\n this.scale_bitcount_lsf(gfc, gi);\n }\n }\n }\n\n function all_scalefactors_not_negative(scalefac, n) {\n for (var i = 0; i < n; ++i) {\n if (scalefac[i] < 0)\n return false;\n }\n return true;\n }\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 18*slen1_tab[i] + 18*slen2_tab[i]\n */\n var scale_short = [0, 18, 36, 54, 54, 36, 54, 72,\n 54, 72, 90, 72, 90, 108, 108, 126];\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 17*slen1_tab[i] + 18*slen2_tab[i]\n */\n var scale_mixed = [0, 18, 36, 54, 51, 35, 53, 71,\n 52, 70, 88, 69, 87, 105, 104, 122];\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 11*slen1_tab[i] + 10*slen2_tab[i]\n */\n var scale_long = [0, 10, 20, 30, 33, 21, 31, 41, 32, 42,\n 52, 43, 53, 63, 64, 74];\n\n /**\n * Also calculates the number of bits necessary to code the scalefactors.\n */\n this.scale_bitcount = function (cod_info) {\n var k, sfb, max_slen1 = 0, max_slen2 = 0;\n\n /* maximum values */\n var tab;\n var scalefac = cod_info.scalefac;\n\n assert(all_scalefactors_not_negative(scalefac, cod_info.sfbmax));\n\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n tab = scale_short;\n if (cod_info.mixed_block_flag != 0)\n tab = scale_mixed;\n } else { /* block_type == 1,2,or 3 */\n tab = scale_long;\n if (0 == cod_info.preflag) {\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++)\n if (scalefac[sfb] < qupvt.pretab[sfb])\n break;\n\n if (sfb == Encoder.SBPSY_l) {\n cod_info.preflag = 1;\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++)\n scalefac[sfb] -= qupvt.pretab[sfb];\n }\n }\n }\n\n for (sfb = 0; sfb < cod_info.sfbdivide; sfb++)\n if (max_slen1 < scalefac[sfb])\n max_slen1 = scalefac[sfb];\n\n for (; sfb < cod_info.sfbmax; sfb++)\n if (max_slen2 < scalefac[sfb])\n max_slen2 = scalefac[sfb];\n\n /*\n * from Takehiro TOMINAGA 10/99 loop over *all*\n * posible values of scalefac_compress to find the one which uses the\n * smallest number of bits. ISO would stop at first valid index\n */\n cod_info.part2_length = QuantizePVT.LARGE_BITS;\n for (k = 0; k < 16; k++) {\n if (max_slen1 < slen1_n[k] && max_slen2 < slen2_n[k]\n && cod_info.part2_length > tab[k]) {\n cod_info.part2_length = tab[k];\n cod_info.scalefac_compress = k;\n }\n }\n return cod_info.part2_length == QuantizePVT.LARGE_BITS;\n }\n\n /**\n * table of largest scalefactor values for MPEG2\n */\n var max_range_sfac_tab = [[15, 15, 7, 7],\n [15, 15, 7, 0], [7, 3, 0, 0], [15, 31, 31, 0],\n [7, 7, 7, 0], [3, 3, 0, 0]];\n\n /**\n * Also counts the number of bits to encode the scalefacs but for MPEG 2\n * Lower sampling frequencies (24, 22.05 and 16 kHz.)\n *\n * This is reverse-engineered from section 2.4.3.2 of the MPEG2 IS,\n * \"Audio Decoding Layer III\"\n */\n this.scale_bitcount_lsf = function (gfc, cod_info) {\n var table_number, row_in_table, partition, nr_sfb, window;\n var over;\n var i, sfb;\n var max_sfac = new_int(4);\n//var partition_table;\n var scalefac = cod_info.scalefac;\n\n /*\n * Set partition table. Note that should try to use table one, but do\n * not yet...\n */\n if (cod_info.preflag != 0)\n table_number = 2;\n else\n table_number = 0;\n\n for (i = 0; i < 4; i++)\n max_sfac[i] = 0;\n\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n row_in_table = 1;\n var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (sfb = 0, partition = 0; partition < 4; partition++) {\n nr_sfb = partition_table[partition] / 3;\n for (i = 0; i < nr_sfb; i++, sfb++)\n for (window = 0; window < 3; window++)\n if (scalefac[sfb * 3 + window] > max_sfac[partition])\n max_sfac[partition] = scalefac[sfb * 3 + window];\n }\n } else {\n row_in_table = 0;\n var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (sfb = 0, partition = 0; partition < 4; partition++) {\n nr_sfb = partition_table[partition];\n for (i = 0; i < nr_sfb; i++, sfb++)\n if (scalefac[sfb] > max_sfac[partition])\n max_sfac[partition] = scalefac[sfb];\n }\n }\n\n for (over = false, partition = 0; partition < 4; partition++) {\n if (max_sfac[partition] > max_range_sfac_tab[table_number][partition])\n over = true;\n }\n if (!over) {\n var slen1, slen2, slen3, slen4;\n\n cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (partition = 0; partition < 4; partition++)\n cod_info.slen[partition] = log2tab[max_sfac[partition]];\n\n /* set scalefac_compress */\n slen1 = cod_info.slen[0];\n slen2 = cod_info.slen[1];\n slen3 = cod_info.slen[2];\n slen4 = cod_info.slen[3];\n\n switch (table_number) {\n case 0:\n cod_info.scalefac_compress = (((slen1 * 5) + slen2) << 4)\n + (slen3 << 2) + slen4;\n break;\n\n case 1:\n cod_info.scalefac_compress = 400 + (((slen1 * 5) + slen2) << 2)\n + slen3;\n break;\n\n case 2:\n cod_info.scalefac_compress = 500 + (slen1 * 3) + slen2;\n break;\n\n default:\n System.err.printf(\"intensity stereo not implemented yet\\n\");\n break;\n }\n }\n if (!over) {\n assert(cod_info.sfb_partition_table != null);\n cod_info.part2_length = 0;\n for (partition = 0; partition < 4; partition++)\n cod_info.part2_length += cod_info.slen[partition]\n * cod_info.sfb_partition_table[partition];\n }\n return over;\n }\n\n /*\n * Since no bands have been over-amplified, we can set scalefac_compress and\n * slen[] for the formatter\n */\n var log2tab = [0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4,\n 4, 4, 4, 4];\n\n this.huffman_init = function (gfc) {\n for (var i = 2; i <= 576; i += 2) {\n var scfb_anz = 0, bv_index;\n while (gfc.scalefac_band.l[++scfb_anz] < i)\n ;\n\n bv_index = subdv_table[scfb_anz][0]; // .region0_count\n while (gfc.scalefac_band.l[bv_index + 1] > i)\n bv_index--;\n\n if (bv_index < 0) {\n /*\n * this is an indication that everything is going to be encoded\n * as region0: bigvalues < region0 < region1 so lets set\n * region0, region1 to some value larger than bigvalues\n */\n bv_index = subdv_table[scfb_anz][0]; // .region0_count\n }\n\n gfc.bv_scf[i - 2] = bv_index;\n\n bv_index = subdv_table[scfb_anz][1]; // .region1_count\n while (gfc.scalefac_band.l[bv_index + gfc.bv_scf[i - 2] + 2] > i)\n bv_index--;\n\n if (bv_index < 0) {\n bv_index = subdv_table[scfb_anz][1]; // .region1_count\n }\n\n gfc.bv_scf[i - 1] = bv_index;\n }\n }\n}\n\nmodule.exports = Takehiro;\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = require(\"./dist/recorder.js\");\r\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.pathname = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = [ '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t' ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [ '{', '}', '|', '\\\\', '^', '`' ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = [ '\\'' ].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = [ '%', '/', '?', ';', '#' ].concat(autoEscape),\n hostEndingChars = [ '/', '?', '#' ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n /* eslint-disable no-script-url */\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n };\n /* eslint-enable no-script-url */\n\nfunction urlParse(url, slashesDenoteHost) {\n if (url && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, slashesDenoteHost) {\n var i, l, lowerProto, hec, slashes,\n rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n lowerProto = proto.toLowerCase();\n this.protocol = proto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = auth;\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) {\n hostEnd = rest.length;\n }\n\n if (rest[hostEnd - 1] === ':') { hostEnd--; }\n var host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost(host);\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n }\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n rest = rest.slice(0, qm);\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '';\n }\n\n return this;\n};\n\nUrl.prototype.parseHost = function(host) {\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nmodule.exports = urlParse;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Lame = require('./Lame.js');\nvar Presets = require('./Presets.js');\nvar GainAnalysis = require('./GainAnalysis.js');\nvar QuantizePVT = require('./QuantizePVT.js');\nvar Quantize = require('./Quantize.js');\nvar Takehiro = require('./Takehiro.js');\nvar Reservoir = require('./Reservoir.js');\nvar MPEGMode = require('./MPEGMode.js');\nvar BitStream = require('./BitStream.js');\nvar Encoder = require('./Encoder.js');\nvar Version = require('./Version.js');\nvar VBRTag = require('./VBRTag.js');\n\nfunction GetAudio() {\n var parse;\n var mpg;\n\n this.setModules = function (parse2, mpg2) {\n parse = parse2;\n mpg = mpg2;\n }\n}\n\n\nfunction Parse() {\n var ver;\n var id3;\n var pre;\n\n this.setModules = function (ver2, id32, pre2) {\n ver = ver2;\n id3 = id32;\n pre = pre2;\n }\n}\n\nfunction MPGLib() {\n}\n\nfunction ID3Tag() {\n var bits;\n var ver;\n\n this.setModules = function (_bits, _ver) {\n bits = _bits;\n ver = _ver;\n }\n}\n\nfunction Mp3Encoder(channels, samplerate, kbps) {\n if (arguments.length != 3) {\n console.error('WARN: Mp3Encoder(channels, samplerate, kbps) not specified');\n channels = 1;\n samplerate = 44100;\n kbps = 128;\n }\n var lame = new Lame();\n var gaud = new GetAudio();\n var ga = new GainAnalysis();\n var bs = new BitStream();\n var p = new Presets();\n var qupvt = new QuantizePVT();\n var qu = new Quantize();\n var vbr = new VBRTag();\n var ver = new Version();\n var id3 = new ID3Tag();\n var rv = new Reservoir();\n var tak = new Takehiro();\n var parse = new Parse();\n var mpg = new MPGLib();\n\n lame.setModules(ga, bs, p, qupvt, qu, vbr, ver, id3, mpg);\n bs.setModules(ga, mpg, ver, vbr);\n id3.setModules(bs, ver);\n p.setModules(lame);\n qu.setModules(bs, rv, qupvt, tak);\n qupvt.setModules(tak, rv, lame.enc.psy);\n rv.setModules(bs);\n tak.setModules(qupvt);\n vbr.setModules(lame, bs, ver);\n gaud.setModules(parse, mpg);\n parse.setModules(ver, id3, p);\n\n var gfp = lame.lame_init();\n\n gfp.num_channels = channels;\n gfp.in_samplerate = samplerate;\n gfp.brate = kbps;\n gfp.mode = MPEGMode.STEREO;\n gfp.quality = 3;\n gfp.bWriteVbrTag = false;\n gfp.disable_reservoir = true;\n gfp.write_id3tag_automatic = false;\n\n var retcode = lame.lame_init_params(gfp);\n assert(0 == retcode);\n var maxSamples = 1152;\n var mp3buf_size = 0 | (1.25 * maxSamples + 7200);\n var mp3buf = new_byte(mp3buf_size);\n\n this.encodeBuffer = function (left, right) {\n if (channels == 1) {\n right = left;\n }\n assert(left.length == right.length);\n if (left.length > maxSamples) {\n maxSamples = left.length;\n mp3buf_size = 0 | (1.25 * maxSamples + 7200);\n mp3buf = new_byte(mp3buf_size);\n }\n\n var _sz = lame.lame_encode_buffer(gfp, left, right, left.length, mp3buf, 0, mp3buf_size);\n return new Int8Array(mp3buf.subarray(0, _sz));\n };\n\n this.flush = function () {\n var _sz = lame.lame_encode_flush(gfp, mp3buf, 0, mp3buf_size);\n return new Int8Array(mp3buf.subarray(0, _sz));\n };\n}\n\nfunction WavHeader() {\n this.dataOffset = 0;\n this.dataLen = 0;\n this.channels = 0;\n this.sampleRate = 0;\n}\n\nfunction fourccToInt(fourcc) {\n return fourcc.charCodeAt(0) << 24 | fourcc.charCodeAt(1) << 16 | fourcc.charCodeAt(2) << 8 | fourcc.charCodeAt(3);\n}\n\nWavHeader.RIFF = fourccToInt(\"RIFF\");\nWavHeader.WAVE = fourccToInt(\"WAVE\");\nWavHeader.fmt_ = fourccToInt(\"fmt \");\nWavHeader.data = fourccToInt(\"data\");\n\nWavHeader.readHeader = function (dataView) {\n var w = new WavHeader();\n\n var header = dataView.getUint32(0, false);\n if (WavHeader.RIFF != header) {\n return;\n }\n var fileLen = dataView.getUint32(4, true);\n if (WavHeader.WAVE != dataView.getUint32(8, false)) {\n return;\n }\n if (WavHeader.fmt_ != dataView.getUint32(12, false)) {\n return;\n }\n var fmtLen = dataView.getUint32(16, true);\n var pos = 16 + 4;\n switch (fmtLen) {\n case 16:\n case 18:\n w.channels = dataView.getUint16(pos + 2, true);\n w.sampleRate = dataView.getUint32(pos + 4, true);\n break;\n default:\n throw 'extended fmt chunk not implemented';\n }\n pos += fmtLen;\n var data = WavHeader.data;\n var len = 0;\n while (data != header) {\n header = dataView.getUint32(pos, false);\n len = dataView.getUint32(pos + 4, true);\n if (data == header) {\n break;\n }\n pos += (len + 8);\n }\n w.dataLen = len;\n w.dataOffset = pos + 8;\n return w;\n};\n\nmodule.exports.Mp3Encoder = Mp3Encoder;\nmodule.exports.WavHeader = WavHeader;\n","/*\n * MP3 quantization\n *\n * Copyright (c) 1999-2000 Mark Taylor\n * Copyright (c) 1999-2003 Takehiro Tominaga\n * Copyright (c) 2000-2007 Robert Hegemann\n * Copyright (c) 2001-2005 Gabriel Bouvigne\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Quantize.java,v 1.24 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar VBRQuantize = require('./VBRQuantize.js');\nvar CalcNoiseResult = require('./CalcNoiseResult.js');\nvar CalcNoiseData = require('./CalcNoiseData.js');\nvar Encoder = require('./Encoder.js');\nvar GrInfo = require('./GrInfo.js');\nvar L3Side = require('./L3Side.js');\n\nfunction Quantize() {\n var bs;\n this.rv = null;\n var rv;\n this.qupvt = null;\n var qupvt;\n\n var vbr = new VBRQuantize();\n var tk;\n\n this.setModules = function (_bs, _rv, _qupvt, _tk) {\n bs = _bs;\n rv = _rv;\n this.rv = _rv;\n qupvt = _qupvt;\n this.qupvt = _qupvt;\n tk = _tk;\n vbr.setModules(qupvt, tk);\n }\n\n /**\n * convert from L/R <. Mid/Side\n */\n this.ms_convert = function (l3_side, gr) {\n for (var i = 0; i < 576; ++i) {\n var l = l3_side.tt[gr][0].xr[i];\n var r = l3_side.tt[gr][1].xr[i];\n l3_side.tt[gr][0].xr[i] = (l + r) * (Util.SQRT2 * 0.5);\n l3_side.tt[gr][1].xr[i] = (l - r) * (Util.SQRT2 * 0.5);\n }\n };\n\n /**\n * mt 6/99\n *\n * initializes cod_info, scalefac and xrpow\n *\n * returns 0 if all energies in xr are zero, else 1\n */\n function init_xrpow_core(cod_info, xrpow, upper, sum) {\n sum = 0;\n for (var i = 0; i <= upper; ++i) {\n var tmp = Math.abs(cod_info.xr[i]);\n sum += tmp;\n xrpow[i] = Math.sqrt(tmp * Math.sqrt(tmp));\n\n if (xrpow[i] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[i];\n }\n return sum;\n }\n\n this.init_xrpow = function (gfc, cod_info, xrpow) {\n var sum = 0;\n var upper = 0 | cod_info.max_nonzero_coeff;\n\n assert(xrpow != null);\n cod_info.xrpow_max = 0;\n\n /*\n * check if there is some energy we have to quantize and calculate xrpow\n * matching our fresh scalefactors\n */\n assert(0 <= upper && upper <= 575);\n\n Arrays.fill(xrpow, upper, 576, 0);\n\n sum = init_xrpow_core(cod_info, xrpow, upper, sum);\n\n /*\n * return 1 if we have something to quantize, else 0\n */\n if (sum > 1E-20) {\n var j = 0;\n if ((gfc.substep_shaping & 2) != 0)\n j = 1;\n\n for (var i = 0; i < cod_info.psymax; i++)\n gfc.pseudohalf[i] = j;\n\n return true;\n }\n\n Arrays.fill(cod_info.l3_enc, 0, 576, 0);\n return false;\n }\n\n /**\n * Gabriel Bouvigne feb/apr 2003
\n * Analog silence detection in partitionned sfb21 or sfb12 for short blocks\n *\n * From top to bottom of sfb, changes to 0 coeffs which are below ath. It\n * stops on the first coeff higher than ath.\n */\n function psfb21_analogsilence(gfc, cod_info) {\n var ath = gfc.ATH;\n var xr = cod_info.xr;\n\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n /* NORM, START or STOP type, but not SHORT blocks */\n var stop = false;\n for (var gsfb = Encoder.PSFB21 - 1; gsfb >= 0 && !stop; gsfb--) {\n var start = gfc.scalefac_band.psfb21[gsfb];\n var end = gfc.scalefac_band.psfb21[gsfb + 1];\n var ath21 = qupvt.athAdjust(ath.adjust, ath.psfb21[gsfb],\n ath.floor);\n\n if (gfc.nsPsy.longfact[21] > 1e-12)\n ath21 *= gfc.nsPsy.longfact[21];\n\n for (var j = end - 1; j >= start; j--) {\n if (Math.abs(xr[j]) < ath21)\n xr[j] = 0;\n else {\n stop = true;\n break;\n }\n }\n }\n } else {\n /* note: short blocks coeffs are reordered */\n for (var block = 0; block < 3; block++) {\n var stop = false;\n for (var gsfb = Encoder.PSFB12 - 1; gsfb >= 0 && !stop; gsfb--) {\n var start = gfc.scalefac_band.s[12]\n * 3\n + (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12])\n * block\n + (gfc.scalefac_band.psfb12[gsfb] - gfc.scalefac_band.psfb12[0]);\n var end = start\n + (gfc.scalefac_band.psfb12[gsfb + 1] - gfc.scalefac_band.psfb12[gsfb]);\n var ath12 = qupvt.athAdjust(ath.adjust, ath.psfb12[gsfb],\n ath.floor);\n\n if (gfc.nsPsy.shortfact[12] > 1e-12)\n ath12 *= gfc.nsPsy.shortfact[12];\n\n for (var j = end - 1; j >= start; j--) {\n if (Math.abs(xr[j]) < ath12)\n xr[j] = 0;\n else {\n stop = true;\n break;\n }\n }\n }\n }\n }\n\n }\n\n this.init_outer_loop = function (gfc, cod_info) {\n /*\n * initialize fresh cod_info\n */\n cod_info.part2_3_length = 0;\n cod_info.big_values = 0;\n cod_info.count1 = 0;\n cod_info.global_gain = 210;\n cod_info.scalefac_compress = 0;\n /* mixed_block_flag, block_type was set in psymodel.c */\n cod_info.table_select[0] = 0;\n cod_info.table_select[1] = 0;\n cod_info.table_select[2] = 0;\n cod_info.subblock_gain[0] = 0;\n cod_info.subblock_gain[1] = 0;\n cod_info.subblock_gain[2] = 0;\n cod_info.subblock_gain[3] = 0;\n /* this one is always 0 */\n cod_info.region0_count = 0;\n cod_info.region1_count = 0;\n cod_info.preflag = 0;\n cod_info.scalefac_scale = 0;\n cod_info.count1table_select = 0;\n cod_info.part2_length = 0;\n cod_info.sfb_lmax = Encoder.SBPSY_l;\n cod_info.sfb_smin = Encoder.SBPSY_s;\n cod_info.psy_lmax = gfc.sfb21_extra ? Encoder.SBMAX_l : Encoder.SBPSY_l;\n cod_info.psymax = cod_info.psy_lmax;\n cod_info.sfbmax = cod_info.sfb_lmax;\n cod_info.sfbdivide = 11;\n for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n cod_info.width[sfb] = gfc.scalefac_band.l[sfb + 1]\n - gfc.scalefac_band.l[sfb];\n /* which is always 0. */\n cod_info.window[sfb] = 3;\n }\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n var ixwork = new_float(576);\n\n cod_info.sfb_smin = 0;\n cod_info.sfb_lmax = 0;\n if (cod_info.mixed_block_flag != 0) {\n /*\n * MPEG-1: sfbs 0-7 long block, 3-12 short blocks MPEG-2(.5):\n * sfbs 0-5 long block, 3-12 short blocks\n */\n cod_info.sfb_smin = 3;\n cod_info.sfb_lmax = gfc.mode_gr * 2 + 4;\n }\n cod_info.psymax = cod_info.sfb_lmax\n + 3\n * ((gfc.sfb21_extra ? Encoder.SBMAX_s : Encoder.SBPSY_s) - cod_info.sfb_smin);\n cod_info.sfbmax = cod_info.sfb_lmax + 3\n * (Encoder.SBPSY_s - cod_info.sfb_smin);\n cod_info.sfbdivide = cod_info.sfbmax - 18;\n cod_info.psy_lmax = cod_info.sfb_lmax;\n /* re-order the short blocks, for more efficient encoding below */\n /* By Takehiro TOMINAGA */\n /*\n * Within each scalefactor band, data is given for successive time\n * windows, beginning with window 0 and ending with window 2. Within\n * each window, the quantized values are then arranged in order of\n * increasing frequency...\n */\n var ix = gfc.scalefac_band.l[cod_info.sfb_lmax];\n System.arraycopy(cod_info.xr, 0, ixwork, 0, 576);\n for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n for (var window = 0; window < 3; window++) {\n for (var l = start; l < end; l++) {\n cod_info.xr[ix++] = ixwork[3 * l + window];\n }\n }\n }\n\n var j = cod_info.sfb_lmax;\n for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n cod_info.width[j] = cod_info.width[j + 1] = cod_info.width[j + 2] = gfc.scalefac_band.s[sfb + 1]\n - gfc.scalefac_band.s[sfb];\n cod_info.window[j] = 0;\n cod_info.window[j + 1] = 1;\n cod_info.window[j + 2] = 2;\n j += 3;\n }\n }\n\n cod_info.count1bits = 0;\n cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[0][0];\n cod_info.slen[0] = 0;\n cod_info.slen[1] = 0;\n cod_info.slen[2] = 0;\n cod_info.slen[3] = 0;\n\n cod_info.max_nonzero_coeff = 575;\n\n /*\n * fresh scalefactors are all zero\n */\n Arrays.fill(cod_info.scalefac, 0);\n\n psfb21_analogsilence(gfc, cod_info);\n };\n\n function BinSearchDirection(ordinal) {\n this.ordinal = ordinal;\n }\n\n BinSearchDirection.BINSEARCH_NONE = new BinSearchDirection(0);\n BinSearchDirection.BINSEARCH_UP = new BinSearchDirection(1);\n BinSearchDirection.BINSEARCH_DOWN = new BinSearchDirection(2);\n\n /**\n * author/date??\n *\n * binary step size search used by outer_loop to get a quantizer step size\n * to start with\n */\n function bin_search_StepSize(gfc, cod_info, desired_rate, ch, xrpow) {\n var nBits;\n var CurrentStep = gfc.CurrentStep[ch];\n var flagGoneOver = false;\n var start = gfc.OldValue[ch];\n var Direction = BinSearchDirection.BINSEARCH_NONE;\n cod_info.global_gain = start;\n desired_rate -= cod_info.part2_length;\n\n assert(CurrentStep != 0);\n for (; ;) {\n var step;\n nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n\n if (CurrentStep == 1 || nBits == desired_rate)\n break;\n /* nothing to adjust anymore */\n\n if (nBits > desired_rate) {\n /* increase Quantize_StepSize */\n if (Direction == BinSearchDirection.BINSEARCH_DOWN)\n flagGoneOver = true;\n\n if (flagGoneOver)\n CurrentStep /= 2;\n Direction = BinSearchDirection.BINSEARCH_UP;\n step = CurrentStep;\n } else {\n /* decrease Quantize_StepSize */\n if (Direction == BinSearchDirection.BINSEARCH_UP)\n flagGoneOver = true;\n\n if (flagGoneOver)\n CurrentStep /= 2;\n Direction = BinSearchDirection.BINSEARCH_DOWN;\n step = -CurrentStep;\n }\n cod_info.global_gain += step;\n if (cod_info.global_gain < 0) {\n cod_info.global_gain = 0;\n flagGoneOver = true;\n }\n if (cod_info.global_gain > 255) {\n cod_info.global_gain = 255;\n flagGoneOver = true;\n }\n }\n\n assert(cod_info.global_gain >= 0);\n assert(cod_info.global_gain < 256);\n\n while (nBits > desired_rate && cod_info.global_gain < 255) {\n cod_info.global_gain++;\n nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n }\n gfc.CurrentStep[ch] = (start - cod_info.global_gain >= 4) ? 4 : 2;\n gfc.OldValue[ch] = cod_info.global_gain;\n cod_info.part2_3_length = nBits;\n return nBits;\n }\n\n this.trancate_smallspectrums = function (gfc, gi, l3_xmin, work) {\n var distort = new_float(L3Side.SFBMAX);\n\n if ((0 == (gfc.substep_shaping & 4) && gi.block_type == Encoder.SHORT_TYPE)\n || (gfc.substep_shaping & 0x80) != 0)\n return;\n qupvt.calc_noise(gi, l3_xmin, distort, new CalcNoiseResult(), null);\n for (var j = 0; j < 576; j++) {\n var xr = 0.0;\n if (gi.l3_enc[j] != 0)\n xr = Math.abs(gi.xr[j]);\n work[j] = xr;\n }\n\n var j = 0;\n var sfb = 8;\n if (gi.block_type == Encoder.SHORT_TYPE)\n sfb = 6;\n do {\n var allowedNoise, trancateThreshold;\n var nsame, start;\n\n var width = gi.width[sfb];\n j += width;\n if (distort[sfb] >= 1.0)\n continue;\n\n Arrays.sort(work, j - width, width);\n if (BitStream.EQ(work[j - 1], 0.0))\n continue;\n /* all zero sfb */\n\n allowedNoise = (1.0 - distort[sfb]) * l3_xmin[sfb];\n trancateThreshold = 0.0;\n start = 0;\n do {\n var noise;\n for (nsame = 1; start + nsame < width; nsame++)\n if (BitStream.NEQ(work[start + j - width], work[start + j\n + nsame - width]))\n break;\n\n noise = work[start + j - width] * work[start + j - width]\n * nsame;\n if (allowedNoise < noise) {\n if (start != 0)\n trancateThreshold = work[start + j - width - 1];\n break;\n }\n allowedNoise -= noise;\n start += nsame;\n } while (start < width);\n if (BitStream.EQ(trancateThreshold, 0.0))\n continue;\n\n do {\n if (Math.abs(gi.xr[j - width]) <= trancateThreshold)\n gi.l3_enc[j - width] = 0;\n } while (--width > 0);\n } while (++sfb < gi.psymax);\n\n gi.part2_3_length = tk.noquant_count_bits(gfc, gi, null);\n };\n\n /**\n * author/date??\n *\n * Function: Returns zero if there is a scalefac which has not been\n * amplified. Otherwise it returns one.\n */\n function loop_break(cod_info) {\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++)\n if (cod_info.scalefac[sfb]\n + cod_info.subblock_gain[cod_info.window[sfb]] == 0)\n return false;\n\n return true;\n }\n\n /* mt 5/99: Function: Improved calc_noise for a single channel */\n\n function penalties(noise) {\n return Util.FAST_LOG10((0.368 + 0.632 * noise * noise * noise));\n }\n\n /**\n * author/date??\n *\n * several different codes to decide which quantization is better\n */\n function get_klemm_noise(distort, gi) {\n var klemm_noise = 1E-37;\n for (var sfb = 0; sfb < gi.psymax; sfb++)\n klemm_noise += penalties(distort[sfb]);\n\n return Math.max(1e-20, klemm_noise);\n }\n\n function quant_compare(quant_comp, best, calc, gi, distort) {\n /**\n * noise is given in decibels (dB) relative to masking thesholds.
\n *\n * over_noise: ??? (the previous comment is fully wrong)
\n * tot_noise: ??? (the previous comment is fully wrong)
\n * max_noise: max quantization noise\n */\n var better;\n\n switch (quant_comp) {\n default:\n case 9:\n {\n if (best.over_count > 0) {\n /* there are distorted sfb */\n better = calc.over_SSD <= best.over_SSD;\n if (calc.over_SSD == best.over_SSD)\n better = calc.bits < best.bits;\n } else {\n /* no distorted sfb */\n better = ((calc.max_noise < 0) && ((calc.max_noise * 10 + calc.bits) <= (best.max_noise * 10 + best.bits)));\n }\n break;\n }\n\n case 0:\n better = calc.over_count < best.over_count\n || (calc.over_count == best.over_count && calc.over_noise < best.over_noise)\n || (calc.over_count == best.over_count\n && BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise);\n break;\n\n case 8:\n calc.max_noise = get_klemm_noise(distort, gi);\n //$FALL-THROUGH$\n case 1:\n better = calc.max_noise < best.max_noise;\n break;\n case 2:\n better = calc.tot_noise < best.tot_noise;\n break;\n case 3:\n better = (calc.tot_noise < best.tot_noise)\n && (calc.max_noise < best.max_noise);\n break;\n case 4:\n better = (calc.max_noise <= 0.0 && best.max_noise > 0.2)\n || (calc.max_noise <= 0.0 && best.max_noise < 0.0\n && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise)\n || (calc.max_noise <= 0.0 && best.max_noise > 0.0\n && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise\n + best.over_noise)\n || (calc.max_noise > 0.0 && best.max_noise > -0.05\n && best.max_noise > calc.max_noise - 0.1 && calc.tot_noise\n + calc.over_noise < best.tot_noise\n + best.over_noise)\n || (calc.max_noise > 0.0 && best.max_noise > -0.1\n && best.max_noise > calc.max_noise - 0.15 && calc.tot_noise\n + calc.over_noise + calc.over_noise < best.tot_noise\n + best.over_noise + best.over_noise);\n break;\n case 5:\n better = calc.over_noise < best.over_noise\n || (BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise);\n break;\n case 6:\n better = calc.over_noise < best.over_noise\n || (BitStream.EQ(calc.over_noise, best.over_noise) && (calc.max_noise < best.max_noise || (BitStream\n .EQ(calc.max_noise, best.max_noise) && calc.tot_noise <= best.tot_noise)));\n break;\n case 7:\n better = calc.over_count < best.over_count\n || calc.over_noise < best.over_noise;\n break;\n }\n\n if (best.over_count == 0) {\n /*\n * If no distorted bands, only use this quantization if it is\n * better, and if it uses less bits. Unfortunately, part2_3_length\n * is sometimes a poor estimator of the final size at low bitrates.\n */\n better = better && calc.bits < best.bits;\n }\n\n return better;\n }\n\n /**\n * author/date??\n *\n *
\n     *  Amplify the scalefactor bands that violate the masking threshold.\n     *  See ISO 11172-3 Section C.1.5.4.3.5\n     *\n     *  distort[] = noise/masking\n     *  distort[] > 1   ==> noise is not masked\n     *  distort[] < 1   ==> noise is masked\n     *  max_dist = maximum value of distort[]\n     *\n     *  Three algorithms:\n     *  noise_shaping_amp\n     *        0             Amplify all bands with distort[]>1.\n     *\n     *        1             Amplify all bands with distort[] >= max_dist^(.5);\n     *                     ( 50% in the db scale)\n     *\n     *        2             Amplify first band with distort[] >= max_dist;\n     *\n     *\n     *  For algorithms 0 and 1, if max_dist < 1, then amplify all bands\n     *  with distort[] >= .95*max_dist.  This is to make sure we always\n     *  amplify at least one band.\n     * 
\n */\n function amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine) {\n var gfc = gfp.internal_flags;\n var ifqstep34;\n\n if (cod_info.scalefac_scale == 0) {\n ifqstep34 = 1.29683955465100964055;\n /* 2**(.75*.5) */\n } else {\n ifqstep34 = 1.68179283050742922612;\n /* 2**(.75*1) */\n }\n\n /* compute maximum value of distort[] */\n var trigger = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n if (trigger < distort[sfb])\n trigger = distort[sfb];\n }\n\n var noise_shaping_amp = gfc.noise_shaping_amp;\n if (noise_shaping_amp == 3) {\n if (bRefine)\n noise_shaping_amp = 2;\n else\n noise_shaping_amp = 1;\n }\n switch (noise_shaping_amp) {\n case 2:\n /* amplify exactly 1 band */\n break;\n\n case 1:\n /* amplify bands within 50% of max (on db scale) */\n if (trigger > 1.0)\n trigger = Math.pow(trigger, .5);\n else\n trigger *= .95;\n break;\n\n case 0:\n default:\n /* ISO algorithm. amplify all bands with distort>1 */\n if (trigger > 1.0)\n trigger = 1.0;\n else\n trigger *= .95;\n break;\n }\n\n var j = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n var width = cod_info.width[sfb];\n var l;\n j += width;\n if (distort[sfb] < trigger)\n continue;\n\n if ((gfc.substep_shaping & 2) != 0) {\n gfc.pseudohalf[sfb] = (0 == gfc.pseudohalf[sfb]) ? 1 : 0;\n if (0 == gfc.pseudohalf[sfb] && gfc.noise_shaping_amp == 2)\n return;\n }\n cod_info.scalefac[sfb]++;\n for (l = -width; l < 0; l++) {\n xrpow[j + l] *= ifqstep34;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n\n if (gfc.noise_shaping_amp == 2)\n return;\n }\n }\n\n /**\n * Takehiro Tominaga 2000-xx-xx\n *\n * turns on scalefac scale and adjusts scalefactors\n */\n function inc_scalefac_scale(cod_info, xrpow) {\n var ifqstep34 = 1.29683955465100964055;\n\n var j = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n var width = cod_info.width[sfb];\n var s = cod_info.scalefac[sfb];\n if (cod_info.preflag != 0)\n s += qupvt.pretab[sfb];\n j += width;\n if ((s & 1) != 0) {\n s++;\n for (var l = -width; l < 0; l++) {\n xrpow[j + l] *= ifqstep34;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n }\n cod_info.scalefac[sfb] = s >> 1;\n }\n cod_info.preflag = 0;\n cod_info.scalefac_scale = 1;\n }\n\n /**\n * Takehiro Tominaga 2000-xx-xx\n *\n * increases the subblock gain and adjusts scalefactors\n */\n function inc_subblock_gain(gfc, cod_info, xrpow) {\n var sfb;\n var scalefac = cod_info.scalefac;\n\n /* subbloc_gain can't do anything in the long block region */\n for (sfb = 0; sfb < cod_info.sfb_lmax; sfb++) {\n if (scalefac[sfb] >= 16)\n return true;\n }\n\n for (var window = 0; window < 3; window++) {\n var s1 = 0;\n var s2 = 0;\n\n for (sfb = cod_info.sfb_lmax + window; sfb < cod_info.sfbdivide; sfb += 3) {\n if (s1 < scalefac[sfb])\n s1 = scalefac[sfb];\n }\n for (; sfb < cod_info.sfbmax; sfb += 3) {\n if (s2 < scalefac[sfb])\n s2 = scalefac[sfb];\n }\n\n if (s1 < 16 && s2 < 8)\n continue;\n\n if (cod_info.subblock_gain[window] >= 7)\n return true;\n\n /*\n * even though there is no scalefactor for sfb12 subblock gain\n * affects upper frequencies too, that's why we have to go up to\n * SBMAX_s\n */\n cod_info.subblock_gain[window]++;\n var j = gfc.scalefac_band.l[cod_info.sfb_lmax];\n for (sfb = cod_info.sfb_lmax + window; sfb < cod_info.sfbmax; sfb += 3) {\n var amp;\n var width = cod_info.width[sfb];\n var s = scalefac[sfb];\n assert(s >= 0);\n s = s - (4 >> cod_info.scalefac_scale);\n if (s >= 0) {\n scalefac[sfb] = s;\n j += width * 3;\n continue;\n }\n\n scalefac[sfb] = 0;\n {\n var gain = 210 + (s << (cod_info.scalefac_scale + 1));\n amp = qupvt.IPOW20(gain);\n }\n j += width * (window + 1);\n for (var l = -width; l < 0; l++) {\n xrpow[j + l] *= amp;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n j += width * (3 - window - 1);\n }\n\n {\n var amp = qupvt.IPOW20(202);\n j += cod_info.width[sfb] * (window + 1);\n for (var l = -cod_info.width[sfb]; l < 0; l++) {\n xrpow[j + l] *= amp;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n }\n }\n return false;\n }\n\n /**\n *
\n     *  Takehiro Tominaga /date??\n     *  Robert Hegemann 2000-09-06: made a function of it\n     *\n     *  amplifies scalefactor bands,\n     *   - if all are already amplified returns 0\n     *   - if some bands are amplified too much:\n     *      * try to increase scalefac_scale\n     *      * if already scalefac_scale was set\n     *          try on short blocks to increase subblock gain\n     * 
\n */\n function balance_noise(gfp, cod_info, distort, xrpow, bRefine) {\n var gfc = gfp.internal_flags;\n\n amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine);\n\n /*\n * check to make sure we have not amplified too much loop_break returns\n * 0 if there is an unamplified scalefac scale_bitcount returns 0 if no\n * scalefactors are too large\n */\n\n var status = loop_break(cod_info);\n\n if (status)\n return false;\n /* all bands amplified */\n\n /*\n * not all scalefactors have been amplified. so these scalefacs are\n * possibly valid. encode them:\n */\n if (gfc.mode_gr == 2)\n status = tk.scale_bitcount(cod_info);\n else\n status = tk.scale_bitcount_lsf(gfc, cod_info);\n\n if (!status)\n return true;\n /* amplified some bands not exceeding limits */\n\n /*\n * some scalefactors are too large. lets try setting scalefac_scale=1\n */\n if (gfc.noise_shaping > 1) {\n Arrays.fill(gfc.pseudohalf, 0);\n if (0 == cod_info.scalefac_scale) {\n inc_scalefac_scale(cod_info, xrpow);\n status = false;\n } else {\n if (cod_info.block_type == Encoder.SHORT_TYPE\n && gfc.subblock_gain > 0) {\n status = (inc_subblock_gain(gfc, cod_info, xrpow) || loop_break(cod_info));\n }\n }\n }\n\n if (!status) {\n if (gfc.mode_gr == 2)\n status = tk.scale_bitcount(cod_info);\n else\n status = tk.scale_bitcount_lsf(gfc, cod_info);\n }\n return !status;\n }\n\n /**\n *
\n     *  Function: The outer iteration loop controls the masking conditions\n     *  of all scalefactorbands. It computes the best scalefac and\n     *  global gain. This module calls the inner iteration loop\n     *\n     *  mt 5/99 completely rewritten to allow for bit reservoir control,\n     *  mid/side channels with L/R or mid/side masking thresholds,\n     *  and chooses best quantization instead of last quantization when\n     *  no distortion free quantization can be found.\n     *\n     *  added VBR support mt 5/99\n     *\n     *  some code shuffle rh 9/00\n     * 
\n *\n * @param l3_xmin\n * allowed distortion\n * @param xrpow\n * coloured magnitudes of spectral\n * @param targ_bits\n * maximum allowed bits\n */\n this.outer_loop = function (gfp, cod_info, l3_xmin, xrpow, ch, targ_bits) {\n var gfc = gfp.internal_flags;\n var cod_info_w = new GrInfo();\n var save_xrpow = new_float(576);\n var distort = new_float(L3Side.SFBMAX);\n var best_noise_info = new CalcNoiseResult();\n var better;\n var prev_noise = new CalcNoiseData();\n var best_part2_3_length = 9999999;\n var bEndOfSearch = false;\n var bRefine = false;\n var best_ggain_pass1 = 0;\n\n bin_search_StepSize(gfc, cod_info, targ_bits, ch, xrpow);\n\n if (0 == gfc.noise_shaping)\n /* fast mode, no noise shaping, we are ready */\n return 100;\n /* default noise_info.over_count */\n\n /* compute the distortion in this quantization */\n /* coefficients and thresholds both l/r (or both mid/side) */\n qupvt.calc_noise(cod_info, l3_xmin, distort, best_noise_info,\n prev_noise);\n best_noise_info.bits = cod_info.part2_3_length;\n\n cod_info_w.assign(cod_info);\n var age = 0;\n System.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n\n while (!bEndOfSearch) {\n /* BEGIN MAIN LOOP */\n do {\n var noise_info = new CalcNoiseResult();\n var search_limit;\n var maxggain = 255;\n\n /*\n * When quantization with no distorted bands is found, allow up\n * to X new unsuccesful tries in serial. This gives us more\n * possibilities for different quant_compare modes. Much more\n * than 3 makes not a big difference, it is only slower.\n */\n\n if ((gfc.substep_shaping & 2) != 0) {\n search_limit = 20;\n } else {\n search_limit = 3;\n }\n\n /*\n * Check if the last scalefactor band is distorted. in VBR mode\n * we can't get rid of the distortion, so quit now and VBR mode\n * will try again with more bits. (makes a 10% speed increase,\n * the files I tested were binary identical, 2000/05/20 Robert\n * Hegemann) distort[] > 1 means noise > allowed noise\n */\n if (gfc.sfb21_extra) {\n if (distort[cod_info_w.sfbmax] > 1.0)\n break;\n if (cod_info_w.block_type == Encoder.SHORT_TYPE\n && (distort[cod_info_w.sfbmax + 1] > 1.0 || distort[cod_info_w.sfbmax + 2] > 1.0))\n break;\n }\n\n /* try a new scalefactor conbination on cod_info_w */\n if (!balance_noise(gfp, cod_info_w, distort, xrpow, bRefine))\n break;\n if (cod_info_w.scalefac_scale != 0)\n maxggain = 254;\n\n /*\n * inner_loop starts with the initial quantization step computed\n * above and slowly increases until the bits < huff_bits. Thus\n * it is important not to start with too large of an inital\n * quantization step. Too small is ok, but inner_loop will take\n * longer\n */\n var huff_bits = targ_bits - cod_info_w.part2_length;\n if (huff_bits <= 0)\n break;\n\n /*\n * increase quantizer stepsize until needed bits are below\n * maximum\n */\n while ((cod_info_w.part2_3_length = tk.count_bits(gfc, xrpow,\n cod_info_w, prev_noise)) > huff_bits\n && cod_info_w.global_gain <= maxggain)\n cod_info_w.global_gain++;\n\n if (cod_info_w.global_gain > maxggain)\n break;\n\n if (best_noise_info.over_count == 0) {\n\n while ((cod_info_w.part2_3_length = tk.count_bits(gfc,\n xrpow, cod_info_w, prev_noise)) > best_part2_3_length\n && cod_info_w.global_gain <= maxggain)\n cod_info_w.global_gain++;\n\n if (cod_info_w.global_gain > maxggain)\n break;\n }\n\n /* compute the distortion in this quantization */\n qupvt.calc_noise(cod_info_w, l3_xmin, distort, noise_info,\n prev_noise);\n noise_info.bits = cod_info_w.part2_3_length;\n\n /*\n * check if this quantization is better than our saved\n * quantization\n */\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n // NORM, START or STOP type\n better = gfp.quant_comp;\n } else\n better = gfp.quant_comp_short;\n\n better = quant_compare(better, best_noise_info, noise_info,\n cod_info_w, distort) ? 1 : 0;\n\n /* save data so we can restore this quantization later */\n if (better != 0) {\n best_part2_3_length = cod_info.part2_3_length;\n best_noise_info = noise_info;\n cod_info.assign(cod_info_w);\n age = 0;\n /* save data so we can restore this quantization later */\n /* store for later reuse */\n System.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n } else {\n /* early stop? */\n if (gfc.full_outer_loop == 0) {\n if (++age > search_limit\n && best_noise_info.over_count == 0)\n break;\n if ((gfc.noise_shaping_amp == 3) && bRefine && age > 30)\n break;\n if ((gfc.noise_shaping_amp == 3)\n && bRefine\n && (cod_info_w.global_gain - best_ggain_pass1) > 15)\n break;\n }\n }\n } while ((cod_info_w.global_gain + cod_info_w.scalefac_scale) < 255);\n\n if (gfc.noise_shaping_amp == 3) {\n if (!bRefine) {\n /* refine search */\n cod_info_w.assign(cod_info);\n System.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n age = 0;\n best_ggain_pass1 = cod_info_w.global_gain;\n\n bRefine = true;\n } else {\n /* search already refined, stop */\n bEndOfSearch = true;\n }\n\n } else {\n bEndOfSearch = true;\n }\n }\n\n assert((cod_info.global_gain + cod_info.scalefac_scale) <= 255);\n /*\n * finish up\n */\n if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh)\n /* restore for reuse on next try */\n System.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n /*\n * do the 'substep shaping'\n */\n else if ((gfc.substep_shaping & 1) != 0)\n trancate_smallspectrums(gfc, cod_info, l3_xmin, xrpow);\n\n return best_noise_info.over_count;\n }\n\n /**\n * Robert Hegemann 2000-09-06\n *\n * update reservoir status after FINAL quantization/bitrate\n */\n this.iteration_finish_one = function (gfc, gr, ch) {\n var l3_side = gfc.l3_side;\n var cod_info = l3_side.tt[gr][ch];\n\n /*\n * try some better scalefac storage\n */\n tk.best_scalefac_store(gfc, gr, ch, l3_side);\n\n /*\n * best huffman_divide may save some bits too\n */\n if (gfc.use_best_huffman == 1)\n tk.best_huffman_divide(gfc, cod_info);\n\n /*\n * update reservoir status after FINAL quantization/bitrate\n */\n rv.ResvAdjust(gfc, cod_info);\n };\n\n /**\n *\n * 2000-09-04 Robert Hegemann\n *\n * @param l3_xmin\n * allowed distortion of the scalefactor\n * @param xrpow\n * coloured magnitudes of spectral values\n */\n this.VBR_encode_granule = function (gfp, cod_info, l3_xmin, xrpow, ch, min_bits, max_bits) {\n var gfc = gfp.internal_flags;\n var bst_cod_info = new GrInfo();\n var bst_xrpow = new_float(576);\n var Max_bits = max_bits;\n var real_bits = max_bits + 1;\n var this_bits = (max_bits + min_bits) / 2;\n var dbits, over, found = 0;\n var sfb21_extra = gfc.sfb21_extra;\n\n assert(Max_bits <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n Arrays.fill(bst_cod_info.l3_enc, 0);\n\n /*\n * search within round about 40 bits of optimal\n */\n do {\n assert(this_bits >= min_bits);\n assert(this_bits <= max_bits);\n assert(min_bits <= max_bits);\n\n if (this_bits > Max_bits - 42)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = sfb21_extra;\n\n over = outer_loop(gfp, cod_info, l3_xmin, xrpow, ch, this_bits);\n\n /*\n * is quantization as good as we are looking for ? in this case: is\n * no scalefactor band distorted?\n */\n if (over <= 0) {\n found = 1;\n /*\n * now we know it can be done with \"real_bits\" and maybe we can\n * skip some iterations\n */\n real_bits = cod_info.part2_3_length;\n\n /*\n * store best quantization so far\n */\n bst_cod_info.assign(cod_info);\n System.arraycopy(xrpow, 0, bst_xrpow, 0, 576);\n\n /*\n * try with fewer bits\n */\n max_bits = real_bits - 32;\n dbits = max_bits - min_bits;\n this_bits = (max_bits + min_bits) / 2;\n } else {\n /*\n * try with more bits\n */\n min_bits = this_bits + 32;\n dbits = max_bits - min_bits;\n this_bits = (max_bits + min_bits) / 2;\n\n if (found != 0) {\n found = 2;\n /*\n * start again with best quantization so far\n */\n cod_info.assign(bst_cod_info);\n System.arraycopy(bst_xrpow, 0, xrpow, 0, 576);\n }\n }\n } while (dbits > 12);\n\n gfc.sfb21_extra = sfb21_extra;\n\n /*\n * found=0 => nothing found, use last one found=1 => we just found the\n * best and left the loop found=2 => we restored a good one and have now\n * l3_enc to restore too\n */\n if (found == 2) {\n System.arraycopy(bst_cod_info.l3_enc, 0, cod_info.l3_enc, 0, 576);\n }\n assert(cod_info.part2_3_length <= Max_bits);\n }\n\n /**\n * Robert Hegemann 2000-09-05\n *\n * calculates * how many bits are available for analog silent granules * how\n * many bits to use for the lowest allowed bitrate * how many bits each\n * bitrate would provide\n */\n this.get_framebits = function (gfp, frameBits) {\n var gfc = gfp.internal_flags;\n\n /*\n * always use at least this many bits per granule per channel unless we\n * detect analog silence, see below\n */\n gfc.bitrate_index = gfc.VBR_min_bitrate;\n var bitsPerFrame = bs.getframebits(gfp);\n\n /*\n * bits for analog silence\n */\n gfc.bitrate_index = 1;\n bitsPerFrame = bs.getframebits(gfp);\n\n for (var i = 1; i <= gfc.VBR_max_bitrate; i++) {\n gfc.bitrate_index = i;\n var mb = new MeanBits(bitsPerFrame);\n frameBits[i] = rv.ResvFrameBegin(gfp, mb);\n bitsPerFrame = mb.bits;\n }\n };\n\n /* RH: this one needs to be overhauled sometime */\n\n /**\n *
\n     *  2000-09-04 Robert Hegemann\n     *\n     *  * converts LR to MS coding when necessary\n     *  * calculates allowed/adjusted quantization noise amounts\n     *  * detects analog silent frames\n     *\n     *  some remarks:\n     *  - lower masking depending on Quality setting\n     *  - quality control together with adjusted ATH MDCT scaling\n     *    on lower quality setting allocate more noise from\n     *    ATH masking, and on higher quality setting allocate\n     *    less noise from ATH masking.\n     *  - experiments show that going more than 2dB over GPSYCHO's\n     *    limits ends up in very annoying artefacts\n     * 
\n */\n this.VBR_old_prepare = function (gfp, pe, ms_ener_ratio, ratio, l3_xmin, frameBits, min_bits,\n max_bits, bands) {\n var gfc = gfp.internal_flags;\n\n var masking_lower_db, adjust = 0.0;\n var analog_silence = 1;\n var bits = 0;\n\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n var avg = rv.ResvFrameBegin(gfp, new MeanBits(0)) / gfc.mode_gr;\n\n get_framebits(gfp, frameBits);\n\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n var mxb = qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n ms_convert(gfc.l3_side, gr);\n qupvt.reduce_side(max_bits[gr], ms_ener_ratio[gr], avg, mxb);\n }\n for (var ch = 0; ch < gfc.channels_out; ++ch) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n // NORM, START or STOP type\n adjust = 1.28 / (1 + Math\n .exp(3.5 - pe[gr][ch] / 300.)) - 0.05;\n masking_lower_db = gfc.PSY.mask_adjust - adjust;\n } else {\n adjust = 2.56 / (1 + Math\n .exp(3.5 - pe[gr][ch] / 300.)) - 0.14;\n masking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n }\n gfc.masking_lower = Math.pow(10.0,\n masking_lower_db * 0.1);\n\n init_outer_loop(gfc, cod_info);\n bands[gr][ch] = qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n l3_xmin[gr][ch]);\n if (bands[gr][ch] != 0)\n analog_silence = 0;\n\n min_bits[gr][ch] = 126;\n\n bits += max_bits[gr][ch];\n }\n }\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n if (bits > frameBits[gfc.VBR_max_bitrate]) {\n max_bits[gr][ch] *= frameBits[gfc.VBR_max_bitrate];\n max_bits[gr][ch] /= bits;\n }\n if (min_bits[gr][ch] > max_bits[gr][ch])\n min_bits[gr][ch] = max_bits[gr][ch];\n\n }\n /* for ch */\n }\n /* for gr */\n\n return analog_silence;\n };\n\n this.bitpressure_strategy = function (gfc, l3_xmin, min_bits, max_bits) {\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var gi = gfc.l3_side.tt[gr][ch];\n var pxmin = l3_xmin[gr][ch];\n var pxminPos = 0;\n for (var sfb = 0; sfb < gi.psy_lmax; sfb++)\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder.SBMAX_l / Encoder.SBMAX_l;\n\n if (gi.block_type == Encoder.SHORT_TYPE) {\n for (var sfb = gi.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder.SBMAX_s / Encoder.SBMAX_s;\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder.SBMAX_s / Encoder.SBMAX_s;\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder.SBMAX_s / Encoder.SBMAX_s;\n }\n }\n max_bits[gr][ch] = 0 | Math.max(min_bits[gr][ch],\n 0.9 * max_bits[gr][ch]);\n }\n }\n };\n\n this.VBR_new_prepare = function (gfp, pe, ratio, l3_xmin, frameBits, max_bits) {\n var gfc = gfp.internal_flags;\n\n var analog_silence = 1;\n var avg = 0, bits = 0;\n var maximum_framebits;\n\n if (!gfp.free_format) {\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n\n var mb = new MeanBits(avg);\n rv.ResvFrameBegin(gfp, mb);\n avg = mb.bits;\n\n get_framebits(gfp, frameBits);\n maximum_framebits = frameBits[gfc.VBR_max_bitrate];\n } else {\n gfc.bitrate_index = 0;\n var mb = new MeanBits(avg);\n maximum_framebits = rv.ResvFrameBegin(gfp, mb);\n avg = mb.bits;\n frameBits[0] = maximum_framebits;\n }\n\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n ms_convert(gfc.l3_side, gr);\n }\n for (var ch = 0; ch < gfc.channels_out; ++ch) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n\n gfc.masking_lower = Math.pow(10.0,\n gfc.PSY.mask_adjust * 0.1);\n\n init_outer_loop(gfc, cod_info);\n if (0 != qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n l3_xmin[gr][ch]))\n analog_silence = 0;\n\n bits += max_bits[gr][ch];\n }\n }\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n if (bits > maximum_framebits) {\n max_bits[gr][ch] *= maximum_framebits;\n max_bits[gr][ch] /= bits;\n }\n\n }\n /* for ch */\n }\n /* for gr */\n\n return analog_silence;\n };\n\n /**\n * calculates target bits for ABR encoding\n *\n * mt 2000/05/31\n */\n this.calc_target_bits = function (gfp, pe, ms_ener_ratio, targ_bits, analog_silence_bits, max_frame_bits) {\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n var res_factor;\n var gr, ch, totbits, mean_bits = 0;\n\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n var mb = new MeanBits(mean_bits);\n max_frame_bits[0] = rv.ResvFrameBegin(gfp, mb);\n mean_bits = mb.bits;\n\n gfc.bitrate_index = 1;\n mean_bits = bs.getframebits(gfp) - gfc.sideinfo_len * 8;\n analog_silence_bits[0] = mean_bits / (gfc.mode_gr * gfc.channels_out);\n\n mean_bits = gfp.VBR_mean_bitrate_kbps * gfp.framesize * 1000;\n if ((gfc.substep_shaping & 1) != 0)\n mean_bits *= 1.09;\n mean_bits /= gfp.out_samplerate;\n mean_bits -= gfc.sideinfo_len * 8;\n mean_bits /= (gfc.mode_gr * gfc.channels_out);\n\n /**\n *
\n         *           res_factor is the percentage of the target bitrate that should\n         *           be used on average.  the remaining bits are added to the\n         *           bitreservoir and used for difficult to encode frames.\n         *\n         *           Since we are tracking the average bitrate, we should adjust\n         *           res_factor \"on the fly\", increasing it if the average bitrate\n         *           is greater than the requested bitrate, and decreasing it\n         *           otherwise.  Reasonable ranges are from .9 to 1.0\n         *\n         *           Until we get the above suggestion working, we use the following\n         *           tuning:\n         *           compression ratio    res_factor\n         *           5.5  (256kbps)         1.0      no need for bitreservoir\n         *           11   (128kbps)         .93      7% held for reservoir\n         *\n         *           with linear interpolation for other values.\n         * 
\n */\n res_factor = .93 + .07 * (11.0 - gfp.compression_ratio)\n / (11.0 - 5.5);\n if (res_factor < .90)\n res_factor = .90;\n if (res_factor > 1.00)\n res_factor = 1.00;\n\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n var sum = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n targ_bits[gr][ch] = (int)(res_factor * mean_bits);\n\n if (pe[gr][ch] > 700) {\n var add_bits = (int)((pe[gr][ch] - 700) / 1.4);\n\n var cod_info = l3_side.tt[gr][ch];\n targ_bits[gr][ch] = (int)(res_factor * mean_bits);\n\n /* short blocks use a little extra, no matter what the pe */\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n if (add_bits < mean_bits / 2)\n add_bits = mean_bits / 2;\n }\n /* at most increase bits by 1.5*average */\n if (add_bits > mean_bits * 3 / 2)\n add_bits = mean_bits * 3 / 2;\n else if (add_bits < 0)\n add_bits = 0;\n\n targ_bits[gr][ch] += add_bits;\n }\n if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL) {\n targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n }\n sum += targ_bits[gr][ch];\n }\n /* for ch */\n if (sum > LameInternalFlags.MAX_BITS_PER_GRANULE) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[gr][ch] *= LameInternalFlags.MAX_BITS_PER_GRANULE;\n targ_bits[gr][ch] /= sum;\n }\n }\n }\n /* for gr */\n\n if (gfc.mode_ext == Encoder.MPG_MD_MS_LR)\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n qupvt.reduce_side(targ_bits[gr], ms_ener_ratio[gr], mean_bits\n * gfc.channels_out,\n LameInternalFlags.MAX_BITS_PER_GRANULE);\n }\n\n /*\n * sum target bits\n */\n totbits = 0;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL)\n targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n totbits += targ_bits[gr][ch];\n }\n }\n\n /*\n * repartion target bits if needed\n */\n if (totbits > max_frame_bits[0]) {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n targ_bits[gr][ch] *= max_frame_bits[0];\n targ_bits[gr][ch] /= totbits;\n }\n }\n }\n }\n\n}\n\nmodule.exports = Quantize;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar new_short_n = common.new_short_n;\nvar assert = common.assert;\n\nvar PsyModel = require('./PsyModel.js');\nvar LameGlobalFlags = require('./LameGlobalFlags.js');\nvar LameInternalFlags = require('./LameInternalFlags.js');\nvar ATH = require('./ATH.js');\nvar ReplayGain = require('./ReplayGain.js');\nvar CBRNewIterationLoop = require('./CBRNewIterationLoop.js');\nvar BitStream = require('./BitStream.js');\nvar Tables = require('./Tables.js');\nvar Encoder = require('./Encoder.js');\n\nfunction Lame() {\n var self = this;\n var LAME_MAXALBUMART = (128 * 1024);\n\n Lame.V9 = 410;\n Lame.V8 = 420;\n Lame.V7 = 430;\n Lame.V6 = 440;\n Lame.V5 = 450;\n Lame.V4 = 460;\n Lame.V3 = 470;\n Lame.V2 = 480;\n Lame.V1 = 490;\n Lame.V0 = 500;\n\n /* still there for compatibility */\n\n Lame.R3MIX = 1000;\n Lame.STANDARD = 1001;\n Lame.EXTREME = 1002;\n Lame.INSANE = 1003;\n Lame.STANDARD_FAST = 1004;\n Lame.EXTREME_FAST = 1005;\n Lame.MEDIUM = 1006;\n Lame.MEDIUM_FAST = 1007;\n\n /**\n * maximum size of mp3buffer needed if you encode at most 1152 samples for\n * each call to lame_encode_buffer. see lame_encode_buffer() below\n * (LAME_MAXMP3BUFFER is now obsolete)\n */\n var LAME_MAXMP3BUFFER = (16384 + LAME_MAXALBUMART);\n Lame.LAME_MAXMP3BUFFER = LAME_MAXMP3BUFFER;\n\n var ga;\n var bs;\n var p;\n var qupvt;\n var qu;\n var psy = new PsyModel();\n var vbr;\n var ver;\n var id3;\n var mpglib;\n this.enc = new Encoder();\n\n this.setModules = function (_ga, _bs, _p, _qupvt, _qu, _vbr, _ver, _id3, _mpglib) {\n ga = _ga;\n bs = _bs;\n p = _p;\n qupvt = _qupvt;\n qu = _qu;\n vbr = _vbr;\n ver = _ver;\n id3 = _id3;\n mpglib = _mpglib;\n this.enc.setModules(bs, psy, qupvt, vbr);\n }\n\n /**\n * PSY Model related stuff\n */\n function PSY() {\n /**\n * The dbQ stuff.\n */\n this.mask_adjust = 0.;\n /**\n * The dbQ stuff.\n */\n this.mask_adjust_short = 0.;\n /* at transition from one scalefactor band to next */\n /**\n * Band weight long scalefactor bands.\n */\n this.bo_l_weight = new_float(Encoder.SBMAX_l);\n /**\n * Band weight short scalefactor bands.\n */\n this.bo_s_weight = new_float(Encoder.SBMAX_s);\n }\n\n function LowPassHighPass() {\n this.lowerlimit = 0.;\n }\n\n function BandPass(bitrate, lPass) {\n this.lowpass = lPass;\n }\n\n var LAME_ID = 0xFFF88E3B;\n\n function lame_init_old(gfp) {\n var gfc;\n\n gfp.class_id = LAME_ID;\n\n gfc = gfp.internal_flags = new LameInternalFlags();\n\n /* Global flags. set defaults here for non-zero values */\n /* see lame.h for description */\n /*\n * set integer values to -1 to mean that LAME will compute the best\n * value, UNLESS the calling program as set it (and the value is no\n * longer -1)\n */\n\n gfp.mode = MPEGMode.NOT_SET;\n gfp.original = 1;\n gfp.in_samplerate = 44100;\n gfp.num_channels = 2;\n gfp.num_samples = -1;\n\n gfp.bWriteVbrTag = true;\n gfp.quality = -1;\n gfp.short_blocks = null;\n gfc.subblock_gain = -1;\n\n gfp.lowpassfreq = 0;\n gfp.highpassfreq = 0;\n gfp.lowpasswidth = -1;\n gfp.highpasswidth = -1;\n\n gfp.VBR = VbrMode.vbr_off;\n gfp.VBR_q = 4;\n gfp.ATHcurve = -1;\n gfp.VBR_mean_bitrate_kbps = 128;\n gfp.VBR_min_bitrate_kbps = 0;\n gfp.VBR_max_bitrate_kbps = 0;\n gfp.VBR_hard_min = 0;\n gfc.VBR_min_bitrate = 1;\n /* not 0 ????? */\n gfc.VBR_max_bitrate = 13;\n /* not 14 ????? */\n\n gfp.quant_comp = -1;\n gfp.quant_comp_short = -1;\n\n gfp.msfix = -1;\n\n gfc.resample_ratio = 1;\n\n gfc.OldValue[0] = 180;\n gfc.OldValue[1] = 180;\n gfc.CurrentStep[0] = 4;\n gfc.CurrentStep[1] = 4;\n gfc.masking_lower = 1;\n gfc.nsPsy.attackthre = -1;\n gfc.nsPsy.attackthre_s = -1;\n\n gfp.scale = -1;\n\n gfp.athaa_type = -1;\n gfp.ATHtype = -1;\n /* default = -1 = set in lame_init_params */\n gfp.athaa_loudapprox = -1;\n /* 1 = flat loudness approx. (total energy) */\n /* 2 = equal loudness curve */\n gfp.athaa_sensitivity = 0.0;\n /* no offset */\n gfp.useTemporal = null;\n gfp.interChRatio = -1;\n\n /*\n * The reason for int mf_samples_to_encode = ENCDELAY + POSTDELAY;\n * ENCDELAY = internal encoder delay. And then we have to add\n * POSTDELAY=288 because of the 50% MDCT overlap. A 576 MDCT granule\n * decodes to 1152 samples. To synthesize the 576 samples centered under\n * this granule we need the previous granule for the first 288 samples\n * (no problem), and the next granule for the next 288 samples (not\n * possible if this is last granule). So we need to pad with 288 samples\n * to make sure we can encode the 576 samples we are interested in.\n */\n gfc.mf_samples_to_encode = Encoder.ENCDELAY + Encoder.POSTDELAY;\n gfp.encoder_padding = 0;\n gfc.mf_size = Encoder.ENCDELAY - Encoder.MDCTDELAY;\n /*\n * we pad input with this many 0's\n */\n\n gfp.findReplayGain = false;\n gfp.decode_on_the_fly = false;\n\n gfc.decode_on_the_fly = false;\n gfc.findReplayGain = false;\n gfc.findPeakSample = false;\n\n gfc.RadioGain = 0;\n gfc.AudiophileGain = 0;\n gfc.noclipGainChange = 0;\n gfc.noclipScale = -1.0;\n\n gfp.preset = 0;\n\n gfp.write_id3tag_automatic = true;\n return 0;\n }\n\n this.lame_init = function () {\n var gfp = new LameGlobalFlags();\n\n var ret = lame_init_old(gfp);\n if (ret != 0) {\n return null;\n }\n\n gfp.lame_allocated_gfp = 1;\n return gfp;\n }\n\n function filter_coef(x) {\n if (x > 1.0)\n return 0.0;\n if (x <= 0.0)\n return 1.0;\n\n return Math.cos(Math.PI / 2 * x);\n }\n\n this.nearestBitrateFullIndex = function (bitrate) {\n /* borrowed from DM abr presets */\n\n var full_bitrate_table = [8, 16, 24, 32, 40, 48, 56, 64, 80,\n 96, 112, 128, 160, 192, 224, 256, 320];\n\n var lower_range = 0, lower_range_kbps = 0, upper_range = 0, upper_range_kbps = 0;\n\n /* We assume specified bitrate will be 320kbps */\n upper_range_kbps = full_bitrate_table[16];\n upper_range = 16;\n lower_range_kbps = full_bitrate_table[16];\n lower_range = 16;\n\n /*\n * Determine which significant bitrates the value specified falls\n * between, if loop ends without breaking then we were correct above\n * that the value was 320\n */\n for (var b = 0; b < 16; b++) {\n if ((Math.max(bitrate, full_bitrate_table[b + 1])) != bitrate) {\n upper_range_kbps = full_bitrate_table[b + 1];\n upper_range = b + 1;\n lower_range_kbps = full_bitrate_table[b];\n lower_range = (b);\n break;\n /* We found upper range */\n }\n }\n\n /* Determine which range the value specified is closer to */\n if ((upper_range_kbps - bitrate) > (bitrate - lower_range_kbps)) {\n return lower_range;\n }\n return upper_range;\n }\n\n function optimum_samplefreq(lowpassfreq, input_samplefreq) {\n /*\n * Rules:\n *\n * - if possible, sfb21 should NOT be used\n */\n var suggested_samplefreq = 44100;\n\n if (input_samplefreq >= 48000)\n suggested_samplefreq = 48000;\n else if (input_samplefreq >= 44100)\n suggested_samplefreq = 44100;\n else if (input_samplefreq >= 32000)\n suggested_samplefreq = 32000;\n else if (input_samplefreq >= 24000)\n suggested_samplefreq = 24000;\n else if (input_samplefreq >= 22050)\n suggested_samplefreq = 22050;\n else if (input_samplefreq >= 16000)\n suggested_samplefreq = 16000;\n else if (input_samplefreq >= 12000)\n suggested_samplefreq = 12000;\n else if (input_samplefreq >= 11025)\n suggested_samplefreq = 11025;\n else if (input_samplefreq >= 8000)\n suggested_samplefreq = 8000;\n\n if (lowpassfreq == -1)\n return suggested_samplefreq;\n\n if (lowpassfreq <= 15960)\n suggested_samplefreq = 44100;\n if (lowpassfreq <= 15250)\n suggested_samplefreq = 32000;\n if (lowpassfreq <= 11220)\n suggested_samplefreq = 24000;\n if (lowpassfreq <= 9970)\n suggested_samplefreq = 22050;\n if (lowpassfreq <= 7230)\n suggested_samplefreq = 16000;\n if (lowpassfreq <= 5420)\n suggested_samplefreq = 12000;\n if (lowpassfreq <= 4510)\n suggested_samplefreq = 11025;\n if (lowpassfreq <= 3970)\n suggested_samplefreq = 8000;\n\n if (input_samplefreq < suggested_samplefreq) {\n /*\n * choose a valid MPEG sample frequency above the input sample\n * frequency to avoid SFB21/12 bitrate bloat rh 061115\n */\n if (input_samplefreq > 44100) {\n return 48000;\n }\n if (input_samplefreq > 32000) {\n return 44100;\n }\n if (input_samplefreq > 24000) {\n return 32000;\n }\n if (input_samplefreq > 22050) {\n return 24000;\n }\n if (input_samplefreq > 16000) {\n return 22050;\n }\n if (input_samplefreq > 12000) {\n return 16000;\n }\n if (input_samplefreq > 11025) {\n return 12000;\n }\n if (input_samplefreq > 8000) {\n return 11025;\n }\n return 8000;\n }\n return suggested_samplefreq;\n }\n\n /**\n * convert samp freq in Hz to index\n */\n function SmpFrqIndex(sample_freq, gpf) {\n switch (sample_freq) {\n case 44100:\n gpf.version = 1;\n return 0;\n case 48000:\n gpf.version = 1;\n return 1;\n case 32000:\n gpf.version = 1;\n return 2;\n case 22050:\n gpf.version = 0;\n return 0;\n case 24000:\n gpf.version = 0;\n return 1;\n case 16000:\n gpf.version = 0;\n return 2;\n case 11025:\n gpf.version = 0;\n return 0;\n case 12000:\n gpf.version = 0;\n return 1;\n case 8000:\n gpf.version = 0;\n return 2;\n default:\n gpf.version = 0;\n return -1;\n }\n }\n\n /**\n * @param bRate\n * legal rates from 8 to 320\n */\n function FindNearestBitrate(bRate, version, samplerate) {\n /* MPEG-1 or MPEG-2 LSF */\n if (samplerate < 16000)\n version = 2;\n\n var bitrate = Tables.bitrate_table[version][1];\n\n for (var i = 2; i <= 14; i++) {\n if (Tables.bitrate_table[version][i] > 0) {\n if (Math.abs(Tables.bitrate_table[version][i] - bRate) < Math\n .abs(bitrate - bRate))\n bitrate = Tables.bitrate_table[version][i];\n }\n }\n return bitrate;\n }\n\n /**\n * @param bRate\n * legal rates from 32 to 448 kbps\n * @param version\n * MPEG-1 or MPEG-2/2.5 LSF\n */\n function BitrateIndex(bRate, version, samplerate) {\n /* convert bitrate in kbps to index */\n if (samplerate < 16000)\n version = 2;\n for (var i = 0; i <= 14; i++) {\n if (Tables.bitrate_table[version][i] > 0) {\n if (Tables.bitrate_table[version][i] == bRate) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function optimum_bandwidth(lh, bitrate) {\n /**\n *
\n         *  Input:\n         *      bitrate     total bitrate in kbps\n         *\n         *   Output:\n         *      lowerlimit: best lowpass frequency limit for input filter in Hz\n         *      upperlimit: best highpass frequency limit for input filter in Hz\n         * 
\n */\n var freq_map = [new BandPass(8, 2000),\n new BandPass(16, 3700), new BandPass(24, 3900),\n new BandPass(32, 5500), new BandPass(40, 7000),\n new BandPass(48, 7500), new BandPass(56, 10000),\n new BandPass(64, 11000), new BandPass(80, 13500),\n new BandPass(96, 15100), new BandPass(112, 15600),\n new BandPass(128, 17000), new BandPass(160, 17500),\n new BandPass(192, 18600), new BandPass(224, 19400),\n new BandPass(256, 19700), new BandPass(320, 20500)];\n\n var table_index = self.nearestBitrateFullIndex(bitrate);\n lh.lowerlimit = freq_map[table_index].lowpass;\n }\n\n function lame_init_params_ppflt(gfp) {\n var gfc = gfp.internal_flags;\n /***************************************************************/\n /* compute info needed for polyphase filter (filter type==0, default) */\n /***************************************************************/\n\n var lowpass_band = 32;\n var highpass_band = -1;\n\n if (gfc.lowpass1 > 0) {\n var minband = 999;\n for (var band = 0; band <= 31; band++) {\n var freq = (band / 31.0);\n /* this band and above will be zeroed: */\n if (freq >= gfc.lowpass2) {\n lowpass_band = Math.min(lowpass_band, band);\n }\n if (gfc.lowpass1 < freq && freq < gfc.lowpass2) {\n minband = Math.min(minband, band);\n }\n }\n\n /*\n * compute the *actual* transition band implemented by the polyphase\n * filter\n */\n if (minband == 999) {\n gfc.lowpass1 = (lowpass_band - .75) / 31.0;\n } else {\n gfc.lowpass1 = (minband - .75) / 31.0;\n }\n gfc.lowpass2 = lowpass_band / 31.0;\n }\n\n /*\n * make sure highpass filter is within 90% of what the effective\n * highpass frequency will be\n */\n if (gfc.highpass2 > 0) {\n if (gfc.highpass2 < .9 * (.75 / 31.0)) {\n gfc.highpass1 = 0;\n gfc.highpass2 = 0;\n System.err.println(\"Warning: highpass filter disabled. \"\n + \"highpass frequency too small\\n\");\n }\n }\n\n if (gfc.highpass2 > 0) {\n var maxband = -1;\n for (var band = 0; band <= 31; band++) {\n var freq = band / 31.0;\n /* this band and below will be zereod */\n if (freq <= gfc.highpass1) {\n highpass_band = Math.max(highpass_band, band);\n }\n if (gfc.highpass1 < freq && freq < gfc.highpass2) {\n maxband = Math.max(maxband, band);\n }\n }\n /*\n * compute the *actual* transition band implemented by the polyphase\n * filter\n */\n gfc.highpass1 = highpass_band / 31.0;\n if (maxband == -1) {\n gfc.highpass2 = (highpass_band + .75) / 31.0;\n } else {\n gfc.highpass2 = (maxband + .75) / 31.0;\n }\n }\n\n for (var band = 0; band < 32; band++) {\n var fc1, fc2;\n var freq = band / 31.0;\n if (gfc.highpass2 > gfc.highpass1) {\n fc1 = filter_coef((gfc.highpass2 - freq)\n / (gfc.highpass2 - gfc.highpass1 + 1e-20));\n } else {\n fc1 = 1.0;\n }\n if (gfc.lowpass2 > gfc.lowpass1) {\n fc2 = filter_coef((freq - gfc.lowpass1)\n / (gfc.lowpass2 - gfc.lowpass1 + 1e-20));\n } else {\n fc2 = 1.0;\n }\n gfc.amp_filter[band] = (fc1 * fc2);\n }\n }\n\n function lame_init_qval(gfp) {\n var gfc = gfp.internal_flags;\n\n switch (gfp.quality) {\n default:\n case 9: /* no psymodel, no noise shaping */\n gfc.psymodel = 0;\n gfc.noise_shaping = 0;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 8:\n gfp.quality = 7;\n //$FALL-THROUGH$\n case 7:\n /*\n * use psymodel (for short block and m/s switching), but no noise\n * shapping\n */\n gfc.psymodel = 1;\n gfc.noise_shaping = 0;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 6:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 5:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 4:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 3:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 1;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 2:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 1;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n /* inner loop */\n gfc.full_outer_loop = 0;\n break;\n\n case 1:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 2;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 0:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 2;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n /*\n * type 2 disabled because of it slowness, in favor of full outer\n * loop search\n */\n gfc.full_outer_loop = 0;\n /*\n * full outer loop search disabled because of audible distortions it\n * may generate rh 060629\n */\n break;\n }\n\n }\n\n function lame_init_bitstream(gfp) {\n var gfc = gfp.internal_flags;\n gfp.frameNum = 0;\n\n if (gfp.write_id3tag_automatic) {\n id3.id3tag_write_v2(gfp);\n }\n /* initialize histogram data optionally used by frontend */\n\n gfc.bitrate_stereoMode_Hist = new_int_n([16, 4 + 1]);\n gfc.bitrate_blockType_Hist = new_int_n([16, 4 + 1 + 1]);\n\n gfc.PeakSample = 0.0;\n\n /* Write initial VBR Header to bitstream and init VBR data */\n if (gfp.bWriteVbrTag)\n vbr.InitVbrTag(gfp);\n }\n\n /********************************************************************\n * initialize internal params based on data in gf (globalflags struct filled\n * in by calling program)\n *\n * OUTLINE:\n *\n * We first have some complex code to determine bitrate, output samplerate\n * and mode. It is complicated by the fact that we allow the user to set\n * some or all of these parameters, and need to determine best possible\n * values for the rest of them:\n *\n * 1. set some CPU related flags 2. check if we are mono.mono, stereo.mono\n * or stereo.stereo 3. compute bitrate and output samplerate: user may have\n * set compression ratio user may have set a bitrate user may have set a\n * output samplerate 4. set some options which depend on output samplerate\n * 5. compute the actual compression ratio 6. set mode based on compression\n * ratio\n *\n * The remaining code is much simpler - it just sets options based on the\n * mode & compression ratio:\n *\n * set allow_diff_short based on mode select lowpass filter based on\n * compression ratio & mode set the bitrate index, and min/max bitrates for\n * VBR modes disable VBR tag if it is not appropriate initialize the\n * bitstream initialize scalefac_band data set sideinfo_len (based on\n * channels, CRC, out_samplerate) write an id3v2 tag into the bitstream\n * write VBR tag into the bitstream set mpeg1/2 flag estimate the number of\n * frames (based on a lot of data)\n *\n * now we set more flags: nspsytune: see code VBR modes see code CBR/ABR see\n * code\n *\n * Finally, we set the algorithm flags based on the gfp.quality value\n * lame_init_qval(gfp);\n *\n ********************************************************************/\n this.lame_init_params = function (gfp) {\n var gfc = gfp.internal_flags;\n\n gfc.Class_ID = 0;\n if (gfc.ATH == null)\n gfc.ATH = new ATH();\n if (gfc.PSY == null)\n gfc.PSY = new PSY();\n if (gfc.rgdata == null)\n gfc.rgdata = new ReplayGain();\n\n gfc.channels_in = gfp.num_channels;\n if (gfc.channels_in == 1)\n gfp.mode = MPEGMode.MONO;\n gfc.channels_out = (gfp.mode == MPEGMode.MONO) ? 1 : 2;\n gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n if (gfp.mode == MPEGMode.MONO)\n gfp.force_ms = false;\n /*\n * don't allow forced mid/side stereo for mono output\n */\n\n if (gfp.VBR == VbrMode.vbr_off && gfp.VBR_mean_bitrate_kbps != 128\n && gfp.brate == 0)\n gfp.brate = gfp.VBR_mean_bitrate_kbps;\n\n if (gfp.VBR == VbrMode.vbr_off || gfp.VBR == VbrMode.vbr_mtrh\n || gfp.VBR == VbrMode.vbr_mt) {\n /* these modes can handle free format condition */\n } else {\n gfp.free_format = false;\n /* mode can't be mixed with free format */\n }\n\n if (gfp.VBR == VbrMode.vbr_off && gfp.brate == 0) {\n /* no bitrate or compression ratio specified, use 11.025 */\n if (BitStream.EQ(gfp.compression_ratio, 0))\n gfp.compression_ratio = 11.025;\n /*\n * rate to compress a CD down to exactly 128000 bps\n */\n }\n\n /* find bitrate if user specify a compression ratio */\n if (gfp.VBR == VbrMode.vbr_off && gfp.compression_ratio > 0) {\n\n if (gfp.out_samplerate == 0)\n gfp.out_samplerate = map2MP3Frequency((int)(0.97 * gfp.in_samplerate));\n /*\n * round up with a margin of 3 %\n */\n\n /*\n * choose a bitrate for the output samplerate which achieves\n * specified compression ratio\n */\n gfp.brate = 0 | (gfp.out_samplerate * 16 * gfc.channels_out / (1.e3 * gfp.compression_ratio));\n\n /* we need the version for the bitrate table look up */\n gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n\n if (!gfp.free_format) /*\n * for non Free Format find the nearest allowed\n * bitrate\n */\n gfp.brate = FindNearestBitrate(gfp.brate, gfp.version,\n gfp.out_samplerate);\n }\n\n if (gfp.out_samplerate != 0) {\n if (gfp.out_samplerate < 16000) {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 8);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 64);\n } else if (gfp.out_samplerate < 32000) {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 8);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 160);\n } else {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 32);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 320);\n }\n }\n\n /****************************************************************/\n /* if a filter has not been enabled, see if we should add one: */\n /****************************************************************/\n if (gfp.lowpassfreq == 0) {\n var lowpass = 16000.;\n\n switch (gfp.VBR) {\n case VbrMode.vbr_off:\n {\n var lh = new LowPassHighPass();\n optimum_bandwidth(lh, gfp.brate);\n lowpass = lh.lowerlimit;\n break;\n }\n case VbrMode.vbr_abr:\n {\n var lh = new LowPassHighPass();\n optimum_bandwidth(lh, gfp.VBR_mean_bitrate_kbps);\n lowpass = lh.lowerlimit;\n break;\n }\n case VbrMode.vbr_rh:\n {\n var x = [19500, 19000, 18600, 18000, 17500, 16000,\n 15600, 14900, 12500, 10000, 3950];\n if (0 <= gfp.VBR_q && gfp.VBR_q <= 9) {\n var a = x[gfp.VBR_q], b = x[gfp.VBR_q + 1], m = gfp.VBR_q_frac;\n lowpass = linear_int(a, b, m);\n } else {\n lowpass = 19500;\n }\n break;\n }\n default:\n {\n var x = [19500, 19000, 18500, 18000, 17500, 16500,\n 15500, 14500, 12500, 9500, 3950];\n if (0 <= gfp.VBR_q && gfp.VBR_q <= 9) {\n var a = x[gfp.VBR_q], b = x[gfp.VBR_q + 1], m = gfp.VBR_q_frac;\n lowpass = linear_int(a, b, m);\n } else {\n lowpass = 19500;\n }\n }\n }\n if (gfp.mode == MPEGMode.MONO\n && (gfp.VBR == VbrMode.vbr_off || gfp.VBR == VbrMode.vbr_abr))\n lowpass *= 1.5;\n\n gfp.lowpassfreq = lowpass | 0;\n }\n\n if (gfp.out_samplerate == 0) {\n if (2 * gfp.lowpassfreq > gfp.in_samplerate) {\n gfp.lowpassfreq = gfp.in_samplerate / 2;\n }\n gfp.out_samplerate = optimum_samplefreq(gfp.lowpassfreq | 0,\n gfp.in_samplerate);\n }\n\n gfp.lowpassfreq = Math.min(20500, gfp.lowpassfreq);\n gfp.lowpassfreq = Math.min(gfp.out_samplerate / 2, gfp.lowpassfreq);\n\n if (gfp.VBR == VbrMode.vbr_off) {\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.brate);\n }\n if (gfp.VBR == VbrMode.vbr_abr) {\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.VBR_mean_bitrate_kbps);\n }\n\n /*\n * do not compute ReplayGain values and do not find the peak sample if\n * we can't store them\n */\n if (!gfp.bWriteVbrTag) {\n gfp.findReplayGain = false;\n gfp.decode_on_the_fly = false;\n gfc.findPeakSample = false;\n }\n gfc.findReplayGain = gfp.findReplayGain;\n gfc.decode_on_the_fly = gfp.decode_on_the_fly;\n\n if (gfc.decode_on_the_fly)\n gfc.findPeakSample = true;\n\n if (gfc.findReplayGain) {\n if (ga.InitGainAnalysis(gfc.rgdata, gfp.out_samplerate) == GainAnalysis.INIT_GAIN_ANALYSIS_ERROR) {\n gfp.internal_flags = null;\n return -6;\n }\n }\n\n if (gfc.decode_on_the_fly && !gfp.decode_only) {\n if (gfc.hip != null) {\n mpglib.hip_decode_exit(gfc.hip);\n }\n gfc.hip = mpglib.hip_decode_init();\n }\n\n gfc.mode_gr = gfp.out_samplerate <= 24000 ? 1 : 2;\n /*\n * Number of granules per frame\n */\n gfp.framesize = 576 * gfc.mode_gr;\n gfp.encoder_delay = Encoder.ENCDELAY;\n\n gfc.resample_ratio = gfp.in_samplerate / gfp.out_samplerate;\n\n /**\n *
\n         *  sample freq       bitrate     compression ratio\n         *     [kHz]      [kbps/channel]   for 16 bit input\n         *     44.1            56               12.6\n         *     44.1            64               11.025\n         *     44.1            80                8.82\n         *     22.05           24               14.7\n         *     22.05           32               11.025\n         *     22.05           40                8.82\n         *     16              16               16.0\n         *     16              24               10.667\n         * 
\n */\n /**\n *
\n         *  For VBR, take a guess at the compression_ratio.\n         *  For example:\n         *\n         *    VBR_q    compression     like\n         *     -        4.4         320 kbps/44 kHz\n         *   0...1      5.5         256 kbps/44 kHz\n         *     2        7.3         192 kbps/44 kHz\n         *     4        8.8         160 kbps/44 kHz\n         *     6       11           128 kbps/44 kHz\n         *     9       14.7          96 kbps\n         *\n         *  for lower bitrates, downsample with --resample\n         * 
\n */\n switch (gfp.VBR) {\n case VbrMode.vbr_mt:\n case VbrMode.vbr_rh:\n case VbrMode.vbr_mtrh:\n {\n /* numbers are a bit strange, but they determine the lowpass value */\n var cmp = [5.7, 6.5, 7.3, 8.2, 10, 11.9, 13, 14,\n 15, 16.5];\n gfp.compression_ratio = cmp[gfp.VBR_q];\n }\n break;\n case VbrMode.vbr_abr:\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.VBR_mean_bitrate_kbps);\n break;\n default:\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.brate);\n break;\n }\n\n /*\n * mode = -1 (not set by user) or mode = MONO (because of only 1 input\n * channel). If mode has not been set, then select J-STEREO\n */\n if (gfp.mode == MPEGMode.NOT_SET) {\n gfp.mode = MPEGMode.JOINT_STEREO;\n }\n\n /* apply user driven high pass filter */\n if (gfp.highpassfreq > 0) {\n gfc.highpass1 = 2. * gfp.highpassfreq;\n\n if (gfp.highpasswidth >= 0)\n gfc.highpass2 = 2. * (gfp.highpassfreq + gfp.highpasswidth);\n else\n /* 0% above on default */\n gfc.highpass2 = (1 + 0.00) * 2. * gfp.highpassfreq;\n\n gfc.highpass1 /= gfp.out_samplerate;\n gfc.highpass2 /= gfp.out_samplerate;\n } else {\n gfc.highpass1 = 0;\n gfc.highpass2 = 0;\n }\n /* apply user driven low pass filter */\n if (gfp.lowpassfreq > 0) {\n gfc.lowpass2 = 2. * gfp.lowpassfreq;\n if (gfp.lowpasswidth >= 0) {\n gfc.lowpass1 = 2. * (gfp.lowpassfreq - gfp.lowpasswidth);\n if (gfc.lowpass1 < 0) /* has to be >= 0 */\n gfc.lowpass1 = 0;\n } else { /* 0% below on default */\n gfc.lowpass1 = (1 - 0.00) * 2. * gfp.lowpassfreq;\n }\n gfc.lowpass1 /= gfp.out_samplerate;\n gfc.lowpass2 /= gfp.out_samplerate;\n } else {\n gfc.lowpass1 = 0;\n gfc.lowpass2 = 0;\n }\n\n /**********************************************************************/\n /* compute info needed for polyphase filter (filter type==0, default) */\n /**********************************************************************/\n lame_init_params_ppflt(gfp);\n /*******************************************************\n * samplerate and bitrate index\n *******************************************************/\n gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n if (gfc.samplerate_index < 0) {\n gfp.internal_flags = null;\n return -1;\n }\n\n if (gfp.VBR == VbrMode.vbr_off) {\n if (gfp.free_format) {\n gfc.bitrate_index = 0;\n } else {\n gfp.brate = FindNearestBitrate(gfp.brate, gfp.version,\n gfp.out_samplerate);\n gfc.bitrate_index = BitrateIndex(gfp.brate, gfp.version,\n gfp.out_samplerate);\n if (gfc.bitrate_index <= 0) {\n gfp.internal_flags = null;\n return -1;\n }\n }\n } else {\n gfc.bitrate_index = 1;\n }\n\n /* for CBR, we will write an \"info\" tag. */\n\n if (gfp.analysis)\n gfp.bWriteVbrTag = false;\n\n /* some file options not allowed if output is: not specified or stdout */\n if (gfc.pinfo != null)\n gfp.bWriteVbrTag = false;\n /* disable Xing VBR tag */\n\n bs.init_bit_stream_w(gfc);\n\n var j = gfc.samplerate_index + (3 * gfp.version) + 6\n * (gfp.out_samplerate < 16000 ? 1 : 0);\n for (var i = 0; i < Encoder.SBMAX_l + 1; i++)\n gfc.scalefac_band.l[i] = qupvt.sfBandIndex[j].l[i];\n\n for (var i = 0; i < Encoder.PSFB21 + 1; i++) {\n var size = (gfc.scalefac_band.l[22] - gfc.scalefac_band.l[21])\n / Encoder.PSFB21;\n var start = gfc.scalefac_band.l[21] + i * size;\n gfc.scalefac_band.psfb21[i] = start;\n }\n gfc.scalefac_band.psfb21[Encoder.PSFB21] = 576;\n\n for (var i = 0; i < Encoder.SBMAX_s + 1; i++)\n gfc.scalefac_band.s[i] = qupvt.sfBandIndex[j].s[i];\n\n for (var i = 0; i < Encoder.PSFB12 + 1; i++) {\n var size = (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12])\n / Encoder.PSFB12;\n var start = gfc.scalefac_band.s[12] + i * size;\n gfc.scalefac_band.psfb12[i] = start;\n }\n gfc.scalefac_band.psfb12[Encoder.PSFB12] = 192;\n /* determine the mean bitrate for main data */\n if (gfp.version == 1) /* MPEG 1 */\n gfc.sideinfo_len = (gfc.channels_out == 1) ? 4 + 17 : 4 + 32;\n else\n /* MPEG 2 */\n gfc.sideinfo_len = (gfc.channels_out == 1) ? 4 + 9 : 4 + 17;\n\n if (gfp.error_protection)\n gfc.sideinfo_len += 2;\n\n lame_init_bitstream(gfp);\n\n gfc.Class_ID = LAME_ID;\n\n {\n var k;\n\n for (k = 0; k < 19; k++)\n gfc.nsPsy.pefirbuf[k] = 700 * gfc.mode_gr * gfc.channels_out;\n\n if (gfp.ATHtype == -1)\n gfp.ATHtype = 4;\n }\n assert(gfp.VBR_q <= 9);\n assert(gfp.VBR_q >= 0);\n\n switch (gfp.VBR) {\n\n case VbrMode.vbr_mt:\n gfp.VBR = VbrMode.vbr_mtrh;\n //$FALL-THROUGH$\n case VbrMode.vbr_mtrh:\n {\n if (gfp.useTemporal == null) {\n gfp.useTemporal = false;\n /* off by default for this VBR mode */\n }\n\n p.apply_preset(gfp, 500 - (gfp.VBR_q * 10), 0);\n /**\n *
\n                 *   The newer VBR code supports only a limited\n                 *     subset of quality levels:\n                 *     9-5=5 are the same, uses x^3/4 quantization\n                 *   4-0=0 are the same  5 plus best huffman divide code\n                 * 
\n */\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n if (gfp.quality < 5)\n gfp.quality = 0;\n if (gfp.quality > 5)\n gfp.quality = 5;\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n /*\n * sfb21 extra only with MPEG-1 at higher sampling rates\n */\n if (gfp.experimentalY)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = (gfp.out_samplerate > 44000);\n\n gfc.iteration_loop = new VBRNewIterationLoop(qu);\n break;\n\n }\n case VbrMode.vbr_rh:\n {\n\n p.apply_preset(gfp, 500 - (gfp.VBR_q * 10), 0);\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n /*\n * sfb21 extra only with MPEG-1 at higher sampling rates\n */\n if (gfp.experimentalY)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = (gfp.out_samplerate > 44000);\n\n /*\n * VBR needs at least the output of GPSYCHO, so we have to garantee\n * that by setting a minimum quality level, actually level 6 does\n * it. down to level 6\n */\n if (gfp.quality > 6)\n gfp.quality = 6;\n\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n\n gfc.iteration_loop = new VBROldIterationLoop(qu);\n break;\n }\n\n default: /* cbr/abr */\n {\n var vbrmode;\n\n /*\n * no sfb21 extra with CBR code\n */\n gfc.sfb21_extra = false;\n\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n\n vbrmode = gfp.VBR;\n if (vbrmode == VbrMode.vbr_off)\n gfp.VBR_mean_bitrate_kbps = gfp.brate;\n /* second, set parameters depending on bitrate */\n p.apply_preset(gfp, gfp.VBR_mean_bitrate_kbps, 0);\n gfp.VBR = vbrmode;\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n if (vbrmode == VbrMode.vbr_off) {\n gfc.iteration_loop = new CBRNewIterationLoop(qu);\n } else {\n gfc.iteration_loop = new ABRIterationLoop(qu);\n }\n break;\n }\n }\n assert(gfp.scale >= 0);\n /* initialize default values common for all modes */\n\n if (gfp.VBR != VbrMode.vbr_off) { /* choose a min/max bitrate for VBR */\n /* if the user didn't specify VBR_max_bitrate: */\n gfc.VBR_min_bitrate = 1;\n /*\n * default: allow 8 kbps (MPEG-2) or 32 kbps (MPEG-1)\n */\n gfc.VBR_max_bitrate = 14;\n /*\n * default: allow 160 kbps (MPEG-2) or 320 kbps (MPEG-1)\n */\n if (gfp.out_samplerate < 16000)\n gfc.VBR_max_bitrate = 8;\n /* default: allow 64 kbps (MPEG-2.5) */\n if (gfp.VBR_min_bitrate_kbps != 0) {\n gfp.VBR_min_bitrate_kbps = FindNearestBitrate(\n gfp.VBR_min_bitrate_kbps, gfp.version,\n gfp.out_samplerate);\n gfc.VBR_min_bitrate = BitrateIndex(gfp.VBR_min_bitrate_kbps,\n gfp.version, gfp.out_samplerate);\n if (gfc.VBR_min_bitrate < 0)\n return -1;\n }\n if (gfp.VBR_max_bitrate_kbps != 0) {\n gfp.VBR_max_bitrate_kbps = FindNearestBitrate(\n gfp.VBR_max_bitrate_kbps, gfp.version,\n gfp.out_samplerate);\n gfc.VBR_max_bitrate = BitrateIndex(gfp.VBR_max_bitrate_kbps,\n gfp.version, gfp.out_samplerate);\n if (gfc.VBR_max_bitrate < 0)\n return -1;\n }\n gfp.VBR_min_bitrate_kbps = Tables.bitrate_table[gfp.version][gfc.VBR_min_bitrate];\n gfp.VBR_max_bitrate_kbps = Tables.bitrate_table[gfp.version][gfc.VBR_max_bitrate];\n gfp.VBR_mean_bitrate_kbps = Math.min(\n Tables.bitrate_table[gfp.version][gfc.VBR_max_bitrate],\n gfp.VBR_mean_bitrate_kbps);\n gfp.VBR_mean_bitrate_kbps = Math.max(\n Tables.bitrate_table[gfp.version][gfc.VBR_min_bitrate],\n gfp.VBR_mean_bitrate_kbps);\n }\n\n /* just another daily changing developer switch */\n if (gfp.tune) {\n gfc.PSY.mask_adjust += gfp.tune_value_a;\n gfc.PSY.mask_adjust_short += gfp.tune_value_a;\n }\n\n /* initialize internal qval settings */\n lame_init_qval(gfp);\n assert(gfp.scale >= 0);\n /*\n * automatic ATH adjustment on\n */\n if (gfp.athaa_type < 0)\n gfc.ATH.useAdjust = 3;\n else\n gfc.ATH.useAdjust = gfp.athaa_type;\n\n /* initialize internal adaptive ATH settings -jd */\n gfc.ATH.aaSensitivityP = Math.pow(10.0, gfp.athaa_sensitivity\n / -10.0);\n\n if (gfp.short_blocks == null) {\n gfp.short_blocks = ShortBlock.short_block_allowed;\n }\n\n /*\n * Note Jan/2003: Many hardware decoders cannot handle short blocks in\n * regular stereo mode unless they are coupled (same type in both\n * channels) it is a rare event (1 frame per min. or so) that LAME would\n * use uncoupled short blocks, so lets turn them off until we decide how\n * to handle this. No other encoders allow uncoupled short blocks, even\n * though it is in the standard.\n */\n /*\n * rh 20040217: coupling makes no sense for mono and dual-mono streams\n */\n if (gfp.short_blocks == ShortBlock.short_block_allowed\n && (gfp.mode == MPEGMode.JOINT_STEREO || gfp.mode == MPEGMode.STEREO)) {\n gfp.short_blocks = ShortBlock.short_block_coupled;\n }\n\n if (gfp.quant_comp < 0)\n gfp.quant_comp = 1;\n if (gfp.quant_comp_short < 0)\n gfp.quant_comp_short = 0;\n\n if (gfp.msfix < 0)\n gfp.msfix = 0;\n\n /* select psychoacoustic model */\n gfp.exp_nspsytune = gfp.exp_nspsytune | 1;\n\n if (gfp.internal_flags.nsPsy.attackthre < 0)\n gfp.internal_flags.nsPsy.attackthre = PsyModel.NSATTACKTHRE;\n if (gfp.internal_flags.nsPsy.attackthre_s < 0)\n gfp.internal_flags.nsPsy.attackthre_s = PsyModel.NSATTACKTHRE_S;\n\n assert(gfp.scale >= 0);\n\n if (gfp.scale < 0)\n gfp.scale = 1;\n\n if (gfp.ATHtype < 0)\n gfp.ATHtype = 4;\n\n if (gfp.ATHcurve < 0)\n gfp.ATHcurve = 4;\n\n if (gfp.athaa_loudapprox < 0)\n gfp.athaa_loudapprox = 2;\n\n if (gfp.interChRatio < 0)\n gfp.interChRatio = 0;\n\n if (gfp.useTemporal == null)\n gfp.useTemporal = true;\n /* on by default */\n\n /*\n * padding method as described in\n * \"MPEG-Layer3 / Bitstream Syntax and Decoding\" by Martin Sieler, Ralph\n * Sperschneider\n *\n * note: there is no padding for the very first frame\n *\n * Robert Hegemann 2000-06-22\n */\n gfc.slot_lag = gfc.frac_SpF = 0;\n if (gfp.VBR == VbrMode.vbr_off)\n gfc.slot_lag = gfc.frac_SpF = (((gfp.version + 1) * 72000 * gfp.brate) % gfp.out_samplerate) | 0;\n\n qupvt.iteration_init(gfp);\n psy.psymodel_init(gfp);\n assert(gfp.scale >= 0);\n return 0;\n }\n\n function update_inbuffer_size(gfc, nsamples) {\n if (gfc.in_buffer_0 == null || gfc.in_buffer_nsamples < nsamples) {\n gfc.in_buffer_0 = new_float(nsamples);\n gfc.in_buffer_1 = new_float(nsamples);\n gfc.in_buffer_nsamples = nsamples;\n }\n }\n\n this.lame_encode_flush = function (gfp, mp3buffer, mp3bufferPos, mp3buffer_size) {\n var gfc = gfp.internal_flags;\n var buffer = new_short_n([2, 1152]);\n var imp3 = 0, mp3count, mp3buffer_size_remaining;\n\n /*\n * we always add POSTDELAY=288 padding to make sure granule with real\n * data can be complety decoded (because of 50% overlap with next\n * granule\n */\n var end_padding;\n var frames_left;\n var samples_to_encode = gfc.mf_samples_to_encode - Encoder.POSTDELAY;\n var mf_needed = calcNeeded(gfp);\n\n /* Was flush already called? */\n if (gfc.mf_samples_to_encode < 1) {\n return 0;\n }\n mp3count = 0;\n\n if (gfp.in_samplerate != gfp.out_samplerate) {\n /*\n * delay due to resampling; needs to be fixed, if resampling code\n * gets changed\n */\n samples_to_encode += 16. * gfp.out_samplerate / gfp.in_samplerate;\n }\n end_padding = gfp.framesize - (samples_to_encode % gfp.framesize);\n if (end_padding < 576)\n end_padding += gfp.framesize;\n gfp.encoder_padding = end_padding;\n\n frames_left = (samples_to_encode + end_padding) / gfp.framesize;\n\n /*\n * send in a frame of 0 padding until all internal sample buffers are\n * flushed\n */\n while (frames_left > 0 && imp3 >= 0) {\n var bunch = mf_needed - gfc.mf_size;\n var frame_num = gfp.frameNum;\n\n bunch *= gfp.in_samplerate;\n bunch /= gfp.out_samplerate;\n if (bunch > 1152)\n bunch = 1152;\n if (bunch < 1)\n bunch = 1;\n\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n imp3 = this.lame_encode_buffer(gfp, buffer[0], buffer[1], bunch,\n mp3buffer, mp3bufferPos, mp3buffer_size_remaining);\n\n mp3bufferPos += imp3;\n mp3count += imp3;\n frames_left -= (frame_num != gfp.frameNum) ? 1 : 0;\n }\n /*\n * Set gfc.mf_samples_to_encode to 0, so we may detect and break loops\n * calling it more than once in a row.\n */\n gfc.mf_samples_to_encode = 0;\n\n if (imp3 < 0) {\n /* some type of fatal error */\n return imp3;\n }\n\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n /* mp3 related stuff. bit buffer might still contain some mp3 data */\n bs.flush_bitstream(gfp);\n imp3 = bs.copy_buffer(gfc, mp3buffer, mp3bufferPos,\n mp3buffer_size_remaining, 1);\n if (imp3 < 0) {\n /* some type of fatal error */\n return imp3;\n }\n mp3bufferPos += imp3;\n mp3count += imp3;\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n if (gfp.write_id3tag_automatic) {\n /* write a id3 tag to the bitstream */\n id3.id3tag_write_v1(gfp);\n\n imp3 = bs.copy_buffer(gfc, mp3buffer, mp3bufferPos,\n mp3buffer_size_remaining, 0);\n\n if (imp3 < 0) {\n return imp3;\n }\n mp3count += imp3;\n }\n return mp3count;\n };\n\n this.lame_encode_buffer = function (gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n var gfc = gfp.internal_flags;\n var in_buffer = [null, null];\n\n if (gfc.Class_ID != LAME_ID)\n return -3;\n\n if (nsamples == 0)\n return 0;\n\n update_inbuffer_size(gfc, nsamples);\n\n in_buffer[0] = gfc.in_buffer_0;\n in_buffer[1] = gfc.in_buffer_1;\n\n /* make a copy of input buffer, changing type to sample_t */\n for (var i = 0; i < nsamples; i++) {\n in_buffer[0][i] = buffer_l[i];\n if (gfc.channels_in > 1)\n in_buffer[1][i] = buffer_r[i];\n }\n\n return lame_encode_buffer_sample(gfp, in_buffer[0], in_buffer[1],\n nsamples, mp3buf, mp3bufPos, mp3buf_size);\n }\n\n function calcNeeded(gfp) {\n var mf_needed = Encoder.BLKSIZE + gfp.framesize - Encoder.FFTOFFSET;\n /*\n * amount needed for FFT\n */\n mf_needed = Math.max(mf_needed, 512 + gfp.framesize - 32);\n assert(LameInternalFlags.MFSIZE >= mf_needed);\n\n return mf_needed;\n }\n\n function lame_encode_buffer_sample(gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n var gfc = gfp.internal_flags;\n var mp3size = 0, ret, i, ch, mf_needed;\n var mp3out;\n var mfbuf = [null, null];\n var in_buffer = [null, null];\n\n if (gfc.Class_ID != LAME_ID)\n return -3;\n\n if (nsamples == 0)\n return 0;\n\n /* copy out any tags that may have been written into bitstream */\n mp3out = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 0);\n if (mp3out < 0)\n return mp3out;\n /* not enough buffer space */\n mp3bufPos += mp3out;\n mp3size += mp3out;\n\n in_buffer[0] = buffer_l;\n in_buffer[1] = buffer_r;\n\n /* Apply user defined re-scaling */\n\n /* user selected scaling of the samples */\n if (BitStream.NEQ(gfp.scale, 0) && BitStream.NEQ(gfp.scale, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] *= gfp.scale;\n if (gfc.channels_out == 2)\n in_buffer[1][i] *= gfp.scale;\n }\n }\n\n /* user selected scaling of the channel 0 (left) samples */\n if (BitStream.NEQ(gfp.scale_left, 0)\n && BitStream.NEQ(gfp.scale_left, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] *= gfp.scale_left;\n }\n }\n\n /* user selected scaling of the channel 1 (right) samples */\n if (BitStream.NEQ(gfp.scale_right, 0)\n && BitStream.NEQ(gfp.scale_right, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[1][i] *= gfp.scale_right;\n }\n }\n\n /* Downsample to Mono if 2 channels in and 1 channel out */\n if (gfp.num_channels == 2 && gfc.channels_out == 1) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] = 0.5 * ( in_buffer[0][i] + in_buffer[1][i]);\n in_buffer[1][i] = 0.0;\n }\n }\n\n mf_needed = calcNeeded(gfp);\n\n mfbuf[0] = gfc.mfbuf[0];\n mfbuf[1] = gfc.mfbuf[1];\n\n var in_bufferPos = 0;\n while (nsamples > 0) {\n var in_buffer_ptr = [null, null];\n var n_in = 0;\n /* number of input samples processed with fill_buffer */\n var n_out = 0;\n /* number of samples output with fill_buffer */\n /* n_in <> n_out if we are resampling */\n\n in_buffer_ptr[0] = in_buffer[0];\n in_buffer_ptr[1] = in_buffer[1];\n /* copy in new samples into mfbuf, with resampling */\n var inOut = new InOut();\n fill_buffer(gfp, mfbuf, in_buffer_ptr, in_bufferPos, nsamples,\n inOut);\n n_in = inOut.n_in;\n n_out = inOut.n_out;\n\n /* compute ReplayGain of resampled input if requested */\n if (gfc.findReplayGain && !gfc.decode_on_the_fly)\n if (ga.AnalyzeSamples(gfc.rgdata, mfbuf[0], gfc.mf_size,\n mfbuf[1], gfc.mf_size, n_out, gfc.channels_out) == GainAnalysis.GAIN_ANALYSIS_ERROR)\n return -6;\n\n /* update in_buffer counters */\n nsamples -= n_in;\n in_bufferPos += n_in;\n if (gfc.channels_out == 2)\n ;// in_bufferPos += n_in;\n\n /* update mfbuf[] counters */\n gfc.mf_size += n_out;\n assert(gfc.mf_size <= LameInternalFlags.MFSIZE);\n\n /*\n * lame_encode_flush may have set gfc.mf_sample_to_encode to 0 so we\n * have to reinitialize it here when that happened.\n */\n if (gfc.mf_samples_to_encode < 1) {\n gfc.mf_samples_to_encode = Encoder.ENCDELAY + Encoder.POSTDELAY;\n }\n gfc.mf_samples_to_encode += n_out;\n\n if (gfc.mf_size >= mf_needed) {\n /* encode the frame. */\n /* mp3buf = pointer to current location in buffer */\n /* mp3buf_size = size of original mp3 output buffer */\n /* = 0 if we should not worry about the */\n /* buffer size because calling program is */\n /* to lazy to compute it */\n /* mp3size = size of data written to buffer so far */\n /* mp3buf_size-mp3size = amount of space avalable */\n\n var buf_size = mp3buf_size - mp3size;\n if (mp3buf_size == 0)\n buf_size = 0;\n\n ret = lame_encode_frame(gfp, mfbuf[0], mfbuf[1], mp3buf,\n mp3bufPos, buf_size);\n\n if (ret < 0)\n return ret;\n mp3bufPos += ret;\n mp3size += ret;\n\n /* shift out old samples */\n gfc.mf_size -= gfp.framesize;\n gfc.mf_samples_to_encode -= gfp.framesize;\n for (ch = 0; ch < gfc.channels_out; ch++)\n for (i = 0; i < gfc.mf_size; i++)\n mfbuf[ch][i] = mfbuf[ch][i + gfp.framesize];\n }\n }\n assert(nsamples == 0);\n\n return mp3size;\n }\n\n function lame_encode_frame(gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n var ret = self.enc.lame_encode_mp3_frame(gfp, inbuf_l, inbuf_r, mp3buf,\n mp3bufPos, mp3buf_size);\n gfp.frameNum++;\n return ret;\n }\n\n function InOut() {\n this.n_in = 0;\n this.n_out = 0;\n }\n\n\n function NumUsed() {\n this.num_used = 0;\n }\n\n /**\n * Greatest common divisor.\n *

\n * Joint work of Euclid and M. Hendry\n */\n function gcd(i, j) {\n return j != 0 ? gcd(j, i % j) : i;\n }\n\n /**\n * Resampling via FIR filter, blackman window.\n */\n function blackman(x, fcn, l) {\n /*\n * This algorithm from: SIGNAL PROCESSING ALGORITHMS IN FORTRAN AND C\n * S.D. Stearns and R.A. David, Prentice-Hall, 1992\n */\n var wcn = (Math.PI * fcn);\n\n x /= l;\n if (x < 0)\n x = 0;\n if (x > 1)\n x = 1;\n var x2 = x - .5;\n\n var bkwn = 0.42 - 0.5 * Math.cos(2 * x * Math.PI) + 0.08 * Math.cos(4 * x * Math.PI);\n if (Math.abs(x2) < 1e-9)\n return (wcn / Math.PI);\n else\n return (bkwn * Math.sin(l * wcn * x2) / (Math.PI * l * x2));\n }\n\n function fill_buffer_resample(gfp, outbuf, outbufPos, desired_len, inbuf, in_bufferPos, len, num_used, ch) {\n var gfc = gfp.internal_flags;\n var i, j = 0, k;\n /* number of convolution functions to pre-compute */\n var bpc = gfp.out_samplerate\n / gcd(gfp.out_samplerate, gfp.in_samplerate);\n if (bpc > LameInternalFlags.BPC)\n bpc = LameInternalFlags.BPC;\n\n var intratio = (Math.abs(gfc.resample_ratio\n - Math.floor(.5 + gfc.resample_ratio)) < .0001) ? 1 : 0;\n var fcn = 1.00 / gfc.resample_ratio;\n if (fcn > 1.00)\n fcn = 1.00;\n var filter_l = 31;\n if (0 == filter_l % 2)\n --filter_l;\n /* must be odd */\n filter_l += intratio;\n /* unless resample_ratio=int, it must be even */\n\n var BLACKSIZE = filter_l + 1;\n /* size of data needed for FIR */\n\n if (gfc.fill_buffer_resample_init == 0) {\n gfc.inbuf_old[0] = new_float(BLACKSIZE);\n gfc.inbuf_old[1] = new_float(BLACKSIZE);\n for (i = 0; i <= 2 * bpc; ++i)\n gfc.blackfilt[i] = new_float(BLACKSIZE);\n\n gfc.itime[0] = 0;\n gfc.itime[1] = 0;\n\n /* precompute blackman filter coefficients */\n for (j = 0; j <= 2 * bpc; j++) {\n var sum = 0.;\n var offset = (j - bpc) / (2. * bpc);\n for (i = 0; i <= filter_l; i++)\n sum += gfc.blackfilt[j][i] = blackman(i - offset, fcn,\n filter_l);\n for (i = 0; i <= filter_l; i++)\n gfc.blackfilt[j][i] /= sum;\n }\n gfc.fill_buffer_resample_init = 1;\n }\n\n var inbuf_old = gfc.inbuf_old[ch];\n\n /* time of j'th element in inbuf = itime + j/ifreq; */\n /* time of k'th element in outbuf = j/ofreq */\n for (k = 0; k < desired_len; k++) {\n var time0;\n var joff;\n\n time0 = k * gfc.resample_ratio;\n /* time of k'th output sample */\n j = 0 | Math.floor(time0 - gfc.itime[ch]);\n\n /* check if we need more input data */\n if ((filter_l + j - filter_l / 2) >= len)\n break;\n\n /* blackman filter. by default, window centered at j+.5(filter_l%2) */\n /* but we want a window centered at time0. */\n var offset = (time0 - gfc.itime[ch] - (j + .5 * (filter_l % 2)));\n assert(Math.abs(offset) <= .501);\n\n /* find the closest precomputed window for this offset: */\n joff = 0 | Math.floor((offset * 2 * bpc) + bpc + .5);\n var xvalue = 0.;\n for (i = 0; i <= filter_l; ++i) {\n\t\t/* force integer index */\n var j2 = 0 | (i + j - filter_l / 2); \n var y;\n assert(j2 < len);\n assert(j2 + BLACKSIZE >= 0);\n y = (j2 < 0) ? inbuf_old[BLACKSIZE + j2] : inbuf[in_bufferPos\n + j2];\n xvalue += y * gfc.blackfilt[joff][i];\n }\n outbuf[outbufPos + k] = xvalue;\n }\n\n /* k = number of samples added to outbuf */\n /* last k sample used data from [j-filter_l/2,j+filter_l-filter_l/2] */\n\n /* how many samples of input data were used: */\n num_used.num_used = Math.min(len, filter_l + j - filter_l / 2);\n\n /*\n * adjust our input time counter. Incriment by the number of samples\n * used, then normalize so that next output sample is at time 0, next\n * input buffer is at time itime[ch]\n */\n gfc.itime[ch] += num_used.num_used - k * gfc.resample_ratio;\n\n /* save the last BLACKSIZE samples into the inbuf_old buffer */\n if (num_used.num_used >= BLACKSIZE) {\n for (i = 0; i < BLACKSIZE; i++)\n inbuf_old[i] = inbuf[in_bufferPos + num_used.num_used + i\n - BLACKSIZE];\n } else {\n /* shift in num_used.num_used samples into inbuf_old */\n var n_shift = BLACKSIZE - num_used.num_used;\n /*\n * number of samples to\n * shift\n */\n\n /*\n * shift n_shift samples by num_used.num_used, to make room for the\n * num_used new samples\n */\n for (i = 0; i < n_shift; ++i)\n inbuf_old[i] = inbuf_old[i + num_used.num_used];\n\n /* shift in the num_used.num_used samples */\n for (j = 0; i < BLACKSIZE; ++i, ++j)\n inbuf_old[i] = inbuf[in_bufferPos + j];\n\n assert(j == num_used.num_used);\n }\n return k;\n /* return the number samples created at the new samplerate */\n }\n\n function fill_buffer(gfp, mfbuf, in_buffer, in_bufferPos, nsamples, io) {\n var gfc = gfp.internal_flags;\n\n /* copy in new samples into mfbuf, with resampling if necessary */\n if ((gfc.resample_ratio < .9999) || (gfc.resample_ratio > 1.0001)) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var numUsed = new NumUsed();\n io.n_out = fill_buffer_resample(gfp, mfbuf[ch], gfc.mf_size,\n gfp.framesize, in_buffer[ch], in_bufferPos, nsamples,\n numUsed, ch);\n io.n_in = numUsed.num_used;\n }\n } else {\n io.n_out = Math.min(gfp.framesize, nsamples);\n io.n_in = io.n_out;\n for (var i = 0; i < io.n_out; ++i) {\n mfbuf[0][gfc.mf_size + i] = in_buffer[0][in_bufferPos + i];\n if (gfc.channels_out == 2)\n mfbuf[1][gfc.mf_size + i] = in_buffer[1][in_bufferPos + i];\n }\n }\n }\n\n}\n\nmodule.exports = Lame;\n","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n'use strict';\n\nmodule.exports = function parseLinkLabel(state, start, disableNested) {\n var level, found, marker, prevPos,\n labelEnd = -1,\n max = state.posMax,\n oldPos = state.pos;\n\n state.pos = start + 1;\n level = 1;\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos);\n if (marker === 0x5D /* ] */) {\n level--;\n if (level === 0) {\n found = true;\n break;\n }\n }\n\n prevPos = state.pos;\n state.md.inline.skipToken(state);\n if (marker === 0x5B /* [ */) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++;\n } else if (disableNested) {\n state.pos = oldPos;\n return -1;\n }\n }\n }\n\n if (found) {\n labelEnd = state.pos;\n }\n\n // restore old state\n state.pos = oldPos;\n\n return labelEnd;\n};\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\n/**\n * A Vbr header may be present in the ancillary data field of the first frame of\n * an mp3 bitstream
\n * The Vbr header (optionally) contains\n *

    \n *
  • frames total number of audio frames in the bitstream\n *
  • bytes total number of bytes in the bitstream\n *
  • toc table of contents\n *
\n *\n * toc (table of contents) gives seek points for random access.
\n * The ith entry determines the seek point for i-percent duration.
\n * seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes
\n * e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes\n */\nVBRTag.NUMTOCENTRIES = 100;\nVBRTag.MAXFRAMESIZE = 2880;\n\nfunction VBRTag() {\n\n var lame;\n var bs;\n var v;\n\n this.setModules = function (_lame, _bs, _v) {\n lame = _lame;\n bs = _bs;\n v = _v;\n };\n\n var FRAMES_FLAG = 0x0001;\n var BYTES_FLAG = 0x0002;\n var TOC_FLAG = 0x0004;\n var VBR_SCALE_FLAG = 0x0008;\n\n var NUMTOCENTRIES = VBRTag.NUMTOCENTRIES;\n\n /**\n * (0xB40) the max freeformat 640 32kHz framesize.\n */\n var MAXFRAMESIZE = VBRTag.MAXFRAMESIZE;\n\n /**\n *
\n     *    4 bytes for Header Tag\n     *    4 bytes for Header Flags\n     *  100 bytes for entry (toc)\n     *    4 bytes for frame size\n     *    4 bytes for stream size\n     *    4 bytes for VBR scale. a VBR quality indicator: 0=best 100=worst\n     *   20 bytes for LAME tag.  for example, \"LAME3.12 (beta 6)\"\n     * ___________\n     *  140 bytes\n     * 
\n */\n var VBRHEADERSIZE = (NUMTOCENTRIES + 4 + 4 + 4 + 4 + 4);\n\n var LAMEHEADERSIZE = (VBRHEADERSIZE + 9 + 1 + 1 + 8\n + 1 + 1 + 3 + 1 + 1 + 2 + 4 + 2 + 2);\n\n /**\n * The size of the Xing header MPEG-1, bit rate in kbps.\n */\n var XING_BITRATE1 = 128;\n /**\n * The size of the Xing header MPEG-2, bit rate in kbps.\n */\n var XING_BITRATE2 = 64;\n /**\n * The size of the Xing header MPEG-2.5, bit rate in kbps.\n */\n var XING_BITRATE25 = 32;\n\n /**\n * ISO-8859-1 charset for byte to string operations.\n */\n var ISO_8859_1 = null; //Charset.forName(\"ISO-8859-1\");\n\n /**\n * VBR header magic string.\n */\n var VBRTag0 = \"Xing\";\n /**\n * VBR header magic string (VBR == VBRMode.vbr_off).\n */\n var VBRTag1 = \"Info\";\n\n /**\n * Lookup table for fast CRC-16 computation. Uses the polynomial\n * x^16+x^15+x^2+1\n */\n var crc16Lookup = [0x0000, 0xC0C1, 0xC181, 0x0140,\n 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741,\n 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41,\n 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81, 0x0B40,\n 0xC901, 0x09C0, 0x0880, 0xC841, 0xD801, 0x18C0, 0x1980, 0xD941,\n 0x1B00, 0xDBC1, 0xDA81, 0x1A40, 0x1E00, 0xDEC1, 0xDF81, 0x1F40,\n 0xDD01, 0x1DC0, 0x1C80, 0xDC41, 0x1400, 0xD4C1, 0xD581, 0x1540,\n 0xD701, 0x17C0, 0x1680, 0xD641, 0xD201, 0x12C0, 0x1380, 0xD341,\n 0x1100, 0xD1C1, 0xD081, 0x1040, 0xF001, 0x30C0, 0x3180, 0xF141,\n 0x3300, 0xF3C1, 0xF281, 0x3240, 0x3600, 0xF6C1, 0xF781, 0x3740,\n 0xF501, 0x35C0, 0x3480, 0xF441, 0x3C00, 0xFCC1, 0xFD81, 0x3D40,\n 0xFF01, 0x3FC0, 0x3E80, 0xFE41, 0xFA01, 0x3AC0, 0x3B80, 0xFB41,\n 0x3900, 0xF9C1, 0xF881, 0x3840, 0x2800, 0xE8C1, 0xE981, 0x2940,\n 0xEB01, 0x2BC0, 0x2A80, 0xEA41, 0xEE01, 0x2EC0, 0x2F80, 0xEF41,\n 0x2D00, 0xEDC1, 0xEC81, 0x2C40, 0xE401, 0x24C0, 0x2580, 0xE541,\n 0x2700, 0xE7C1, 0xE681, 0x2640, 0x2200, 0xE2C1, 0xE381, 0x2340,\n 0xE101, 0x21C0, 0x2080, 0xE041, 0xA001, 0x60C0, 0x6180, 0xA141,\n 0x6300, 0xA3C1, 0xA281, 0x6240, 0x6600, 0xA6C1, 0xA781, 0x6740,\n 0xA501, 0x65C0, 0x6480, 0xA441, 0x6C00, 0xACC1, 0xAD81, 0x6D40,\n 0xAF01, 0x6FC0, 0x6E80, 0xAE41, 0xAA01, 0x6AC0, 0x6B80, 0xAB41,\n 0x6900, 0xA9C1, 0xA881, 0x6840, 0x7800, 0xB8C1, 0xB981, 0x7940,\n 0xBB01, 0x7BC0, 0x7A80, 0xBA41, 0xBE01, 0x7EC0, 0x7F80, 0xBF41,\n 0x7D00, 0xBDC1, 0xBC81, 0x7C40, 0xB401, 0x74C0, 0x7580, 0xB541,\n 0x7700, 0xB7C1, 0xB681, 0x7640, 0x7200, 0xB2C1, 0xB381, 0x7340,\n 0xB101, 0x71C0, 0x7080, 0xB041, 0x5000, 0x90C1, 0x9181, 0x5140,\n 0x9301, 0x53C0, 0x5280, 0x9241, 0x9601, 0x56C0, 0x5780, 0x9741,\n 0x5500, 0x95C1, 0x9481, 0x5440, 0x9C01, 0x5CC0, 0x5D80, 0x9D41,\n 0x5F00, 0x9FC1, 0x9E81, 0x5E40, 0x5A00, 0x9AC1, 0x9B81, 0x5B40,\n 0x9901, 0x59C0, 0x5880, 0x9841, 0x8801, 0x48C0, 0x4980, 0x8941,\n 0x4B00, 0x8BC1, 0x8A81, 0x4A40, 0x4E00, 0x8EC1, 0x8F81, 0x4F40,\n 0x8D01, 0x4DC0, 0x4C80, 0x8C41, 0x4400, 0x84C1, 0x8581, 0x4540,\n 0x8701, 0x47C0, 0x4680, 0x8641, 0x8201, 0x42C0, 0x4380, 0x8341,\n 0x4100, 0x81C1, 0x8081, 0x4040];\n\n /***********************************************************************\n * Robert Hegemann 2001-01-17\n ***********************************************************************/\n\n function addVbr(v, bitrate) {\n v.nVbrNumFrames++;\n v.sum += bitrate;\n v.seen++;\n\n if (v.seen < v.want) {\n return;\n }\n\n if (v.pos < v.size) {\n v.bag[v.pos] = v.sum;\n v.pos++;\n v.seen = 0;\n }\n if (v.pos == v.size) {\n for (var i = 1; i < v.size; i += 2) {\n v.bag[i / 2] = v.bag[i];\n }\n v.want *= 2;\n v.pos /= 2;\n }\n }\n\n function xingSeekTable(v, t) {\n if (v.pos <= 0)\n return;\n\n for (var i = 1; i < NUMTOCENTRIES; ++i) {\n var j = i / NUMTOCENTRIES, act, sum;\n var indx = 0 | (Math.floor(j * v.pos));\n if (indx > v.pos - 1)\n indx = v.pos - 1;\n act = v.bag[indx];\n sum = v.sum;\n var seek_point = 0 | (256. * act / sum);\n if (seek_point > 255)\n seek_point = 255;\n t[i] = 0xff & seek_point;\n }\n }\n\n /**\n * Add VBR entry, used to fill the VBR TOC entries.\n *\n * @param gfp\n * global flags\n */\n this.addVbrFrame = function (gfp) {\n var gfc = gfp.internal_flags;\n var kbps = Tables.bitrate_table[gfp.version][gfc.bitrate_index];\n assert(gfc.VBR_seek_table.bag != null);\n addVbr(gfc.VBR_seek_table, kbps);\n }\n\n /**\n * Read big endian integer (4-bytes) from header.\n *\n * @param buf\n * header containing the integer\n * @param bufPos\n * offset into the header\n * @return extracted integer\n */\n function extractInteger(buf, bufPos) {\n var x = buf[bufPos + 0] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 1] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 2] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 3] & 0xff;\n return x;\n }\n\n /**\n * Write big endian integer (4-bytes) in the header.\n *\n * @param buf\n * header to write the integer into\n * @param bufPos\n * offset into the header\n * @param value\n * integer value to write\n */\n function createInteger(buf, bufPos, value) {\n buf[bufPos + 0] = 0xff & ((value >> 24) & 0xff);\n buf[bufPos + 1] = 0xff & ((value >> 16) & 0xff);\n buf[bufPos + 2] = 0xff & ((value >> 8) & 0xff);\n buf[bufPos + 3] = 0xff & (value & 0xff);\n }\n\n /**\n * Write big endian short (2-bytes) in the header.\n *\n * @param buf\n * header to write the integer into\n * @param bufPos\n * offset into the header\n * @param value\n * integer value to write\n */\n function createShort(buf, bufPos, value) {\n buf[bufPos + 0] = 0xff & ((value >> 8) & 0xff);\n buf[bufPos + 1] = 0xff & (value & 0xff);\n }\n\n /**\n * Check for magic strings (Xing/Info).\n *\n * @param buf\n * header to check\n * @param bufPos\n * header offset to check\n * @return magic string found\n */\n function isVbrTag(buf, bufPos) {\n return new String(buf, bufPos, VBRTag0.length(), ISO_8859_1)\n .equals(VBRTag0)\n || new String(buf, bufPos, VBRTag1.length(), ISO_8859_1)\n .equals(VBRTag1);\n }\n\n function shiftInBitsValue(x, n, v) {\n return 0xff & ((x << n) | (v & ~(-1 << n)));\n }\n\n /**\n * Construct the MP3 header using the settings of the global flags.\n *\n * \n *\n * @param gfp\n * global flags\n * @param buffer\n * header\n */\n function setLameTagFrameHeader(gfp, buffer) {\n var gfc = gfp.internal_flags;\n\n // MP3 Sync Word\n buffer[0] = shiftInBitsValue(buffer[0], 8, 0xff);\n\n buffer[1] = shiftInBitsValue(buffer[1], 3, 7);\n buffer[1] = shiftInBitsValue(buffer[1], 1,\n (gfp.out_samplerate < 16000) ? 0 : 1);\n // Version\n buffer[1] = shiftInBitsValue(buffer[1], 1, gfp.version);\n // 01 == Layer 3\n buffer[1] = shiftInBitsValue(buffer[1], 2, 4 - 3);\n // Error protection\n buffer[1] = shiftInBitsValue(buffer[1], 1, (!gfp.error_protection) ? 1\n : 0);\n\n // Bit rate\n buffer[2] = shiftInBitsValue(buffer[2], 4, gfc.bitrate_index);\n // Frequency\n buffer[2] = shiftInBitsValue(buffer[2], 2, gfc.samplerate_index);\n // Pad. Bit\n buffer[2] = shiftInBitsValue(buffer[2], 1, 0);\n // Priv. Bit\n buffer[2] = shiftInBitsValue(buffer[2], 1, gfp.extension);\n\n // Mode\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.mode.ordinal());\n // Mode extension (Used with Joint Stereo)\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfc.mode_ext);\n // Copy\n buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.copyright);\n // Original\n buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.original);\n // Emphasis\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.emphasis);\n\n /* the default VBR header. 48 kbps layer III, no padding, no crc */\n /* but sampling freq, mode and copyright/copy protection taken */\n /* from first valid frame */\n buffer[0] = 0xff;\n var abyte = 0xff & (buffer[1] & 0xf1);\n var bitrate;\n if (1 == gfp.version) {\n bitrate = XING_BITRATE1;\n } else {\n if (gfp.out_samplerate < 16000)\n bitrate = XING_BITRATE25;\n else\n bitrate = XING_BITRATE2;\n }\n\n if (gfp.VBR == VbrMode.vbr_off)\n bitrate = gfp.brate;\n\n var bbyte;\n if (gfp.free_format)\n bbyte = 0x00;\n else\n bbyte = 0xff & (16 * lame.BitrateIndex(bitrate, gfp.version,\n gfp.out_samplerate));\n\n /*\n * Use as much of the info from the real frames in the Xing header:\n * samplerate, channels, crc, etc...\n */\n if (gfp.version == 1) {\n /* MPEG1 */\n buffer[1] = 0xff & (abyte | 0x0a);\n /* was 0x0b; */\n abyte = 0xff & (buffer[2] & 0x0d);\n /* AF keep also private bit */\n buffer[2] = 0xff & (bbyte | abyte);\n /* 64kbs MPEG1 frame */\n } else {\n /* MPEG2 */\n buffer[1] = 0xff & (abyte | 0x02);\n /* was 0x03; */\n abyte = 0xff & (buffer[2] & 0x0d);\n /* AF keep also private bit */\n buffer[2] = 0xff & (bbyte | abyte);\n /* 64kbs MPEG2 frame */\n }\n }\n\n /**\n * Get VBR tag information\n *\n * @param buf\n * header to analyze\n * @param bufPos\n * offset into the header\n * @return VBR tag data\n */\n this.getVbrTag = function (buf) {\n var pTagData = new VBRTagData();\n var bufPos = 0;\n\n /* get Vbr header data */\n pTagData.flags = 0;\n\n /* get selected MPEG header data */\n var hId = (buf[bufPos + 1] >> 3) & 1;\n var hSrIndex = (buf[bufPos + 2] >> 2) & 3;\n var hMode = (buf[bufPos + 3] >> 6) & 3;\n var hBitrate = ((buf[bufPos + 2] >> 4) & 0xf);\n hBitrate = Tables.bitrate_table[hId][hBitrate];\n\n /* check for FFE syncword */\n if ((buf[bufPos + 1] >> 4) == 0xE)\n pTagData.samprate = Tables.samplerate_table[2][hSrIndex];\n else\n pTagData.samprate = Tables.samplerate_table[hId][hSrIndex];\n\n /* determine offset of header */\n if (hId != 0) {\n /* mpeg1 */\n if (hMode != 3)\n bufPos += (32 + 4);\n else\n bufPos += (17 + 4);\n } else {\n /* mpeg2 */\n if (hMode != 3)\n bufPos += (17 + 4);\n else\n bufPos += (9 + 4);\n }\n\n if (!isVbrTag(buf, bufPos))\n return null;\n\n bufPos += 4;\n\n pTagData.hId = hId;\n\n /* get flags */\n var head_flags = pTagData.flags = extractInteger(buf, bufPos);\n bufPos += 4;\n\n if ((head_flags & FRAMES_FLAG) != 0) {\n pTagData.frames = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n if ((head_flags & BYTES_FLAG) != 0) {\n pTagData.bytes = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n if ((head_flags & TOC_FLAG) != 0) {\n if (pTagData.toc != null) {\n for (var i = 0; i < NUMTOCENTRIES; i++)\n pTagData.toc[i] = buf[bufPos + i];\n }\n bufPos += NUMTOCENTRIES;\n }\n\n pTagData.vbrScale = -1;\n\n if ((head_flags & VBR_SCALE_FLAG) != 0) {\n pTagData.vbrScale = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n pTagData.headersize = ((hId + 1) * 72000 * hBitrate)\n / pTagData.samprate;\n\n bufPos += 21;\n var encDelay = buf[bufPos + 0] << 4;\n encDelay += buf[bufPos + 1] >> 4;\n var encPadding = (buf[bufPos + 1] & 0x0F) << 8;\n encPadding += buf[bufPos + 2] & 0xff;\n /* check for reasonable values (this may be an old Xing header, */\n /* not a INFO tag) */\n if (encDelay < 0 || encDelay > 3000)\n encDelay = -1;\n if (encPadding < 0 || encPadding > 3000)\n encPadding = -1;\n\n pTagData.encDelay = encDelay;\n pTagData.encPadding = encPadding;\n\n /* success */\n return pTagData;\n }\n\n /**\n * Initializes the header\n *\n * @param gfp\n * global flags\n */\n this.InitVbrTag = function (gfp) {\n var gfc = gfp.internal_flags;\n\n /**\n *
\n         * Xing VBR pretends to be a 48kbs layer III frame.  (at 44.1kHz).\n         * (at 48kHz they use 56kbs since 48kbs frame not big enough for\n         * table of contents)\n         * let's always embed Xing header inside a 64kbs layer III frame.\n         * this gives us enough room for a LAME version string too.\n         * size determined by sampling frequency (MPEG1)\n         * 32kHz:    216 bytes@48kbs    288bytes@ 64kbs\n         * 44.1kHz:  156 bytes          208bytes@64kbs     (+1 if padding = 1)\n         * 48kHz:    144 bytes          192\n         *\n         * MPEG 2 values are the same since the framesize and samplerate\n         * are each reduced by a factor of 2.\n         * 
\n */\n var kbps_header;\n if (1 == gfp.version) {\n kbps_header = XING_BITRATE1;\n } else {\n if (gfp.out_samplerate < 16000)\n kbps_header = XING_BITRATE25;\n else\n kbps_header = XING_BITRATE2;\n }\n\n if (gfp.VBR == VbrMode.vbr_off)\n kbps_header = gfp.brate;\n\n // make sure LAME Header fits into Frame\n var totalFrameSize = ((gfp.version + 1) * 72000 * kbps_header)\n / gfp.out_samplerate;\n var headerSize = (gfc.sideinfo_len + LAMEHEADERSIZE);\n gfc.VBR_seek_table.TotalFrameSize = totalFrameSize;\n if (totalFrameSize < headerSize || totalFrameSize > MAXFRAMESIZE) {\n /* disable tag, it wont fit */\n gfp.bWriteVbrTag = false;\n return;\n }\n\n gfc.VBR_seek_table.nVbrNumFrames = 0;\n gfc.VBR_seek_table.nBytesWritten = 0;\n gfc.VBR_seek_table.sum = 0;\n\n gfc.VBR_seek_table.seen = 0;\n gfc.VBR_seek_table.want = 1;\n gfc.VBR_seek_table.pos = 0;\n\n if (gfc.VBR_seek_table.bag == null) {\n gfc.VBR_seek_table.bag = new int[400];\n gfc.VBR_seek_table.size = 400;\n }\n\n // write dummy VBR tag of all 0's into bitstream\n var buffer = new_byte(MAXFRAMESIZE);\n\n setLameTagFrameHeader(gfp, buffer);\n var n = gfc.VBR_seek_table.TotalFrameSize;\n for (var i = 0; i < n; ++i) {\n bs.add_dummy_byte(gfp, buffer[i] & 0xff, 1);\n }\n }\n\n /**\n * Fast CRC-16 computation (uses table crc16Lookup).\n *\n * @param value\n * @param crc\n * @return\n */\n function crcUpdateLookup(value, crc) {\n var tmp = crc ^ value;\n crc = (crc >> 8) ^ crc16Lookup[tmp & 0xff];\n return crc;\n }\n\n this.updateMusicCRC = function (crc, buffer, bufferPos, size) {\n for (var i = 0; i < size; ++i)\n crc[0] = crcUpdateLookup(buffer[bufferPos + i], crc[0]);\n }\n\n /**\n * Write LAME info: mini version + info on various switches used (Jonathan\n * Dee 2001/08/31).\n *\n * @param gfp\n * global flags\n * @param musicLength\n * music length\n * @param streamBuffer\n * pointer to output buffer\n * @param streamBufferPos\n * offset into the output buffer\n * @param crc\n * computation of CRC-16 of Lame Tag so far (starting at frame\n * sync)\n * @return number of bytes written to the stream\n */\n function putLameVBR(gfp, musicLength, streamBuffer, streamBufferPos, crc) {\n var gfc = gfp.internal_flags;\n var bytesWritten = 0;\n\n /* encoder delay */\n var encDelay = gfp.encoder_delay;\n /* encoder padding */\n var encPadding = gfp.encoder_padding;\n\n /* recall: gfp.VBR_q is for example set by the switch -V */\n /* gfp.quality by -q, -h, -f, etc */\n var quality = (100 - 10 * gfp.VBR_q - gfp.quality);\n\n var version = v.getLameVeryShortVersion();\n var vbr;\n var revision = 0x00;\n var revMethod;\n // numbering different in vbr_mode vs. Lame tag\n var vbrTypeTranslator = [1, 5, 3, 2, 4, 0, 3];\n var lowpass = 0 | (((gfp.lowpassfreq / 100.0) + .5) > 255 ? 255\n : (gfp.lowpassfreq / 100.0) + .5);\n var peakSignalAmplitude = 0;\n var radioReplayGain = 0;\n var audiophileReplayGain = 0;\n var noiseShaping = gfp.internal_flags.noise_shaping;\n var stereoMode = 0;\n var nonOptimal = 0;\n var sourceFreq = 0;\n var misc = 0;\n var musicCRC = 0;\n\n // psy model type: Gpsycho or NsPsytune\n var expNPsyTune = (gfp.exp_nspsytune & 1) != 0;\n var safeJoint = (gfp.exp_nspsytune & 2) != 0;\n var noGapMore = false;\n var noGapPrevious = false;\n var noGapCount = gfp.internal_flags.nogap_total;\n var noGapCurr = gfp.internal_flags.nogap_current;\n\n // 4 bits\n var athType = gfp.ATHtype;\n var flags = 0;\n\n // vbr modes\n var abrBitrate;\n switch (gfp.VBR) {\n case vbr_abr:\n abrBitrate = gfp.VBR_mean_bitrate_kbps;\n break;\n case vbr_off:\n abrBitrate = gfp.brate;\n break;\n default:\n abrBitrate = gfp.VBR_min_bitrate_kbps;\n }\n\n // revision and vbr method\n if (gfp.VBR.ordinal() < vbrTypeTranslator.length)\n vbr = vbrTypeTranslator[gfp.VBR.ordinal()];\n else\n vbr = 0x00; // unknown\n\n revMethod = 0x10 * revision + vbr;\n\n // ReplayGain\n if (gfc.findReplayGain) {\n if (gfc.RadioGain > 0x1FE)\n gfc.RadioGain = 0x1FE;\n if (gfc.RadioGain < -0x1FE)\n gfc.RadioGain = -0x1FE;\n\n // set name code\n radioReplayGain = 0x2000;\n // set originator code to `determined automatically'\n radioReplayGain |= 0xC00;\n\n if (gfc.RadioGain >= 0) {\n // set gain adjustment\n radioReplayGain |= gfc.RadioGain;\n } else {\n // set the sign bit\n radioReplayGain |= 0x200;\n // set gain adjustment\n radioReplayGain |= -gfc.RadioGain;\n }\n }\n\n // peak sample\n if (gfc.findPeakSample)\n peakSignalAmplitude = Math\n .abs(0 | ((( gfc.PeakSample) / 32767.0) * Math.pow(2, 23) + .5));\n\n // nogap\n if (noGapCount != -1) {\n if (noGapCurr > 0)\n noGapPrevious = true;\n\n if (noGapCurr < noGapCount - 1)\n noGapMore = true;\n }\n\n // flags\n flags = athType + ((expNPsyTune ? 1 : 0) << 4)\n + ((safeJoint ? 1 : 0) << 5) + ((noGapMore ? 1 : 0) << 6)\n + ((noGapPrevious ? 1 : 0) << 7);\n\n if (quality < 0)\n quality = 0;\n\n // stereo mode field (Intensity stereo is not implemented)\n switch (gfp.mode) {\n case MONO:\n stereoMode = 0;\n break;\n case STEREO:\n stereoMode = 1;\n break;\n case DUAL_CHANNEL:\n stereoMode = 2;\n break;\n case JOINT_STEREO:\n if (gfp.force_ms)\n stereoMode = 4;\n else\n stereoMode = 3;\n break;\n case NOT_SET:\n //$FALL-THROUGH$\n default:\n stereoMode = 7;\n break;\n }\n\n if (gfp.in_samplerate <= 32000)\n sourceFreq = 0x00;\n else if (gfp.in_samplerate == 48000)\n sourceFreq = 0x02;\n else if (gfp.in_samplerate > 48000)\n sourceFreq = 0x03;\n else {\n // default is 44100Hz\n sourceFreq = 0x01;\n }\n\n // Check if the user overrided the default LAME behavior with some\n // nasty options\n if (gfp.short_blocks == ShortBlock.short_block_forced\n || gfp.short_blocks == ShortBlock.short_block_dispensed\n || ((gfp.lowpassfreq == -1) && (gfp.highpassfreq == -1)) || /* \"-k\" */\n (gfp.scale_left < gfp.scale_right)\n || (gfp.scale_left > gfp.scale_right)\n || (gfp.disable_reservoir && gfp.brate < 320) || gfp.noATH\n || gfp.ATHonly || (athType == 0) || gfp.in_samplerate <= 32000)\n nonOptimal = 1;\n\n misc = noiseShaping + (stereoMode << 2) + (nonOptimal << 5)\n + (sourceFreq << 6);\n\n musicCRC = gfc.nMusicCRC;\n\n // Write all this information into the stream\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten, quality);\n bytesWritten += 4;\n\n for (var j = 0; j < 9; j++) {\n streamBuffer[streamBufferPos + bytesWritten + j] = 0xff & version .charAt(j);\n }\n bytesWritten += 9;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & revMethod;\n bytesWritten++;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & lowpass;\n bytesWritten++;\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten,\n peakSignalAmplitude);\n bytesWritten += 4;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten,\n radioReplayGain);\n bytesWritten += 2;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten,\n audiophileReplayGain);\n bytesWritten += 2;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & flags;\n bytesWritten++;\n\n if (abrBitrate >= 255)\n streamBuffer[streamBufferPos + bytesWritten] = 0xFF;\n else\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & abrBitrate;\n bytesWritten++;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & (encDelay >> 4);\n streamBuffer[streamBufferPos + bytesWritten + 1] = 0xff & ((encDelay << 4) + (encPadding >> 8));\n streamBuffer[streamBufferPos + bytesWritten + 2] = 0xff & encPadding;\n\n bytesWritten += 3;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & misc;\n bytesWritten++;\n\n // unused in rev0\n streamBuffer[streamBufferPos + bytesWritten++] = 0;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, gfp.preset);\n bytesWritten += 2;\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten, musicLength);\n bytesWritten += 4;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, musicCRC);\n bytesWritten += 2;\n\n // Calculate tag CRC.... must be done here, since it includes previous\n // information\n\n for (var i = 0; i < bytesWritten; i++)\n crc = crcUpdateLookup(streamBuffer[streamBufferPos + i], crc);\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, crc);\n bytesWritten += 2;\n\n return bytesWritten;\n }\n\n function skipId3v2(fpStream) {\n // seek to the beginning of the stream\n fpStream.seek(0);\n // read 10 bytes in case there's an ID3 version 2 header here\n var id3v2Header = new_byte(10);\n fpStream.readFully(id3v2Header);\n /* does the stream begin with the ID3 version 2 file identifier? */\n var id3v2TagSize;\n if (!new String(id3v2Header, \"ISO-8859-1\").startsWith(\"ID3\")) {\n /*\n * the tag size (minus the 10-byte header) is encoded into four\n * bytes where the most significant bit is clear in each byte\n */\n id3v2TagSize = (((id3v2Header[6] & 0x7f) << 21)\n | ((id3v2Header[7] & 0x7f) << 14)\n | ((id3v2Header[8] & 0x7f) << 7) | (id3v2Header[9] & 0x7f))\n + id3v2Header.length;\n } else {\n /* no ID3 version 2 tag in this stream */\n id3v2TagSize = 0;\n }\n return id3v2TagSize;\n }\n\n this.getLameTagFrame = function (gfp, buffer) {\n var gfc = gfp.internal_flags;\n\n if (!gfp.bWriteVbrTag) {\n return 0;\n }\n if (gfc.Class_ID != Lame.LAME_ID) {\n return 0;\n }\n if (gfc.VBR_seek_table.pos <= 0) {\n return 0;\n }\n if (buffer.length < gfc.VBR_seek_table.TotalFrameSize) {\n return gfc.VBR_seek_table.TotalFrameSize;\n }\n\n Arrays.fill(buffer, 0, gfc.VBR_seek_table.TotalFrameSize, 0);\n\n // 4 bytes frame header\n setLameTagFrameHeader(gfp, buffer);\n\n // Create TOC entries\n var toc = new_byte(NUMTOCENTRIES);\n\n if (gfp.free_format) {\n for (var i = 1; i < NUMTOCENTRIES; ++i)\n toc[i] = 0xff & (255 * i / 100);\n } else {\n xingSeekTable(gfc.VBR_seek_table, toc);\n }\n\n // Start writing the tag after the zero frame\n var streamIndex = gfc.sideinfo_len;\n /**\n * Note: Xing header specifies that Xing data goes in the ancillary data\n * with NO ERROR PROTECTION. If error protecton in enabled, the Xing\n * data still starts at the same offset, and now it is in sideinfo data\n * block, and thus will not decode correctly by non-Xing tag aware\n * players\n */\n if (gfp.error_protection)\n streamIndex -= 2;\n\n // Put Vbr tag\n if (gfp.VBR == VbrMode.vbr_off) {\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(0);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(1);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(2);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(3);\n\n } else {\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(0);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(1);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(2);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(3);\n }\n\n // Put header flags\n createInteger(buffer, streamIndex, FRAMES_FLAG + BYTES_FLAG + TOC_FLAG\n + VBR_SCALE_FLAG);\n streamIndex += 4;\n\n // Put Total Number of frames\n createInteger(buffer, streamIndex, gfc.VBR_seek_table.nVbrNumFrames);\n streamIndex += 4;\n\n // Put total audio stream size, including Xing/LAME Header\n var streamSize = (gfc.VBR_seek_table.nBytesWritten + gfc.VBR_seek_table.TotalFrameSize);\n createInteger(buffer, streamIndex, 0 | streamSize);\n streamIndex += 4;\n\n /* Put TOC */\n System.arraycopy(toc, 0, buffer, streamIndex, toc.length);\n streamIndex += toc.length;\n\n if (gfp.error_protection) {\n // (jo) error_protection: add crc16 information to header\n bs.CRC_writeheader(gfc, buffer);\n }\n\n // work out CRC so far: initially crc = 0\n var crc = 0x00;\n for (var i = 0; i < streamIndex; i++)\n crc = crcUpdateLookup(buffer[i], crc);\n // Put LAME VBR info\n streamIndex += putLameVBR(gfp, streamSize, buffer, streamIndex, crc);\n\n return gfc.VBR_seek_table.TotalFrameSize;\n }\n\n /**\n * Write final VBR tag to the file.\n *\n * @param gfp\n * global flags\n * @param stream\n * stream to add the VBR tag to\n * @return 0 (OK), -1 else\n * @throws IOException\n * I/O error\n */\n this.putVbrTag = function (gfp, stream) {\n var gfc = gfp.internal_flags;\n\n if (gfc.VBR_seek_table.pos <= 0)\n return -1;\n\n // Seek to end of file\n stream.seek(stream.length());\n\n // Get file size, abort if file has zero length.\n if (stream.length() == 0)\n return -1;\n\n // The VBR tag may NOT be located at the beginning of the stream. If an\n // ID3 version 2 tag was added, then it must be skipped to write the VBR\n // tag data.\n var id3v2TagSize = skipId3v2(stream);\n\n // Seek to the beginning of the stream\n stream.seek(id3v2TagSize);\n\n var buffer = new_byte(MAXFRAMESIZE);\n var bytes = getLameTagFrame(gfp, buffer);\n if (bytes > buffer.length) {\n return -1;\n }\n\n if (bytes < 1) {\n return 0;\n }\n\n // Put it all to disk again\n stream.write(buffer, 0, bytes);\n // success\n return 0;\n }\n\n}\n\nmodule.exports = VBRTag;\n","// List of valid html blocks names, accorting to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#html-blocks\n\n'use strict';\n\n\nmodule.exports = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'meta',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'pre',\n 'section',\n 'source',\n 'title',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n];\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// Parse link destination\n//\n'use strict';\n\n\nvar isSpace = require('../common/utils').isSpace;\nvar unescapeAll = require('../common/utils').unescapeAll;\n\n\nmodule.exports = function parseLinkDestination(str, pos, max) {\n var code, level,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (str.charCodeAt(pos) === 0x3C /* < */) {\n pos++;\n while (pos < max) {\n code = str.charCodeAt(pos);\n if (code === 0x0A /* \\n */ || isSpace(code)) { return result; }\n if (code === 0x3E /* > */) {\n result.pos = pos + 1;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n }\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n pos++;\n }\n\n // no closing '>'\n return result;\n }\n\n // this should be ... } else { ... branch\n\n level = 0;\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x20) { break; }\n\n // ascii control characters\n if (code < 0x20 || code === 0x7F) { break; }\n\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n if (code === 0x28 /* ( */) {\n level++;\n if (level > 1) { break; }\n }\n\n if (code === 0x29 /* ) */) {\n level--;\n if (level < 0) { break; }\n }\n\n pos++;\n }\n\n if (start === pos) { return result; }\n\n result.str = unescapeAll(str.slice(start, pos));\n result.lines = lines;\n result.pos = pos;\n result.ok = true;\n return result;\n};\n","(function() {\n var L = require('./L').L,\n N = require('./N').N,\n Z = require('./Z').Z,\n M = require('./M').M,\n unorm = require('unorm');\n\n var _unicodeCategory = function(code) {\n if (~L.indexOf(code)) return 'L';\n if (~N.indexOf(code)) return 'N';\n if (~Z.indexOf(code)) return 'Z';\n if (~M.indexOf(code)) return 'M';\n return undefined;\n };\n\n module.exports = function(string, options) {\n string = string || '';\n options = options || {};\n var allowedChars = options.allowedChars || '-_~';\n var lower = typeof options.lower === 'boolean' ? options.lower : true;\n var spaces = typeof options.spaces === 'boolean' ? options.spaces : false;\n var rv = [];\n var chars = unorm.nfkc(string);\n for(var i = 0; i < chars.length; i++) {\n var c = chars[i];\n var code = c.charCodeAt(0);\n // Allow Common CJK Unified Ideographs\n // See: http://www.unicode.org/versions/Unicode6.0.0/ch12.pdf - Table 12-2 \n if (0x4E00 <= code && code <= 0x9FFF) {\n rv.push(c);\n continue;\n }\n\n // Allow Hangul\n if (0xAC00 <= code && code <= 0xD7A3) {\n rv.push(c);\n continue;\n }\n\n // Japanese ideographic punctuation\n if ((0x3000 <= code && code <= 0x3002) || (0xFF01 <= code && code <= 0xFF02)) {\n rv.push(' ');\n }\n\n if (allowedChars.indexOf(c) != -1) {\n rv.push(c);\n continue;\n }\n var val = _unicodeCategory(code);\n if (val && ~'LNM'.indexOf(val)) rv.push(c);\n if (val && ~'Z'.indexOf(val)) rv.push(' ');\n }\n var slug = rv.join('').replace(/^\\s+|\\s+$/g, '').replace(/\\s+/g,' ');\n if (!spaces) slug = slug.replace(/[\\s\\-]+/g,'-');\n if (lower) slug = slug.toLowerCase();\n return slug;\n };\n}());","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","/**\n * The Lexer class handles tokenizing the input in various ways. Since our\n * parser expects us to be able to backtrack, the lexer allows lexing from any\n * given starting point.\n *\n * Its main exposed function is the `lex` function, which takes a position to\n * lex from and a type of token to lex. It defers to the appropriate `_innerLex`\n * function.\n *\n * The various `_innerLex` functions perform the actual lexing of different\n * kinds.\n */\n\nvar matchAt = require(\"match-at\");\n\nvar ParseError = require(\"./ParseError\");\n\n// The main lexer class\nfunction Lexer(input) {\n this._input = input;\n}\n\n// The resulting token returned from `lex`.\nfunction Token(text, data, position) {\n this.text = text;\n this.data = data;\n this.position = position;\n}\n\n/* The following tokenRegex\n * - matches typical whitespace (but not NBSP etc.) using its first group\n * - matches symbol combinations which result in a single output character\n * - does not match any control character \\x00-\\x1f except whitespace\n * - does not match a bare backslash\n * - matches any ASCII character except those just mentioned\n * - does not match the BMP private use area \\uE000-\\uF8FF\n * - does not match bare surrogate code units\n * - matches any BMP character except for those just described\n * - matches any valid Unicode surrogate pair\n * - matches a backslash followed by one or more letters\n * - matches a backslash followed by any BMP character, including newline\n * Just because the Lexer matches something doesn't mean it's valid input:\n * If there is no matching function or symbol definition, the Parser will\n * still reject the input.\n */\nvar tokenRegex = new RegExp(\n \"([ \\r\\n\\t]+)|(\" + // whitespace\n \"---?\" + // special combinations\n \"|[!-\\\\[\\\\]-\\u2027\\u202A-\\uD7FF\\uF900-\\uFFFF]\" + // single codepoint\n \"|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\" + // surrogate pair\n \"|\\\\\\\\(?:[a-zA-Z]+|[^\\uD800-\\uDFFF])\" + // function name\n \")\"\n);\n\nvar whitespaceRegex = /\\s*/;\n\n/**\n * This function lexes a single normal token. It takes a position and\n * whether it should completely ignore whitespace or not.\n */\nLexer.prototype._innerLex = function(pos, ignoreWhitespace) {\n var input = this._input;\n if (pos === input.length) {\n return new Token(\"EOF\", null, pos);\n }\n var match = matchAt(tokenRegex, input, pos);\n if (match === null) {\n throw new ParseError(\n \"Unexpected character: '\" + input[pos] + \"'\",\n this, pos);\n } else if (match[2]) { // matched non-whitespace\n return new Token(match[2], null, pos + match[2].length);\n } else if (ignoreWhitespace) {\n return this._innerLex(pos + match[1].length, true);\n } else { // concatenate whitespace to a single space\n return new Token(\" \", null, pos + match[1].length);\n }\n};\n\n// A regex to match a CSS color (like #ffffff or BlueViolet)\nvar cssColor = /#[a-z0-9]+|[a-z]+/i;\n\n/**\n * This function lexes a CSS color.\n */\nLexer.prototype._innerLexColor = function(pos) {\n var input = this._input;\n\n // Ignore whitespace\n var whitespace = matchAt(whitespaceRegex, input, pos)[0];\n pos += whitespace.length;\n\n var match;\n if ((match = matchAt(cssColor, input, pos))) {\n // If we look like a color, return a color\n return new Token(match[0], null, pos + match[0].length);\n } else {\n throw new ParseError(\"Invalid color\", this, pos);\n }\n};\n\n// A regex to match a dimension. Dimensions look like\n// \"1.2em\" or \".4pt\" or \"1 ex\"\nvar sizeRegex = /(-?)\\s*(\\d+(?:\\.\\d*)?|\\.\\d+)\\s*([a-z]{2})/;\n\n/**\n * This function lexes a dimension.\n */\nLexer.prototype._innerLexSize = function(pos) {\n var input = this._input;\n\n // Ignore whitespace\n var whitespace = matchAt(whitespaceRegex, input, pos)[0];\n pos += whitespace.length;\n\n var match;\n if ((match = matchAt(sizeRegex, input, pos))) {\n var unit = match[3];\n // We only currently handle \"em\" and \"ex\" units\n if (unit !== \"em\" && unit !== \"ex\") {\n throw new ParseError(\"Invalid unit: '\" + unit + \"'\", this, pos);\n }\n return new Token(match[0], {\n number: +(match[1] + match[2]),\n unit: unit,\n }, pos + match[0].length);\n }\n\n throw new ParseError(\"Invalid size\", this, pos);\n};\n\n/**\n * This function lexes a string of whitespace.\n */\nLexer.prototype._innerLexWhitespace = function(pos) {\n var input = this._input;\n\n var whitespace = matchAt(whitespaceRegex, input, pos)[0];\n pos += whitespace.length;\n\n return new Token(whitespace[0], null, pos);\n};\n\n/**\n * This function lexes a single token starting at `pos` and of the given mode.\n * Based on the mode, we defer to one of the `_innerLex` functions.\n */\nLexer.prototype.lex = function(pos, mode) {\n if (mode === \"math\") {\n return this._innerLex(pos, true);\n } else if (mode === \"text\") {\n return this._innerLex(pos, false);\n } else if (mode === \"color\") {\n return this._innerLexColor(pos);\n } else if (mode === \"size\") {\n return this._innerLexSize(pos);\n } else if (mode === \"whitespace\") {\n return this._innerLexWhitespace(pos);\n }\n};\n\nmodule.exports = Lexer;\n","/**\n * This file converts a parse tree into a cooresponding MathML tree. The main\n * entry point is the `buildMathML` function, which takes a parse tree from the\n * parser.\n */\n\nvar buildCommon = require(\"./buildCommon\");\nvar fontMetrics = require(\"./fontMetrics\");\nvar mathMLTree = require(\"./mathMLTree\");\nvar ParseError = require(\"./ParseError\");\nvar symbols = require(\"./symbols\");\nvar utils = require(\"./utils\");\n\nvar makeSpan = buildCommon.makeSpan;\nvar fontMap = buildCommon.fontMap;\n\n/**\n * Takes a symbol and converts it into a MathML text node after performing\n * optional replacement from symbols.js.\n */\nvar makeText = function(text, mode) {\n if (symbols[mode][text] && symbols[mode][text].replace) {\n text = symbols[mode][text].replace;\n }\n\n return new mathMLTree.TextNode(text);\n};\n\n/**\n * Returns the math variant as a string or null if none is required.\n */\nvar getVariant = function(group, options) {\n var font = options.font;\n if (!font) {\n return null;\n }\n\n var mode = group.mode;\n if (font === \"mathit\") {\n return \"italic\";\n }\n\n var value = group.value;\n if (utils.contains([\"\\\\imath\", \"\\\\jmath\"], value)) {\n return null;\n }\n\n if (symbols[mode][value] && symbols[mode][value].replace) {\n value = symbols[mode][value].replace;\n }\n\n var fontName = fontMap[font].fontName;\n if (fontMetrics.getCharacterMetrics(value, fontName)) {\n return fontMap[options.font].variant;\n }\n\n return null;\n};\n\n/**\n * Functions for handling the different types of groups found in the parse\n * tree. Each function should take a parse group and return a MathML node.\n */\nvar groupTypes = {};\n\ngroupTypes.mathord = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mi\",\n [makeText(group.value, group.mode)]);\n\n var variant = getVariant(group, options);\n if (variant) {\n node.setAttribute(\"mathvariant\", variant);\n }\n return node;\n};\n\ngroupTypes.textord = function(group, options) {\n var text = makeText(group.value, group.mode);\n\n var variant = getVariant(group, options) || \"normal\";\n\n var node;\n if (/[0-9]/.test(group.value)) {\n // TODO(kevinb) merge adjacent nodes\n // do it as a post processing step\n node = new mathMLTree.MathNode(\"mn\", [text]);\n if (options.font) {\n node.setAttribute(\"mathvariant\", variant);\n }\n } else {\n node = new mathMLTree.MathNode(\"mi\", [text]);\n node.setAttribute(\"mathvariant\", variant);\n }\n\n return node;\n};\n\ngroupTypes.bin = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.rel = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.open = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.close = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.inner = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.punct = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n node.setAttribute(\"separator\", \"true\");\n\n return node;\n};\n\ngroupTypes.ordgroup = function(group, options) {\n var inner = buildExpression(group.value, options);\n\n var node = new mathMLTree.MathNode(\"mrow\", inner);\n\n return node;\n};\n\ngroupTypes.text = function(group, options) {\n var inner = buildExpression(group.value.body, options);\n\n var node = new mathMLTree.MathNode(\"mtext\", inner);\n\n return node;\n};\n\ngroupTypes.color = function(group, options) {\n var inner = buildExpression(group.value.value, options);\n\n var node = new mathMLTree.MathNode(\"mstyle\", inner);\n\n node.setAttribute(\"mathcolor\", group.value.color);\n\n return node;\n};\n\ngroupTypes.supsub = function(group, options) {\n var children = [buildGroup(group.value.base, options)];\n\n if (group.value.sub) {\n children.push(buildGroup(group.value.sub, options));\n }\n\n if (group.value.sup) {\n children.push(buildGroup(group.value.sup, options));\n }\n\n var nodeType;\n if (!group.value.sub) {\n nodeType = \"msup\";\n } else if (!group.value.sup) {\n nodeType = \"msub\";\n } else {\n nodeType = \"msubsup\";\n }\n\n var node = new mathMLTree.MathNode(nodeType, children);\n\n return node;\n};\n\ngroupTypes.genfrac = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mfrac\",\n [buildGroup(group.value.numer, options),\n buildGroup(group.value.denom, options)]);\n\n if (!group.value.hasBarLine) {\n node.setAttribute(\"linethickness\", \"0px\");\n }\n\n if (group.value.leftDelim != null || group.value.rightDelim != null) {\n var withDelims = [];\n\n if (group.value.leftDelim != null) {\n var leftOp = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(group.value.leftDelim)]);\n\n leftOp.setAttribute(\"fence\", \"true\");\n\n withDelims.push(leftOp);\n }\n\n withDelims.push(node);\n\n if (group.value.rightDelim != null) {\n var rightOp = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(group.value.rightDelim)]);\n\n rightOp.setAttribute(\"fence\", \"true\");\n\n withDelims.push(rightOp);\n }\n\n var outerNode = new mathMLTree.MathNode(\"mrow\", withDelims);\n\n return outerNode;\n }\n\n return node;\n};\n\ngroupTypes.array = function(group, options) {\n return new mathMLTree.MathNode(\n \"mtable\", group.value.body.map(function(row) {\n return new mathMLTree.MathNode(\n \"mtr\", row.map(function(cell) {\n return new mathMLTree.MathNode(\n \"mtd\", [buildGroup(cell, options)]);\n }));\n }));\n};\n\ngroupTypes.sqrt = function(group, options) {\n var node;\n if (group.value.index) {\n node = new mathMLTree.MathNode(\n \"mroot\", [\n buildGroup(group.value.body, options),\n buildGroup(group.value.index, options),\n ]);\n } else {\n node = new mathMLTree.MathNode(\n \"msqrt\", [buildGroup(group.value.body, options)]);\n }\n\n return node;\n};\n\ngroupTypes.leftright = function(group, options) {\n var inner = buildExpression(group.value.body, options);\n\n if (group.value.left !== \".\") {\n var leftNode = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.left, group.mode)]);\n\n leftNode.setAttribute(\"fence\", \"true\");\n\n inner.unshift(leftNode);\n }\n\n if (group.value.right !== \".\") {\n var rightNode = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.right, group.mode)]);\n\n rightNode.setAttribute(\"fence\", \"true\");\n\n inner.push(rightNode);\n }\n\n var outerNode = new mathMLTree.MathNode(\"mrow\", inner);\n\n return outerNode;\n};\n\ngroupTypes.accent = function(group, options) {\n var accentNode = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.accent, group.mode)]);\n\n var node = new mathMLTree.MathNode(\n \"mover\",\n [buildGroup(group.value.base, options),\n accentNode]);\n\n node.setAttribute(\"accent\", \"true\");\n\n return node;\n};\n\ngroupTypes.spacing = function(group) {\n var node;\n\n if (group.value === \"\\\\ \" || group.value === \"\\\\space\" ||\n group.value === \" \" || group.value === \"~\") {\n node = new mathMLTree.MathNode(\n \"mtext\", [new mathMLTree.TextNode(\"\\u00a0\")]);\n } else {\n node = new mathMLTree.MathNode(\"mspace\");\n\n node.setAttribute(\n \"width\", buildCommon.spacingFunctions[group.value].size);\n }\n\n return node;\n};\n\ngroupTypes.op = function(group) {\n var node;\n\n // TODO(emily): handle big operators using the `largeop` attribute\n\n if (group.value.symbol) {\n // This is a symbol. Just add the symbol.\n node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.body, group.mode)]);\n } else {\n // This is a text operator. Add all of the characters from the\n // operator's name.\n // TODO(emily): Add a space in the middle of some of these\n // operators, like \\limsup.\n node = new mathMLTree.MathNode(\n \"mi\", [new mathMLTree.TextNode(group.value.body.slice(1))]);\n }\n\n return node;\n};\n\ngroupTypes.katex = function(group) {\n var node = new mathMLTree.MathNode(\n \"mtext\", [new mathMLTree.TextNode(\"KaTeX\")]);\n\n return node;\n};\n\ngroupTypes.font = function(group, options) {\n var font = group.value.font;\n return buildGroup(group.value.body, options.withFont(font));\n};\n\ngroupTypes.delimsizing = function(group) {\n var children = [];\n\n if (group.value.value !== \".\") {\n children.push(makeText(group.value.value, group.mode));\n }\n\n var node = new mathMLTree.MathNode(\"mo\", children);\n\n if (group.value.delimType === \"open\" ||\n group.value.delimType === \"close\") {\n // Only some of the delimsizing functions act as fences, and they\n // return \"open\" or \"close\" delimTypes.\n node.setAttribute(\"fence\", \"true\");\n } else {\n // Explicitly disable fencing if it's not a fence, to override the\n // defaults.\n node.setAttribute(\"fence\", \"false\");\n }\n\n return node;\n};\n\ngroupTypes.styling = function(group, options) {\n var inner = buildExpression(group.value.value, options);\n\n var node = new mathMLTree.MathNode(\"mstyle\", inner);\n\n var styleAttributes = {\n \"display\": [\"0\", \"true\"],\n \"text\": [\"0\", \"false\"],\n \"script\": [\"1\", \"false\"],\n \"scriptscript\": [\"2\", \"false\"],\n };\n\n var attr = styleAttributes[group.value.style];\n\n node.setAttribute(\"scriptlevel\", attr[0]);\n node.setAttribute(\"displaystyle\", attr[1]);\n\n return node;\n};\n\ngroupTypes.sizing = function(group, options) {\n var inner = buildExpression(group.value.value, options);\n\n var node = new mathMLTree.MathNode(\"mstyle\", inner);\n\n // TODO(emily): This doesn't produce the correct size for nested size\n // changes, because we don't keep state of what style we're currently\n // in, so we can't reset the size to normal before changing it. Now\n // that we're passing an options parameter we should be able to fix\n // this.\n node.setAttribute(\n \"mathsize\", buildCommon.sizingMultiplier[group.value.size] + \"em\");\n\n return node;\n};\n\ngroupTypes.overline = function(group, options) {\n var operator = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n\n var node = new mathMLTree.MathNode(\n \"mover\",\n [buildGroup(group.value.body, options),\n operator]);\n node.setAttribute(\"accent\", \"true\");\n\n return node;\n};\n\ngroupTypes.underline = function(group, options) {\n var operator = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n\n var node = new mathMLTree.MathNode(\n \"munder\",\n [buildGroup(group.value.body, options),\n operator]);\n node.setAttribute(\"accentunder\", \"true\");\n\n return node;\n};\n\ngroupTypes.rule = function(group) {\n // TODO(emily): Figure out if there's an actual way to draw black boxes\n // in MathML.\n var node = new mathMLTree.MathNode(\"mrow\");\n\n return node;\n};\n\ngroupTypes.llap = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mpadded\", [buildGroup(group.value.body, options)]);\n\n node.setAttribute(\"lspace\", \"-1width\");\n node.setAttribute(\"width\", \"0px\");\n\n return node;\n};\n\ngroupTypes.rlap = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mpadded\", [buildGroup(group.value.body, options)]);\n\n node.setAttribute(\"width\", \"0px\");\n\n return node;\n};\n\ngroupTypes.phantom = function(group, options, prev) {\n var inner = buildExpression(group.value.value, options);\n return new mathMLTree.MathNode(\"mphantom\", inner);\n};\n\n/**\n * Takes a list of nodes, builds them, and returns a list of the generated\n * MathML nodes. A little simpler than the HTML version because we don't do any\n * previous-node handling.\n */\nvar buildExpression = function(expression, options) {\n var groups = [];\n for (var i = 0; i < expression.length; i++) {\n var group = expression[i];\n groups.push(buildGroup(group, options));\n }\n return groups;\n};\n\n/**\n * Takes a group from the parser and calls the appropriate groupTypes function\n * on it to produce a MathML node.\n */\nvar buildGroup = function(group, options) {\n if (!group) {\n return new mathMLTree.MathNode(\"mrow\");\n }\n\n if (groupTypes[group.type]) {\n // Call the groupTypes function\n return groupTypes[group.type](group, options);\n } else {\n throw new ParseError(\n \"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n\n/**\n * Takes a full parse tree and settings and builds a MathML representation of\n * it. In particular, we put the elements from building the parse tree into a\n * tag so we can also include that TeX source as an annotation.\n *\n * Note that we actually return a domTree element with a `` inside it so\n * we can do appropriate styling.\n */\nvar buildMathML = function(tree, texExpression, options) {\n var expression = buildExpression(tree, options);\n\n // Wrap up the expression in an mrow so it is presented in the semantics\n // tag correctly.\n var wrapper = new mathMLTree.MathNode(\"mrow\", expression);\n\n // Build a TeX annotation of the source\n var annotation = new mathMLTree.MathNode(\n \"annotation\", [new mathMLTree.TextNode(texExpression)]);\n\n annotation.setAttribute(\"encoding\", \"application/x-tex\");\n\n var semantics = new mathMLTree.MathNode(\n \"semantics\", [wrapper, annotation]);\n\n var math = new mathMLTree.MathNode(\"math\", [semantics]);\n\n // You can't style nodes, so we wrap the node in a span.\n return makeSpan([\"katex-mathml\"], [math]);\n};\n\nmodule.exports = buildMathML;\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// Process footnotes\n//\n'use strict';\n\n////////////////////////////////////////////////////////////////////////////////\n// Renderer partials\n\nfunction _footnote_ref(tokens, idx) {\n var n = Number(tokens[idx].meta.id + 1).toString();\n var id = 'fnref' + n;\n if (tokens[idx].meta.subId > 0) {\n id += ':' + tokens[idx].meta.subId;\n }\n return '[' + n + ']';\n}\nfunction _footnote_block_open(tokens, idx, options) {\n return (options.xhtmlOut ? '
\\n' : '
\\n') +\n '
\\n' +\n '
    \\n';\n}\nfunction _footnote_block_close() {\n return '
\\n
\\n';\n}\nfunction _footnote_open(tokens, idx) {\n var id = Number(tokens[idx].meta.id + 1).toString();\n return '
  • ';\n}\nfunction _footnote_close() {\n return '
  • \\n';\n}\nfunction _footnote_anchor(tokens, idx) {\n var n = Number(tokens[idx].meta.id + 1).toString();\n var id = 'fnref' + n;\n if (tokens[idx].meta.subId > 0) {\n id += ':' + tokens[idx].meta.subId;\n }\n return ' \\u21a9'; /* ↩ */\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nmodule.exports = function sub_plugin(md) {\n var parseLinkLabel = md.helpers.parseLinkLabel,\n isSpace = md.utils.isSpace;\n\n md.renderer.rules.footnote_ref = _footnote_ref;\n md.renderer.rules.footnote_block_open = _footnote_block_open;\n md.renderer.rules.footnote_block_close = _footnote_block_close;\n md.renderer.rules.footnote_open = _footnote_open;\n md.renderer.rules.footnote_close = _footnote_close;\n md.renderer.rules.footnote_anchor = _footnote_anchor;\n\n // Process footnote block definition\n function footnote_def(state, startLine, endLine, silent) {\n var oldBMark, oldTShift, oldSCount, oldParentType, pos, label, token,\n initial, offset, ch, posAfterColon,\n start = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // line should be at least 5 chars - \"[^x]:\"\n if (start + 4 > max) { return false; }\n\n if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; }\n if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; }\n\n for (pos = start + 2; pos < max; pos++) {\n if (state.src.charCodeAt(pos) === 0x20) { return false; }\n if (state.src.charCodeAt(pos) === 0x5D /* ] */) {\n break;\n }\n }\n\n if (pos === start + 2) { return false; } // no empty footnote labels\n if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 0x3A /* : */) { return false; }\n if (silent) { return true; }\n pos++;\n\n if (!state.env.footnotes) { state.env.footnotes = {}; }\n if (!state.env.footnotes.refs) { state.env.footnotes.refs = {}; }\n label = state.src.slice(start + 2, pos - 2);\n state.env.footnotes.refs[':' + label] = -1;\n\n token = new state.Token('footnote_reference_open', '', 1);\n token.meta = { label: label };\n token.level = state.level++;\n state.tokens.push(token);\n\n oldBMark = state.bMarks[startLine];\n oldTShift = state.tShift[startLine];\n oldSCount = state.sCount[startLine];\n oldParentType = state.parentType;\n\n posAfterColon = pos;\n initial = offset = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]);\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n state.tShift[startLine] = pos - posAfterColon;\n state.sCount[startLine] = offset - initial;\n\n state.bMarks[startLine] = posAfterColon;\n state.blkIndent += 4;\n state.parentType = 'footnote';\n\n if (state.sCount[startLine] < state.blkIndent) {\n state.sCount[startLine] += state.blkIndent;\n }\n\n state.md.block.tokenize(state, startLine, endLine, true);\n\n state.parentType = oldParentType;\n state.blkIndent -= 4;\n state.tShift[startLine] = oldTShift;\n state.sCount[startLine] = oldSCount;\n state.bMarks[startLine] = oldBMark;\n\n token = new state.Token('footnote_reference_close', '', -1);\n token.level = --state.level;\n state.tokens.push(token);\n\n return true;\n }\n\n // Process inline footnotes (^[...])\n function footnote_inline(state, silent) {\n var labelStart,\n labelEnd,\n footnoteId,\n token,\n tokens,\n max = state.posMax,\n start = state.pos;\n\n if (start + 2 >= max) { return false; }\n if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; }\n if (state.src.charCodeAt(start + 1) !== 0x5B/* [ */) { return false; }\n\n labelStart = start + 2;\n labelEnd = parseLinkLabel(state, start + 1);\n\n // parser failed to find ']', so it's not a valid note\n if (labelEnd < 0) { return false; }\n\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n if (!state.env.footnotes) { state.env.footnotes = {}; }\n if (!state.env.footnotes.list) { state.env.footnotes.list = []; }\n footnoteId = state.env.footnotes.list.length;\n\n state.md.inline.parse(\n state.src.slice(labelStart, labelEnd),\n state.md,\n state.env,\n tokens = []\n );\n\n token = state.push('footnote_ref', '', 0);\n token.meta = { id: footnoteId };\n\n state.env.footnotes.list[footnoteId] = { tokens: tokens };\n }\n\n state.pos = labelEnd + 1;\n state.posMax = max;\n return true;\n }\n\n // Process footnote references ([^...])\n function footnote_ref(state, silent) {\n var label,\n pos,\n footnoteId,\n footnoteSubId,\n token,\n max = state.posMax,\n start = state.pos;\n\n // should be at least 4 chars - \"[^x]\"\n if (start + 3 > max) { return false; }\n\n if (!state.env.footnotes || !state.env.footnotes.refs) { return false; }\n if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; }\n if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; }\n\n for (pos = start + 2; pos < max; pos++) {\n if (state.src.charCodeAt(pos) === 0x20) { return false; }\n if (state.src.charCodeAt(pos) === 0x0A) { return false; }\n if (state.src.charCodeAt(pos) === 0x5D /* ] */) {\n break;\n }\n }\n\n if (pos === start + 2) { return false; } // no empty footnote labels\n if (pos >= max) { return false; }\n pos++;\n\n label = state.src.slice(start + 2, pos - 1);\n if (typeof state.env.footnotes.refs[':' + label] === 'undefined') { return false; }\n\n if (!silent) {\n if (!state.env.footnotes.list) { state.env.footnotes.list = []; }\n\n if (state.env.footnotes.refs[':' + label] < 0) {\n footnoteId = state.env.footnotes.list.length;\n state.env.footnotes.list[footnoteId] = { label: label, count: 0 };\n state.env.footnotes.refs[':' + label] = footnoteId;\n } else {\n footnoteId = state.env.footnotes.refs[':' + label];\n }\n\n footnoteSubId = state.env.footnotes.list[footnoteId].count;\n state.env.footnotes.list[footnoteId].count++;\n\n token = state.push('footnote_ref', '', 0);\n token.meta = { id: footnoteId, subId: footnoteSubId };\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n }\n\n // Glue footnote tokens to end of token stream\n function footnote_tail(state) {\n var i, l, j, t, lastParagraph, list, token, tokens, current, currentLabel,\n insideRef = false,\n refTokens = {};\n\n if (!state.env.footnotes) { return; }\n\n state.tokens = state.tokens.filter(function(tok) {\n if (tok.type === 'footnote_reference_open') {\n insideRef = true;\n current = [];\n currentLabel = tok.meta.label;\n return false;\n }\n if (tok.type === 'footnote_reference_close') {\n insideRef = false;\n // prepend ':' to avoid conflict with Object.prototype members\n refTokens[':' + currentLabel] = current;\n return false;\n }\n if (insideRef) { current.push(tok); }\n return !insideRef;\n });\n\n if (!state.env.footnotes.list) { return; }\n list = state.env.footnotes.list;\n\n token = new state.Token('footnote_block_open', '', 1);\n state.tokens.push(token);\n\n for (i = 0, l = list.length; i < l; i++) {\n token = new state.Token('footnote_open', '', 1);\n token.meta = { id: i };\n state.tokens.push(token);\n\n if (list[i].tokens) {\n tokens = [];\n\n token = new state.Token('paragraph_open', 'p', 1);\n token.block = true;\n tokens.push(token);\n\n token = new state.Token('inline', '', 0);\n token.children = list[i].tokens;\n token.content = '';\n tokens.push(token);\n\n token = new state.Token('paragraph_close', 'p', -1);\n token.block = true;\n tokens.push(token);\n\n } else if (list[i].label) {\n tokens = refTokens[':' + list[i].label];\n }\n\n state.tokens = state.tokens.concat(tokens);\n if (state.tokens[state.tokens.length - 1].type === 'paragraph_close') {\n lastParagraph = state.tokens.pop();\n } else {\n lastParagraph = null;\n }\n\n t = list[i].count > 0 ? list[i].count : 1;\n for (j = 0; j < t; j++) {\n token = new state.Token('footnote_anchor', '', 0);\n token.meta = { id: i, subId: j };\n state.tokens.push(token);\n }\n\n if (lastParagraph) {\n state.tokens.push(lastParagraph);\n }\n\n token = new state.Token('footnote_close', '', -1);\n state.tokens.push(token);\n }\n\n token = new state.Token('footnote_block_close', '', -1);\n state.tokens.push(token);\n }\n\n md.block.ruler.before('reference', 'footnote_def', footnote_def, { alt: [ 'paragraph', 'reference' ] });\n md.inline.ruler.after('image', 'footnote_inline', footnote_inline);\n md.inline.ruler.after('footnote_inline', 'footnote_ref', footnote_ref);\n md.core.ruler.after('inline', 'footnote_tail', footnote_tail);\n};\n","/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.7';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = typeof btoa === 'function' ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = typeof atob === 'function' ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n","// Block quotes\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function blockquote(state, startLine, endLine, silent) {\n var nextLine, lastLineEmpty, oldTShift, oldSCount, oldBMarks, oldIndent, oldParentType, lines, initial, offset, ch,\n terminatorRules, token,\n i, l, terminate,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // check the block quote marker\n if (state.src.charCodeAt(pos++) !== 0x3E/* > */) { return false; }\n\n // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n if (silent) { return true; }\n\n // skip one optional space (but not tab, check cmark impl) after '>'\n if (state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n oldIndent = state.blkIndent;\n state.blkIndent = 0;\n\n // skip spaces after \">\" and re-calculate offset\n initial = offset = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]);\n\n oldBMarks = [ state.bMarks[startLine] ];\n state.bMarks[startLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n\n oldSCount = [ state.sCount[startLine] ];\n state.sCount[startLine] = offset - initial;\n\n oldTShift = [ state.tShift[startLine] ];\n state.tShift[startLine] = pos - state.bMarks[startLine];\n\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n\n // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag\n // ```\n // > test\n // - - -\n // ```\n for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < oldIndent) { break; }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break;\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E/* > */) {\n // This line is inside the blockquote.\n\n // skip one optional space (but not tab, check cmark impl) after '>'\n if (state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n // skip spaces after \">\" and re-calculate offset\n initial = offset = state.sCount[nextLine] + pos - (state.bMarks[nextLine] + state.tShift[nextLine]);\n\n oldBMarks.push(state.bMarks[nextLine]);\n state.bMarks[nextLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] = offset - initial;\n\n oldTShift.push(state.tShift[nextLine]);\n state.tShift[nextLine] = pos - state.bMarks[nextLine];\n continue;\n }\n\n // Case 2: line is not inside the blockquote, and the last line was empty.\n if (lastLineEmpty) { break; }\n\n // Case 3: another tag found.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n\n oldBMarks.push(state.bMarks[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n\n // A negative indentation means that this is a paragraph continuation\n //\n state.sCount[nextLine] = -1;\n }\n\n oldParentType = state.parentType;\n state.parentType = 'blockquote';\n\n token = state.push('blockquote_open', 'blockquote', 1);\n token.markup = '>';\n token.map = lines = [ startLine, 0 ];\n\n state.md.block.tokenize(state, startLine, nextLine);\n\n token = state.push('blockquote_close', 'blockquote', -1);\n token.markup = '>';\n\n state.parentType = oldParentType;\n lines[1] = state.line;\n\n // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n for (i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i];\n state.tShift[i + startLine] = oldTShift[i];\n state.sCount[i + startLine] = oldSCount[i];\n }\n state.blkIndent = oldIndent;\n\n return true;\n};\n","/**\n * This file deals with creating delimiters of various sizes. The TeXbook\n * discusses these routines on page 441-442, in the \"Another subroutine sets box\n * x to a specified variable delimiter\" paragraph.\n *\n * There are three main routines here. `makeSmallDelim` makes a delimiter in the\n * normal font, but in either text, script, or scriptscript style.\n * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1,\n * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of\n * smaller pieces that are stacked on top of one another.\n *\n * The functions take a parameter `center`, which determines if the delimiter\n * should be centered around the axis.\n *\n * Then, there are three exposed functions. `sizedDelim` makes a delimiter in\n * one of the given sizes. This is used for things like `\\bigl`.\n * `customSizedDelim` makes a delimiter with a given total height+depth. It is\n * called in places like `\\sqrt`. `leftRightDelim` makes an appropriate\n * delimiter which surrounds an expression of a given height an depth. It is\n * used in `\\left` and `\\right`.\n */\n\nvar ParseError = require(\"./ParseError\");\nvar Style = require(\"./Style\");\n\nvar buildCommon = require(\"./buildCommon\");\nvar fontMetrics = require(\"./fontMetrics\");\nvar symbols = require(\"./symbols\");\nvar utils = require(\"./utils\");\n\nvar makeSpan = buildCommon.makeSpan;\n\n/**\n * Get the metrics for a given symbol and font, after transformation (i.e.\n * after following replacement from symbols.js)\n */\nvar getMetrics = function(symbol, font) {\n if (symbols.math[symbol] && symbols.math[symbol].replace) {\n return fontMetrics.getCharacterMetrics(\n symbols.math[symbol].replace, font);\n } else {\n return fontMetrics.getCharacterMetrics(\n symbol, font);\n }\n};\n\n/**\n * Builds a symbol in the given font size (note size is an integer)\n */\nvar mathrmSize = function(value, size, mode) {\n return buildCommon.makeSymbol(value, \"Size\" + size + \"-Regular\", mode);\n};\n\n/**\n * Puts a delimiter span in a given style, and adds appropriate height, depth,\n * and maxFontSizes.\n */\nvar styleWrap = function(delim, toStyle, options) {\n var span = makeSpan(\n [\"style-wrap\", options.style.reset(), toStyle.cls()], [delim]);\n\n var multiplier = toStyle.sizeMultiplier / options.style.sizeMultiplier;\n\n span.height *= multiplier;\n span.depth *= multiplier;\n span.maxFontSize = toStyle.sizeMultiplier;\n\n return span;\n};\n\n/**\n * Makes a small delimiter. This is a delimiter that comes in the Main-Regular\n * font, but is restyled to either be in textstyle, scriptstyle, or\n * scriptscriptstyle.\n */\nvar makeSmallDelim = function(delim, style, center, options, mode) {\n var text = buildCommon.makeSymbol(delim, \"Main-Regular\", mode);\n\n var span = styleWrap(text, style, options);\n\n if (center) {\n var shift =\n (1 - options.style.sizeMultiplier / style.sizeMultiplier) *\n fontMetrics.metrics.axisHeight;\n\n span.style.top = shift + \"em\";\n span.height -= shift;\n span.depth += shift;\n }\n\n return span;\n};\n\n/**\n * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2,\n * Size3, or Size4 fonts. It is always rendered in textstyle.\n */\nvar makeLargeDelim = function(delim, size, center, options, mode) {\n var inner = mathrmSize(delim, size, mode);\n\n var span = styleWrap(\n makeSpan([\"delimsizing\", \"size\" + size],\n [inner], options.getColor()),\n Style.TEXT, options);\n\n if (center) {\n var shift = (1 - options.style.sizeMultiplier) *\n fontMetrics.metrics.axisHeight;\n\n span.style.top = shift + \"em\";\n span.height -= shift;\n span.depth += shift;\n }\n\n return span;\n};\n\n/**\n * Make an inner span with the given offset and in the given font. This is used\n * in `makeStackedDelim` to make the stacking pieces for the delimiter.\n */\nvar makeInner = function(symbol, font, mode) {\n var sizeClass;\n // Apply the correct CSS class to choose the right font.\n if (font === \"Size1-Regular\") {\n sizeClass = \"delim-size1\";\n } else if (font === \"Size4-Regular\") {\n sizeClass = \"delim-size4\";\n }\n\n var inner = makeSpan(\n [\"delimsizinginner\", sizeClass],\n [makeSpan([], [buildCommon.makeSymbol(symbol, font, mode)])]);\n\n // Since this will be passed into `makeVList` in the end, wrap the element\n // in the appropriate tag that VList uses.\n return {type: \"elem\", elem: inner};\n};\n\n/**\n * Make a stacked delimiter out of a given delimiter, with the total height at\n * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook.\n */\nvar makeStackedDelim = function(delim, heightTotal, center, options, mode) {\n // There are four parts, the top, an optional middle, a repeated part, and a\n // bottom.\n var top;\n var middle;\n var repeat;\n var bottom;\n top = repeat = bottom = delim;\n middle = null;\n // Also keep track of what font the delimiters are in\n var font = \"Size1-Regular\";\n\n // We set the parts and font based on the symbol. Note that we use\n // '\\u23d0' instead of '|' and '\\u2016' instead of '\\\\|' for the\n // repeats of the arrows\n if (delim === \"\\\\uparrow\") {\n repeat = bottom = \"\\u23d0\";\n } else if (delim === \"\\\\Uparrow\") {\n repeat = bottom = \"\\u2016\";\n } else if (delim === \"\\\\downarrow\") {\n top = repeat = \"\\u23d0\";\n } else if (delim === \"\\\\Downarrow\") {\n top = repeat = \"\\u2016\";\n } else if (delim === \"\\\\updownarrow\") {\n top = \"\\\\uparrow\";\n repeat = \"\\u23d0\";\n bottom = \"\\\\downarrow\";\n } else if (delim === \"\\\\Updownarrow\") {\n top = \"\\\\Uparrow\";\n repeat = \"\\u2016\";\n bottom = \"\\\\Downarrow\";\n } else if (delim === \"[\" || delim === \"\\\\lbrack\") {\n top = \"\\u23a1\";\n repeat = \"\\u23a2\";\n bottom = \"\\u23a3\";\n font = \"Size4-Regular\";\n } else if (delim === \"]\" || delim === \"\\\\rbrack\") {\n top = \"\\u23a4\";\n repeat = \"\\u23a5\";\n bottom = \"\\u23a6\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lfloor\") {\n repeat = top = \"\\u23a2\";\n bottom = \"\\u23a3\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lceil\") {\n top = \"\\u23a1\";\n repeat = bottom = \"\\u23a2\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rfloor\") {\n repeat = top = \"\\u23a5\";\n bottom = \"\\u23a6\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rceil\") {\n top = \"\\u23a4\";\n repeat = bottom = \"\\u23a5\";\n font = \"Size4-Regular\";\n } else if (delim === \"(\") {\n top = \"\\u239b\";\n repeat = \"\\u239c\";\n bottom = \"\\u239d\";\n font = \"Size4-Regular\";\n } else if (delim === \")\") {\n top = \"\\u239e\";\n repeat = \"\\u239f\";\n bottom = \"\\u23a0\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\{\" || delim === \"\\\\lbrace\") {\n top = \"\\u23a7\";\n middle = \"\\u23a8\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\}\" || delim === \"\\\\rbrace\") {\n top = \"\\u23ab\";\n middle = \"\\u23ac\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lgroup\") {\n top = \"\\u23a7\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rgroup\") {\n top = \"\\u23ab\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lmoustache\") {\n top = \"\\u23a7\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rmoustache\") {\n top = \"\\u23ab\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\surd\") {\n top = \"\\ue001\";\n bottom = \"\\u23b7\";\n repeat = \"\\ue000\";\n font = \"Size4-Regular\";\n }\n\n // Get the metrics of the four sections\n var topMetrics = getMetrics(top, font);\n var topHeightTotal = topMetrics.height + topMetrics.depth;\n var repeatMetrics = getMetrics(repeat, font);\n var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth;\n var bottomMetrics = getMetrics(bottom, font);\n var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth;\n var middleHeightTotal = 0;\n var middleFactor = 1;\n if (middle !== null) {\n var middleMetrics = getMetrics(middle, font);\n middleHeightTotal = middleMetrics.height + middleMetrics.depth;\n middleFactor = 2; // repeat symmetrically above and below middle\n }\n\n // Calcuate the minimal height that the delimiter can have.\n // It is at least the size of the top, bottom, and optional middle combined.\n var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal;\n\n // Compute the number of copies of the repeat symbol we will need\n var repeatCount = Math.ceil(\n (heightTotal - minHeight) / (middleFactor * repeatHeightTotal));\n\n // Compute the total height of the delimiter including all the symbols\n var realHeightTotal =\n minHeight + repeatCount * middleFactor * repeatHeightTotal;\n\n // The center of the delimiter is placed at the center of the axis. Note\n // that in this context, \"center\" means that the delimiter should be\n // centered around the axis in the current style, while normally it is\n // centered around the axis in textstyle.\n var axisHeight = fontMetrics.metrics.axisHeight;\n if (center) {\n axisHeight *= options.style.sizeMultiplier;\n }\n // Calculate the depth\n var depth = realHeightTotal / 2 - axisHeight;\n\n // Now, we start building the pieces that will go into the vlist\n\n // Keep a list of the inner pieces\n var inners = [];\n\n // Add the bottom symbol\n inners.push(makeInner(bottom, font, mode));\n\n var i;\n if (middle === null) {\n // Add that many symbols\n for (i = 0; i < repeatCount; i++) {\n inners.push(makeInner(repeat, font, mode));\n }\n } else {\n // When there is a middle bit, we need the middle part and two repeated\n // sections\n for (i = 0; i < repeatCount; i++) {\n inners.push(makeInner(repeat, font, mode));\n }\n inners.push(makeInner(middle, font, mode));\n for (i = 0; i < repeatCount; i++) {\n inners.push(makeInner(repeat, font, mode));\n }\n }\n\n // Add the top symbol\n inners.push(makeInner(top, font, mode));\n\n // Finally, build the vlist\n var inner = buildCommon.makeVList(inners, \"bottom\", depth, options);\n\n return styleWrap(\n makeSpan([\"delimsizing\", \"mult\"], [inner], options.getColor()),\n Style.TEXT, options);\n};\n\n// There are three kinds of delimiters, delimiters that stack when they become\n// too large\nvar stackLargeDelimiters = [\n \"(\", \")\", \"[\", \"\\\\lbrack\", \"]\", \"\\\\rbrack\",\n \"\\\\{\", \"\\\\lbrace\", \"\\\\}\", \"\\\\rbrace\",\n \"\\\\lfloor\", \"\\\\rfloor\", \"\\\\lceil\", \"\\\\rceil\",\n \"\\\\surd\",\n];\n\n// delimiters that always stack\nvar stackAlwaysDelimiters = [\n \"\\\\uparrow\", \"\\\\downarrow\", \"\\\\updownarrow\",\n \"\\\\Uparrow\", \"\\\\Downarrow\", \"\\\\Updownarrow\",\n \"|\", \"\\\\|\", \"\\\\vert\", \"\\\\Vert\",\n \"\\\\lvert\", \"\\\\rvert\", \"\\\\lVert\", \"\\\\rVert\",\n \"\\\\lgroup\", \"\\\\rgroup\", \"\\\\lmoustache\", \"\\\\rmoustache\",\n];\n\n// and delimiters that never stack\nvar stackNeverDelimiters = [\n \"<\", \">\", \"\\\\langle\", \"\\\\rangle\", \"/\", \"\\\\backslash\", \"\\\\lt\", \"\\\\gt\",\n];\n\n// Metrics of the different sizes. Found by looking at TeX's output of\n// $\\bigl| // \\Bigl| \\biggl| \\Biggl| \\showlists$\n// Used to create stacked delimiters of appropriate sizes in makeSizedDelim.\nvar sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0];\n\n/**\n * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4.\n */\nvar makeSizedDelim = function(delim, size, options, mode) {\n // < and > turn into \\langle and \\rangle in delimiters\n if (delim === \"<\" || delim === \"\\\\lt\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\") {\n delim = \"\\\\rangle\";\n }\n\n // Sized delimiters are never centered.\n if (utils.contains(stackLargeDelimiters, delim) ||\n utils.contains(stackNeverDelimiters, delim)) {\n return makeLargeDelim(delim, size, false, options, mode);\n } else if (utils.contains(stackAlwaysDelimiters, delim)) {\n return makeStackedDelim(\n delim, sizeToMaxHeight[size], false, options, mode);\n } else {\n throw new ParseError(\"Illegal delimiter: '\" + delim + \"'\");\n }\n};\n\n/**\n * There are three different sequences of delimiter sizes that the delimiters\n * follow depending on the kind of delimiter. This is used when creating custom\n * sized delimiters to decide whether to create a small, large, or stacked\n * delimiter.\n *\n * In real TeX, these sequences aren't explicitly defined, but are instead\n * defined inside the font metrics. Since there are only three sequences that\n * are possible for the delimiters that TeX defines, it is easier to just encode\n * them explicitly here.\n */\n\n// Delimiters that never stack try small delimiters and large delimiters only\nvar stackNeverDelimiterSequence = [\n {type: \"small\", style: Style.SCRIPTSCRIPT},\n {type: \"small\", style: Style.SCRIPT},\n {type: \"small\", style: Style.TEXT},\n {type: \"large\", size: 1},\n {type: \"large\", size: 2},\n {type: \"large\", size: 3},\n {type: \"large\", size: 4},\n];\n\n// Delimiters that always stack try the small delimiters first, then stack\nvar stackAlwaysDelimiterSequence = [\n {type: \"small\", style: Style.SCRIPTSCRIPT},\n {type: \"small\", style: Style.SCRIPT},\n {type: \"small\", style: Style.TEXT},\n {type: \"stack\"},\n];\n\n// Delimiters that stack when large try the small and then large delimiters, and\n// stack afterwards\nvar stackLargeDelimiterSequence = [\n {type: \"small\", style: Style.SCRIPTSCRIPT},\n {type: \"small\", style: Style.SCRIPT},\n {type: \"small\", style: Style.TEXT},\n {type: \"large\", size: 1},\n {type: \"large\", size: 2},\n {type: \"large\", size: 3},\n {type: \"large\", size: 4},\n {type: \"stack\"},\n];\n\n/**\n * Get the font used in a delimiter based on what kind of delimiter it is.\n */\nvar delimTypeToFont = function(type) {\n if (type.type === \"small\") {\n return \"Main-Regular\";\n } else if (type.type === \"large\") {\n return \"Size\" + type.size + \"-Regular\";\n } else if (type.type === \"stack\") {\n return \"Size4-Regular\";\n }\n};\n\n/**\n * Traverse a sequence of types of delimiters to decide what kind of delimiter\n * should be used to create a delimiter of the given height+depth.\n */\nvar traverseSequence = function(delim, height, sequence, options) {\n // Here, we choose the index we should start at in the sequences. In smaller\n // sizes (which correspond to larger numbers in style.size) we start earlier\n // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts\n // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2\n var start = Math.min(2, 3 - options.style.size);\n for (var i = start; i < sequence.length; i++) {\n if (sequence[i].type === \"stack\") {\n // This is always the last delimiter, so we just break the loop now.\n break;\n }\n\n var metrics = getMetrics(delim, delimTypeToFont(sequence[i]));\n var heightDepth = metrics.height + metrics.depth;\n\n // Small delimiters are scaled down versions of the same font, so we\n // account for the style change size.\n\n if (sequence[i].type === \"small\") {\n heightDepth *= sequence[i].style.sizeMultiplier;\n }\n\n // Check if the delimiter at this size works for the given height.\n if (heightDepth > height) {\n return sequence[i];\n }\n }\n\n // If we reached the end of the sequence, return the last sequence element.\n return sequence[sequence.length - 1];\n};\n\n/**\n * Make a delimiter of a given height+depth, with optional centering. Here, we\n * traverse the sequences, and create a delimiter that the sequence tells us to.\n */\nvar makeCustomSizedDelim = function(delim, height, center, options, mode) {\n if (delim === \"<\" || delim === \"\\\\lt\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\") {\n delim = \"\\\\rangle\";\n }\n\n // Decide what sequence to use\n var sequence;\n if (utils.contains(stackNeverDelimiters, delim)) {\n sequence = stackNeverDelimiterSequence;\n } else if (utils.contains(stackLargeDelimiters, delim)) {\n sequence = stackLargeDelimiterSequence;\n } else {\n sequence = stackAlwaysDelimiterSequence;\n }\n\n // Look through the sequence\n var delimType = traverseSequence(delim, height, sequence, options);\n\n // Depending on the sequence element we decided on, call the appropriate\n // function.\n if (delimType.type === \"small\") {\n return makeSmallDelim(delim, delimType.style, center, options, mode);\n } else if (delimType.type === \"large\") {\n return makeLargeDelim(delim, delimType.size, center, options, mode);\n } else if (delimType.type === \"stack\") {\n return makeStackedDelim(delim, height, center, options, mode);\n }\n};\n\n/**\n * Make a delimiter for use with `\\left` and `\\right`, given a height and depth\n * of an expression that the delimiters surround.\n */\nvar makeLeftRightDelim = function(delim, height, depth, options, mode) {\n // We always center \\left/\\right delimiters, so the axis is always shifted\n var axisHeight =\n fontMetrics.metrics.axisHeight * options.style.sizeMultiplier;\n\n // Taken from TeX source, tex.web, function make_left_right\n var delimiterFactor = 901;\n var delimiterExtend = 5.0 / fontMetrics.metrics.ptPerEm;\n\n var maxDistFromAxis = Math.max(\n height - axisHeight, depth + axisHeight);\n\n var totalHeight = Math.max(\n // In real TeX, calculations are done using integral values which are\n // 65536 per pt, or 655360 per em. So, the division here truncates in\n // TeX but doesn't here, producing different results. If we wanted to\n // exactly match TeX's calculation, we could do\n // Math.floor(655360 * maxDistFromAxis / 500) *\n // delimiterFactor / 655360\n // (To see the difference, compare\n // x^{x^{\\left(\\rule{0.1em}{0.68em}\\right)}}\n // in TeX and KaTeX)\n maxDistFromAxis / 500 * delimiterFactor,\n 2 * maxDistFromAxis - delimiterExtend);\n\n // Finally, we defer to `makeCustomSizedDelim` with our calculated total\n // height\n return makeCustomSizedDelim(delim, totalHeight, true, options, mode);\n};\n\nmodule.exports = {\n sizedDelim: makeSizedDelim,\n customSizedDelim: makeCustomSizedDelim,\n leftRightDelim: makeLeftRightDelim,\n};\n","/**\n * Provides a single function for parsing an expression using a Parser\n * TODO(emily): Remove this\n */\n\nvar Parser = require(\"./Parser\");\n\n/**\n * Parses an expression using a Parser, then returns the parsed result.\n */\nvar parseTree = function(toParse, settings) {\n var parser = new Parser(toParse, settings);\n\n return parser.parse();\n};\n\nmodule.exports = parseTree;\n","function MeanBits(meanBits) {\n this.bits = meanBits;\n}\n\nmodule.exports = MeanBits;\n","//package mp3;\n\nvar III_psy_xmin = require('./III_psy_xmin.js');\n\nfunction III_psy_ratio() {\n\tthis.thm = new III_psy_xmin();\n\tthis.en = new III_psy_xmin();\n}\n\nmodule.exports = III_psy_ratio;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAzZJREFUeF7tms9r1EAUx78vLZ49Cd7q1VPZ9O4WPHuRFrFFKnVTqYKIRRAR60UELYjQ6s7WH2BFdI/eitAKessE/wP35F9R8yTBbcvaTGYnu83u7OSaN+/N+7wfmcwMYcQfGnH/4QC4DBhxAq4ERjwB9JugH/AMGFUAZ4tAY8K3SNCqjo5KwKvEOKcje5QMedgK6/RaNV6rBPyAQwC+6UQ6xxHwJRR0QaXPX+ItMOaK2qQY0+Em7WbpyQXgB/wZwEzRiXSMb0lBZ5QAAv4FYKKwXcaubNC0EYBKjeeIsFV4Ev8rWJOCVnIAPANwp7DtIgD8JX4LxsKhSTQpxkaRSe2No/XzFbV0dExe54nxvfwsiD1UCXh4pM5CAGq8A0obX/rk1ZOOU72WSRtllvOJMZsB5DpvM4As5xlIMuLgM2tjBmRGnvCA/uA7e9jZLzXbACgifz8S9HjqGletBaCo+XtS0JMk6tYCUET+biToaTvlrQSgiPyKFLR2+NNqHQBF5G9Hgp53riusAqCI/C0p6MVRiyprACgifzMStJ61orQCgCLyy1LQS9VyeugBKCK/FAkSef8SfsCnAfxuyzHwSLUBo9wP8I/5Z0gR+ZoUtJnnfPu9X+OkRGbgYVvWaV41bmAAZDlPjMWwQW90ne9WbiAAZKY942rUoHfdOtWNfOkAFJG/EjbofTfOmMiWCiBry40Z81GDPpg41O2YUgF0Ntl014lwOazTx24dMZUvFUAl4ICA+v4ni3ApqtMnU2dMxpUKYHKBT46dQJWBU7GHbd3NUhNHs8aUCqCXjpjqshKAH3BypnARhB9DsxAyjWDnuOQsYSxGcqqUPkO1FO4FhKH/GSoKwQGweVdYJztcBrgMsPhgxJWABgHXA1wPcD3A3tNhjRZg7+mwjvOJjGuCrgm6JtjTJrgOwvKh+it8UVK3lk3l2Evne3C1l7EhG3TDbE8wuSEOJHeFh/mZlYKaRgCSQb2+KX7MJKUUNKWymXtb/B+EftwY7zeLphQ0m2dEC0CiJD3G8nAecf7l5TyjfX3vocUxvuoerWkD6OukS1TuAJQIfyBMuwwYiDCUOAmXASXCHwjTfwFbXpNfgTu0RQAAAABJRU5ErkJggg==\"","//package mp3;\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar L3Side = require('./L3Side.js');\n\nfunction GrInfo() {\n //float xr[] = new float[576];\n this.xr = new_float(576);\n //int l3_enc[] = new int[576];\n this.l3_enc = new_int(576);\n //int scalefac[] = new int[L3Side.SFBMAX];\n this.scalefac = new_int(L3Side.SFBMAX);\n this.xrpow_max = 0.;\n\n this.part2_3_length = 0;\n this.big_values = 0;\n this.count1 = 0;\n this.global_gain = 0;\n this.scalefac_compress = 0;\n this.block_type = 0;\n this.mixed_block_flag = 0;\n this.table_select = new_int(3);\n this.subblock_gain = new_int(3 + 1);\n this.region0_count = 0;\n this.region1_count = 0;\n this.preflag = 0;\n this.scalefac_scale = 0;\n this.count1table_select = 0;\n\n this.part2_length = 0;\n this.sfb_lmax = 0;\n this.sfb_smin = 0;\n this.psy_lmax = 0;\n this.sfbmax = 0;\n this.psymax = 0;\n this.sfbdivide = 0;\n this.width = new_int(L3Side.SFBMAX);\n this.window = new_int(L3Side.SFBMAX);\n this.count1bits = 0;\n /**\n * added for LSF\n */\n this.sfb_partition_table = null;\n this.slen = new_int(4);\n\n this.max_nonzero_coeff = 0;\n\n var self = this;\n function clone_int(array) {\n return new Int32Array(array);\n }\n function clone_float(array) {\n return new Float32Array(array);\n }\n this.assign = function (other) {\n self.xr = clone_float(other.xr); //.slice(0); //clone();\n self.l3_enc = clone_int(other.l3_enc); //.slice(0); //clone();\n self.scalefac = clone_int(other.scalefac);//.slice(0); //clone();\n self.xrpow_max = other.xrpow_max;\n\n self.part2_3_length = other.part2_3_length;\n self.big_values = other.big_values;\n self.count1 = other.count1;\n self.global_gain = other.global_gain;\n self.scalefac_compress = other.scalefac_compress;\n self.block_type = other.block_type;\n self.mixed_block_flag = other.mixed_block_flag;\n self.table_select = clone_int(other.table_select);//.slice(0); //clone();\n self.subblock_gain = clone_int(other.subblock_gain); //.slice(0); //.clone();\n self.region0_count = other.region0_count;\n self.region1_count = other.region1_count;\n self.preflag = other.preflag;\n self.scalefac_scale = other.scalefac_scale;\n self.count1table_select = other.count1table_select;\n\n self.part2_length = other.part2_length;\n self.sfb_lmax = other.sfb_lmax;\n self.sfb_smin = other.sfb_smin;\n self.psy_lmax = other.psy_lmax;\n self.sfbmax = other.sfbmax;\n self.psymax = other.psymax;\n self.sfbdivide = other.sfbdivide;\n self.width = clone_int(other.width); //.slice(0); //.clone();\n self.window = clone_int(other.window); //.slice(0); //.clone();\n self.count1bits = other.count1bits;\n\n self.sfb_partition_table = other.sfb_partition_table.slice(0); //.clone();\n self.slen = clone_int(other.slen); //.slice(0); //.clone();\n self.max_nonzero_coeff = other.max_nonzero_coeff;\n }\n}\n\nmodule.exports = GrInfo;\n","/*\n * MP3 window subband -> subband filtering -> mdct routine\n *\n * Copyright (c) 1999-2000 Takehiro Tominaga\n *\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Library General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n/*\n * Special Thanks to Patrick De Smet for your advices.\n */\n\n/* $Id: NewMDCT.java,v 1.11 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\n\n\nfunction NewMDCT() {\n\n\tvar enwindow = [\n\t\t\t-4.77e-07 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.03951e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.53674e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t2.841473e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t3.5758972e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t3.401756e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.83715e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.9182e-05 * 0.740951125354959 / 2.384e-06, /* 15 */\n\t\t\t1.2398e-05 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.91212e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t2.283096e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.6994476e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t-1.8756866e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t-2.630711e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t-2.47478e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t-1.4782e-05 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.063471690191471e-01, 1.960342806591213e-01,\n\n\t\t\t-4.77e-07 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.05858e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.30786e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t2.521515e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t3.5694122e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t3.643036e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.91821e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.6321e-05 * 0.773010453362737 / 2.384e-06, /* 14 */\n\t\t\t1.1444e-05 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.65462e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t2.110004e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.6112804e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t-1.9634247e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t-2.803326e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t-2.77042e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t-1.6689e-05 * 0.773010453362737 / 2.384e-06,\n\t\t\t8.206787908286602e-01, 3.901806440322567e-01,\n\n\t\t\t-4.77e-07 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.07288e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.02653e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t2.174854e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t3.5586357e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t3.858566e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.95159e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.3460e-05 * 0.803207531480645 / 2.384e-06, /* 13 */\n\t\t\t1.0014e-05 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.40190e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.937389e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.5233517e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t-2.0506859e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t-2.974033e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t-3.07560e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t-1.8120e-05 * 0.803207531480645 / 2.384e-06,\n\t\t\t7.416505462720353e-01, 5.805693545089249e-01,\n\n\t\t\t-4.77e-07 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.08242e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t8.68797e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.800537e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t3.5435200e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t4.049301e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t9.94205e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t9.0599e-05 * 0.831469612302545 / 2.384e-06, /* 12 */\n\t\t\t9.060e-06 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.16348e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.766682e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.4358521e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t-2.1372318e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t-3.14188e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t-3.39031e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t-1.9550e-05 * 0.831469612302545 / 2.384e-06,\n\t\t\t6.681786379192989e-01, 7.653668647301797e-01,\n\n\t\t\t-4.77e-07 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.08719e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t8.29220e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.399517e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t3.5242081e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t4.215240e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t9.89437e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t8.7261e-05 * 0.857728610000272 / 2.384e-06, /* 11 */\n\t\t\t8.106e-06 * 0.857728610000272 / 2.384e-06,\n\t\t\t9.3937e-05 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.597881e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.3489246e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t-2.2228718e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t-3.306866e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t-3.71456e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t-2.1458e-05 * 0.857728610000272 / 2.384e-06,\n\t\t\t5.993769336819237e-01, 9.427934736519954e-01,\n\n\t\t\t-4.77e-07 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.08719e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t7.8392e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t9.71317e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t3.5007000e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t4.357815e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t9.80854e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t8.3923e-05 * 0.881921264348355 / 2.384e-06, /* 10 */\n\t\t\t7.629e-06 * 0.881921264348355 / 2.384e-06,\n\t\t\t7.2956e-05 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.432419e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.2627602e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t-2.3074150e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t-3.467083e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t-4.04358e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t-2.3365e-05 * 0.881921264348355 / 2.384e-06,\n\t\t\t5.345111359507916e-01, 1.111140466039205e+00,\n\n\t\t\t-9.54e-07 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.08242e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t7.31945e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t5.15938e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t3.4730434e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t4.477024e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t9.68933e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t8.0585e-05 * 0.903989293123443 / 2.384e-06, /* 9 */\n\t\t\t6.676e-06 * 0.903989293123443 / 2.384e-06,\n\t\t\t5.2929e-05 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.269817e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.1775017e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t-2.3907185e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t-3.622532e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t-4.38213e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t-2.5272e-05 * 0.903989293123443 / 2.384e-06,\n\t\t\t4.729647758913199e-01, 1.268786568327291e+00,\n\n\t\t\t-9.54e-07 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.06812e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t6.74248e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.3379e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.4412861e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t4.573822e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t9.54151e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t7.6771e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t6.199e-06 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.4332e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.111031e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.0933399e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-2.4725437e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-3.771782e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-4.72546e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-2.7657e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t4.1421356237309504879e-01, /* tan(PI/8) */\n\t\t\t1.414213562373095e+00,\n\n\t\t\t-9.54e-07 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.05381e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t6.10352e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t-4.75883e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t3.4055710e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t4.649162e-03 * 0.941544065183021 / 2.384e-06,\n\t\t\t9.35555e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t7.3433e-05 * 0.941544065183021 / 2.384e-06, /* 7 */\n\t\t\t5.245e-06 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.7166e-05 * 0.941544065183021 / 2.384e-06,\n\t\t\t9.56535e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.0103703e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t-2.5527000e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t-3.914356e-03 * 0.941544065183021 / 2.384e-06,\n\t\t\t-5.07355e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t-3.0041e-05 * 0.941544065183021 / 2.384e-06,\n\t\t\t3.578057213145241e-01, 1.546020906725474e+00,\n\n\t\t\t-9.54e-07 * 0.956940335732209 / 2.384e-06,\n\t\t\t1.02520e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t5.39303e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t-1.011848e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t3.3659935e-02 * 0.956940335732209 / 2.384e-06,\n\t\t\t4.703045e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.15051e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t7.0095e-05 * 0.956940335732209 / 2.384e-06, /* 6 */\n\t\t\t4.768e-06 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.54e-07 * 0.956940335732209 / 2.384e-06,\n\t\t\t8.06808e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.287834e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t-2.6310921e-02 * 0.956940335732209 / 2.384e-06,\n\t\t\t-4.048824e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t-5.42164e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t-3.2425e-05 * 0.956940335732209 / 2.384e-06,\n\t\t\t3.033466836073424e-01, 1.662939224605090e+00,\n\n\t\t\t-1.431e-06 * 0.970031253194544 / 2.384e-06,\n\t\t\t9.9182e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t4.62532e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t-1.573563e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t3.3225536e-02 * 0.970031253194544 / 2.384e-06,\n\t\t\t4.737377e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t8.91685e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t6.6280e-05 * 0.970031253194544 / 2.384e-06, /* 5 */\n\t\t\t4.292e-06 * 0.970031253194544 / 2.384e-06,\n\t\t\t-1.3828e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t6.61850e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t8.487225e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t-2.7073860e-02 * 0.970031253194544 / 2.384e-06,\n\t\t\t-4.174709e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t-5.76973e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t-3.4809e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t2.504869601913055e-01, 1.763842528696710e+00,\n\n\t\t\t-1.431e-06 * 0.98078528040323 / 2.384e-06,\n\t\t\t9.5367e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t3.78609e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.161503e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t3.2754898e-02 * 0.98078528040323 / 2.384e-06,\n\t\t\t4.752159e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t8.66413e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t6.2943e-05 * 0.98078528040323 / 2.384e-06, /* 4 */\n\t\t\t3.815e-06 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.718e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t5.22137e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t7.703304e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.7815342e-02 * 0.98078528040323 / 2.384e-06,\n\t\t\t-4.290581e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t-6.11782e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t-3.7670e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t1.989123673796580e-01, 1.847759065022573e+00,\n\n\t\t\t-1.907e-06 * 0.989176509964781 / 2.384e-06,\n\t\t\t9.0122e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t2.88486e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t-2.774239e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t3.2248020e-02 * 0.989176509964781 / 2.384e-06,\n\t\t\t4.748821e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t8.38757e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t5.9605e-05 * 0.989176509964781 / 2.384e-06, /* 3 */\n\t\t\t3.338e-06 * 0.989176509964781 / 2.384e-06,\n\t\t\t-3.9577e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t3.88145e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t6.937027e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t-2.8532982e-02 * 0.989176509964781 / 2.384e-06,\n\t\t\t-4.395962e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t-6.46591e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t-4.0531e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t1.483359875383474e-01, 1.913880671464418e+00,\n\n\t\t\t-1.907e-06 * 0.995184726672197 / 2.384e-06,\n\t\t\t8.4400e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t1.91689e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t-3.411293e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t3.1706810e-02 * 0.995184726672197 / 2.384e-06,\n\t\t\t4.728317e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t8.09669e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t5.579e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t3.338e-06 * 0.995184726672197 / 2.384e-06,\n\t\t\t-5.0545e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t2.59876e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t6.189346e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t-2.9224873e-02 * 0.995184726672197 / 2.384e-06,\n\t\t\t-4.489899e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t-6.80923e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t-4.3392e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t9.849140335716425e-02, 1.961570560806461e+00,\n\n\t\t\t-2.384e-06 * 0.998795456205172 / 2.384e-06,\n\t\t\t7.7724e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t8.8215e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.072189e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t3.1132698e-02 * 0.998795456205172 / 2.384e-06,\n\t\t\t4.691124e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t7.79152e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t5.2929e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t2.861e-06 * 0.998795456205172 / 2.384e-06,\n\t\t\t-6.0558e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t1.37329e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t5.462170e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t-2.9890060e-02 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.570484e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t-7.14302e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.6253e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t4.912684976946725e-02, 1.990369453344394e+00,\n\n\t\t\t3.5780907e-02 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.7876148e-02 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t3.134727e-03 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t2.457142e-03 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t9.71317e-04 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t2.18868e-04 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.01566e-04 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.3828e-05 * Util.SQRT2 * 0.5 / 2.384e-06,\n\n\t\t\t3.0526638e-02 / 2.384e-06, 4.638195e-03 / 2.384e-06,\n\t\t\t7.47204e-04 / 2.384e-06, 4.9591e-05 / 2.384e-06,\n\t\t\t4.756451e-03 / 2.384e-06, 2.1458e-05 / 2.384e-06,\n\t\t\t-6.9618e-05 / 2.384e-06, /* 2.384e-06/2.384e-06 */\n\t];\n\n\tvar NS = 12;\n\tvar NL = 36;\n\n\tvar win = [\n\t [\n\t 2.382191739347913e-13,\n\t 6.423305872147834e-13,\n\t 9.400849094049688e-13,\n\t 1.122435026096556e-12,\n\t 1.183840321267481e-12,\n\t 1.122435026096556e-12,\n\t 9.400849094049690e-13,\n\t 6.423305872147839e-13,\n\t 2.382191739347918e-13,\n\n\t 5.456116108943412e-12,\n\t 4.878985199565852e-12,\n\t 4.240448995017367e-12,\n\t 3.559909094758252e-12,\n\t 2.858043359288075e-12,\n\t 2.156177623817898e-12,\n\t 1.475637723558783e-12,\n\t 8.371015190102974e-13,\n\t 2.599706096327376e-13,\n\n\t -5.456116108943412e-12,\n\t -4.878985199565852e-12,\n\t -4.240448995017367e-12,\n\t -3.559909094758252e-12,\n\t -2.858043359288076e-12,\n\t -2.156177623817898e-12,\n\t -1.475637723558783e-12,\n\t -8.371015190102975e-13,\n\t -2.599706096327376e-13,\n\n\t -2.382191739347923e-13,\n\t -6.423305872147843e-13,\n\t -9.400849094049696e-13,\n\t -1.122435026096556e-12,\n\t -1.183840321267481e-12,\n\t -1.122435026096556e-12,\n\t -9.400849094049694e-13,\n\t -6.423305872147840e-13,\n\t -2.382191739347918e-13,\n\t ],\n\t [\n\t 2.382191739347913e-13,\n\t 6.423305872147834e-13,\n\t 9.400849094049688e-13,\n\t 1.122435026096556e-12,\n\t 1.183840321267481e-12,\n\t 1.122435026096556e-12,\n\t 9.400849094049688e-13,\n\t 6.423305872147841e-13,\n\t 2.382191739347918e-13,\n\n\t 5.456116108943413e-12,\n\t 4.878985199565852e-12,\n\t 4.240448995017367e-12,\n\t 3.559909094758253e-12,\n\t 2.858043359288075e-12,\n\t 2.156177623817898e-12,\n\t 1.475637723558782e-12,\n\t 8.371015190102975e-13,\n\t 2.599706096327376e-13,\n\n\t -5.461314069809755e-12,\n\t -4.921085770524055e-12,\n\t -4.343405037091838e-12,\n\t -3.732668368707687e-12,\n\t -3.093523840190885e-12,\n\t -2.430835727329465e-12,\n\t -1.734679010007751e-12,\n\t -9.748253656609281e-13,\n\t -2.797435120168326e-13,\n\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t -2.283748241799531e-13,\n\t -4.037858874020686e-13,\n\t -2.146547464825323e-13,\n\t ],\n\t [\n\t 1.316524975873958e-01, /* win[SHORT_TYPE] */\n\t 4.142135623730950e-01,\n\t 7.673269879789602e-01,\n\n\t 1.091308501069271e+00, /* tantab_l */\n\t 1.303225372841206e+00,\n\t 1.569685577117490e+00,\n\t 1.920982126971166e+00,\n\t 2.414213562373094e+00,\n\t 3.171594802363212e+00,\n\t 4.510708503662055e+00,\n\t 7.595754112725146e+00,\n\t 2.290376554843115e+01,\n\n\t 0.98480775301220802032, /* cx */\n\t 0.64278760968653936292,\n\t 0.34202014332566882393,\n\t 0.93969262078590842791,\n\t -0.17364817766693030343,\n\t -0.76604444311897790243,\n\t 0.86602540378443870761,\n\t 0.500000000000000e+00,\n\n\t -5.144957554275265e-01, /* ca */\n\t -4.717319685649723e-01,\n\t -3.133774542039019e-01,\n\t -1.819131996109812e-01,\n\t -9.457419252642064e-02,\n\t -4.096558288530405e-02,\n\t -1.419856857247115e-02,\n\t -3.699974673760037e-03,\n\n\t 8.574929257125442e-01, /* cs */\n\t 8.817419973177052e-01,\n\t 9.496286491027329e-01,\n\t 9.833145924917901e-01,\n\t 9.955178160675857e-01,\n\t 9.991605581781475e-01,\n\t 9.998991952444470e-01,\n\t 9.999931550702802e-01,\n\t ],\n\t [\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 2.283748241799531e-13,\n\t 4.037858874020686e-13,\n\t 2.146547464825323e-13,\n\n\t 5.461314069809755e-12,\n\t 4.921085770524055e-12,\n\t 4.343405037091838e-12,\n\t 3.732668368707687e-12,\n\t 3.093523840190885e-12,\n\t 2.430835727329466e-12,\n\t 1.734679010007751e-12,\n\t 9.748253656609281e-13,\n\t 2.797435120168326e-13,\n\n\t -5.456116108943413e-12,\n\t -4.878985199565852e-12,\n\t -4.240448995017367e-12,\n\t -3.559909094758253e-12,\n\t -2.858043359288075e-12,\n\t -2.156177623817898e-12,\n\t -1.475637723558782e-12,\n\t -8.371015190102975e-13,\n\t -2.599706096327376e-13,\n\n\t -2.382191739347913e-13,\n\t -6.423305872147834e-13,\n\t -9.400849094049688e-13,\n\t -1.122435026096556e-12,\n\t -1.183840321267481e-12,\n\t -1.122435026096556e-12,\n\t -9.400849094049688e-13,\n\t -6.423305872147841e-13,\n\t -2.382191739347918e-13,\n\t ]\n\t];\n\n\tvar tantab_l = win[Encoder.SHORT_TYPE];\n\tvar cx = win[Encoder.SHORT_TYPE];\n\tvar ca = win[Encoder.SHORT_TYPE];\n\tvar cs = win[Encoder.SHORT_TYPE];\n\n\t/**\n\t * new IDCT routine written by Takehiro TOMINAGA\n\t *\n\t * PURPOSE: Overlapping window on PCM samples
    \n\t *\n\t * SEMANTICS:
    \n\t * 32 16-bit pcm samples are scaled to fractional 2's complement and\n\t * concatenated to the end of the window buffer #x#. The updated window\n\t * buffer #x# is then windowed by the analysis window #c# to produce the\n\t * windowed sample #z#\n\t */\n\tvar order = [\n\t 0, 1, 16, 17, 8, 9, 24, 25, 4, 5, 20, 21, 12, 13, 28, 29,\n\t 2, 3, 18, 19, 10, 11, 26, 27, 6, 7, 22, 23, 14, 15, 30, 31\n\t];\n\n\t/**\n\t * returns sum_j=0^31 a[j]*cos(PI*j*(k+1/2)/32), 0<=k<32\n\t */\n\tfunction window_subband(x1, x1Pos, a) {\n\t\tvar wp = 10;\n\n\t\tvar x2 = x1Pos + 238 - 14 - 286;\n\n\t\tfor (var i = -15; i < 0; i++) {\n\t\t\tvar w, s, t;\n\n\t\t\tw = enwindow[wp + -10];\n\t\t\ts = x1[x2 + -224] * w;\n\t\t\tt = x1[x1Pos + 224] * w;\n\t\t\tw = enwindow[wp + -9];\n\t\t\ts += x1[x2 + -160] * w;\n\t\t\tt += x1[x1Pos + 160] * w;\n\t\t\tw = enwindow[wp + -8];\n\t\t\ts += x1[x2 + -96] * w;\n\t\t\tt += x1[x1Pos + 96] * w;\n\t\t\tw = enwindow[wp + -7];\n\t\t\ts += x1[x2 + -32] * w;\n\t\t\tt += x1[x1Pos + 32] * w;\n\t\t\tw = enwindow[wp + -6];\n\t\t\ts += x1[x2 + 32] * w;\n\t\t\tt += x1[x1Pos + -32] * w;\n\t\t\tw = enwindow[wp + -5];\n\t\t\ts += x1[x2 + 96] * w;\n\t\t\tt += x1[x1Pos + -96] * w;\n\t\t\tw = enwindow[wp + -4];\n\t\t\ts += x1[x2 + 160] * w;\n\t\t\tt += x1[x1Pos + -160] * w;\n\t\t\tw = enwindow[wp + -3];\n\t\t\ts += x1[x2 + 224] * w;\n\t\t\tt += x1[x1Pos + -224] * w;\n\n\t\t\tw = enwindow[wp + -2];\n\t\t\ts += x1[x1Pos + -256] * w;\n\t\t\tt -= x1[x2 + 256] * w;\n\t\t\tw = enwindow[wp + -1];\n\t\t\ts += x1[x1Pos + -192] * w;\n\t\t\tt -= x1[x2 + 192] * w;\n\t\t\tw = enwindow[wp + 0];\n\t\t\ts += x1[x1Pos + -128] * w;\n\t\t\tt -= x1[x2 + 128] * w;\n\t\t\tw = enwindow[wp + 1];\n\t\t\ts += x1[x1Pos + -64] * w;\n\t\t\tt -= x1[x2 + 64] * w;\n\t\t\tw = enwindow[wp + 2];\n\t\t\ts += x1[x1Pos + 0] * w;\n\t\t\tt -= x1[x2 + 0] * w;\n\t\t\tw = enwindow[wp + 3];\n\t\t\ts += x1[x1Pos + 64] * w;\n\t\t\tt -= x1[x2 + -64] * w;\n\t\t\tw = enwindow[wp + 4];\n\t\t\ts += x1[x1Pos + 128] * w;\n\t\t\tt -= x1[x2 + -128] * w;\n\t\t\tw = enwindow[wp + 5];\n\t\t\ts += x1[x1Pos + 192] * w;\n\t\t\tt -= x1[x2 + -192] * w;\n\n\t\t\t/*\n\t\t\t * this multiplyer could be removed, but it needs more 256 FLOAT\n\t\t\t * data. thinking about the data cache performance, I think we\n\t\t\t * should not use such a huge table. tt 2000/Oct/25\n\t\t\t */\n\t\t\ts *= enwindow[wp + 6];\n\t\t\tw = t - s;\n\t\t\ta[30 + i * 2] = t + s;\n\t\t\ta[31 + i * 2] = enwindow[wp + 7] * w;\n\t\t\twp += 18;\n\t\t\tx1Pos--;\n\t\t\tx2++;\n\t\t}\n\t\t{\n\t\t\tvar s, t, u, v;\n\t\t\tt = x1[x1Pos + -16] * enwindow[wp + -10];\n\t\t\ts = x1[x1Pos + -32] * enwindow[wp + -2];\n\t\t\tt += (x1[x1Pos + -48] - x1[x1Pos + 16]) * enwindow[wp + -9];\n\t\t\ts += x1[x1Pos + -96] * enwindow[wp + -1];\n\t\t\tt += (x1[x1Pos + -80] + x1[x1Pos + 48]) * enwindow[wp + -8];\n\t\t\ts += x1[x1Pos + -160] * enwindow[wp + 0];\n\t\t\tt += (x1[x1Pos + -112] - x1[x1Pos + 80]) * enwindow[wp + -7];\n\t\t\ts += x1[x1Pos + -224] * enwindow[wp + 1];\n\t\t\tt += (x1[x1Pos + -144] + x1[x1Pos + 112]) * enwindow[wp + -6];\n\t\t\ts -= x1[x1Pos + 32] * enwindow[wp + 2];\n\t\t\tt += (x1[x1Pos + -176] - x1[x1Pos + 144]) * enwindow[wp + -5];\n\t\t\ts -= x1[x1Pos + 96] * enwindow[wp + 3];\n\t\t\tt += (x1[x1Pos + -208] + x1[x1Pos + 176]) * enwindow[wp + -4];\n\t\t\ts -= x1[x1Pos + 160] * enwindow[wp + 4];\n\t\t\tt += (x1[x1Pos + -240] - x1[x1Pos + 208]) * enwindow[wp + -3];\n\t\t\ts -= x1[x1Pos + 224];\n\n\t\t\tu = s - t;\n\t\t\tv = s + t;\n\n\t\t\tt = a[14];\n\t\t\ts = a[15] - t;\n\n\t\t\ta[31] = v + t; /* A0 */\n\t\t\ta[30] = u + s; /* A1 */\n\t\t\ta[15] = u - s; /* A2 */\n\t\t\ta[14] = v - t; /* A3 */\n\t\t}\n\t\t{\n\t\t\tvar xr;\n\t\t\txr = a[28] - a[0];\n\t\t\ta[0] += a[28];\n\t\t\ta[28] = xr * enwindow[wp + -2 * 18 + 7];\n\t\t\txr = a[29] - a[1];\n\t\t\ta[1] += a[29];\n\t\t\ta[29] = xr * enwindow[wp + -2 * 18 + 7];\n\n\t\t\txr = a[26] - a[2];\n\t\t\ta[2] += a[26];\n\t\t\ta[26] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[27] - a[3];\n\t\t\ta[3] += a[27];\n\t\t\ta[27] = xr * enwindow[wp + -4 * 18 + 7];\n\n\t\t\txr = a[24] - a[4];\n\t\t\ta[4] += a[24];\n\t\t\ta[24] = xr * enwindow[wp + -6 * 18 + 7];\n\t\t\txr = a[25] - a[5];\n\t\t\ta[5] += a[25];\n\t\t\ta[25] = xr * enwindow[wp + -6 * 18 + 7];\n\n\t\t\txr = a[22] - a[6];\n\t\t\ta[6] += a[22];\n\t\t\ta[22] = xr * Util.SQRT2;\n\t\t\txr = a[23] - a[7];\n\t\t\ta[7] += a[23];\n\t\t\ta[23] = xr * Util.SQRT2 - a[7];\n\t\t\ta[7] -= a[6];\n\t\t\ta[22] -= a[7];\n\t\t\ta[23] -= a[22];\n\n\t\t\txr = a[6];\n\t\t\ta[6] = a[31] - xr;\n\t\t\ta[31] = a[31] + xr;\n\t\t\txr = a[7];\n\t\t\ta[7] = a[30] - xr;\n\t\t\ta[30] = a[30] + xr;\n\t\t\txr = a[22];\n\t\t\ta[22] = a[15] - xr;\n\t\t\ta[15] = a[15] + xr;\n\t\t\txr = a[23];\n\t\t\ta[23] = a[14] - xr;\n\t\t\ta[14] = a[14] + xr;\n\n\t\t\txr = a[20] - a[8];\n\t\t\ta[8] += a[20];\n\t\t\ta[20] = xr * enwindow[wp + -10 * 18 + 7];\n\t\t\txr = a[21] - a[9];\n\t\t\ta[9] += a[21];\n\t\t\ta[21] = xr * enwindow[wp + -10 * 18 + 7];\n\n\t\t\txr = a[18] - a[10];\n\t\t\ta[10] += a[18];\n\t\t\ta[18] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = a[19] - a[11];\n\t\t\ta[11] += a[19];\n\t\t\ta[19] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[16] - a[12];\n\t\t\ta[12] += a[16];\n\t\t\ta[16] = xr * enwindow[wp + -14 * 18 + 7];\n\t\t\txr = a[17] - a[13];\n\t\t\ta[13] += a[17];\n\t\t\ta[17] = xr * enwindow[wp + -14 * 18 + 7];\n\n\t\t\txr = -a[20] + a[24];\n\t\t\ta[20] += a[24];\n\t\t\ta[24] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = -a[21] + a[25];\n\t\t\ta[21] += a[25];\n\t\t\ta[25] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[4] - a[8];\n\t\t\ta[4] += a[8];\n\t\t\ta[8] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = a[5] - a[9];\n\t\t\ta[5] += a[9];\n\t\t\ta[9] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[0] - a[12];\n\t\t\ta[0] += a[12];\n\t\t\ta[12] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[1] - a[13];\n\t\t\ta[1] += a[13];\n\t\t\ta[13] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[16] - a[28];\n\t\t\ta[16] += a[28];\n\t\t\ta[28] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = -a[17] + a[29];\n\t\t\ta[17] += a[29];\n\t\t\ta[29] = xr * enwindow[wp + -4 * 18 + 7];\n\n\t\t\txr = Util.SQRT2 * (a[2] - a[10]);\n\t\t\ta[2] += a[10];\n\t\t\ta[10] = xr;\n\t\t\txr = Util.SQRT2 * (a[3] - a[11]);\n\t\t\ta[3] += a[11];\n\t\t\ta[11] = xr;\n\t\t\txr = Util.SQRT2 * (-a[18] + a[26]);\n\t\t\ta[18] += a[26];\n\t\t\ta[26] = xr - a[18];\n\t\t\txr = Util.SQRT2 * (-a[19] + a[27]);\n\t\t\ta[19] += a[27];\n\t\t\ta[27] = xr - a[19];\n\n\t\t\txr = a[2];\n\t\t\ta[19] -= a[3];\n\t\t\ta[3] -= xr;\n\t\t\ta[2] = a[31] - xr;\n\t\t\ta[31] += xr;\n\t\t\txr = a[3];\n\t\t\ta[11] -= a[19];\n\t\t\ta[18] -= xr;\n\t\t\ta[3] = a[30] - xr;\n\t\t\ta[30] += xr;\n\t\t\txr = a[18];\n\t\t\ta[27] -= a[11];\n\t\t\ta[19] -= xr;\n\t\t\ta[18] = a[15] - xr;\n\t\t\ta[15] += xr;\n\n\t\t\txr = a[19];\n\t\t\ta[10] -= xr;\n\t\t\ta[19] = a[14] - xr;\n\t\t\ta[14] += xr;\n\t\t\txr = a[10];\n\t\t\ta[11] -= xr;\n\t\t\ta[10] = a[23] - xr;\n\t\t\ta[23] += xr;\n\t\t\txr = a[11];\n\t\t\ta[26] -= xr;\n\t\t\ta[11] = a[22] - xr;\n\t\t\ta[22] += xr;\n\t\t\txr = a[26];\n\t\t\ta[27] -= xr;\n\t\t\ta[26] = a[7] - xr;\n\t\t\ta[7] += xr;\n\n\t\t\txr = a[27];\n\t\t\ta[27] = a[6] - xr;\n\t\t\ta[6] += xr;\n\n\t\t\txr = Util.SQRT2 * (a[0] - a[4]);\n\t\t\ta[0] += a[4];\n\t\t\ta[4] = xr;\n\t\t\txr = Util.SQRT2 * (a[1] - a[5]);\n\t\t\ta[1] += a[5];\n\t\t\ta[5] = xr;\n\t\t\txr = Util.SQRT2 * (a[16] - a[20]);\n\t\t\ta[16] += a[20];\n\t\t\ta[20] = xr;\n\t\t\txr = Util.SQRT2 * (a[17] - a[21]);\n\t\t\ta[17] += a[21];\n\t\t\ta[21] = xr;\n\n\t\t\txr = -Util.SQRT2 * (a[8] - a[12]);\n\t\t\ta[8] += a[12];\n\t\t\ta[12] = xr - a[8];\n\t\t\txr = -Util.SQRT2 * (a[9] - a[13]);\n\t\t\ta[9] += a[13];\n\t\t\ta[13] = xr - a[9];\n\t\t\txr = -Util.SQRT2 * (a[25] - a[29]);\n\t\t\ta[25] += a[29];\n\t\t\ta[29] = xr - a[25];\n\t\t\txr = -Util.SQRT2 * (a[24] + a[28]);\n\t\t\ta[24] -= a[28];\n\t\t\ta[28] = xr - a[24];\n\n\t\t\txr = a[24] - a[16];\n\t\t\ta[24] = xr;\n\t\t\txr = a[20] - xr;\n\t\t\ta[20] = xr;\n\t\t\txr = a[28] - xr;\n\t\t\ta[28] = xr;\n\n\t\t\txr = a[25] - a[17];\n\t\t\ta[25] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[17] - a[1];\n\t\t\ta[17] = xr;\n\t\t\txr = a[9] - xr;\n\t\t\ta[9] = xr;\n\t\t\txr = a[25] - xr;\n\t\t\ta[25] = xr;\n\t\t\txr = a[5] - xr;\n\t\t\ta[5] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[13] - xr;\n\t\t\ta[13] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[1] - a[0];\n\t\t\ta[1] = xr;\n\t\t\txr = a[16] - xr;\n\t\t\ta[16] = xr;\n\t\t\txr = a[17] - xr;\n\t\t\ta[17] = xr;\n\t\t\txr = a[8] - xr;\n\t\t\ta[8] = xr;\n\t\t\txr = a[9] - xr;\n\t\t\ta[9] = xr;\n\t\t\txr = a[24] - xr;\n\t\t\ta[24] = xr;\n\t\t\txr = a[25] - xr;\n\t\t\ta[25] = xr;\n\t\t\txr = a[4] - xr;\n\t\t\ta[4] = xr;\n\t\t\txr = a[5] - xr;\n\t\t\ta[5] = xr;\n\t\t\txr = a[20] - xr;\n\t\t\ta[20] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[12] - xr;\n\t\t\ta[12] = xr;\n\t\t\txr = a[13] - xr;\n\t\t\ta[13] = xr;\n\t\t\txr = a[28] - xr;\n\t\t\ta[28] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[0];\n\t\t\ta[0] += a[31];\n\t\t\ta[31] -= xr;\n\t\t\txr = a[1];\n\t\t\ta[1] += a[30];\n\t\t\ta[30] -= xr;\n\t\t\txr = a[16];\n\t\t\ta[16] += a[15];\n\t\t\ta[15] -= xr;\n\t\t\txr = a[17];\n\t\t\ta[17] += a[14];\n\t\t\ta[14] -= xr;\n\t\t\txr = a[8];\n\t\t\ta[8] += a[23];\n\t\t\ta[23] -= xr;\n\t\t\txr = a[9];\n\t\t\ta[9] += a[22];\n\t\t\ta[22] -= xr;\n\t\t\txr = a[24];\n\t\t\ta[24] += a[7];\n\t\t\ta[7] -= xr;\n\t\t\txr = a[25];\n\t\t\ta[25] += a[6];\n\t\t\ta[6] -= xr;\n\t\t\txr = a[4];\n\t\t\ta[4] += a[27];\n\t\t\ta[27] -= xr;\n\t\t\txr = a[5];\n\t\t\ta[5] += a[26];\n\t\t\ta[26] -= xr;\n\t\t\txr = a[20];\n\t\t\ta[20] += a[11];\n\t\t\ta[11] -= xr;\n\t\t\txr = a[21];\n\t\t\ta[21] += a[10];\n\t\t\ta[10] -= xr;\n\t\t\txr = a[12];\n\t\t\ta[12] += a[19];\n\t\t\ta[19] -= xr;\n\t\t\txr = a[13];\n\t\t\ta[13] += a[18];\n\t\t\ta[18] -= xr;\n\t\t\txr = a[28];\n\t\t\ta[28] += a[3];\n\t\t\ta[3] -= xr;\n\t\t\txr = a[29];\n\t\t\ta[29] += a[2];\n\t\t\ta[2] -= xr;\n\t\t}\n\t}\n\n\t/**\n\t * Function: Calculation of the MDCT In the case of long blocks (type 0,1,3)\n\t * there are 36 coefficents in the time domain and 18 in the frequency\n\t * domain.
    \n\t * In the case of short blocks (type 2) there are 3 transformations with\n\t * short length. This leads to 12 coefficents in the time and 6 in the\n\t * frequency domain. In this case the results are stored side by side in the\n\t * vector out[].\n\t *\n\t * New layer3\n\t */\n\tfunction mdct_short(inout, inoutPos) {\n\t\tfor (var l = 0; l < 3; l++) {\n\t\t\tvar tc0, tc1, tc2, ts0, ts1, ts2;\n\n\t\t\tts0 = inout[inoutPos + 2 * 3] * win[Encoder.SHORT_TYPE][0]\n\t\t\t\t\t- inout[inoutPos + 5 * 3];\n\t\t\ttc0 = inout[inoutPos + 0 * 3] * win[Encoder.SHORT_TYPE][2]\n\t\t\t\t\t- inout[inoutPos + 3 * 3];\n\t\t\ttc1 = ts0 + tc0;\n\t\t\ttc2 = ts0 - tc0;\n\n\t\t\tts0 = inout[inoutPos + 5 * 3] * win[Encoder.SHORT_TYPE][0]\n\t\t\t\t\t+ inout[inoutPos + 2 * 3];\n\t\t\ttc0 = inout[inoutPos + 3 * 3] * win[Encoder.SHORT_TYPE][2]\n\t\t\t\t\t+ inout[inoutPos + 0 * 3];\n\t\t\tts1 = ts0 + tc0;\n\t\t\tts2 = -ts0 + tc0;\n\n\t\t\ttc0 = (inout[inoutPos + 1 * 3] * win[Encoder.SHORT_TYPE][1] - inout[inoutPos + 4 * 3]) * 2.069978111953089e-11;\n\t\t\t/*\n\t\t\t * tritab_s [ 1 ]\n\t\t\t */\n\t\t\tts0 = (inout[inoutPos + 4 * 3] * win[Encoder.SHORT_TYPE][1] + inout[inoutPos + 1 * 3]) * 2.069978111953089e-11;\n\t\t\t/*\n\t\t\t * tritab_s [ 1 ]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 0] = tc1 * 1.907525191737280e-11 + tc0;\n\t\t\t/*\n\t\t\t * tritab_s[ 2 ]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 5] = -ts1 * 1.907525191737280e-11 + ts0;\n\t\t\t/*\n\t\t\t * tritab_s[0 ]\n\t\t\t */\n\t\t\ttc2 = tc2 * 0.86602540378443870761 * 1.907525191737281e-11;\n\t\t\t/*\n\t\t\t * tritab_s[ 2]\n\t\t\t */\n\t\t\tts1 = ts1 * 0.5 * 1.907525191737281e-11 + ts0;\n\t\t\tinout[inoutPos + 3 * 1] = tc2 - ts1;\n\t\t\tinout[inoutPos + 3 * 2] = tc2 + ts1;\n\n\t\t\ttc1 = tc1 * 0.5 * 1.907525191737281e-11 - tc0;\n\t\t\tts2 = ts2 * 0.86602540378443870761 * 1.907525191737281e-11;\n\t\t\t/*\n\t\t\t * tritab_s[ 0]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 3] = tc1 + ts2;\n\t\t\tinout[inoutPos + 3 * 4] = tc1 - ts2;\n\n\t\t\tinoutPos++;\n\t\t}\n\t}\n\n\tfunction mdct_long(out, outPos, _in) {\n\t\tvar ct, st;\n\t\t{\n\t\t\tvar tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8;\n\t\t\t/* 1,2, 5,6, 9,10, 13,14, 17 */\n\t\t\ttc1 = _in[17] - _in[9];\n\t\t\ttc3 = _in[15] - _in[11];\n\t\t\ttc4 = _in[14] - _in[12];\n\t\t\tts5 = _in[0] + _in[8];\n\t\t\tts6 = _in[1] + _in[7];\n\t\t\tts7 = _in[2] + _in[6];\n\t\t\tts8 = _in[3] + _in[5];\n\n\t\t\tout[outPos + 17] = (ts5 + ts7 - ts8) - (ts6 - _in[4]);\n\t\t\tst = (ts5 + ts7 - ts8) * cx[12 + 7] + (ts6 - _in[4]);\n\t\t\tct = (tc1 - tc3 - tc4) * cx[12 + 6];\n\t\t\tout[outPos + 5] = ct + st;\n\t\t\tout[outPos + 6] = ct - st;\n\n\t\t\ttc2 = (_in[16] - _in[10]) * cx[12 + 6];\n\t\t\tts6 = ts6 * cx[12 + 7] + _in[4];\n\t\t\tct = tc1 * cx[12 + 0] + tc2 + tc3 * cx[12 + 1] + tc4 * cx[12 + 2];\n\t\t\tst = -ts5 * cx[12 + 4] + ts6 - ts7 * cx[12 + 5] + ts8 * cx[12 + 3];\n\t\t\tout[outPos + 1] = ct + st;\n\t\t\tout[outPos + 2] = ct - st;\n\n\t\t\tct = tc1 * cx[12 + 1] - tc2 - tc3 * cx[12 + 2] + tc4 * cx[12 + 0];\n\t\t\tst = -ts5 * cx[12 + 5] + ts6 - ts7 * cx[12 + 3] + ts8 * cx[12 + 4];\n\t\t\tout[outPos + 9] = ct + st;\n\t\t\tout[outPos + 10] = ct - st;\n\n\t\t\tct = tc1 * cx[12 + 2] - tc2 + tc3 * cx[12 + 0] - tc4 * cx[12 + 1];\n\t\t\tst = ts5 * cx[12 + 3] - ts6 + ts7 * cx[12 + 4] - ts8 * cx[12 + 5];\n\t\t\tout[outPos + 13] = ct + st;\n\t\t\tout[outPos + 14] = ct - st;\n\t\t}\n\t\t{\n\t\t\tvar ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8;\n\n\t\t\tts1 = _in[8] - _in[0];\n\t\t\tts3 = _in[6] - _in[2];\n\t\t\tts4 = _in[5] - _in[3];\n\t\t\ttc5 = _in[17] + _in[9];\n\t\t\ttc6 = _in[16] + _in[10];\n\t\t\ttc7 = _in[15] + _in[11];\n\t\t\ttc8 = _in[14] + _in[12];\n\n\t\t\tout[outPos + 0] = (tc5 + tc7 + tc8) + (tc6 + _in[13]);\n\t\t\tct = (tc5 + tc7 + tc8) * cx[12 + 7] - (tc6 + _in[13]);\n\t\t\tst = (ts1 - ts3 + ts4) * cx[12 + 6];\n\t\t\tout[outPos + 11] = ct + st;\n\t\t\tout[outPos + 12] = ct - st;\n\n\t\t\tts2 = (_in[7] - _in[1]) * cx[12 + 6];\n\t\t\ttc6 = _in[13] - tc6 * cx[12 + 7];\n\t\t\tct = tc5 * cx[12 + 3] - tc6 + tc7 * cx[12 + 4] + tc8 * cx[12 + 5];\n\t\t\tst = ts1 * cx[12 + 2] + ts2 + ts3 * cx[12 + 0] + ts4 * cx[12 + 1];\n\t\t\tout[outPos + 3] = ct + st;\n\t\t\tout[outPos + 4] = ct - st;\n\n\t\t\tct = -tc5 * cx[12 + 5] + tc6 - tc7 * cx[12 + 3] - tc8 * cx[12 + 4];\n\t\t\tst = ts1 * cx[12 + 1] + ts2 - ts3 * cx[12 + 2] - ts4 * cx[12 + 0];\n\t\t\tout[outPos + 7] = ct + st;\n\t\t\tout[outPos + 8] = ct - st;\n\n\t\t\tct = -tc5 * cx[12 + 4] + tc6 - tc7 * cx[12 + 5] - tc8 * cx[12 + 3];\n\t\t\tst = ts1 * cx[12 + 0] - ts2 + ts3 * cx[12 + 1] - ts4 * cx[12 + 2];\n\t\t\tout[outPos + 15] = ct + st;\n\t\t\tout[outPos + 16] = ct - st;\n\t\t}\n\t}\n\n\tthis.mdct_sub48 = function(gfc, w0, w1) {\n\t\tvar wk = w0;\n\t\tvar wkPos = 286;\n\t\t/* thinking cache performance, ch->gr loop is better than gr->ch loop */\n\t\tfor (var ch = 0; ch < gfc.channels_out; ch++) {\n\t\t\tfor (var gr = 0; gr < gfc.mode_gr; gr++) {\n\t\t\t\tvar band;\n\t\t\t\tvar gi = (gfc.l3_side.tt[gr][ch]);\n\t\t\t\tvar mdct_enc = gi.xr;\n\t\t\t\tvar mdct_encPos = 0;\n\t\t\t\tvar samp = gfc.sb_sample[ch][1 - gr];\n\t\t\t\tvar sampPos = 0;\n\n\t\t\t\tfor (var k = 0; k < 18 / 2; k++) {\n\t\t\t\t\twindow_subband(wk, wkPos, samp[sampPos]);\n\t\t\t\t\twindow_subband(wk, wkPos + 32, samp[sampPos + 1]);\n\t\t\t\t\tsampPos += 2;\n\t\t\t\t\twkPos += 64;\n\t\t\t\t\t/*\n\t\t\t\t\t * Compensate for inversion in the analysis filter\n\t\t\t\t\t */\n\t\t\t\t\tfor (band = 1; band < 32; band += 2) {\n\t\t\t\t\t\tsamp[sampPos - 1][band] *= -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Perform imdct of 18 previous subband samples + 18 current\n\t\t\t\t * subband samples\n\t\t\t\t */\n\t\t\t\tfor (band = 0; band < 32; band++, mdct_encPos += 18) {\n\t\t\t\t\tvar type = gi.block_type;\n\t\t\t\t\tvar band0 = gfc.sb_sample[ch][gr];\n\t\t\t\t\tvar band1 = gfc.sb_sample[ch][1 - gr];\n\t\t\t\t\tif (gi.mixed_block_flag != 0 && band < 2)\n\t\t\t\t\t\ttype = 0;\n\t\t\t\t\tif (gfc.amp_filter[band] < 1e-12) {\n\t\t\t\t\t\tArrays.fill(mdct_enc, mdct_encPos + 0,\n\t\t\t\t\t\t\t\tmdct_encPos + 18, 0);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (gfc.amp_filter[band] < 1.0) {\n\t\t\t\t\t\t\tfor (var k = 0; k < 18; k++)\n\t\t\t\t\t\t\t\tband1[k][order[band]] *= gfc.amp_filter[band];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (type == Encoder.SHORT_TYPE) {\n\t\t\t\t\t\t\tfor (var k = -NS / 4; k < 0; k++) {\n\t\t\t\t\t\t\t\tvar w = win[Encoder.SHORT_TYPE][k + 3];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 9] = band0[9 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band0[8 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 18] = band0[14 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band0[15 + k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 10] = band0[15 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band0[14 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 19] = band1[2 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band1[3 + k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 11] = band1[3 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band1[2 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 20] = band1[8 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band1[9 + k][order[band]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmdct_short(mdct_enc, mdct_encPos);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar work = new_float(18);\n\t\t\t\t\t\t\tfor (var k = -NL / 4; k < 0; k++) {\n\t\t\t\t\t\t\t\tvar a, b;\n\t\t\t\t\t\t\t\ta = win[type][k + 27]\n\t\t\t\t\t\t\t\t\t\t* band1[k + 9][order[band]]\n\t\t\t\t\t\t\t\t\t\t+ win[type][k + 36]\n\t\t\t\t\t\t\t\t\t\t* band1[8 - k][order[band]];\n\t\t\t\t\t\t\t\tb = win[type][k + 9]\n\t\t\t\t\t\t\t\t\t\t* band0[k + 9][order[band]]\n\t\t\t\t\t\t\t\t\t\t- win[type][k + 18]\n\t\t\t\t\t\t\t\t\t\t* band0[8 - k][order[band]];\n\t\t\t\t\t\t\t\twork[k + 9] = a - b * tantab_l[3 + k + 9];\n\t\t\t\t\t\t\t\twork[k + 18] = a * tantab_l[3 + k + 9] + b;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmdct_long(mdct_enc, mdct_encPos, work);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t/*\n\t\t\t\t\t * Perform aliasing reduction butterfly\n\t\t\t\t\t */\n\t\t\t\t\tif (type != Encoder.SHORT_TYPE && band != 0) {\n\t\t\t\t\t\tfor (var k = 7; k >= 0; --k) {\n\t\t\t\t\t\t\tvar bu, bd;\n\t\t\t\t\t\t\tbu = mdct_enc[mdct_encPos + k] * ca[20 + k]\n\t\t\t\t\t\t\t\t\t+ mdct_enc[mdct_encPos + -1 - k]\n\t\t\t\t\t\t\t\t\t* cs[28 + k];\n\t\t\t\t\t\t\tbd = mdct_enc[mdct_encPos + k] * cs[28 + k]\n\t\t\t\t\t\t\t\t\t- mdct_enc[mdct_encPos + -1 - k]\n\t\t\t\t\t\t\t\t\t* ca[20 + k];\n\n\t\t\t\t\t\t\tmdct_enc[mdct_encPos + -1 - k] = bu;\n\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k] = bd;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\twk = w1;\n\t\t\twkPos = 286;\n\t\t\tif (gfc.mode_gr == 1) {\n\t\t\t\tfor (var i = 0; i < 18; i++) {\n\t\t\t\t\tSystem.arraycopy(gfc.sb_sample[ch][1][i], 0,\n\t\t\t\t\t\t\tgfc.sb_sample[ch][0][i], 0, 32);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nmodule.exports = NewMDCT;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","'use strict';\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Helpers\n\n// Merge objects\n//\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n\n sources.forEach(function (source) {\n if (!source) { return; }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n\n return obj;\n}\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\nfunction isString(obj) { return _class(obj) === '[object String]'; }\nfunction isObject(obj) { return _class(obj) === '[object Object]'; }\nfunction isRegExp(obj) { return _class(obj) === '[object RegExp]'; }\nfunction isFunction(obj) { return _class(obj) === '[object Function]'; }\n\n\nfunction escapeRE(str) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&'); }\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n};\n\n\nfunction isOptionsObj(obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n return acc || defaultOptions.hasOwnProperty(k);\n }, false);\n}\n\n\nvar defaultSchemas = {\n 'http:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp(\n '^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i'\n );\n }\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length;\n }\n return 0;\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp(\n '^' +\n self.re.src_auth +\n // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' +\n self.re.src_port +\n self.re.src_host_terminator +\n self.re.src_path,\n\n 'i'\n );\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') { return 0; }\n if (pos >= 3 && text[pos - 3] === '/') { return 0; }\n return tail.match(self.re.no_http)[0].length;\n }\n return 0;\n }\n },\n 'mailto:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp(\n '^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i'\n );\n }\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length;\n }\n return 0;\n }\n }\n};\n\n/*eslint-disable max-len*/\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\nvar tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]';\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nvar tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');\n\n/*eslint-enable max-len*/\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction resetScanCache(self) {\n self.__index__ = -1;\n self.__text_cache__ = '';\n}\n\nfunction createValidator(re) {\n return function (text, pos) {\n var tail = text.slice(pos);\n\n if (re.test(tail)) {\n return tail.match(re)[0].length;\n }\n return 0;\n };\n}\n\nfunction createNormalizer() {\n return function (match, self) {\n self.normalize(match);\n };\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile(self) {\n\n // Load & clone RE patterns.\n var re = self.re = assign({}, require('./lib/re'));\n\n // Define dynamic patterns\n var tlds = self.__tlds__.slice();\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re);\n }\n tlds.push(re.src_xn);\n\n re.src_tlds = tlds.join('|');\n\n function untpl(tpl) { return tpl.replace('%TLDS%', re.src_tlds); }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i');\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i');\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i');\n\n //\n // Compile each schema\n //\n\n var aliases = [];\n\n self.__compiled__ = {}; // Reset compiled data\n\n function schemaError(name, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val);\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n var val = self.__schemas__[name];\n\n // skip disabled methods\n if (val === null) { return; }\n\n var compiled = { validate: null, link: null };\n\n self.__compiled__[name] = compiled;\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate);\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate;\n } else {\n schemaError(name, val);\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize;\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer();\n } else {\n schemaError(name, val);\n }\n\n return;\n }\n\n if (isString(val)) {\n aliases.push(name);\n return;\n }\n\n schemaError(name, val);\n });\n\n //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return;\n }\n\n self.__compiled__[alias].validate =\n self.__compiled__[self.__schemas__[alias]].validate;\n self.__compiled__[alias].normalize =\n self.__compiled__[self.__schemas__[alias]].normalize;\n });\n\n //\n // Fake record for guessed links\n //\n self.__compiled__[''] = { validate: null, normalize: createNormalizer() };\n\n //\n // Build schema condition\n //\n var slist = Object.keys(self.__compiled__)\n .filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name];\n })\n .map(escapeRE)\n .join('|');\n // (?!_) cause 1.5x slowdown\n self.re.schema_test = RegExp('(^|(?!_)(?:[><]|' + re.src_ZPCc + '))(' + slist + ')', 'i');\n self.re.schema_search = RegExp('(^|(?!_)(?:[><]|' + re.src_ZPCc + '))(' + slist + ')', 'ig');\n\n self.re.pretest = RegExp(\n '(' + self.re.schema_test.source + ')|' +\n '(' + self.re.host_fuzzy_test.source + ')|' +\n '@',\n 'i');\n\n //\n // Cleanup\n //\n\n resetScanCache(self);\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match(self, shift) {\n var start = self.__index__,\n end = self.__last_index__,\n text = self.__text_cache__.slice(start, end);\n\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n this.schema = self.__schema__.toLowerCase();\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n this.index = start + shift;\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n this.lastIndex = end + shift;\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n this.raw = text;\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n this.text = text;\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n this.url = text;\n}\n\nfunction createMatch(self, shift) {\n var match = new Match(self, shift);\n\n self.__compiled__[match.schema].normalize(match, self);\n\n return match;\n}\n\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt(schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options);\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas;\n schemas = {};\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options);\n\n // Cache last tested result. Used to skip repeating steps on next `match` call.\n this.__index__ = -1;\n this.__last_index__ = -1; // Next scan position\n this.__schema__ = '';\n this.__text_cache__ = '';\n\n this.__schemas__ = assign({}, defaultSchemas, schemas);\n this.__compiled__ = {};\n\n this.__tlds__ = tlds_default;\n this.__tlds_replaced__ = false;\n\n this.re = {};\n\n compile(this);\n}\n\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add(schema, definition) {\n this.__schemas__[schema] = definition;\n compile(this);\n return this;\n};\n\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set(options) {\n this.__opts__ = assign(this.__opts__, options);\n return this;\n};\n\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test(text) {\n // Reset scan cache\n this.__text_cache__ = text;\n this.__index__ = -1;\n\n if (!text.length) { return false; }\n\n var m, ml, me, len, shift, next, re, tld_pos, at_pos;\n\n // try to scan for link with schema - that's the most simple rule\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search;\n re.lastIndex = 0;\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex);\n if (len) {\n this.__schema__ = m[2];\n this.__index__ = m.index + m[1].length;\n this.__last_index__ = m.index + m[0].length + len;\n break;\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n tld_pos = text.search(this.re.host_fuzzy_test);\n if (tld_pos >= 0) {\n // if tld is located after found link - no need to check fuzzy pattern\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n\n shift = ml.index + ml[1].length;\n\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = '';\n this.__index__ = shift;\n this.__last_index__ = ml.index + ml[0].length;\n }\n }\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n at_pos = text.indexOf('@');\n if (at_pos >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if ((me = text.match(this.re.email_fuzzy)) !== null) {\n\n shift = me.index + me[1].length;\n next = me.index + me[0].length;\n\n if (this.__index__ < 0 || shift < this.__index__ ||\n (shift === this.__index__ && next > this.__last_index__)) {\n this.__schema__ = 'mailto:';\n this.__index__ = shift;\n this.__last_index__ = next;\n }\n }\n }\n }\n\n return this.__index__ >= 0;\n};\n\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest(text) {\n return this.re.pretest.test(text);\n};\n\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0;\n }\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this);\n};\n\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match(text) {\n var shift = 0, result = [];\n\n // Try to take previous element from cache, if .test() called before\n if (this.__index__ >= 0 && this.__text_cache__ === text) {\n result.push(createMatch(this, shift));\n shift = this.__last_index__;\n }\n\n // Cut head if cache was used\n var tail = shift ? text.slice(shift) : text;\n\n // Scan string until end reached\n while (this.test(tail)) {\n result.push(createMatch(this, shift));\n\n tail = tail.slice(this.__last_index__);\n shift += this.__last_index__;\n }\n\n if (result.length) {\n return result;\n }\n\n return null;\n};\n\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds(list, keepOld) {\n list = Array.isArray(list) ? list : [ list ];\n\n if (!keepOld) {\n this.__tlds__ = list.slice();\n this.__tlds_replaced__ = true;\n compile(this);\n return this;\n }\n\n this.__tlds__ = this.__tlds__.concat(list)\n .sort()\n .filter(function (el, idx, arr) {\n return el !== arr[idx - 1];\n })\n .reverse();\n\n compile(this);\n return this;\n};\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize(match) {\n\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n if (!match.schema) { match.url = 'http://' + match.url; }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = 'mailto:' + match.url;\n }\n};\n\n\nmodule.exports = LinkifyIt;\n","// Horizontal rule\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function hr(state, startLine, endLine, silent) {\n var marker, cnt, ch, token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n marker = state.src.charCodeAt(pos++);\n\n // Check hr marker\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x5F/* _ */) {\n return false;\n }\n\n // markers can be mixed with spaces, but there should be at least 3 of them\n\n cnt = 1;\n while (pos < max) {\n ch = state.src.charCodeAt(pos++);\n if (ch !== marker && !isSpace(ch)) { return false; }\n if (ch === marker) { cnt++; }\n }\n\n if (cnt < 3) { return false; }\n\n if (silent) { return true; }\n\n state.line = startLine + 1;\n\n token = state.push('hr', 'hr', 0);\n token.map = [ startLine, state.line ];\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n\n return true;\n};\n","//package mp3;\n\n/**\n * Layer III side information.\n *\n * @author Ken\n *\n */\n\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\n\nfunction ScaleFac(arrL, arrS, arr21, arr12) {\n\n this.l = new_int(1 + Encoder.SBMAX_l);\n this.s = new_int(1 + Encoder.SBMAX_s);\n this.psfb21 = new_int(1 + Encoder.PSFB21);\n this.psfb12 = new_int(1 + Encoder.PSFB12);\n var l = this.l;\n var s = this.s;\n\n if (arguments.length == 4) {\n //public ScaleFac(final int[] arrL, final int[] arrS, final int[] arr21,\n // final int[] arr12) {\n this.arrL = arguments[0];\n this.arrS = arguments[1];\n this.arr21 = arguments[2];\n this.arr12 = arguments[3];\n\n System.arraycopy(this.arrL, 0, l, 0, Math.min(this.arrL.length, this.l.length));\n System.arraycopy(this.arrS, 0, s, 0, Math.min(this.arrS.length, this.s.length));\n System.arraycopy(this.arr21, 0, this.psfb21, 0, Math.min(this.arr21.length, this.psfb21.length));\n System.arraycopy(this.arr12, 0, this.psfb12, 0, Math.min(this.arr12.length, this.psfb12.length));\n }\n}\n\nmodule.exports = ScaleFac;\n","// Process definition lists\n//\n'use strict';\n\n\nmodule.exports = function deflist_plugin(md) {\n var isSpace = md.utils.isSpace;\n\n // Search `[:~][\\n ]`, returns next pos after marker on success\n // or -1 on fail.\n function skipMarker(state, line) {\n var pos, marker,\n start = state.bMarks[line] + state.tShift[line],\n max = state.eMarks[line];\n\n if (start >= max) { return -1; }\n\n // Check bullet\n marker = state.src.charCodeAt(start++);\n if (marker !== 0x7E/* ~ */ && marker !== 0x3A/* : */) { return -1; }\n\n pos = state.skipSpaces(start);\n\n // require space after \":\"\n if (start === pos) { return -1; }\n\n // no empty definitions, e.g. \" : \"\n if (pos >= max) { return -1; }\n\n return start;\n }\n\n function markTightParagraphs(state, idx) {\n var i, l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true;\n state.tokens[i].hidden = true;\n i += 2;\n }\n }\n }\n\n function deflist(state, startLine, endLine, silent) {\n var ch,\n contentStart,\n ddLine,\n dtLine,\n itemLines,\n listLines,\n listTokIdx,\n max,\n nextLine,\n offset,\n oldDDIndent,\n oldIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n oldTight,\n pos,\n prevEmptyEnd,\n tight,\n token;\n\n if (silent) {\n // quirk: validation mode validates a dd block only, not a whole deflist\n if (state.ddIndent < 0) { return false; }\n return skipMarker(state, startLine) >= 0;\n }\n\n nextLine = startLine + 1;\n if (nextLine >= endLine) { return false; }\n\n if (state.isEmpty(nextLine)) {\n nextLine++;\n if (nextLine >= endLine) { return false; }\n }\n\n if (state.sCount[nextLine] < state.blkIndent) { return false; }\n contentStart = skipMarker(state, nextLine);\n if (contentStart < 0) { return false; }\n\n // Start list\n listTokIdx = state.tokens.length;\n tight = true;\n\n token = state.push('dl_open', 'dl', 1);\n token.map = listLines = [ startLine, 0 ];\n\n //\n // Iterate list items\n //\n\n dtLine = startLine;\n ddLine = nextLine;\n\n // One definition list can contain multiple DTs,\n // and one DT can be followed by multiple DDs.\n //\n // Thus, there is two loops here, and label is\n // needed to break out of the second one\n //\n /*eslint no-labels:0,block-scoped-var:0*/\n OUTER:\n for (;;) {\n prevEmptyEnd = false;\n\n token = state.push('dt_open', 'dt', 1);\n token.map = [ dtLine, dtLine ];\n\n token = state.push('inline', '', 0);\n token.map = [ dtLine, dtLine ];\n token.content = state.getLines(dtLine, dtLine + 1, state.blkIndent, false).trim();\n token.children = [];\n\n token = state.push('dt_close', 'dt', -1);\n\n for (;;) {\n token = state.push('dd_open', 'dd', 1);\n token.map = itemLines = [ nextLine, 0 ];\n\n pos = contentStart;\n max = state.eMarks[ddLine];\n offset = state.sCount[ddLine] + contentStart - (state.bMarks[ddLine] + state.tShift[ddLine]);\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n contentStart = pos;\n\n oldTight = state.tight;\n oldDDIndent = state.ddIndent;\n oldIndent = state.blkIndent;\n oldTShift = state.tShift[ddLine];\n oldSCount = state.sCount[ddLine];\n oldParentType = state.parentType;\n state.blkIndent = state.ddIndent = state.sCount[ddLine] + 2;\n state.tShift[ddLine] = contentStart - state.bMarks[ddLine];\n state.sCount[ddLine] = offset;\n state.tight = true;\n state.parentType = 'deflist';\n\n state.md.block.tokenize(state, ddLine, endLine, true);\n\n // If any of list item is tight, mark list as tight\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n }\n // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n prevEmptyEnd = (state.line - ddLine) > 1 && state.isEmpty(state.line - 1);\n\n state.tShift[ddLine] = oldTShift;\n state.sCount[ddLine] = oldSCount;\n state.tight = oldTight;\n state.parentType = oldParentType;\n state.blkIndent = oldIndent;\n state.ddIndent = oldDDIndent;\n\n token = state.push('dd_close', 'dd', -1);\n\n itemLines[1] = nextLine = state.line;\n\n if (nextLine >= endLine) { break OUTER; }\n\n if (state.sCount[nextLine] < state.blkIndent) { break OUTER; }\n contentStart = skipMarker(state, nextLine);\n if (contentStart < 0) { break; }\n\n ddLine = nextLine;\n\n // go to the next loop iteration:\n // insert DD tag and repeat checking\n }\n\n if (nextLine >= endLine) { break; }\n dtLine = nextLine;\n\n if (state.isEmpty(dtLine)) { break; }\n if (state.sCount[dtLine] < state.blkIndent) { break; }\n\n ddLine = dtLine + 1;\n if (ddLine >= endLine) { break; }\n if (state.isEmpty(ddLine)) { ddLine++; }\n if (ddLine >= endLine) { break; }\n\n if (state.sCount[ddLine] < state.blkIndent) { break; }\n contentStart = skipMarker(state, ddLine);\n if (contentStart < 0) { break; }\n\n // go to the next loop iteration:\n // insert DT and DD tags and repeat checking\n }\n\n // Finilize list\n token = state.push('dl_close', 'dl', -1);\n\n listLines[1] = nextLine;\n\n state.line = nextLine;\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n }\n\n\n md.block.ruler.before('paragraph', 'deflist', deflist, { alt: [ 'paragraph', 'reference', 'blockquote' ] });\n};\n","module.exports = __webpack_public_path__ + \"img/mai.e9f38a42.png\";"],"sourceRoot":""}