{"version":3,"sources":["webpack:///./src/components/CkplayerOnly.vue?31b3","webpack:///./node_modules/video.js/node_modules/mux.js/lib/tools/parse-sidx.js","webpack:///./node_modules/@videojs/vhs-utils/es/codecs.js","webpack:///./node_modules/@xmldom/xmldom/lib/index.js","webpack:///./src/components/CkplayerOnly.vue","webpack:///src/components/CkplayerOnly.vue","webpack:///./src/components/CkplayerOnly.vue?26d6","webpack:///./src/components/CkplayerOnly.vue?b930","webpack:///./node_modules/js-base64/base64.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./node_modules/@videojs/vhs-utils/es/id3-helpers.js","webpack:///./node_modules/@videojs/xhr/lib/index.js","webpack:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/@videojs/vhs-utils/es/resolve-url.js","webpack:///./node_modules/video.js/node_modules/mux.js/lib/utils/clock.js","webpack:///./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack:///./node_modules/@videojs/vhs-utils/es/media-groups.js","webpack:///./node_modules/mpd-parser/dist/mpd-parser.es.js","webpack:///./node_modules/@xmldom/xmldom/lib/conventions.js","webpack:///./node_modules/@videojs/vhs-utils/es/media-types.js","webpack:///./node_modules/@videojs/xhr/lib/http-handler.js","webpack:///./node_modules/@babel/runtime/helpers/wrapNativeSuper.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom-parser.js","webpack:///./node_modules/@babel/runtime/helpers/construct.js","webpack:///./node_modules/@xmldom/xmldom/lib/entities.js","webpack:///./node_modules/global/window.js","webpack:///./node_modules/@babel/runtime/helpers/isNativeFunction.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/url-toolkit/src/url-toolkit.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/@videojs/vhs-utils/es/stream.js","webpack:///./node_modules/m3u8-parser/dist/m3u8-parser.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/byte-helpers.js","webpack:///./node_modules/keycode/index.js","webpack:///./node_modules/@xmldom/xmldom/lib/sax.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom.js","webpack:///./node_modules/video.js/node_modules/mux.js/lib/utils/numbers.js","webpack:///./node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/video.js/dist/video.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/mp4-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/opus-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/ebml-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/nal-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/containers.js","webpack:///./node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js","webpack:///./node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js"],"names":["getUint64","parseSidx","data","view","DataView","buffer","byteOffset","byteLength","result","version","flags","Uint8Array","subarray","references","referenceId","getUint32","timescale","i","earliestPresentationTime","firstOffset","referenceCount","getUint16","push","referenceType","referencedSize","subsegmentDuration","startsWithSap","sapType","sapDeltaTime","module","exports","regexs","mp4","webm","ogg","video","audio","text","muxerVideo","muxerAudio","muxerText","mediaTypes","upperMediaTypes","translateLegacyCodec","codec","replace","orig","profile","avcLevel","profileHex","Number","toString","slice","avcLevelHex","parseCodecs","codecString","codecs","split","forEach","codecType","trim","name","match","exec","toLowerCase","length","type","substring","details","mediaType","codecsFromDefault","master","audioGroupId","mediaGroups","AUDIO","audioGroup","audioType","default","playlists","attributes","CODECS","isAudioCodec","test","isTextCodec","getMimeForCodec","map","c","container","every","browserSupportsCodec","MediaSource","isTypeSupported","muxerSupportsCodec","DEFAULT_AUDIO_CODEC","DEFAULT_VIDEO_CODEC","dom","DOMImplementation","XMLSerializer","DOMParser","render","_vm","this","_c","_self","staticClass","style","widthHeigt","attrs","staticRenderFns","components","props","Array","videoUrl","String","isLive","Boolean","return","ckplayerDialogShow","videoObject","width","height","variable","autoplay","flashplayer","html5m3u8","live","unescape","overspread","controlBar","hideControlBar","hideEnvironment","player","created","watch","index","newVal","oldVal","play","pause","methods","vm","$Common","getPlayUrl","then","res","console","log","err","ckplayer","catch","videoPause","mounted","component","global","factory","self","window","fromUint8Array","_Base64","Base64","b64chars","b64tab","bin","t","l","charAt","fromCharCode","cb_utob","cc","charCodeAt","re_utob","utob","u","cb_encode","ccc","padlen","ord","chars","join","btoa","b","RangeError","_encode","mkUriSafe","b64","m0","encode","urisafe","encodeURI","a","a0","a1","a2","toUint8Array","re_btou","cb_btou","cccc","cp","offset","btou","cb_decode","len","n","_atob","atob","_decode","_fromURI","decode","from","noConflict","VERSION","fromBase64","toBase64","Object","defineProperty","noEnum","v","value","enumerable","writable","configurable","extendString","prototype","vttjs","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","ID3","getId3Size","bytes","returnSize","footerPresent","getId3Offset","_extends","isFunction","createXHR","httpHandler","parseHeaders","headers","row","indexOf","key","isArray","forEachArray","array","iterator","isEmpty","obj","hasOwnProperty","initParams","uri","options","callback","params","_createXHR","Error","called","response","body","readystatechange","xhr","readyState","setTimeout","loadFunc","getBody","undefined","responseText","getXml","isJson","JSON","parse","e","errorFunc","evt","clearTimeout","timeoutTimer","statusCode","failureResponse","aborted","status","useXDR","method","url","rawRequest","getAllResponseHeaders","cors","XDomainRequest","XMLHttpRequest","sync","json","stringify","onreadystatechange","onload","onerror","onprogress","onabort","ontimeout","open","username","password","withCredentials","timeout","abort","code","setRequestHeader","responseType","beforeSend","send","responseXML","firefoxBugTakenEffect","documentElement","nodeName","noop","toUpperCase","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","bind","__proto__","__esModule","_assertThisInitialized","ReferenceError","_setPrototypeOf","p","require","_inheritsLoose","subClass","superClass","create","constructor","DEFAULT_LOCATION","resolveUrl","baseUrl","relativeUrl","location","href","nativeURL","URL","protocolLess","removeLocation","buildAbsoluteURL","newUrl","protocol","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","ONE_SECOND_IN_TS","seconds","sampleRate","timestamp","timelineStartPts","keepOriginalTimestamps","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","valueOf","call","forEachMediaGroup","groups","groupKey","labelKey","mediaProperties","isObject","merge","_len","arguments","objects","_key","reduce","source","keys","concat","values","k","start","end","flatten","lists","x","y","list","findIndexes","findIndex","matchingFunction","union","keyFunction","acc","el","errors","INVALID_NUMBER_OF_PERIOD","DASH_EMPTY_MANIFEST","DASH_INVALID_XML","NO_BASE_URL","MISSING_SEGMENT_INFORMATION","SEGMENT_TIME_UNSPECIFIED","UNSUPPORTED_UTC_TIMING_SCHEME","_ref","_ref$baseUrl","_ref$source","_ref$range","range","_ref$indexRange","indexRange","segment","resolvedUri","rangeStr","ranges","startRange","BigInt","parseInt","endRange","MAX_SAFE_INTEGER","byterange","parseEndNumber","endNumber","isNaN","segmentRange","static","duration","_attributes$timescale","sourceDuration","periodDuration","segmentDuration","dynamic","NOW","clientOffset","availabilityStartTime","_attributes$timescale2","_attributes$periodSta","periodStart","_attributes$minimumUp","minimumUpdatePeriod","_attributes$timeShift","timeShiftBufferDepth","Infinity","now","periodStartWC","periodEndWC","segmentCount","Math","ceil","availableStart","floor","availableEnd","max","min","toSegments","number","_attributes$timescale3","_attributes$startNumb","startNumber","timeline","time","parseByDuration","_attributes$timescale4","_segmentRange$type","segments","sectionDuration","segmentsFromBase","_attributes$initializ","initialization","_attributes$indexRang","presentationTime","_attributes$number","initSegment","sourceURL","segmentTimeInfo","addSidxSegmentsToPlaylist$1","playlist","sidx","startIndex","sidxByteRange","sidxEnd","mediaReferences","filter","r","endList","mediaSequence","reference","size","endIndex","SUPPORTED_MEDIA_TYPES","TIME_FUDGE","getUniqueTimelineStarts","timelineStarts","sort","findPlaylistWithName","NAME","manifest","mediaGroupPlaylists","properties","group","label","updateMediaSequenceForPlaylist","_ref2","updateSequenceNumbers","_ref3","oldPlaylists","newPlaylists","discontinuitySequence","_ref4","oldPlaylist","firstNewSegment","oldMatchingSegmentIndex","oldSegment","abs","discontinuity","discontinuityStarts","unshift","oldMatchingSegment","positionManifestOnTimeline","_ref5","oldManifest","newManifest","generateSidxKey","mergeDiscontiguousPlaylists","mergedPlaylists","id","lang","_acc$name$segments","apply","contentProtection","sidxMapping","sidxKey","sidxMatch","addSidxSegmentsToPlaylists","formatAudioPlaylist","isAudioOnly","_attributes","BANDWIDTH","bandwidth","targetDuration","SUBTITLES","formatVttPlaylist","_m3u8Attributes","m3u8Attributes","organizeAudioPlaylists","mainPlaylist","formattedPlaylists","role","language","roleLabel","autoselect","formatted","firstLabel","organizeVttPlaylists","organizeCaptionServices","captionServices","svcObj","svc","service","channel","instreamId","aspectRatio","easyReader","formatVideoPlaylist","_attributes2","RESOLUTION","frameRate","videoOnly","mimeType","contentType","audioOnly","vttOnly","_ref6","addMediaSequenceValues","_ref7","flattenMediaGroupPlaylists","mediaGroupObject","labelContents","toM3u8","_ref8","_mediaGroups","dashPlaylists","locations","_ref8$sidxMapping","previousManifest","_dashPlaylists$0$attr","suggestedPresentationDelay","videoPlaylists","audioPlaylists","vttPlaylists","captions","allowCache","VIDEO","organizedAudioGroup","organizedVttGroup","playlistTimelineStarts","_ref9","subs","getLiveRValue","parseByTimeline","segmentTimeline","_attributes$minimumUp2","_attributes$media","media","sIndex","S","d","repeat","segmentTime","count","nextS","identifierPattern","identifierReplacement","identifier","format","constructTemplateUrl","parseTemplateInfo","templateValues","RepresentationID","Bandwidth","mapSegment","Time","presentationTimeOffset","SegmentURLToSegmentObject","segmentUrl","mediaRange","segmentsFromList","_attributes$segmentUr","segmentUrls","segmentUrlMap","segmentUrlObject","generateSegments","segmentAttributes","segmentsFn","segmentInfo","template","base","segmentsInfo","_segmentAttributes","_segmentAttributes$ti","toPlaylists","representations","findChildren","element","childNodes","tagName","getContent","textContent","parseDivisionValue","parseFloat","prev","current","parseDuration","str","SECONDS_IN_YEAR","SECONDS_IN_MONTH","SECONDS_IN_DAY","SECONDS_IN_HOUR","SECONDS_IN_MIN","durationRegex","_match$slice","year","month","day","hour","minute","second","parseDate","dateRegex","Date","parsers","mediaPresentationDuration","parsedValue","DEFAULT","parseAttributes","parseFn","keySystemsMap","referenceUrls","baseUrlElements","baseUrlElement","getSegmentInformation","adaptationSet","segmentTemplate","segmentList","s","tag","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","inheritBaseUrls","adaptationSetAttributes","adaptationSetBaseUrls","adaptationSetSegmentInfo","representation","repBaseUrlElements","repBaseUrls","representationSegmentInfo","contentProtectionNodes","node","schemeIdUri","keySystem","psshNode","pssh","parseCaptionServiceMetadata","_value$split","_values","_value$split2","_value$split2$","opts","opt","_opt$split","val","toRepresentations","periodAttributes","periodBaseUrls","periodSegmentInfo","roleAttributes","accessibility","labelVal","nodeValue","toAdaptationSets","mpdAttributes","mpdBaseUrls","period","adaptationSets","getPeriodStart","priorPeriodAttributes","mpdType","inheritAttributes","mpd","_options","_options$manifestUri","manifestUri","_options$NOW","_options$clientOffset","periodNodes","periods","priorPeriod","representationInfo","manifestString","xml","parser","parseFromString","getElementsByTagName","parseUTCTimingScheme","UTCTimingNode","parsedManifestInfo","parseUTCTiming","find","predicate","ac","item","freeze","object","oc","assign","target","TypeError","MIME_TYPE","HTML","isHTML","XML_APPLICATION","XML_TEXT","XML_XHTML_APPLICATION","XML_SVG_IMAGE","NAMESPACE","SVG","XML","XMLNS","MPEGURL_REGEX","DASH_REGEX","simpleTypeFromSourceType","httpResponseHandler","decodeResponseBody","responseBody","cause","TextDecoder","charset","getCharset","contentTypeHeader","_contentType$split","isNativeFunction","_wrapNativeSuper","Class","_cache","Map","has","get","set","Wrapper","autoKeyword","directionSetting","alignSetting","findDirectionSetting","dir","findAlignSetting","align","startTime","endTime","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","defineProperties","setting","SyntaxError","warn","displayState","getCueAsHTML","convertCueToDOMTree","conventions","entities","sax","ParseError","XMLReader","normalizeLineEndings","input","locator","buildErrorHandler","errorImpl","domBuilder","DOMHandler","errorHandler","isCallback","Function","build","fn","msg","_locator","cdata","position","lineNumber","columnNumber","systemId","_toString","substr","java","appendElement","hander","currentElement","appendChild","doc","defaultNSMap","xmlns","entityMap","HTML_ENTITIES","XML_ENTITIES","setDocumentLocator","normalize","error","startDocument","createDocument","documentURI","startElement","namespaceURI","localName","qName","createElementNS","getURI","getValue","attr","getQName","createAttributeNS","getLocator","setAttributeNode","endElement","parentNode","startPrefixMapping","prefix","endPrefixMapping","processingInstruction","ins","createProcessingInstruction","ignorableWhitespace","ch","characters","charNode","createCDATASection","createTextNode","skippedEntity","endDocument","comment","comm","createComment","startCDATA","endCDATA","startDTD","publicId","impl","implementation","createDocumentType","dt","doctype","warning","fatalError","__DOMHandler","isNativeReflectConstruct","_construct","Parent","args","Constructor","instance","amp","apos","gt","lt","quot","Aacute","aacute","Abreve","abreve","acd","acE","Acirc","acirc","acute","Acy","acy","AElig","aelig","af","Afr","afr","Agrave","agrave","alefsym","aleph","Alpha","alpha","Amacr","amacr","amalg","AMP","And","and","andand","andd","andslope","andv","ang","ange","angle","angmsd","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","Aogon","aogon","Aopf","aopf","ap","apacir","apE","ape","apid","ApplyFunction","approx","approxeq","Aring","aring","Ascr","ascr","Assign","ast","asymp","asympeq","Atilde","atilde","Auml","auml","awconint","awint","backcong","backepsilon","backprime","backsim","backsimeq","Backslash","Barv","barvee","Barwed","barwed","barwedge","bbrk","bbrktbrk","bcong","Bcy","bcy","bdquo","becaus","Because","because","bemptyv","bepsi","bernou","Bernoullis","Beta","beta","beth","between","Bfr","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","block","bne","bnequiv","bNot","bnot","Bopf","bopf","bot","bottom","bowtie","boxbox","boxDL","boxDl","boxdL","boxdl","boxDR","boxDr","boxdR","boxdr","boxH","boxh","boxHD","boxHd","boxhD","boxhd","boxHU","boxHu","boxhU","boxhu","boxminus","boxplus","boxtimes","boxUL","boxUl","boxuL","boxul","boxUR","boxUr","boxuR","boxur","boxV","boxv","boxVH","boxVh","boxvH","boxvh","boxVL","boxVl","boxvL","boxvl","boxVR","boxVr","boxvR","boxvr","bprime","Breve","breve","brvbar","Bscr","bscr","bsemi","bsim","bsime","bsol","bsolb","bsolhsub","bull","bullet","bump","bumpE","bumpe","Bumpeq","bumpeq","Cacute","cacute","Cap","cap","capand","capbrcup","capcap","capcup","capdot","CapitalDifferentialD","caps","caret","caron","Cayleys","ccaps","Ccaron","ccaron","Ccedil","ccedil","Ccirc","ccirc","Cconint","ccups","ccupssm","Cdot","cdot","cedil","Cedilla","cemptyv","cent","CenterDot","centerdot","Cfr","cfr","CHcy","chcy","check","checkmark","Chi","chi","cir","circ","circeq","circlearrowleft","circlearrowright","circledast","circledcirc","circleddash","CircleDot","circledR","circledS","CircleMinus","CirclePlus","CircleTimes","cirE","cire","cirfnint","cirmid","cirscir","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","clubs","clubsuit","Colon","colon","Colone","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","Congruent","Conint","conint","ContourIntegral","Copf","copf","coprod","Coproduct","COPY","copy","copysr","CounterClockwiseContourIntegral","crarr","Cross","cross","Cscr","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","Cup","cup","cupbrcap","CupCap","cupcap","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","Dagger","dagger","daleth","Darr","dArr","darr","dash","Dashv","dashv","dbkarow","dblac","Dcaron","dcaron","Dcy","dcy","DD","dd","ddagger","ddarr","DDotrahd","ddotseq","deg","Del","Delta","delta","demptyv","dfisht","Dfr","dfr","dHar","dharl","dharr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","diam","Diamond","diamond","diamondsuit","diams","die","DifferentialD","digamma","disin","div","divide","divideontimes","divonx","DJcy","djcy","dlcorn","dlcrop","dollar","Dopf","dopf","Dot","dot","DotDot","doteq","doteqdot","DotEqual","dotminus","dotplus","dotsquare","doublebarwedge","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrow","Downarrow","downarrow","DownArrowBar","DownArrowUpArrow","DownBreve","downdownarrows","downharpoonleft","downharpoonright","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","DownTee","DownTeeArrow","drbkarow","drcorn","drcrop","Dscr","dscr","DScy","dscy","dsol","Dstrok","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","DZcy","dzcy","dzigrarr","Eacute","eacute","easter","Ecaron","ecaron","ecir","Ecirc","ecirc","ecolon","Ecy","ecy","eDDot","Edot","eDot","edot","ee","efDot","Efr","efr","eg","Egrave","egrave","egs","egsdot","Element","elinters","ell","els","elsdot","Emacr","emacr","empty","emptyset","EmptySmallSquare","emptyv","EmptyVerySmallSquare","emsp","emsp13","emsp14","ENG","eng","ensp","Eogon","eogon","Eopf","eopf","epar","eparsl","eplus","epsi","Epsilon","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","Equal","equals","EqualTilde","equest","Equilibrium","equiv","equivDD","eqvparsl","erarr","erDot","Escr","escr","esdot","Esim","esim","Eta","eta","ETH","eth","Euml","euml","euro","excl","exist","Exists","expectation","ExponentialE","exponentiale","fallingdotseq","Fcy","fcy","female","ffilig","fflig","ffllig","Ffr","ffr","filig","FilledSmallSquare","FilledVerySmallSquare","fjlig","flat","fllig","fltns","fnof","Fopf","fopf","ForAll","forall","fork","forkv","Fouriertrf","fpartint","frac12","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","Fscr","fscr","gacute","Gamma","gamma","Gammad","gammad","gap","Gbreve","gbreve","Gcedil","Gcirc","gcirc","Gcy","gcy","Gdot","gdot","gE","ge","gEl","gel","geq","geqq","geqslant","ges","gescc","gesdot","gesdoto","gesdotol","gesl","gesles","Gfr","gfr","Gg","gg","ggg","gimel","GJcy","gjcy","gl","gla","glE","glj","gnap","gnapprox","gnE","gne","gneq","gneqq","gnsim","Gopf","gopf","grave","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","gscr","gsim","gsime","gsiml","Gt","GT","gtcc","gtcir","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","Hacek","hairsp","half","hamilt","HARDcy","hardcy","hArr","harr","harrcir","harrw","Hat","hbar","Hcirc","hcirc","hearts","heartsuit","hellip","hercon","Hfr","hfr","HilbertSpace","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","Hopf","hopf","horbar","HorizontalLine","Hscr","hscr","hslash","Hstrok","hstrok","HumpDownHump","HumpEqual","hybull","hyphen","Iacute","iacute","ic","Icirc","icirc","Icy","icy","Idot","IEcy","iecy","iexcl","iff","Ifr","ifr","Igrave","igrave","ii","iiiint","iiint","iinfin","iiota","IJlig","ijlig","Im","Imacr","imacr","image","ImaginaryI","imagline","imagpart","imath","imof","imped","Implies","in","incare","infin","infintie","inodot","Int","int","intcal","integers","Integral","intercal","Intersection","intlarhk","intprod","InvisibleComma","InvisibleTimes","IOcy","iocy","Iogon","iogon","Iopf","iopf","Iota","iota","iprod","iquest","Iscr","iscr","isin","isindot","isinE","isins","isinsv","isinv","it","Itilde","itilde","Iukcy","iukcy","Iuml","iuml","Jcirc","jcirc","Jcy","jcy","Jfr","jfr","jmath","Jopf","jopf","Jscr","jscr","Jsercy","jsercy","Jukcy","jukcy","Kappa","kappa","kappav","Kcedil","kcedil","Kcy","kcy","Kfr","kfr","kgreen","KHcy","khcy","KJcy","kjcy","Kopf","kopf","Kscr","kscr","lAarr","Lacute","lacute","laemptyv","lagran","Lambda","lambda","Lang","langd","langle","lap","Laplacetrf","laquo","Larr","lArr","larr","larrb","larrbfs","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","lat","lAtail","latail","late","lates","lBarr","lbarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","Lcaron","lcaron","Lcedil","lcedil","lceil","lcub","Lcy","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","lE","le","LeftAngleBracket","LeftArrow","Leftarrow","leftarrow","LeftArrowBar","LeftArrowRightArrow","leftarrowtail","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftFloor","leftharpoondown","leftharpoonup","leftleftarrows","LeftRightArrow","Leftrightarrow","leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","leftthreetimes","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","lEg","leg","leq","leqq","leqslant","les","lescc","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","LessEqualGreater","LessFullEqual","LessGreater","lessgtr","LessLess","lesssim","LessSlantEqual","LessTilde","lfisht","lfloor","Lfr","lfr","lg","lgE","lHar","lhard","lharu","lharul","lhblk","LJcy","ljcy","Ll","ll","llarr","llcorner","Lleftarrow","llhard","lltri","Lmidot","lmidot","lmoust","lmoustache","lnap","lnapprox","lnE","lne","lneq","lneqq","lnsim","loang","loarr","lobrk","LongLeftArrow","Longleftarrow","longleftarrow","LongLeftRightArrow","Longleftrightarrow","longleftrightarrow","longmapsto","LongRightArrow","Longrightarrow","longrightarrow","looparrowleft","looparrowright","lopar","Lopf","lopf","loplus","lotimes","lowast","lowbar","LowerLeftArrow","LowerRightArrow","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","Lscr","lscr","Lsh","lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","Lstrok","lstrok","Lt","LT","ltcc","ltcir","ltdot","lthree","ltimes","ltlarr","ltquest","ltri","ltrie","ltrif","ltrPar","lurdshar","luruhar","lvertneqq","lvnE","macr","male","malt","maltese","mapsto","mapstodown","mapstoleft","mapstoup","marker","mcomma","Mcy","mcy","mdash","mDDot","measuredangle","MediumSpace","Mellintrf","Mfr","mfr","mho","micro","mid","midast","midcir","middot","minus","minusb","minusd","minusdu","MinusPlus","mlcp","mldr","mnplus","models","Mopf","mopf","mp","Mscr","mscr","mstpos","Mu","mu","multimap","mumap","nabla","Nacute","nacute","nang","nap","napE","napid","napos","napprox","natur","natural","naturals","nbsp","nbump","nbumpe","ncap","Ncaron","ncaron","Ncedil","ncedil","ncong","ncongdot","ncup","Ncy","ncy","ndash","ne","nearhk","neArr","nearr","nearrow","nedot","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","nequiv","nesear","nesim","NestedGreaterGreater","NestedLessLess","NewLine","nexist","nexists","Nfr","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","nGg","ngsim","nGt","ngt","ngtr","nGtv","nhArr","nharr","nhpar","ni","nis","nisd","niv","NJcy","njcy","nlArr","nlarr","nldr","nlE","nle","nLeftarrow","nleftarrow","nLeftrightarrow","nleftrightarrow","nleq","nleqq","nleqslant","nles","nless","nLl","nlsim","nLt","nlt","nltri","nltrie","nLtv","nmid","NoBreak","NonBreakingSpace","Nopf","nopf","Not","not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","notin","notindot","notinE","notinva","notinvb","notinvc","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","notni","notniva","notnivb","notnivc","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","npar","nparallel","nparsl","npart","npolint","npr","nprcue","npre","nprec","npreceq","nrArr","nrarr","nrarrc","nrarrw","nRightarrow","nrightarrow","nrtri","nrtrie","nsc","nsccue","nsce","Nscr","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","Ntilde","ntilde","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","Nu","nu","num","numero","numsp","nvap","nVDash","nVdash","nvDash","nvdash","nvge","nvgt","nvHarr","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwarhk","nwArr","nwarr","nwarrow","nwnear","Oacute","oacute","oast","ocir","Ocirc","ocirc","Ocy","ocy","odash","Odblac","odblac","odiv","odot","odsold","OElig","oelig","ofcir","Ofr","ofr","ogon","Ograve","ograve","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","Omacr","omacr","Omega","omega","Omicron","omicron","omid","ominus","Oopf","oopf","opar","OpenCurlyDoubleQuote","OpenCurlyQuote","operp","oplus","Or","or","orarr","order","orderof","ordf","ordm","origof","oror","orslope","orv","oS","Oscr","oscr","Oslash","oslash","osol","Otilde","otilde","Otimes","otimes","otimesas","Ouml","ouml","ovbar","OverBar","OverBrace","OverBracket","OverParenthesis","par","para","parallel","parsim","parsl","part","PartialD","Pcy","pcy","percnt","permil","perp","pertenk","Pfr","pfr","Phi","phi","phiv","phmmat","phone","Pi","pi","pitchfork","piv","planck","planckh","plankv","plus","plusacir","plusb","pluscir","plusdo","plusdu","pluse","PlusMinus","plusmn","plussim","plustwo","pm","Poincareplane","pointint","Popf","popf","pound","Pr","pr","prap","prcue","prE","pre","prec","precapprox","preccurlyeq","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","preceq","precnapprox","precneqq","precnsim","precsim","Prime","prime","primes","prnap","prnE","prnsim","prod","Product","profalar","profline","profsurf","prop","Proportion","Proportional","propto","prsim","prurel","Pscr","pscr","Psi","psi","puncsp","Qfr","qfr","qint","Qopf","qopf","qprime","Qscr","qscr","quaternions","quatint","quest","questeq","QUOT","rAarr","race","Racute","racute","radic","raemptyv","Rang","rang","rangd","rangle","raquo","Rarr","rArr","rarr","rarrap","rarrb","rarrbfs","rarrc","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","Rarrtl","rarrtl","rarrw","rAtail","ratail","ratio","rationals","RBarr","rBarr","rbarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","Rcaron","rcaron","Rcedil","rcedil","rceil","rcub","Rcy","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","Re","real","realine","realpart","reals","rect","REG","reg","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","rfisht","rfloor","Rfr","rfr","rHar","rhard","rharu","rharul","Rho","rho","rhov","RightAngleBracket","RightArrow","Rightarrow","rightarrow","RightArrowBar","RightArrowLeftArrow","rightarrowtail","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightFloor","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","RightTee","RightTeeArrow","RightTeeVector","rightthreetimes","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","ring","risingdotseq","rlarr","rlhar","rlm","rmoust","rmoustache","rnmid","roang","roarr","robrk","ropar","Ropf","ropf","roplus","rotimes","RoundImplies","rpar","rpargt","rppolint","rrarr","Rrightarrow","rsaquo","Rscr","rscr","Rsh","rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","RuleDelayed","ruluhar","rx","Sacute","sacute","sbquo","Sc","sc","scap","Scaron","scaron","sccue","scE","sce","Scedil","scedil","Scirc","scirc","scnap","scnE","scnsim","scpolint","scsim","Scy","scy","sdot","sdotb","sdote","searhk","seArr","searr","searrow","sect","semi","seswar","setminus","setmn","sext","Sfr","sfr","sfrown","sharp","SHCHcy","shchcy","SHcy","shcy","ShortDownArrow","ShortLeftArrow","shortmid","shortparallel","ShortRightArrow","ShortUpArrow","shy","Sigma","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","SmallCircle","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","SOFTcy","softcy","sol","solb","solbar","Sopf","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","Sqrt","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","squ","Square","square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","squarf","squf","srarr","Sscr","sscr","ssetmn","ssmile","sstarf","Star","star","starf","straightepsilon","straightphi","strns","Sub","sub","subdot","subE","sube","subedot","submult","subnE","subne","subplus","subrarr","Subset","subset","subseteq","subseteqq","SubsetEqual","subsetneq","subsetneqq","subsim","subsub","subsup","succ","succapprox","succcurlyeq","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","succeq","succnapprox","succneqq","succnsim","succsim","SuchThat","Sum","sum","sung","Sup","sup","sup1","sup2","sup3","supdot","supdsub","supE","supe","supedot","Superset","SupersetEqual","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","Supset","supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swarhk","swArr","swarr","swarrow","swnwar","szlig","Tab","Tau","tau","tbrk","Tcaron","tcaron","Tcedil","tcedil","Tcy","tcy","tdot","telrec","Tfr","tfr","there4","Therefore","therefore","Theta","theta","thetasym","thetav","thickapprox","thicksim","ThickSpace","thinsp","ThinSpace","thkap","thksim","THORN","thorn","Tilde","tilde","TildeEqual","TildeFullEqual","TildeTilde","times","timesb","timesbar","timesd","tint","toea","top","topbot","topcir","Topf","topf","topfork","tosa","tprime","TRADE","trade","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","TripleDot","triplus","trisb","tritime","trpezium","Tscr","tscr","TScy","tscy","TSHcy","tshcy","Tstrok","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","Uacute","uacute","Uarr","uArr","uarr","Uarrocir","Ubrcy","ubrcy","Ubreve","ubreve","Ucirc","ucirc","Ucy","ucy","udarr","Udblac","udblac","udhar","ufisht","Ufr","ufr","Ugrave","ugrave","uHar","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","Umacr","umacr","uml","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","uogon","Uopf","uopf","UpArrow","Uparrow","uparrow","UpArrowBar","UpArrowDownArrow","UpDownArrow","Updownarrow","updownarrow","UpEquilibrium","upharpoonleft","upharpoonright","uplus","UpperLeftArrow","UpperRightArrow","Upsi","upsi","upsih","Upsilon","upsilon","UpTee","UpTeeArrow","upuparrows","urcorn","urcorner","urcrop","Uring","uring","urtri","Uscr","uscr","utdot","Utilde","utilde","utri","utrif","uuarr","Uuml","uuml","uwangle","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","vArr","varr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","Vbar","vBar","vBarv","Vcy","vcy","VDash","Vdash","vDash","vdash","Vdashl","Vee","vee","veebar","veeeq","vellip","Verbar","verbar","Vert","vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","vfr","vltri","vnsub","vnsup","Vopf","vopf","vprop","vrtri","Vscr","vscr","vsubnE","vsubne","vsupnE","vsupne","Vvdash","vzigzag","Wcirc","wcirc","wedbar","Wedge","wedge","wedgeq","weierp","Wfr","wfr","Wopf","wopf","wp","wr","wreath","Wscr","wscr","xcap","xcirc","xcup","xdtri","Xfr","xfr","xhArr","xharr","Xi","xi","xlArr","xlarr","xmap","xnis","xodot","Xopf","xopf","xoplus","xotime","xrArr","xrarr","Xscr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","Yacute","yacute","YAcy","yacy","Ycirc","ycirc","Ycy","ycy","yen","Yfr","yfr","YIcy","yicy","Yopf","yopf","Yscr","yscr","YUcy","yucy","Yuml","yuml","Zacute","zacute","Zcaron","zcaron","Zcy","zcy","Zdot","zdot","zeetrf","ZeroWidthSpace","Zeta","zeta","Zfr","zfr","ZHcy","zhcy","zigrarr","Zopf","zopf","Zscr","zscr","zwj","zwnj","win","_isNativeFunction","document","_objCreate","F","ParsingError","errorData","message","parseTimeStamp","computeSeconds","h","m","f","Settings","parseOptions","keyValueDelim","groupDelim","kv","parseCue","cue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","consumeCueSettings","settings","region","alt","vals","vals0","integer","percent","vertical","line","lineAlign","snapToLines","left","center","middle","right","positionAlign","skipWhitespace","BadSignature","dflt","defaultKey","TEXTAREA_ELEMENT","createElement","TAG_NAME","ruby","rt","DEFAULT_COLOR_CLASS","white","lime","cyan","red","yellow","magenta","blue","black","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","consume","innerHTML","shouldAdd","annotation","rootDiv","tagStack","pop","classes","cl","bgColor","colorName","propName","propValue","className","strongRTLRanges","isStrongRTLChar","charCode","currentRange","determineBidi","cueDiv","nodeStack","pushNodes","nextTextNode","innerText","computeLinePos","track","textTrackList","mediaElement","trackList","mode","StyleBox","CueStyleBox","styleOptions","styles","color","backgroundColor","display","writingMode","unicodeBidi","applyStyles","direction","textAlign","font","whiteSpace","textPos","formatStyle","move","box","BoxPosition","lh","offsetHeight","offsetWidth","offsetTop","rects","getClientRects","getBoundingClientRect","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","findBestPosition","axis","bestPosition","specifiedPosition","percentage","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","boxPosition","linePos","step","round","maxPosition","initialAxis","reverse","calculatedPercentage","toCSSCompatValues","unit","toMove","overlaps","b2","boxes","intersectArea","getSimpleBoxPosition","ret","StringDecoder","decodeURIComponent","encodeURIComponent","cuetext","FONT_SIZE_PERCENT","FONT_STYLE","CUE_BACKGROUND_PADDING","processCues","cues","overlay","firstChild","removeChild","paddedOverlay","shouldCompute","margin","fontSize","Parser","decoder","state","reportOrThrowError","onparsingerror","collectNextLine","pos","parseRegion","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseTimestampMap","ontimestampmap","parseHeader","stream","alreadyCollectedLine","hasSubstring","oncue","flush","onflush","root","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","baseURL","relativeURL","alwaysNormalize","basePartsForNormalise","parseURL","path","normalizePath","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","pathParts","builtParts","query","fragment","baseURLPath","newPath","lastIndexOf","parts","hasOwn","wellKnownSymbol","TO_STRING_TAG","TAG","STATIC","Stream","listeners","_proto","on","listener","off","splice","trigger","callbacks","_length","_i","dispose","pipe","destination","_Stream","LineStream","_this","nextNewline","TAB","parseByterange","byterangeString","attributeSeparator","keyvalue","RegExp","ParseStream","customParsers","tagMappers","event","_this2","newLines","mapper","mappedLine","newLine","tagType","title","playlistType","allowed","URI","BYTERANGE","resolution","dateTimeString","dateTimeObject","IV","Uint32Array","PRECISE","subkey","addParser","_this3","expression","customType","dataParser","addTagMapper","mapFn","camelCase","camelCaseKeys","setHoldBack","serverControl","partTargetDuration","hb","phb","minTargetDuration","minPartDuration","lineStream","parseStream","currentMap","uris","currentUri","hasParts","defaultMediaGroups","widevineUuid","currentTimeline","lastByterangeEnd","lastPartByterangeEnd","preloadHints","preloadSegment","entry","mediaGroup","rendition","endlist","inf","METHOD","KEYFORMAT","VALID_METHODS","KEYID","keyId","iv","isFinite","TYPE","mediaGroupType","AUTOSELECT","LANGUAGE","CHARACTERISTICS","characteristics","FORCED","forced","targetduration","timeOffset","precise","cueOut","cueOutCont","cueIn","skip","warnOnMissingAttributes_","segmentIndex","partIndex","renditionReports","canBlockReload","canSkipDateranges","hint","isPart","otherHint","report","required","partInf","partTarget","custom","missing","chunk","countBits","countBytes","padStart","isArrayBufferView","ArrayBuffer","isView","isTypedArray","toUint8","toHexString","toBinaryString","BYTE_TABLE","bytesToNumber","Uint16Array","_temp","_ref$signed","signed","_ref$le","total","byte","exponent","numberToBytes","_temp2","_ref2$le","byteCount","byteIndex","bytesToString","string","escape","stringToBytes","stringIsBytes","concatTypedArrays","buffers","totalLen","buf","tempBuffer","bytesMatch","_temp3","_ref3$offset","_ref3$mask","mask","bByte","aByte","keyCode","searchInput","hasKeyCode","which","names","search","foundNamedKey","codes","aliases","isEventKey","nameOrCode","alias","nameStartChar","nameChar","tagNamePattern","S_TAG","S_ATTR","S_ATTR_SPACE","S_EQ","S_ATTR_NOQUOT_VALUE","S_ATTR_END","S_TAG_SPACE","S_TAG_CLOSE","captureStackTrace","defaultNSMapCopy","fixedFromCharCode","surrogate1","surrogate2","entityReplacer","appendText","xt","lineEnd","linePattern","lineStart","parseStack","currentNSMap","closeMap","tagStart","config","localNSMap","endMatch","endIgnoreCaseMach","parseInstruction","parseDCC","ElementAttributes","parseElementStartPart","closed","fixSelfClosed","locator2","copyLocator","parseHtmlSpecialContent","addAttribute","qname","attributeNames","addValue","attrName","setTagName","nsp","nsPrefix","_copy","ns","elStartEnd","elEndStart","next","matchs","pubid","sysid","lastMatch","endDTD","lastIndex","getLocalName","notEmptyString","splitOnASCIIWhitespace","orderedSetReducer","toOrderedSet","arrayIncludes","src","dest","Super","pt","NodeType","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","NOT_FOUND_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","INUSE_ATTRIBUTE_ERR","NOT_SUPPORTED_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","DOMException","NodeList","LiveNodeList","refresh","_node","_refresh","_updateLiveList","inc","_inc","ownerDocument","ls","__set__","NamedNodeMap","_findNodeIndex","_addNamedNode","newAttr","oldAttr","ownerElement","_onRemoveAttribute","_onAddAttribute","_removeNamedNode","Node","_xmlEncoder","_visitNode","nextSibling","Document","_nsMap","remove","_onUpdateChild","newChild","cs","child","_removeChild","previous","previousSibling","lastChild","hasValidParentNodeType","nodeType","hasInsertableNodeType","isElementNode","isTextNode","isDocTypeNode","isElementInsertionPossible","parentChildNodes","docTypeNode","isElementReplacementPossible","hasElementChildThatIsNotChild","assertPreInsertionValidity1to5","parent","assertPreInsertionValidityInDocument","nodeChildNodes","nodeChildElements","parentElementChild","assertPreReplacementValidityInDocument","hasDoctypeChildThatIsNotChild","_insertBefore","_inDocumentAssertion","newFirst","newLast","_appendSingleChild","Attr","CharacterData","Text","Comment","CDATASection","DocumentType","Notation","Entity","EntityReference","DocumentFragment","ProcessingInstruction","nodeSerializeToString","isHtml","nodeFilter","refNode","lookupPrefix","visibleNamespaces","namespace","serializeToString","needNamespaceDefine","addSerializedAttribute","qualifiedName","prefixedNodeName","defaultNS","ai","nsi","internalSubset","importNode","deep","node2","cloneNode","attrs2","_ownerElement","getNamedItem","setNamedItem","setNamedItemNS","getNamedItemNS","removeNamedItem","removeNamedItemNS","hasFeature","feature","insertBefore","refChild","replaceChild","oldChild","hasChildNodes","appendData","isSupported","hasAttributes","lookupNamespaceURI","isDefaultNamespace","importedNode","getElementById","rtv","getAttribute","getElementsByClassName","classNames","classNamesSet","nodeClassNames","matches","nodeClassNamesSet","createDocumentFragment","createAttribute","specified","createEntityReference","pl","hasAttribute","getAttributeNode","setAttribute","removeAttribute","removeAttributeNode","setAttributeNodeNS","removeAttributeNS","old","getAttributeNodeNS","hasAttributeNS","getAttributeNS","setAttributeNS","getElementsByTagNameNS","substringData","insertData","replaceData","deleteData","splitText","newText","newNode","getTextContent","$$length","MAX_UINT32","pow","uint8","dv","getBigUint64","_inherits","doccy","minDoc","topLevel","browserApi","version$5","hooks_","hooks","hook","removeHook","hookOnce","original","wrapper","FullscreenApi","prefixed","apiMap","specApi","history","LogByTypeFactory","level","lvl","levels","lvlRegExp","info","createLogger$1","logByType","createLogger","subname","all","debug","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","log$1","each","initial","accum","sources","isPlain","computedStyle","getComputedStyle","computedStyleValue","getPropertyValue","USER_AGENT","navigator","userAgent","webkitVersionMap","appleWebkitVersion","IS_IPOD","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_NATIVE_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROME","CHROME_VERSION","IE_VERSION","IS_SAFARI","IS_WINDOWS","TOUCH_ENABLED","isReal","maxTouchPoints","DocumentTouch","IS_IPAD","IS_IPHONE","IS_IOS","IS_ANY_SAFARI","browser","isNonBlankString","throwIfWhitespace","classRegExp","isEl","isInFrame","createQuerier","selector","context","querySelector","ctx","createEl","content","getOwnPropertyNames","appendContent","prependTo","hasClass","classToCheck","classList","contains","addClass","classToAdd","add","removeClass","classToRemove","toggleClass","classToToggle","setAttributes","attrValue","getAttributes","knownBooleans","attrVal","attribute","blockTextSelection","focus","onselectstart","unblockTextSelection","findPosition","offsetParent","fullscreenElement","offsetLeft","getPointerPosition","translated","transform","boxTarget","boxW","offsetY","offsetX","changedTouches","pageX","pageY","emptyEl","normalizeContent","insertContent","isSingleLeftClick","button","buttons","videojs$1","$","$$","Dom","_windowLoaded","autoSetup","vids","audios","divs","mediaEls","mediaEl","autoSetupTimeout","wait","vjs","setWindowLoaded","removeEventListener","addEventListener","FakeWeakMap","createStyleElement","setTextContent","styleSheet","cssText","_initialGuid","_guid","newGUID","WeakMap","vdata","performance","access","_supportsPassive","DomData","_cleanUpEvents","elem","handlers","dispatcher","detachEvent","disabled","_handleMultipleEvents","types","fixEvent","fixed_","returnTrue","returnFalse","isPropagationStopped","isImmediatePropagationStopped","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","supportsPassive","passiveEvents","guid","hash","handlersCopy","passive","attachEvent","removeType","elemData","bubbles","targetData","one","func","any","EVENT_MAP","Events","UPDATE_REFRESH_INTERVAL","uid","bound","throttle","last","throttled","debounce","immediate","cancel","debounced","_later","EventTarget$2","allowedEvents_","ael","dispatchEvent","queueTrigger","oldTimeout","objName","name_","isEvented","eventBusEl_","addEventedCallback","eventedCallbacks","isValidEventType","validateTarget","fnName","validateEventType","validateListener","normalizeListenArgs","isTargetingSelf","shift","listen","EventedMixin","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_normalizeListenArgs2","largs","_normalizeListenArgs3","_len5","_key5","targetOrType","typeOrListener","evented","eventBusKey","el_","StatefulMixin","setState","stateUpdates","changes","to","stateful","defaultState","handleStateChanged","w","toTitleCase$1","titleCaseEquals","str1","str2","mergeOptions$3","MapSham","map_","thisArg","Map$1","SetSham","set_","Set$1","Set","Component$1","Component","ready","player_","isDisposed_","parentComponent_","options_","id_","handleLanguagechange","children_","childIndex_","childNameIndex_","setTimeoutIds_","setIntervalIds_","rafIds_","namedRafs_","clearingTimersOnDispose_","initChildren","reportTouchActivity","enableTouchActivity","readyQueue_","restoreEl","isDisposed","localize","tokens","defaultValue","languages","primaryCode","primaryLang","localizedString","contentEl","contentEl_","children","getChildById","getChild","getDescendant","currentChild","addChild","componentName","componentClassName","componentClass","ComponentClass","getComponent","childFound","compEl","workingChildren","parentOptions","handleAdd","playerOptions","Tech","some","wchild","isTech","buildCSSClass","isReady_","triggerReady","readyQueue","show","hide","lockShowing","unlockShowing","skipListeners","dimension","dimensions","widthOrHeight","pxIndex","currentDimension","computedWidthOrHeight","rule","currentDimensions","currentWidth","currentHeight","blur","handleKeyDown","handleKeyPress","emitTapEvents","couldBeTap","touchStart","firstTouch","tapMovementThreshold","touchTimeThreshold","touches","xdiff","ydiff","touchDistance","sqrt","noTap","touchTime","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","timeoutId","clearTimersOnDispose_","interval","intervalId","requestAnimationFrame","_this4","supportsRaf_","requestNamedAnimationFrame","_this5","cancelNamedAnimationFrame","cancelAnimationFrame","_this6","idName","cancelName","registerComponent","ComponentToRegister","reason","isComp","isPrototypeOf","components_","Player","players","playerNames","pname","rangeCheck","maxIndex","getRange","valueIndex","rangeIndex","createTimeRangesObj","timeRangesObj","Symbol","createTimeRanges","bufferedPercent","buffered","bufferedDuration","MediaError","defaultMessages","errorTypes","1","2","3","4","5","errNum","isPromise","silencePromise","trackToJson_","textTracksToJson","tech","trackEls","trackObjs","tracks","trackEl","textTracks","jsonToTextTracks","addedTrack","addRemoteTextTrack","addCue","textTrackConverter","MODAL_CLASS_NAME","ModalDialog","_Component","handleKeyDown_","close_","close","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","descEl_","description","tabIndex","previouslyActiveEl_","desc","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","hadControls_","controls","conditionalFocus_","opened","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","closeButton","content_","activeEl","activeElement","playerEl","focusIndex","focusableEls","focusableEls_","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","TrackList","_EventTarget","tracks_","addTrack","labelchange_","removeTrack","rtrack","getTrackById","change","addtrack","removetrack","labelchange","disableOthers$1","enabled","AudioTrackList","_TrackList","changing_","enabledChange_","disableOthers","selected","VideoTrackList","selectedChange_","TextTrackList","queueChange_","triggerSelectedlanguagechange","triggerSelectedlanguagechange_","nonLanguageTextTrackKind","kind","selectedlanguagechange_","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","getTrackElementByTrack_","trackElement_","removeTrackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","getCueById","VideoTrackKind","alternative","main","sign","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","metadata","TextTrackMode","hidden","showing","Track","trackProps","_loop","newLabel","parseUrl","host","getAbsoluteURL","getFileExtension","splitPathRe","isCrossOrigin","winLoc","urlInfo","srcProtocol","crossOrigin","Url","parseCues","srcContent","groupCollapsed","groupEnd","loadTrack","tech_","loaded_","TextTrack","_Track","srclang","default_","activeCues_","preload_","preloadTextTracks","activeCues","changed","timeupdateHandler","rvf_","requestVideoFrameCallback","disposeHandler","stopTracking","startTracking","newMode","ct","currentTime","active","cancelVideoFrameCallback","originalCue","originalCue_","removeCue","_removeCue","cuechange","AudioTrack","newEnabled","VideoTrack","newSelected","NONE","LOADING","LOADED","ERROR","HTMLTrackElement","load","NORMAL","ListClass","TrackClass","capitalName","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","createTrackHelper","onDurationChange_","onDurationChange","trackProgress_","trackProgress","trackCurrentTime_","trackCurrentTime","stopTrackingCurrentTime_","stopTrackingCurrentTime","disposeSourceHandler_","disposeSourceHandler","queuedHanders_","hasStarted_","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","featuresNativeTextTracks","emulateTextTracks","autoRemoteTextTracks_","initTrackListeners","nativeControlsForTouch","triggerSourceset","manualProgress","manualProgressOff","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","manualTimeUpdatesOff","currentTimeInterval","manuallyTriggered","clearTracks","removeRemoteTextTrack","cleanupAutoTextTracks","reset","setCrossOrigin","error_","played","setScrubbing","scrubbing","setCurrentTime","trackListChanges","addWebVttScript_","script","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createRemoteTextTrack","manualCleanup","_this7","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","requestPictureInPicture","PromiseClass","Promise","reject","disablePictureInPicture","setDisablePictureInPicture","cb","_this8","setPoster","playsinline","setPlaysinline","overrideNativeAudioTracks","overrideNativeVideoTracks","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","videojs","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","featuresVideoFrameCallback","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","deferrable","originalFn","sourceHandler_","setSource","nativeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","use","middleware","setSourceHelper","setTech","mw","reduceRight","middlewareIterator","arg","mediate","callMethod","middlewareValue","terminated","executeRight","allowedGetters","muted","seekable","volume","ended","allowedSetters","setMuted","setVolume","allowedMediators","mws","clearCacheForPlayer","getOrCreateFactory","mwFactory","_mws$i","mwf","mwi","lastRun","_middleware","mwrest","_src","MimetypesKind","opus","ogv","mov","m4v","mkv","m4a","mp3","aac","caf","flac","oga","wav","m3u8","jpg","jpeg","gif","png","svg","webp","getMimetype","ext","mimetype","findMimetype","cache_","matchingSources","filterSource","newsrc","srcobj","fixSource","MediaLoader","j","techOrder","techName","loadTech_","ClickableComponent","handleMouseOver_","handleMouseOver","handleMouseOut_","handleMouseOut","handleClick_","handleClick","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","noUITitleAttributes","enabled_","clickHandler","PosterImage","_ClickableComponent","update","update_","poster","setSrc","backgroundImage","sourceIsEncrypted","usingPlugin","eme","sessions","darkGray","lightGray","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","opacity","hex","tryUpdateStyle","TextTrackDisplay","updateDisplayHandler","toggleDisplay","preselectTrack","firstDesc","firstCaptions","preferredTrack","modes","userPref","selectedLanguage","clearDisplay","allowMultipleShowingTracks","showingTracks","updateForTrack","descriptionsTrack","captionsSubtitlesTrack","_track","updateDisplayState","overrides","textTrackSettings","getValues","textOpacity","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontFamily","fontVariant","_i2","_track2","_j","cueEl","LoadingSpinner","isAudio","playerType","Button","BigPlayButton","_Button","mouseused_","handleMouseDown","playPromise","playToggle","playFocus","CloseButton","PlayToggle","replay","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","guide","gm","gh","setFormatTime","customImplementation","resetFormatTime","formatTime","TimeDisplay","updateContent","updateTextNode_","span","labelText_","textNode_","formattedTime_","oldNode","CurrentTimeDisplay","_TimeDisplay","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","displayNegative","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","SeekToLive","updateLiveEdgeStatus","liveTracker","updateLiveEdgeStatusHandler_","textEl_","atLiveEdge","seekToLiveEdge","clamp","Slider","handleMouseDown_","handleMouseUp_","handleMouseUp","handleMouseMove_","handleMouseMove","bar","barName","playerEvent","progress","getProgress","progress_","sizeKey","toFixed","getPercent","calculateDistance","stepBack","stepForward","bool","vertical_","percentify","LoadProgressBar","partEls_","loadedText","separator","percentageEl_","seekableEnd","bufferedEnd","percent_","dataset","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","pullTooltipBy","write","updateTime","liveWindow","secondsBehind","PlayProgressBar","timeTooltip","MouseTimeDisplay","STEP_SECONDS","PAGE_KEY_MULTIPLIER","SeekBar","_Slider","setEventHandlers_","updateInterval","enableIntervalHandler_","enableInterval_","disableIntervalHandler_","disableInterval_","toggleVisibility_","visibilityState","getCurrentTime_","liveCurrentTime","currentTime_","userSeek_","nextSeekedFromUser","seekableStart","videoWasPlaying","mouseDown","newTime","distance","mouseTimeDisplay","handleAction","gotoFraction","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","handleMouseUpHandler_","handleMouseDownHandler_","seekBar","playProgressBar","seekBarEl","removeListenersAddedOnMousedownAndTouchstart","PictureInPictureToggle","handlePictureInPictureChange","handlePictureInPictureEnabledChange","isSourceAudio","currentType","audioPosterMode","audioOnlyMode","isInPictureInPicture","exitPictureInPicture","pictureInPictureEnabled","FullscreenToggle","handleFullscreenChange","fsApi_","fullscreenEnabled","isFullscreen","exitFullscreen","requestFullscreen","checkVolumeSupport","VolumeLevel","VolumeLevelTooltip","rangeBarRect","rangeBarPoint","volumeBarPointPx","updateVolume","MouseVolumeLevelDisplay","VolumeBar","updateLastVolume_","updateARIAAttributes","mouseVolumeLevelDisplay","volumeBarEl","volumeBarRect","volumeBarPoint","checkMuted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","throttledHandleMouseMove","orientationClass","checkMuteSupport","MuteToggle","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","soundOff","VolumePanel","inline","volumeControl","handleKeyPressHandler_","volumePanelState_","muteToggle","handleVolumeControlKeyUp","sliderActive_","sliderInactive_","Menu","menuButton_","menuButton","focusedChild_","boundHandleBlur_","handleBlur","boundHandleTapClick_","handleTapClick","addEventListenerForItem","removeEventListenerForItem","addItem","childComponent","contentElType","append","btn","buttonPressed_","unpressButton","childComponents","foundComponent","stepChild","haveTitle","MenuButton","buttonClass","handleMenuKeyUp_","handleMenuKeyUp","menu","handleMouseLeave","handleSubmenuKeyDown","createMenu","items","hideThreshold_","titleEl","titleComponent","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","handleSubmenuKeyPress","TrackButton","_MenuButton","updateHandler","MenuKeys","MenuItem","selectable","isSelected_","multiSelectable","_selected","TextTrackMenuItem","_MenuItem","kinds","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","createEvent","initEvent","referenceTrack","shouldBeSelected","OffTextTrackMenuItem","_TextTrackMenuItem","allHidden","TextTrackButton","_TrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","ChaptersButton","_TextTrackButton","selectCurrentItem_","track_","findChaptersTrack","setTrack","updateHandler_","remoteTextTrackEl","_remoteTextTrackEl","getMenuCaption","mi","DescriptionsButton","SubtitlesButton","CaptionSettingsMenuItem","CaptionsButton","SubsCapsMenuItem","parentSpan","SubsCapsButton","language_","AudioTrackMenuItem","audioTracks","featuresNativeAudioTracks","AudioTrackButton","PlaybackRateMenuItem","rate","playbackRate","PlaybackRateMenuButton","labelElId_","updateVisibility","updateLabel","handlePlaybackRateschange","labelEl_","rates","playbackRates","currentRate","currentIndex","newIndex","playbackRateSupported","Spacer","CustomControlSpacer","_Spacer","ControlBar","ErrorDisplay","_ModalDialog","LOCAL_STORAGE_KEY$1","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","parseOptionValue","getSelectedOptionValue","selectedIndex","setSelectedOption","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","createElFont_","createElControls_","defaultsDescription","setValues","localStorage","getItem","setItem","removeItem","ttDisplay","subsCapsBtn","subsCapsButton","ccBtn","captionsButton","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","resizeHandler","observe","contentWindow","unloadListener_","unobserve","disconnect","resizeObserver","defaults","trackingThreshold","liveTolerance","LiveTracker","handleVisibilityChange_","handleVisibilityChange","trackLiveHandler_","trackLive_","handlePlay_","handleFirstTimeupdate_","handleFirstTimeupdate","handleSeeked_","seekToLiveEdge_","reset_","handleDurationchange","toggleTracking","deltaTime","lastTime_","pastSeekEnd_","pastSeekEnd","isBehind","seekedBehindLive_","timeupdateSeen_","behindLiveEdge_","liveui","isTracking","hasStarted","trackingInterval_","timeDiff","nextSeekedFromUser_","lastSeekEnd_","seekableEnds","seekableStarts","behindLiveEdge","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","dummy","docFrag","getDescriptor","priority","descriptor","getOwnPropertyDescriptor","getInnerHTMLDescriptor","HTMLMediaElement","firstSourceWatch","resetSourceWatch_","innerDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","getSrcDescriptor","setupSourceset","resetSourceset_","srcDescriptor","oldSetAttribute","oldLoad","currentSrc","defineLazyProperty","setter","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","isScrubbing_","nodes","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","overrideNative_","override","lowerCaseType","eventName","elTracks","proxyNativeTracksForType_","techTracks","currentTarget","removeOldTracks","removeTracks","found","playerElIngest","movingMediaElementInDOM","clone","tagAttributes","techId","playerId","preload","settingsAttrs","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","isScrubbing","fastSeek","checkProgress","NaN","endFn","beginFn","webkitPresentationMode","nativeIOSFullscreen","supportsFullScreen","webkitEnterFullScreen","enterFullScreen","HAVE_METADATA","exitFullScreen","webkitDisplayingFullscreen","webkitExitFullScreen","webkitKeys","resetMediaElement","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","creationTime","timing","navigationStart","TEST_VID","canControlVolume","canControl","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","patchCanPlayType","mpegurlRE","unpatchCanPlayType","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","BREAKPOINT_ORDER","BREAKPOINT_CLASSES","DEFAULT_BREAKPOINTS","tiny","xsmall","small","medium","large","xlarge","huge","getTagSettings","closest","boundDocumentFullscreenChange_","documentFullscreenChange_","boundFullWindowOnEscKey_","fullWindowOnEscKey","boundUpdateStyleEl_","updateStyleEl_","boundApplyInitTime_","applyInitTime_","boundUpdateCurrentBreakpoint_","updateCurrentBreakpoint_","boundHandleTechClick_","handleTechClick_","boundHandleTechDoubleClick_","handleTechDoubleClick_","boundHandleTechTouchStart_","handleTechTouchStart_","boundHandleTechTouchMove_","handleTechTouchMove_","boundHandleTechTouchEnd_","handleTechTouchEnd_","boundHandleTechTap_","handleTechTap_","isFullscreen_","isPosterFromTech_","queuedCallbacks_","userActive_","debugEnabled_","audioOnlyMode_","audioPosterMode_","audioOnlyCache_","playerHeight","hiddenChildren","languagesToLower","languages_","resetCache_","poster_","controls_","changingSrc_","playCallbacks_","playTerminatedQueue_","plugins","scrubbing_","fullscreenchange","fluid_","playerOptionsCopy","middleware_","flexNotSupported_","majorVersion","userActive","listenForUserActivity_","handleStageClick_","breakpoints","responsive","styleEl_","playerElIngest_","divEmbed","tabindex","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","head","fill_","fluid","crossorigin","links","linkEl","techGet_","techCall_","_dimension","privDimension","parsedVal","aspectRatio_","idClass","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","_width","_height","techEl","unloadTech_","titleTechName","camelTechName","techName_","normalizeAutoplay","techOptions","loop","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechFullscreenError_","handleTechEnterPictureInPicture_","handleTechLeavePictureInPicture_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","addTechControlsListeners_","safety","removeTechControlsListeners_","manualAutoplay_","promise","resolveMuted","previouslyMuted","restoreMuted","mutedPromise","updateSourceCaches_","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","playerSrc","currentSource","eventSrc","lastSource_","techSrc","techGet","request","lastPlaybackRate","queued","timeWhenWaiting","timeUpdateListener","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechSeeked_","starttime","userActions","click","inAllowedEls","doubleClick","userWasActive","cancelable","toggleFullscreenClass_","targetPlayer","isFs","fullscreen","msMatchesSelector","_this9","togglePictureInPictureClass_","initTime","inactivityTimeout","defaultPlaybackRate","_this10","resolve","play_","_this11","isSrcReady","isSafariOrIOS","waitToPlay_","isNativeReplay","resetProgressBar_","runPlayTerminatedQueue_","runPlayCallbacks_","queue","q","percentAsDecimal","_muted","defaultMuted","_defaultMuted","isFS","oldValue","fullscreenOptions","offHandler","requestFullscreenHelper_","fsOptions","_this12","preferFullWindow","enterFullWindow","exitFullscreenHelper_","_this13","exitFullWindow","isFullWindow","docOrigOverflow","overflow","isPiP","isInPictureInPicture_","hotkeys","excludeElement","isContentEditable","allowedInputTypes","excludedTags","handleHotkeys","_hotkeys$fullscreenKe","fullscreenKey","keydownEvent","_hotkeys$muteKey","muteKey","_hotkeys$playPauseKey","playPauseKey","FSToggle","selectSource","foundSourceAndTech","_this14","techs","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","flip","finder","sourceOrder","handleSrc_","isRetry","_this15","resetRetryOnError_","middlewareSource","src_","notSupportedMessage","retryOnError","retry","stopListeningForErrors","_this16","sourceTech","_this17","doReset_","resetControlBarUI_","resetPlaybackRate_","resetVolumeBar_","durationDisplay","currentSources","techAutoplay","newPoster","usingNativeControls_","_this18","hookFunction","newErr","suppressNotSupportedError","triggerSuppressedError","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseUpAndMouseLeave","isAudio_","enableAudioOnlyUI_","_this19","playerChildren","controlBarHeight","disableAudioOnlyUI_","_this20","exitPromises","enablePosterModeUI_","disablePosterModeUI_","_this21","audioOnlyModePromise","_obj","toJSON","createModal","_this22","modal","currentBreakpoint","candidateBreakpoint","maxWidth","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","loadMedia","_this23","_this$cache_$media","artwork","tt","getMedia","baseOptions","tagOptions","dataSetup","_safeParseTuple","childName","previousLogLevel_","newRates","html5","userLanguage","navigationUI","BASE_PLUGIN_NAME","PLUGIN_CACHE_KEY","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createBasicPlugin","plugin","basicPluginWrapper","createPluginFactory","PluginSubClass","getEventHash","Plugin","isBasic","registerPlugin","deregisterPlugin","getPlugins","getPluginVersion","hasPlugin","hasLogged","extend","subClassMethods","super_","normalizeId","getPlayer","defaultView","PlayerComponent","getPlayers","nId","_tag","_player","getAllPlayers","writeable","mergeOptions","addLanguage","_mergeOptions","createTimeRange","EventTarget","resolveManifestRedirect","handleManifestRedirect","req","responseURL","logger","TIME_FUDGE_FACTOR","SAFE_TIME_DELTA","filterRanges","timeRanges","results","findRange","findNextRange","findGaps","bufferIntersection","bufferA","bufferB","arity","extents","printableRange","strArr","timeUntilRebuffer","timeRangesToArray","timeRangesList","isRangeDifferent","lastBufferedEnd","timeAheadOf","segmentDurationWithParts","getPartsAndSegments","si","getLastParts","lastSegment","getKnownPartCount","partCount","liveEdgeDelay","partHoldBack","holdBack","backwardDuration","endSequence","forwardDuration","intervalDuration","expired","backward","forward","totalDuration","sumDurations","defaultDuration","durationList","durations","playlistEnd","useSafeLiveEnd","liveEdgePadding","lastSegmentEndTime","getMediaInfoForTime","startingSegmentIndex","startingPartIndex","experimentalExactManifestTimings","partsAndSegments","partAndSegment","_partAndSegment","_i3","_i4","_partAndSegment2","isBlacklisted","excludeUntil","isIncompatible","isEnabled","blacklisted","isDisabled","isAes","estimateSegmentRequestTime","bytesReceived","isLowestEnabledRendition","currentBandwidth","MAX_VALUE","playlistMatch","someAudioVariant","groupName","variant","_ret","Playlist","createPlaylistID","groupID","parseManifest","onwarn","oninfo","_ref$customTagParsers","customTagParsers","_ref$customTagMappers","customTagMappers","experimentalLLHLS","customParser","setupMediaPlaylist","playlistErrors_","setupMediaPlaylists","resolveMediaGroupUris","masterForMedia","addPropertiesToMaster","createGroupID","phonyUri","audioOnlyMaster","groupId","mergeOptions$2","EventTarget$1","addLLHLSQueryDirectives","parameters","nextMSN","nextPart","_HLS_part","_HLS_msn","canSkipUntil","_HLS_skip","parsedUri","searchParams","updateSegment","skipped","updateSegments","oldSegments","newSegments","newSegment","resolveSegmentUris","baseUri","getAllSegments","isPlaylistUnchanged","updateMaster$1","newMedia","unchangedCheck","oldMedia","mergedPlaylist","skippedSegments","refreshDelay","lastPart","lastDuration","PlaylistLoader","vhs","logger_","_options$withCredenti","_options$handleManife","handleManifestRedirects","vhs_","vhsOptions","handleMediaupdatetimeout_","playlistRequestError","haveMetadata","playlistString","startingState","parseManifest_","playlistObject","lastRequest","pendingMedia_","media_","updateMediaUpdateTimeout_","stopRequest","mediaUpdateTimeout","finalRenditionTimeout","oldRequest","shouldDelay","delay","mediaChange","masterPlaylistRef","started","setupInitialPlaylist","srcUri","videojsXHR","mergeOptions$1","callbackWrapper","reqResponse","responseTime","roundTripTime","requestTime","responseHeaders","timedout","xhrFactory","XhrFunction","beforeRequest","Vhs","newOptions","xhrMethod","originalAbort","byterangeStr","byterangeEnd","byterangeStart","segmentXhrHeaders","Range","textRange","formatHexString","formatAsciiString","createTransferableMessage","transferable","initSegmentId","segmentKeyId","hexDump","ascii","tagDump","textRanges","utils","SEGMENT_END_FUDGE_PERCENT","playerTimeToProgramTime","playerTime","transmuxerPrependedSeconds","videoTimingInfo","transmuxedStart","transmuxedPresentationStart","startOfSegment","offsetFromSegmentStart","getTime","originalSegmentVideoDuration","transmuxedPresentationEnd","findSegmentForProgramTime","programTime","nextSegmentStart","lastSegmentStart","lastSegmentDuration","lastSegmentEnd","estimatedStart","findSegmentForPlayerTime","segmentEnd","getOffsetFromTimestamp","comparisonTimeStamp","segmentDateTime","programDateTime","segmentTimeEpoch","programTimeEpoch","verifyProgramDateTimeTags","getProgramTime","_ref$time","matchedSegment","seekTime","programTimeObject","mediaSeconds","toISOString","seekToProgramTime","_ref2$retryCount","retryCount","seekTo","_ref2$pauseAfterSeek","pauseAfterSeek","mediaOffset","seekToTime","seekedCallback","callbackOnCompleted","containerRequest","id3Offset","finished","endRequestAndCallback","_bytes","progressListener","newPart","overrideMimeType","loaded","dashPlaylistUnchanged","aSegment","bSegment","aByterange","bByterange","dashGroupId","playlistId","parseMasterXml","masterXml","srcUrl","removeOldMediaGroupLabels","newMaster","updateMaster","oldMaster","noChanges","playlistUpdate","_playlistUpdate","equivalentSidx","neitherMap","equivalentMap","compareSidxEntry","oldSidxMapping","newSidxMapping","currentSidxInfo","savedSidxInfo","sidxInfo","filterChangedSidxMappings","videoSidx","mediaGroupSidx","DashPlaylistLoader","srcUrlOrPlaylist","masterPlaylistLoader","masterPlaylistLoader_","isMaster_","refreshXml_","refreshMedia_","loadedPlaylists_","sidxMapping_","childPlaylist_","requestErrored_","addSidxSegments_","fin","internal","blacklistDuration","_playlist$sidx$bytera","mediaRequest_","minimumUpdatePeriodTimeout_","createMupOnMedia_","hasPendingRequest","sidxChanged","isFinalRendition","updateMinimumUpdatePeriodTimeout_","requestMaster_","masterChanged","haveMaster_","masterXml_","date","masterLoaded_","handleMaster_","syncClientServerClock_","done","utcTiming","clientOffset_","serverTime","mpl","mup","createMUPTimeout_","mediaID","mediaChanged","createMediaUpdateTimeout","Config","GOAL_BUFFER_LENGTH","MAX_GOAL_BUFFER_LENGTH","BACK_BUFFER_LENGTH","GOAL_BUFFER_LENGTH_RATE","INITIAL_BANDWIDTH","BANDWIDTH_VARIANCE","BUFFER_LOW_WATER_LINE","MAX_BUFFER_LOW_WATER_LINE","EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE","BUFFER_LOW_WATER_LINE_RATE","BUFFER_HIGH_WATER_LINE","stringToArrayBuffer","browserWorkerPolyFill","workerObj","createObjectURL","Blob","blob","BlobBuilder","getBlob","objectUrl","worker","Worker","objURL","terminate","revokeObjectURL","getWorkerString","workerCode$1","init","flushSource","partialFlush","endTimeline","dinf","esds","ftyp","mdat","mfhd","minf","moof","moov","mvex","mvhd","trak","tkhd","mdia","mdhd","hdlr","sdtp","stbl","stsd","traf","trex","trun$1","MAJOR_BRAND","MINOR_VERSION","AVC1_BRAND","VIDEO_HDLR","AUDIO_HDLR","HDLR_TYPES","VMHD","SMHD","DREF","STCO","STSC","STSZ","STTS","MAX_UINT32$1","getUint64$2","numbers","avc1","avcC","btrt","dref","mp4a","pasp","smhd","stco","stsc","stsz","stts","styp","tfdt","tfhd","trun","vmhd","payload","setUint32","audioobjecttype","samplingfrequencyindex","channelcount","samplerate","sequenceNumber","trackFragments","samples","dependsOn","isDependedOn","hasRedundancy","videoSample","audioSample","avc1Box","sps","pps","sequenceParameterSets","pictureParameterSets","profileIdc","profileCompatibility","levelIdc","sarRatio","hSpacing","vSpacing","samplesize","trackFragmentHeader","trackFragmentDecodeTime","trackFragmentRun","sampleDependencyTable","dataOffset","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","baseMediaDecodeTime","audioTrun","videoTrun","trunHeader","durationPresent","sizePresent","flagsPresent","compositionTimeOffset","bytesOffest","header","sample","isLeading","paddingValue","isNonSyncSample","degradationPriority","silence","mp4Generator","fileType","movie","groupNalsIntoFrames","nalUnits","currentNal","currentFrame","frames","nalCount","nalUnitType","dts","pts","keyFrame","groupFramesIntoGops","currentGop","gops","extendFirstKeyFrame","createDefaultSample","sampleForFrame","frame","generateSampleTable$1","baseDataOffset","concatenateNalData","nalsByteLength","numberOfNals","totalByteLength","generateSampleTableForFrame","concatenateNalDataForFrame","frameUtils","generateSampleTable","highPrefix","lowPrefix","zeroFill","makeTable","metaTable","arr","silence_1","coneOfSilence","96000","88200","64000","48000","44100","32000","24000","16000","12000","11025","8000","ONE_SECOND_IN_TS$4","clock","sumFrameByteLengths","currentObj","prefixWithSilence","audioAppendStartTs","videoBaseMediaDecodeTime","baseMediaDecodeTimeTs","silentFrame","firstFrame","frameDuration","audioGapDuration","audioFillFrameCount","audioFillDuration","trimAdtsFramesByEarliestDts","adtsFrames","earliestAllowedDts","minSegmentDts","minSegmentPts","concatenateFrameData","audioFrameUtils","ONE_SECOND_IN_TS$3","collectDtsInfo","timelineStartInfo","maxSegmentPts","maxSegmentDts","clearDtsInfo","calculateTrackBaseMediaDecodeTime","scale","trackDecodeInfo","USER_DATA_REGISTERED_ITU_T_T35","RBSP_TRAILING_BITS","parseSei","payloadType","payloadSize","userIdentifier","parseUserData","sei","parseCaptionPackets","userData","ccData","discardEmulationPreventionBytes$1","newLength","newData","emulationPreventionBytesPositions","sourceIndex","captionPacketParser","discardEmulationPreventionBytes","CaptionStream$1","CaptionStream","parse708captions_","parse708captions","captionPackets_","ccStreams_","Cea608Stream","cc708Stream_","Cea708Stream","newCaptionPackets","escapedRBSP","latestDts_","ignoreNextEqualDts_","numSameDts_","flushCCStreams","flushType","flushStream","idx","presortIndex","packet","dispatchCea608Packet","dispatchCea708Packet","activeCea608Channel_","ccStream","setsTextOrXDSActive","setsChannel1Active","setsChannel2Active","CHARACTER_TRANSLATION_708","get708CharFromCode","newCode","within708TextBlock","Cea708Window","windowNum","clearText","pendingNewLine","winAttr","penAttr","penLoc","penColor","visible","rowLock","columnLock","relativePositioning","anchorVertical","anchorHorizontal","anchorPoint","rowCount","virtualRowCount","columnCount","windowStyle","penStyle","getText","rows","rowIdx","beforeRowOverflow","addText","backspace","Cea708Service","serviceNum","encoding","currentWindow","windows","createTextDecoder","startPts","setCurrentWindow","textDecoder_","serviceProps","captionServiceEncodings","serviceName","serviceEncodings","current708Packet","services","new708Packet","add708Bytes","push708Packet","ptsVals","byte0","byte1","packet708","packetData","blockSize","seq","sizeCode","pushServiceBlock","initService","handleText","multiByteCharacter","extendedCommands","defineWindow","clearWindows","deleteWindows","displayWindows","hideWindows","toggleWindows","setWindowAttributes","setPenAttributes","setPenColor","setPenLocation","isExtended","getPts","flushDisplayed","_char","charCodeArray","isMultiByte","extended","currentByte","nextByte","firstByte","secondByte","fillOpacity","fillRed","fillGreen","fillBlue","borderType","borderRed","borderGreen","borderBlue","wordWrap","printDirection","scrollDirection","justify","effectSpeed","effectDirection","displayEffect","displayedText","winId","endPts","pushCaption","textTag","penSize","italics","underline","edgeType","fontStyle","fgOpacity","fgRed","fgGreen","fgBlue","bgOpacity","bgRed","bgGreen","bgBlue","edgeRed","edgeGreen","edgeBlue","column","CHARACTER_TRANSLATION","getCharFromCode","BOTTOM_ROW","ROWS","createDisplayBuffer","field","dataChannel","field_","dataChannel_","setConstants","swap","char0","char1","lastControlCode_","PADDING_","RESUME_CAPTION_LOADING_","mode_","END_OF_CAPTION_","clearFormatting","displayed_","nonDisplayed_","startPts_","ROLL_UP_2_ROWS_","rollUpRows_","setRollUp","ROLL_UP_3_ROWS_","ROLL_UP_4_ROWS_","CARRIAGE_RETURN_","shiftRowsUp_","BACKSPACE_","row_","ERASE_DISPLAYED_MEMORY_","ERASE_NON_DISPLAYED_MEMORY_","RESUME_DIRECT_CAPTIONING_","isSpecialCharacter","column_","isExtCharacter","isMidRowCode","addFormatting","isOffsetControlCode","isPAC","formatting_","isColorPAC","isNormalChar","topRow_","BASE_","EXT_","CONTROL_","OFFSET_","_char2","newBaseRow","popOn","baseRow","rollUp","paintOn","captionStream","streamTypes","H264_STREAM_TYPE","ADTS_STREAM_TYPE","METADATA_STREAM_TYPE","MAX_TS","RO_THRESH","TYPE_SHARED","handleRollover$1","TimestampRolloverStream$1","TimestampRolloverStream","lastDTS","referenceDTS","type_","_MetadataStream","timestampRolloverStream","handleRollover","percentEncode$1","parseUtf8","parseIso88591$1","parseSyncSafeInteger$1","tagParsers","TXXX","WXXX","PRIV","owner","privateData","tagSize","bufferSize","dispatchType","frameStart","frameSize","frameHeader","dataAlignmentIndicator","timeStamp","_TransportPacketStream","_TransportParseStream","_ElementaryStream","metadataStream","MP2T_PACKET_LENGTH$1","SYNC_BYTE$1","bytesInBuffer","everything","parsePsi","parsePat","parsePmt","packetsWaitingForPmt","programMapTable","payloadUnitStartIndicator","pat","section_number","last_section_number","pmtPid","pmt","sectionLength","tableEnd","programInfoLength","streamType","pid","processPes_","STREAM_TYPES","h264","adts","segmentHadPmt","timedMetadata","parsePes","pes","ptsDtsFlags","startPrefix","packetLength","forceFlush","packetFlushable","trackId","flushStreams_","m2ts","PAT_PID","MP2T_PACKET_LENGTH","TransportPacketStream","TransportParseStream","ElementaryStream","MetadataStream","_AdtsStream","m2ts_1","ONE_SECOND_IN_TS$2","ADTS_SAMPLING_FREQUENCIES$1","handlePartialSegments","frameNum","skipWarn_","frameLength","protectionSkipBytes","oldBuffer","sampleCount","adtsFrameDuration","ExpGolomb","workingData","workingBytesAvailable","workingWord","workingBitsAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","bits","valu","skipLeadingZeros","leadingZeroCount","skipUnsignedExpGolomb","skipExpGolomb","readUnsignedExpGolomb","clz","readExpGolomb","readBoolean","readUnsignedByte","_H264Stream","_NalByteStream","PROFILES_WITH_OPTIONAL_SPS_DATA","expGolomb","syncPoint","swapBuffer","100","110","122","244","44","83","86","118","128","138","139","134","currentPts","currentDts","readSequenceParameterSet","skipScalingList","nalByteStream","nalUnitTypeCode","expGolombDecoder","deltaScale","lastScale","nextScale","chromaFormatIdc","picOrderCntType","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","scalingListCount","aspectRatioIdc","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","_AacStream","H264Stream","NalByteStream","ADTS_SAMPLING_FREQUENCIES","parseId3TagSize","isLikelyAacData$1","parseSyncSafeInteger","percentEncode","parseIso88591","parseAdtsSize","lowThree","highTwo","parseType$2","parseSampleRate","parseAacTimestamp","isLikelyAacData","parseType","setTimestamp","bytesLeft","tempLength","_VideoSegmentStream","_AudioSegmentStream","_Transmuxer","_CoalesceStream","AUDIO_PROPERTIES","audioProperties","VIDEO_PROPERTIES","videoProperties","ONE_SECOND_IN_TS$1","retriggerForStream","addPipelineLogRetriggers","transmuxer","pipeline","arrayEquals","generateSegmentTimingInfo","startDts","endDts","prependedContentDuration","ptsOffsetFromDts","decodeDuration","presentationDuration","firstSequenceNumber","setEarliestDts","earliestDts","setVideoBaseMediaDecodeTime","setAudioAppendStart","videoClockCyclesOfSilencePrefixed","gopsToAlignWith","minPTS","gopCache_","nalUnit","gopForFusion","firstGop","lastGop","resetStream_","getGopForFusion_","alignedGops","alignGopsAtEnd","alignGopsAtEnd_","alignGopsAtStart_","gop","dtsDistance","nearestGopObj","currentGopObj","halfSecond","allowableOverlap","nearestDistance","alignIndex","gopIndex","alignEndIndex","matchFound","trimIndex","alignGopsWith","newGopsToAlignWith","numberOfTracks","remux","remuxTracks","pendingTracks","videoTrack","pendingBoxes","pendingCaptions","pendingMetadata","pendingBytes","emittedTracks","output","audioTrack","caption","id3","captionStreams","cueTime","setRemux","hasFlushed","transmuxPipeline_","setupAacPipeline","aacStream","audioTimestampRolloverStream","timedMetadataTimestampRolloverStream","adtsStream","coalesceStream","headOfPipeline","audioSegmentStream","getLogTrigger_","hasAudio","hasVideo","setupTsPipeline","packetStream","elementaryStream","h264Stream","videoSegmentStream","id3Frame","setBaseMediaDecodeTime","isAac","resetCaptions","Transmuxer","VideoSegmentStream","AudioSegmentStream","toUnsigned$3","toHexString$1","toUnsigned","parseType$1","parseType_1","toUnsigned$2","findBox","subresults","findBox_1","toUnsigned$1","getUint64$1","parseTfdt","parseSampleFlags","parseSampleFlags_1","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetPresent","getInt32","parseTrun","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","durationIsEmpty","defaultBaseIsMoof","sampleDescriptionIndex","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","baseDataOffsetIsMoof","parseTfhd","commonjsGlobal","globalThis","compositionStartTime","getVideoTrackIds","getTracks","getTimescaleFromMediaHeader","window_1","mapToSample","approximateOffset","findSeiNals","avcStream","seiNal","lastMatchedSample","avcView","logs","seiNals","matchingSample","parseSamples","truns","allSamples","trackRun","parseCaptionNals","videoTrackId","trafs","mdats","captionNals","mdatTrafPairs","matchingTraf","pair","headerInfo","parseEmbeddedCaptions","trackNals","CaptionParser","segmentCache","parsedCaptions","parsingPartial","isInitialized","isPartial","isNewInit","videoTrackIds","timescales","parsedData","cachedSegment","pushNals","nals","nal","clearParsedCaptions","resetCaptionStream","clearAllCaptions","captionParser","traks","lowestTime","baseTime","trafBoxes","parsedTfhd","parsedTfdt","parsedTrun","hdlrs","tkhds","handlerType","getUint8","tkhdVersion","sampleDescriptions","codecConfig","codecConfigType","codecBox","probe$2","parsePid","parsePayloadUnitStartIndicator","parseAdaptionField","pusi","payloadOffset","parsePesType","parsePesTime","parseNalUnitType","videoPacketContainsKeyFrame","nalType","frameBuffer","frameI","frameSyncPoint","foundKeyFrame","probe$1","probe","SYNC_BYTE","parsePsi_","table","parseAudioPes_","pesType","parsed","endLoop","parseVideoPes_","firstKeyFrame","adjustTimestamp_","baseTimestamp","audioBaseTimestamp","dtsTime","ptsTime","videoBaseTimestamp","inspectAac_","audioCount","audioTimescale","inspectTs_","inspect","isAacData","tsInspector","wireTransmuxerEvents","initArray","typedArray","postMessage","action","gopInfo","timingInfo","videoSegmentTimingInfo","presentation","audioSegmentTimingInfo","trackInfo","audioTimingInfo","MessageHandlers","pushMp4Captions","trackIds","probeMp4StartTime","probeMp4Tracks","probeTs","baseStartTime","tsStartTime","timeInfo","videoStart","audioStart","clearAllMp4Captions","clearParsedMp4Captions","setTimestampOffset","timestampOffset","appendStart","onmessage","messageHandlers","TransmuxWorker","handleData_","transmuxedData","_event$data$segment","videoFrameDtsTime","videoFramePtsTime","handleDone_","handleGopInfo_","processTransmux","audioAppendStart","onData","onTrackInfo","onAudioTimingInfo","onVideoTimingInfo","onVideoSegmentTimingInfo","onAudioSegmentTimingInfo","onId3","onCaptions","onDone","onEndedTimeline","onTransmuxerLog","isEndOfTimeline","waitForEndedTimelineEvent","handleMessage","currentTransmux","dequeue","transmuxQueue","processAction","enqueueAction","transmux","createTransmuxer","term","segmentTransmuxer","workerCallback","endAction","listenForEndEvent","isArrayBuffer","transfers","REQUEST_ERRORS","FAILURE","TIMEOUT","ABORTED","abortAll","activeXhrs","getRequestStats","getProgressStats","progressEvent","stats","handleErrors","handleKeyResponse","finishProcessingFn","errorObj","parseInitSegment","_callback","handleInitSegmentResponse","encryptedBytes","parseError","handleSegmentResponse","newBytes","lastReachedChar","transmuxAndNotify","trackInfoFn","timingInfoFn","videoSegmentTimingInfoFn","audioSegmentTimingInfoFn","id3Fn","captionsFn","endedTimelineFn","dataFn","doneFn","fmp4Tracks","isMuxed","audioStartFn","audioEndFn","videoStartFn","videoEndFn","finish","id3Frames","probeResult","handleSegmentBytes","bytesAsUint8Array","isFmp4","audioCodec","videoCodec","finishLoading","decrypt","keyBytes","decryptionWorker","decryptionHandler","decrypted","encrypted","decryptSegment","requestId","decryptedBytes","waitForCompletion","didError","segmentFinish","endOfAllRequests","handleLoadEnd","_ref10","loadendState","abortFn","calledAbortFn","handleProgress","_ref11","progressFn","firstBytesReceivedAt","mediaSegmentRequest","_ref12","xhrOptions","keyRequestOptions","keyRequestCallback","keyXhr","differentMapKey","mapKeyRequestOptions","mapKeyRequestCallback","mapKeyXhr","initSegmentOptions","initSegmentRequestCallback","initSegmentXhr","segmentRequestOptions","segmentRequestCallback","segmentXhr","activeXhr","logFn$1","getCodecs","mediaAttributes","isMaat","unwrapCodecList","codecList","codecCount","codecObj","codecsForPlaylist","codecInfo","defaultCodecs","logFn","representationToString","safeGetComputedStyle","property","stableSort","sortFn","newArray","cmp","comparePlaylistBandwidth","leftBandwidth","rightBandwidth","comparePlaylistResolution","leftWidth","rightWidth","simpleSelector","playerBandwidth","playerWidth","limitRenditionByPlayerDimensions","masterPlaylistController","getAudioTrackPlaylists_","sortedPlaylistReps","rep","enabledPlaylistReps","bandwidthPlaylistReps","highestRemainingBandwidthRep","bandwidthBestRep","_chosenRep","haveResolution","resolutionBestRepList","resolutionPlusOneList","resolutionPlusOneSmallest","resolutionPlusOneRep","leastPixelDiffRep","resolutionBestRep","experimentalLeastPixelDiffSelector","leastPixelDiffList","pixelDiff","chosenRep","_type","lastBandwidthSelector","pixelRatio","useDevicePixelRatio","devicePixelRatio","systemBandwidth","masterPlaylistController_","movingAverageBandwidthSelector","decay","average","lastSystemBandwidth","minRebufferMaxBandwidthSelector","syncController","compatiblePlaylists","enabledPlaylists","bandwidthPlaylists","rebufferingEstimates","getSyncPoint","numRequests","requestTimeEstimate","rebufferingImpact","noRebufferingPlaylists","estimate","lowestBitrateCompatibleVariantSelector","playlistsWithVideo","concatSegments","segmentObj","createCaptionsTrackIfNotExists","inbandTextTracks","def","captionService","addCaptionData","captionArray","Cue","WebKitDataCue","deprecateOldCue","addMetadata","metadataArray","videoDuration","metadataTrack","metadataTrack_","cuesArray","cuesGroupedByStartTime","timeSlot","sortedStartTimes","cueGroup","nextTime","createMetadataTrackIfNotExists","inBandMetadataTrackDispatchType","removeCuesFromTrack","removeDuplicateCuesFromTrack","duplicates","occurrences","dupe","gopsSafeToAlignWith","mapping","currentTimePts","updateGopBuffer","removeGopBuffer","updatedBuffer","shallowEqual","akeys","bkeys","QUOTA_EXCEEDED_ERR","getSyncSegmentCandidate","targetTime","timelineSegments","MIN_BACK_BUFFER","CHECK_BUFFER_DELAY","finite","MIN_SEGMENT_DURATION_TO_SAVE_STATS","illegalMediaSwitch","loaderType","startingMedia","safeBackBufferTrimTime","trimTime","maxTrimTime","segmentInfoString","_segmentInfo$playlist","_segmentInfo$playlist2","mediaIndex","segmentLen","selection","isSyncRequest","independent","hasPartIndex","zeroBasedPartCount","timingInfoPropertyForMedia","timestampOffsetForSegment","overrideCheck","shouldWaitForTimelineChange","timelineChangeController","audioDisabled","lastMainTimelineChange","lastTimelineChange","pendingAudioTimelineChange","pendingTimelineChange","mediaDuration","timingInfos","maxDuration","typeTimingInfo","segmentTooLong","getTroublesomeSegmentDurationMessage","sourceType","isSegmentWayTooLong","isSegmentSlightlyTooLong","segmentTooLongMessage","severity","SegmentLoader","_videojs$EventTarget","mediaSource","throughput","roundTrip","resetStats_","hasPlayed_","hasPlayed","seekable_","seeking_","mediaSource_","loaderType_","currentMediaInfo_","startingMediaInfo_","segmentMetadataTrack_","segmentMetadataTrack","goalBufferLength_","goalBufferLength","sourceType_","sourceUpdater_","sourceUpdater","inbandTextTracks_","state_","timelineChangeController_","shouldSaveSegmentTimingInfo_","useDtsForTimestampOffset_","useDtsForTimestampOffset","captionServices_","checkBufferTimeout_","currentTimeline_","pendingSegment_","xhrOptions_","pendingSegments_","audioDisabled_","isPendingTimestampOffset_","gopBuffer_","timeMapping_","safeAppend_","appendInitSegment_","playlistOfLastInitSegment_","callQueue_","loadQueue_","metadataQueue_","waitingOnRemove_","quotaExceededErrorRetryTimeout_","activeInitSegmentId_","initSegments_","cacheEncryptionKeys_","cacheEncryptionKeys","keyCache_","decrypter_","decrypter","syncController_","syncPoint_","transmuxer_","createTransmuxer_","triggerSyncInfoUpdate_","isEndOfStream_","ended_","fetchAtBuffer_","newState","hasEnoughInfoToAppend_","processCallQueue_","hasEnoughInfoToLoad_","processLoadQueue_","mediaBytesTransferred","mediaRequests","mediaRequestsAborted","mediaRequestsTimedout","mediaRequestsErrored","mediaTransferDuration","mediaSecondsLoaded","mediaAppends","abort_","setAudio","removeAudio","monitorBuffer_","abortRequests","clearPendingTimelineChange","checkForAbort_","_error","endOfStream","buffered_","getMediaInfo_","videoBuffered","audioBuffered","initSegmentForMap","storedMap","segmentKey","storedKey","couldBeginLoading_","playlist_","init_","resetEverything","newPlaylist","syncInfo","setDateTimeMappingForStart","oldId","resyncLoader","resetLoader","mediaSequenceDiff","saveExpiredSegmentInfo","force","removesRemaining","removeFinished","removeVideo","monitorBufferTick_","fillBuffer_","updating","chooseNextRequest_","loadSegment_","appendedLastSegment","appendedLastPart","bufferedTime","preloaded","haveEnoughBuffer","_Playlist$getMediaInf","_partIndex","nextSegment","lastSegmentLastPart","generateSegmentInfo_","forceTimestampOffset","random","timestampOffsetForSegment_","audioBufferedEnd","audioTimestampOffset","videoTimestampOffset","earlyAbortWhenNeeded_","measuredBandwidth","requestTimeRemaining","timeUntilRebuffer$1","switchCandidate","timeSavedBySwitching","minimumTimeSaving","handleAbort_","handleProgress_","simpleSegment","handleTrackInfo_","checkForIllegalMediaSwitch","handleTimingInfo_","timeType","timingInfoProperty","handleCaptions_","captionData","hasAppendedData_","captionTracks","captionTrack","trackName","_captionTracks$trackN","handleId3_","processMetadataQueue_","callQueue","fun","loadQueue","getCurrentMediaInfo_","getPendingSegmentPlaylist","setTimeMapping_","updateMediaSecondsLoaded_","firstVideoFrameTimeForData","useVideoTimingInfo","trueSegmentStart_","currentStart","currentVideoTimestampOffset","updateAppendInitSegmentStatus","updateSourceBufferTimestampOffset_","updateTimingInfoEnd_","saveSegmentTimingInfo","shouldSaveTimelineMapping","appendData_","changedTimestampOffset","getInitSegmentAndUpdateState_","handleQuotaExceededError_","audioBufferStart","audioBufferEnd","videoBufferStart","videoBufferEnd","appendToSourceBuffer_","timeToRemoveUntil","handleAppendError_","appendBuffer","handleSegmentTimingInfo_","segmentTimingInfo","transmuxedDecodeStart","transmuxedDecodeEnd","trimBackBuffer_","updateTransmuxerAndRequestSegment_","shouldUpdateTransmuxerTimestampOffset_","createSimplifiedSegmentObj_","isEndOfStream","isWalkingForward","isDiscontinuity","segmentRequestFinished_","removeToTime","previousSegment","saveTransferStats_","saveBandwidthRelatedStats_","handleTimeout_","waitForAppendsToComplete_","timelineMapping","mappingForTimeline","waitForVideo","waitForAudio","waitingOnAppends","checkAppendsDone_","videoQueueCallback","audioQueueCallback","handleAppendsDone_","illegalMediaSwitchError","didChange","getSegmentStartTimeForTimestampOffsetCalculation_","prioritizedTimingInfo","segmentDurationMessage","recordThroughput_","addSegmentMetadataCue_","badSegmentGuess","badPartGuess","segmentProcessingTime","segmentProcessingThroughput","Vhs$1","toTitleCase","bufferTypes","_updating","sourceBuffer","queuePending","nextQueueIndexOfType","queueEntry","shiftQueue","queueIndex","cleanupBuffer","titleType","inSourceBuffers","sourceBuffers","actions","onError","_duration","addSourceBuffer","mime","removeSourceBuffer","changeType","pushQueue","onUpdateend","SourceUpdater","sourceopenListener_","audioTimestampOffset_","videoTimestampOffset_","delayedAudioAppendQueue_","videoAppendQueued_","onVideoUpdateEnd_","onAudioUpdateEnd_","onVideoError_","videoError_","onAudioError_","audioError_","createdSourceBuffers_","initializedEme_","triggeredReady_","initializedEme","hasCreatedSourceBuffers","hasInitializedAnyEme","createSourceBuffers","addOrChangeSourceBuffers","canRemoveSourceBuffer","canChangeType","SourceBuffer","processedAppend_","videoBuffer","que","audioBuffer","setDuration","uint8ToUtf8","uintArray","VTT_LINE_TERMINATORS","_char3","NoVttJsError","_Error","VTTSegmentLoader","_SegmentLoader","subtitlesTrack_","featuresNativeTextTracks_","loadVttJs","combinedByteLength","combinedSegment","timestampOffsetForTimeline","checkTimestampOffset","skipEmptySegments_","stopForError","requested","parseVTTCues_","updateTimeMapping_","timelines","decodeBytesToString","timestampmap","MPEGTS","LOCAL","mapData","segmentData","mappingObj","diff","firstStart","lastStart","findAdCue","mediaTime","adStartTime","adEndTime","updateAdCues","_segment$cueOutCont$s","adOffset","adTotal","MAX_MEDIA_SEQUENCE_DIFF_FOR_SYNC","syncPointStrategies","run","timelineToDatetimeMappings","lastDistance","datetimeMapping","z","discontinuitySync","discontinuities","SyncController","syncPoints","runStrategies_","selectSyncPoint_","getExpiredTime","strategy","bestSyncPoint","bestDistance","bestStrategy","newDistance","lastRemovedSegment","firstSegment","playlistTimestamp","didCalculateSegmentTimeMapping","calculateSegmentTimeMapping_","saveDiscontinuitySyncInfo_","dateTime","accuracy","mediaIndexDiff","TimelineChangeController","pendingTimelineChanges_","lastTimelineChanges_","workerCode","createCommonjsModule","basedir","commonjsRequire","createClass","_defineProperties","_createClass","protoProps","staticProps","inheritsLoose","unpad","padded","precompute","xInv","x2","x4","x8","tEnc","tDec","tables","encTable","decTable","sbox","sboxInv","th","aesTables","AES","tmp","_tables","keyLen","rcon","encKey","decKey","encrypted0","encrypted1","encrypted2","encrypted3","out","c2","nInnerRounds","kIndex","table0","table1","table2","table3","AsyncStream","jobs","timeout_","processJob_","job","ntoh","word","initVector","init0","init1","init2","init3","wordIx","encrypted32","Int32Array","decipher","decrypted32","Decrypter","STEP","asyncStream_","decryptChunk_","audioTrackKind_","stopLoaders","segmentLoader","activePlaylistLoader","startLoaders","playlistLoader","onGroupChanged","_settings$segmentLoad","segmentLoaders","mainSegmentLoader","activeTrack","activeGroup","getActiveGroup","previousActiveLoader","lastGroup","lastGroup_","lastTrack_","isMasterPlaylist","onGroupChanging","onTrackChanged","_settings$segmentLoad2","lastTrack","mpc","selectPlaylist","fastQualityChange_","blacklistCurrentPlaylist","defaultTrack","setupListeners","requestOptions","initialize","_settings$mediaTypes$","variantLabel","_settings$mediaTypes$2","_settings$mediaTypes$3","newProps","groupMatch","variants","groupKeys","groupPropertyList","activeTrack_","setupMediaGroups","_settings$segmentLoad3","audioSegmentLoader","activeAudioGroup","onAudioTrackChanged","createMediaTypes","ABORT_EARLY_BLACKLIST_SECONDS","loaderStats","sumLoaderStat","stat","audioSegmentLoader_","mainSegmentLoader_","shouldSwitchToMedia","currentPlaylist","nextPlaylist","bufferLowWaterLine","bufferHighWaterLine","experimentalBufferBasedABR","sharedLogLine","isBuffered","forwardBuffer","maxBufferLowWaterLine","nextBandwidth","currBandwidth","logLine","_logLine","MasterPlaylistController","externVhs","useCueTags","enableLowInitialPlaylist","maxPlaylistRetries","useCueTags_","cueTagsTrack_","requestOptions_","pauseLoading","mediaTypes_","handleDurationChange_","handleSourceOpen_","handleSourceEnded_","segmentLoaderSettings","setupMasterPlaylistLoaderListeners_","subtitleSegmentLoader_","onLoad","setupSegmentLoaderListeners_","startABRTimer_","stopABRTimer_","triggeredFmp4Usage","loadOnPlay_","timeToLoadedData__","mainAppendsToLoadedData__","audioAppendsToLoadedData__","timeToLoadedDataStart","mainAppendsToLoadedData_","audioAppendsToLoadedData_","appendsToLoadedData_","timeToLoadedData_","checkABR_","shouldSwitchToMedia_","switchMedia_","newId","abrTimer_","defaultPlaylists","defaultGroup","requestTimeout","triggerPresenceUsage_","setupFirstPlay","updatedPlaylist","selectedMedia","excludeUnsupportedVariants_","selectInitialPlaylist","initialMedia_","haveJsonSource","handleUpdatedMediaPlaylist","lastExcludeReason_","playlistOutdated","stuckAtPlaylistEnd_","updateAdCues_","updateDuration","defaultDemuxed","audioGroupKeys","onSyncInfoUpdate_","onEndOfStream","delegateLoaders_","updateCodecs","tryToCreateSourceBuffers_","getCodecsOrExclude_","mediaSecondsLoaded_","smoothQualityChange_","mainMediaInfo","absolutePlaylistEnd","reincluded","errorMessage","delayDuration","fnNames","loaders","dontFilterPlaylist","loader","audioSeekable","mainSeekable","oldEnd","oldStart","updateDuration_","areMediaTypesKnown_","usingAudioLoader","hasMainMediaInfo","hasAudioMediaInfo","playlistCodecs","unsupportedAudio","supportFunction","unsupportedCodecs","supporter","variantAudioGroup","switchMessages","newCodec","oldCodec","excludeIncompatibleVariants_","ids","unsupported","codecCount_","videoDetails","audioDetails","blacklistReasons","variantCodecs","variantCodecCount","variantVideoDetails","variantAudioDetails","newMax","enableFunction","playlistID","changePlaylistFn","incompatible","currentlyEnabled","Representation","vhsHandler","smoothQualityChange","qualityChangeFunction","renditionSelectionMixin","timerCancelEvents","PlaybackWatcher","allowSeeksWithinUnsafeLiveWindow","liveRangeSafeTimeDelta","consecutiveUpdates","lastRecordedTime","timer_","checkCurrentTimeTimeout_","playHandler","monitorCurrentTime_","canPlayHandler","waitingHandler","techWaiting_","cancelTimerHandler","cancelTimer_","loaderTypes","loaderChecks","resetSegmentDownloads_","updateend","checkSegmentDownloads_","setSeekingHandlers","seekingAppendCheck_","fixesBadSeeks_","clearSeekingAppendCheck_","watchForBadSeeking_","checkCurrentTime_","isBufferedDifferent","waiting_","isAfterSeekableRange","afterSeekableWindow_","beforeSeekableWindow_","minAppendedDuration","bufferedToCheck","timeAhead","nextRange","livePoint","videoUnderflow","videoUnderflow_","difference","skipTheGap_","allowedEnd","lastVideoRange","videoRange","audioRange","gapFromVideoUnderflow_","scheduledCurrentTime","gaps","defaultOptions","errorInterval","getSource","IWillNotUseThisInPlugins","initPlugin","lastCalled","localOptions","loadedMetadataHandler","cleanupEvents","reinitPlugin","reloadSourceOnError","version$4","version$3","version$2","version$1","STANDARD_PLAYLIST_SELECTOR","INITIAL_PLAYLIST_SELECTOR","LOCAL_STORAGE_KEY","handleVhsMediaChange","qualityLevels","selectedIndex_","handleVhsLoadedMetadata","addQualityLevel","emeKeySystems","keySystemOptions","audioPlaylist","videoContentType","audioContentType","keySystemContentTypes","getAllPsshKeySystemsOptions","keySystems","keySystemsArr","keySystemsOptions","keySystemsObj","waitForKeySessionCreation","sourceKeySystems","audioMedia","mainPlaylists","initializeMediaKeys","keySystemsOptionsArr","initializationFinishedPromises","keySessionCreatedPromises","setupEmeOptions","sourceOptions","getVhsLocalStorage","storedObject","updateVhsLocalStorage","objectToStore","expandDataUri","dataUri","supportsNativeHls","canPlay","canItPlay","supportsNativeDash","supportsTypeNatively","VhsHandler","hls","initialBandwidth","source_","ignoreNextSeekingEvent_","setOptions_","overrideNative","featuresNativeVideoTracks","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","useBandwidthFromLocalStorage","useNetworkInformationApi","option","playbackWatcherOptions","playbackWatcher_","defaultSelector","playerBandwidthEst","networkInformation","connection","mozConnection","webkitConnection","tenMbpsAsBitsPerSecond","networkInfoBandwidthEstBitsPerSec","downlink","invThroughput","invBandwidth","systemBitrate","mediaRequests_","mediaRequestsAborted_","mediaRequestsTimedout_","mediaRequestsErrored_","mediaTransferDuration_","mediaBytesTransferred_","mediaAppends_","mainAppendsToLoadedData","audioAppendsToLoadedData","appendsToLoadedData","timeToLoadedData","currentTech","playerDimensions","setupEme_","setupQualityLevels_","mediaSourceUrl_","createKeySessions_","audioPlaylistLoader","handleWaitingForKey_","didSetupEmeOptions","masterPlaylist","_videojs$log","excludedHDPlaylists","qualityLevels_","convertToProgramTime","VhsSourceHandler","simpleType","getOverrideNative","canUseMsePlayback","_options$vhs","_options$hls","defaultOverrideNative","_vhs$overrideNative","_hls$overrideNative","legacyOverrideNative","supportsNativeMediaSources","DESCRIPTORS","normalizePaths","paths","headerSize","_DESCRIPTORS$z","dependsOnEsId","ocrEsId","descriptors","oti","maxBitrate","avgBitrate","complete","EBML_TAGS","EBML","DocType","Segment","SegmentInfo","Tracks","TrackNumber","DefaultDuration","TrackEntry","TrackType","FlagDefault","CodecID","CodecPrivate","Cluster","Timestamp","TimestampScale","BlockGroup","BlockDuration","Block","SimpleBlock","LENGTH_TABLE","getLength","removeLength","valueBytes","getInfinityDataSize","innerid","dataHeader","findEbml","dataStart","dataEnd","totalLength","NAL_TYPE_ONE","NAL_TYPE_TWO","EMULATION_PREVENTION","positions","dataType","nalLimit","nalStart","nalsFound","nalOffset","findH264Nal","findH265Nal","CONSTANTS","_isLikely","docType","matroska","fmp4","ac3","avi","riff","isLikelyTypes","isLikelyFn","isLikely","setToStringTag","scrollSetting","findScrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","Buffer","decodeB64ToUint8Array","b64Text","decodedString"],"mappings":"kHAAA,W,uBCAA,IAAIA,EAAY,EAAQ,QAAuBA,UAE3CC,EAAY,SAASC,GACvB,IAAIC,EAAO,IAAIC,SAASF,EAAKG,OAAQH,EAAKI,WAAYJ,EAAKK,YACvDC,EAAS,CACPC,QAASP,EAAK,GACdQ,MAAO,IAAIC,WAAWT,EAAKU,SAAS,EAAG,IACvCC,WAAY,GACZC,YAAaX,EAAKY,UAAU,GAC5BC,UAAWb,EAAKY,UAAU,IAE9BE,EAAI,GAEiB,IAAnBT,EAAOC,SACTD,EAAOU,yBAA2Bf,EAAKY,UAAUE,GACjDT,EAAOW,YAAchB,EAAKY,UAAUE,EAAI,GACxCA,GAAK,IAGLT,EAAOU,yBAA2BlB,EAAUE,EAAKU,SAASK,IAC1DT,EAAOW,YAAcnB,EAAUE,EAAKU,SAASK,EAAI,IACjDA,GAAK,IAGPA,GAAK,EAEL,IAAIG,EAAiBjB,EAAKkB,UAAUJ,GAIpC,IAFAA,GAAK,EAEEG,EAAiB,EAAGH,GAAK,GAAIG,IAClCZ,EAAOK,WAAWS,KAAK,CACrBC,eAA0B,IAAVrB,EAAKe,MAAe,EACpCO,eAAoC,WAApBrB,EAAKY,UAAUE,GAC/BQ,mBAAoBtB,EAAKY,UAAUE,EAAI,GACvCS,iBAAgC,IAAdxB,EAAKe,EAAI,IAC3BU,SAAwB,IAAdzB,EAAKe,EAAI,MAAe,EAClCW,aAAsC,UAAxBzB,EAAKY,UAAUE,EAAI,KAIrC,OAAOT,GAITqB,EAAOC,QAAU7B,G,oCC7CjB,4UACI8B,EAAS,CAEXC,IAAK,oEACLC,KAAM,gCACNC,IAAK,sCAELC,MAAO,sDACPC,MAAO,2DACPC,KAAM,oBAENC,WAAY,YACZC,WAAY,UAIZC,UAAW,MAETC,EAAa,CAAC,QAAS,QAAS,QAChCC,EAAkB,CAAC,QAAS,QAAS,QAW9BC,EAAuB,SAA8BC,GAC9D,OAAKA,EAIEA,EAAMC,QAAQ,uBAAuB,SAAUC,EAAMC,EAASC,GACnE,IAAIC,GAAc,KAAOC,OAAOH,GAASI,SAAS,KAAKC,OAAO,GAC1DC,GAAe,KAAOH,OAAOF,GAAUG,SAAS,KAAKC,OAAO,GAChE,MAAO,QAAUH,EAAa,KAAOI,KAN9BT,GA6DAU,EAAc,SAAqBC,QACxB,IAAhBA,IACFA,EAAc,IAGhB,IAAIC,EAASD,EAAYE,MAAM,KAC3BjD,EAAS,GA8Bb,OA7BAgD,EAAOE,SAAQ,SAAUd,GAEvB,IAAIe,EADJf,EAAQA,EAAMgB,OAEdnB,EAAWiB,SAAQ,SAAUG,GAC3B,IAAIC,EAAQ/B,EAAO8B,GAAME,KAAKnB,EAAMoB,eAEpC,GAAKF,KAASA,EAAMG,QAAU,GAA9B,CAIAN,EAAYE,EAEZ,IAAIK,EAAOtB,EAAMuB,UAAU,EAAGL,EAAM,GAAGG,QACnCG,EAAUxB,EAAMC,QAAQqB,EAAM,IAClC1D,EAAOc,KAAK,CACV4C,KAAMA,EACNE,QAASA,EACTC,UAAWR,QAIVF,GACHnD,EAAOc,KAAK,CACV4C,KAAMtB,EACNwB,QAAS,GACTC,UAAW,eAIV7D,GAcE8D,EAAoB,SAA2BC,EAAQC,GAChE,IAAKD,EAAOE,YAAYC,QAAUF,EAChC,OAAO,KAGT,IAAIG,EAAaJ,EAAOE,YAAYC,MAAMF,GAE1C,IAAKG,EACH,OAAO,KAGT,IAAK,IAAId,KAAQc,EAAY,CAC3B,IAAIC,EAAYD,EAAWd,GAE3B,GAAIe,EAAUC,SAAWD,EAAUE,UAEjC,OAAOxB,EAAYsB,EAAUE,UAAU,GAAGC,WAAWC,QAIzD,OAAO,MASEC,EAAe,SAAsBrC,GAK9C,YAJc,IAAVA,IACFA,EAAQ,IAGHb,EAAOK,MAAM8C,KAAKtC,EAAMgB,OAAOI,gBAE7BmB,EAAc,SAAqBvC,GAK5C,YAJc,IAAVA,IACFA,EAAQ,IAGHb,EAAOM,KAAK6C,KAAKtC,EAAMgB,OAAOI,gBAE5BoB,EAAkB,SAAyB7B,GACpD,GAAKA,GAAsC,kBAAhBA,EAA3B,CAIA,IAAIC,EAASD,EAAYS,cAAcP,MAAM,KAAK4B,KAAI,SAAUC,GAC9D,OAAO3C,EAAqB2C,EAAE1B,WAG5BM,EAAO,QAGW,IAAlBV,EAAOS,QAAgBgB,EAAazB,EAAO,IAC7CU,EAAO,QACoB,IAAlBV,EAAOS,QAAgBkB,EAAY3B,EAAO,MAEnDU,EAAO,eAIT,IAAIqB,EAAY,MAiBhB,OAdI/B,EAAOgC,OAAM,SAAUF,GACzB,OAAOvD,EAAOC,IAAIkD,KAAKI,MAEvBC,EAAY,MACH/B,EAAOgC,OAAM,SAAUF,GAChC,OAAOvD,EAAOE,KAAKiD,KAAKI,MAExBC,EAAY,OACH/B,EAAOgC,OAAM,SAAUF,GAChC,OAAOvD,EAAOG,IAAIgD,KAAKI,QAEvBC,EAAY,OAGPrB,EAAO,IAAMqB,EAAY,YAAehC,EAAc,MAEpDkC,EAAuB,SAA8BlC,GAK9D,YAJoB,IAAhBA,IACFA,EAAc,IAGT,IAAOmC,aAAe,IAAOA,YAAYC,iBAAmB,IAAOD,YAAYC,gBAAgBP,EAAgB7B,MAAiB,GAE9HqC,EAAqB,SAA4BrC,GAK1D,YAJoB,IAAhBA,IACFA,EAAc,IAGTA,EAAYS,cAAcP,MAAM,KAAK+B,OAAM,SAAU5C,GAC1DA,EAAQA,EAAMgB,OAEd,IAAK,IAAI3C,EAAI,EAAGA,EAAIyB,EAAgBuB,OAAQhD,IAAK,CAC/C,IAAIiD,EAAOxB,EAAgBzB,GAE3B,GAAIc,EAAO,QAAUmC,GAAMgB,KAAKtC,GAC9B,OAAO,EAIX,OAAO,MAGAiD,EAAsB,YACtBC,EAAsB,e,uBC5PjC,IAAIC,EAAM,EAAQ,QAClBjE,EAAQkE,kBAAoBD,EAAIC,kBAChClE,EAAQmE,cAAgBF,EAAIE,cAC5BnE,EAAQoE,UAAY,EAAQ,QAAgBA,W,oCCH5C,IAAIC,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,WAAWC,MAAO,SAAWL,EAAIM,WAAW,GAA1B,aAAmDN,EAAIM,WAAW,GAAK,OAAQ,CAACJ,EAAG,MAAM,CAACK,MAAM,CAAC,GAAK,cAE7MC,EAAkB,GCUP,GACf/C,KAAA,cACAgD,WAAA,GACAC,MAAA,CACAJ,WAAA,CACAxC,KAAA6C,MACAlC,YACA,WAGAmC,SAAA,CACA9C,KAAA+C,OACApC,QAAA,IAEAqC,OAAA,CACAhD,KAAAiD,QACAtC,QAAA,CACAuC,QAAA,IAGAC,mBAAA,CACAnD,KAAAiD,QACAtC,QAAA,CACAuC,QAAA,KAIAlH,OACA,OACAoH,YAAA,CACAC,MAAA,KAAAb,WAAA,GACAc,OAAA,KAAAd,WAAA,GACAnB,UAAA,SACAkC,SAAA,SAGAC,UAAA,EACAC,aAAA,EACAC,WAAA,EACAC,KAAA,KAAAX,OACAY,UAAA,EACAC,YAAA,EACA5F,MAAA,GACA6F,WAAA,CACAC,eAAA,CACAC,gBAAA,SAIAC,OAAA,KAGAC,YACAC,MAAA,CACAC,MAAA,SAAAC,KAGAvB,SAAA,SAAAuB,EAAAC,GACA,KAAAlB,YAAAnF,MAAAoG,EACA,KAAAE,QAEApB,mBAAA,SAAAkB,GACAA,GACA,KAAAG,UAIAC,QAAA,CACAF,OACA,IAAAG,EAAA,KACA,KAAAC,QAAAC,WAAA,KAAA9B,UAAA+B,KAAAC,IACAC,QAAAC,IAAAF,GACAA,EAAAG,MAGAP,EAAAtB,YAAAnF,MAAA6G,EACAJ,EAAAT,OAAA,IAAAiB,SAAAR,EAAAtB,gBAIA+B,MAAAF,QAKAT,QACA,KAAAP,OAAAmB,eAGAC,UACA,KAAAd,SCtGqV,I,wBCQjVe,EAAY,eACd,EACArD,EACAS,GACA,EACA,KACA,WACA,MAIa,OAAA4C,E,iCCnBf,qBASE,SAAUC,EAAQC,GAEV7H,EAAOC,QAAU4H,EAAQD,IAFlC,CAMmB,qBAATE,KAAuBA,KACN,qBAAXC,OAAyBA,OACd,qBAAXH,EAAyBA,EACxCpD,MACC,SAASoD,GACR,aAEAA,EAASA,GAAU,GACnB,IAmEII,EAnEAC,EAAUL,EAAOM,OACjBtJ,EAAU,QAEVuJ,EACE,mEACFC,EAAS,SAASC,GAElB,IADA,IAAIC,EAAI,GACClJ,EAAI,EAAGmJ,EAAIF,EAAIjG,OAAQhD,EAAImJ,EAAGnJ,IAAKkJ,EAAED,EAAIG,OAAOpJ,IAAMA,EAC/D,OAAOkJ,EAHE,CAIXH,GACEM,EAAerD,OAAOqD,aAEtBC,EAAU,SAASjF,GACnB,GAAIA,EAAErB,OAAS,EAAG,CACd,IAAIuG,EAAKlF,EAAEmF,WAAW,GACtB,OAAOD,EAAK,IAAOlF,EACbkF,EAAK,KAASF,EAAa,IAAQE,IAAO,GAC1BF,EAAa,IAAa,GAALE,GACpCF,EAAa,IAASE,IAAO,GAAM,IAChCF,EAAa,IAASE,IAAQ,EAAK,IACnCF,EAAa,IAAsB,GAAbE,GAE5BA,EAAK,MAC0B,MAA5BlF,EAAEmF,WAAW,GAAK,QAClBnF,EAAEmF,WAAW,GAAK,OACzB,OAAQH,EAAa,IAASE,IAAO,GAAM,GACjCF,EAAa,IAASE,IAAO,GAAM,IACnCF,EAAa,IAASE,IAAQ,EAAK,IACnCF,EAAa,IAAsB,GAAbE,IAGpCE,EAAU,gDACVC,EAAO,SAASC,GAChB,OAAOA,EAAE/H,QAAQ6H,EAASH,IAE1BM,EAAY,SAASC,GACrB,IAAIC,EAAS,CAAC,EAAG,EAAG,GAAGD,EAAI7G,OAAS,GACpC+G,EAAMF,EAAIL,WAAW,IAAM,IACnBK,EAAI7G,OAAS,EAAI6G,EAAIL,WAAW,GAAK,IAAM,GAC3CK,EAAI7G,OAAS,EAAI6G,EAAIL,WAAW,GAAK,GAC7CQ,EAAQ,CACJjB,EAASK,OAAQW,IAAQ,IACzBhB,EAASK,OAAQW,IAAQ,GAAM,IAC/BD,GAAU,EAAI,IAAMf,EAASK,OAAQW,IAAQ,EAAK,IAClDD,GAAU,EAAI,IAAMf,EAASK,OAAa,GAANW,IAExC,OAAOC,EAAMC,KAAK,KAElBC,EAAO1B,EAAO0B,MAA8B,mBAAf1B,EAAO0B,KAClC,SAASC,GAAI,OAAO3B,EAAO0B,KAAKC,IAAO,SAASA,GAClD,GAAIA,EAAEtH,MAAM,gBAAiB,MAAM,IAAIuH,WACnC,2CAEJ,OAAOD,EAAEvI,QAAQ,eAAgBgI,IAEjCS,EAAU,SAASV,GACnB,OAAOO,EAAKR,EAAK1D,OAAO2D,MAExBW,EAAY,SAAUC,GACtB,OAAOA,EAAI3I,QAAQ,UAAU,SAAS4I,GAClC,MAAa,KAANA,EAAY,IAAM,OAC1B5I,QAAQ,KAAM,KAEjB6I,EAAS,SAASd,EAAGe,GACrB,OAAOA,EAAUJ,EAAUD,EAAQV,IAAMU,EAAQV,IAEjDgB,EAAY,SAAShB,GAAK,OAAOc,EAAOd,GAAG,IAE3CnB,EAAO9I,aAAYkJ,EAAiB,SAASgC,EAAGF,GAGhD,IADA,IAAIH,EAAM,GACDvK,EAAI,EAAGmJ,EAAIyB,EAAE5H,OAAQhD,EAAImJ,EAAGnJ,GAAK,EAAG,CACzC,IAAI6K,EAAKD,EAAE5K,GAAI8K,EAAKF,EAAE5K,EAAE,GAAI+K,EAAKH,EAAE5K,EAAE,GACjC+J,EAAMc,GAAM,GAAKC,GAAM,EAAIC,EAC/BR,GAAUxB,EAASK,OAAQW,IAAQ,IACzBhB,EAASK,OAAQW,IAAQ,GAAM,KACpB,oBAANe,EACL/B,EAASK,OAAQW,IAAS,EAAK,IAAM,MAC1B,oBAANgB,EACLhC,EAASK,OAAsB,GAAdW,GAAoB,KAEnD,OAAOW,EAAUJ,EAAUC,GAAOA,IAGtC,IA0DIS,EA1DAC,EAAU,8EACVC,EAAU,SAASC,GACnB,OAAOA,EAAKnI,QACZ,KAAK,EACD,IAAIoI,GAAO,EAAOD,EAAK3B,WAAW,KAAO,IAC9B,GAAO2B,EAAK3B,WAAW,KAAO,IAC9B,GAAO2B,EAAK3B,WAAW,KAAQ,EAC/B,GAAO2B,EAAK3B,WAAW,GAClC6B,EAASD,EAAK,MACd,OAAQ/B,EAAgC,OAAlBgC,IAAY,KACxBhC,EAAgC,OAAT,KAATgC,IAC5B,KAAK,EACD,OAAOhC,GACD,GAAO8B,EAAK3B,WAAW,KAAO,IACxB,GAAO2B,EAAK3B,WAAW,KAAO,EAC9B,GAAO2B,EAAK3B,WAAW,IAEvC,QACI,OAAQH,GACF,GAAO8B,EAAK3B,WAAW,KAAO,EACxB,GAAO2B,EAAK3B,WAAW,MAIvC8B,EAAO,SAASnB,GAChB,OAAOA,EAAEvI,QAAQqJ,EAASC,IAE1BK,EAAY,SAASJ,GACrB,IAAIK,EAAML,EAAKnI,OACf8G,EAAS0B,EAAM,EACfC,GAAKD,EAAM,EAAIxC,EAAOmC,EAAK/B,OAAO,KAAO,GAAK,IACvCoC,EAAM,EAAIxC,EAAOmC,EAAK/B,OAAO,KAAO,GAAK,IACzCoC,EAAM,EAAIxC,EAAOmC,EAAK/B,OAAO,KAAQ,EAAI,IACzCoC,EAAM,EAAIxC,EAAOmC,EAAK/B,OAAO,IAAY,GAChDY,EAAQ,CACJX,EAAcoC,IAAM,IACpBpC,EAAcoC,IAAO,EAAK,KAC1BpC,EAA0B,IAAZoC,IAGlB,OADAzB,EAAMhH,QAAU,CAAC,EAAG,EAAG,EAAG,GAAG8G,GACtBE,EAAMC,KAAK,KAElByB,EAAQlD,EAAOmD,MAA8B,mBAAfnD,EAAOmD,KACnC,SAASf,GAAI,OAAOpC,EAAOmD,KAAKf,IAAO,SAASA,GAClD,OAAOA,EAAEhJ,QAAQ,WAAY2J,IAE7BI,EAAO,SAASf,GAChB,OAAOc,EAAM1F,OAAO4E,GAAGhJ,QAAQ,oBAAqB,MAEpDgK,EAAU,SAAShB,GAAK,OAAOU,EAAKI,EAAMd,KAC1CiB,EAAW,SAASjB,GACpB,OAAO5E,OAAO4E,GAAGhJ,QAAQ,SAAS,SAAS4I,GACvC,MAAa,KAANA,EAAY,IAAM,OAC1B5I,QAAQ,oBAAqB,KAEhCkK,EAAS,SAASlB,GAClB,OAAOgB,EAAQC,EAASjB,KAGxBpC,EAAO9I,aAAYsL,EAAe,SAASJ,GAC3C,OAAOlL,WAAWqM,KAAKJ,EAAKE,EAASjB,KAAK,SAASvG,GAC/C,OAAOA,EAAEmF,WAAW,QAG5B,IAAIwC,EAAa,WACb,IAAIlD,EAASN,EAAOM,OAEpB,OADAN,EAAOM,OAASD,EACTC,GAmBX,GAhBAN,EAAOM,OAAS,CACZmD,QAASzM,EACTmM,KAAMA,EACNzB,KAAMA,EACNgC,WAAYJ,EACZK,SAAU1B,EACVf,KAAMA,EACNe,OAAQA,EACRE,UAAWA,EACXW,KAAMA,EACNQ,OAAQA,EACRE,WAAYA,EACZpD,eAAgBA,EAChBoC,aAAcA,GAGmB,oBAA1BoB,OAAOC,eAA+B,CAC7C,IAAIC,EAAS,SAASC,GAClB,MAAO,CAACC,MAAMD,EAAEE,YAAW,EAAMC,UAAS,EAAKC,cAAa,IAEhEnE,EAAOM,OAAO8D,aAAe,WACzBR,OAAOC,eACHrG,OAAO6G,UAAW,aAAcP,GAAO,WACnC,OAAOR,EAAO1G,UAEtBgH,OAAOC,eACHrG,OAAO6G,UAAW,WAAYP,GAAO,SAAU5B,GAC3C,OAAOD,EAAOrF,KAAMsF,OAE5B0B,OAAOC,eACHrG,OAAO6G,UAAW,cAAeP,GAAO,WACpC,OAAO7B,EAAOrF,MAAM,QAoBpC,OAbIoD,EAAO,YACPM,OAASN,EAAOM,QAIiBlI,EAAOC,QACxCD,EAAOC,QAAQiI,OAASN,EAAOM,QAI/B,EAAO,GAAI,EAAF,WAAc,OAAON,EAAOM,QAAQ,sCAG1C,CAACA,OAAQN,EAAOM,a,8CC/M3B,IAAIH,EAAS,EAAQ,SAEjBmE,EAAQlM,EAAOC,QAAU,CAC3BkM,OAAQ,EAAQ,QAChBC,OAAQ,EAAQ,QAChBC,UAAW,EAAQ,SAGrBtE,EAAOmE,MAAQA,EACfnE,EAAOoE,OAASD,EAAMC,OAEtB,IAAIG,EAAUJ,EAAME,OAChBG,EAAaL,EAAMG,UACnBG,EAAezE,EAAOqE,OACtBK,EAAkB1E,EAAOsE,UAE7BH,EAAMQ,KAAO,WACX3E,EAAOqE,OAASE,EAChBvE,EAAOsE,UAAYE,GAGrBL,EAAMS,QAAU,WACd5E,EAAOqE,OAASI,EAChBzE,EAAOsE,UAAYI,GAGhB1E,EAAOqE,QACVF,EAAMQ,Q,oCChDR,kDACIE,EAAM,eAAQ,CAAC,GAAM,GAAM,KACpBC,EAAa,SAAoBC,EAAOrC,QAClC,IAAXA,IACFA,EAAS,GAGXqC,EAAQ,eAAQA,GAChB,IAAIjO,EAAQiO,EAAMrC,EAAS,GACvBsC,EAAaD,EAAMrC,EAAS,IAAM,GAAKqC,EAAMrC,EAAS,IAAM,GAAKqC,EAAMrC,EAAS,IAAM,EAAIqC,EAAMrC,EAAS,GACzGuC,GAAyB,GAARnO,IAAe,EAEpC,OAAImO,EACKD,EAAa,GAGfA,EAAa,IAEXE,EAAe,SAASA,EAAaH,EAAOrC,GAOrD,YANe,IAAXA,IACFA,EAAS,GAGXqC,EAAQ,eAAQA,GAEZA,EAAM1K,OAASqI,EAAS,KAAO,eAAWqC,EAAOF,EAAK,CACxDnC,OAAQA,IAEDA,GAGTA,GAAUoC,EAAWC,EAAOrC,GAIrBwC,EAAaH,EAAOrC,M,kCCjC7B,IAAI1C,EAAS,EAAQ,SAEjBmF,EAAW,EAAQ,QAEnBC,EAAa,EAAQ,QAEzBC,EAAUC,YAAc,EAAQ;;;;;;;;AAShC,IAAIC,EAAe,SAAsBC,GACvC,IAAI5O,EAAS,GAEb,OAAK4O,GAILA,EAAQxL,OAAOH,MAAM,MAAMC,SAAQ,SAAU2L,GAC3C,IAAI/G,EAAQ+G,EAAIC,QAAQ,KACpBC,EAAMF,EAAIjM,MAAM,EAAGkF,GAAO1E,OAAOI,cACjCyJ,EAAQ4B,EAAIjM,MAAMkF,EAAQ,GAAG1E,OAEN,qBAAhBpD,EAAO+O,GAChB/O,EAAO+O,GAAO9B,EACL1G,MAAMyI,QAAQhP,EAAO+O,IAC9B/O,EAAO+O,GAAKjO,KAAKmM,GAEjBjN,EAAO+O,GAAO,CAAC/O,EAAO+O,GAAM9B,MAGzBjN,GAhBEA,GAgCX,SAASiP,EAAaC,EAAOC,GAC3B,IAAK,IAAI1O,EAAI,EAAGA,EAAIyO,EAAMzL,OAAQhD,IAChC0O,EAASD,EAAMzO,IAInB,SAAS2O,EAAQC,GACf,IAAK,IAAI5O,KAAK4O,EACZ,GAAIA,EAAIC,eAAe7O,GAAI,OAAO,EAGpC,OAAO,EAGT,SAAS8O,EAAWC,EAAKC,EAASC,GAChC,IAAIC,EAASH,EAiBb,OAfIhB,EAAWiB,IACbC,EAAWD,EAEQ,kBAARD,IACTG,EAAS,CACPH,IAAKA,KAITG,EAASpB,EAAS,GAAIkB,EAAS,CAC7BD,IAAKA,IAITG,EAAOD,SAAWA,EACXC,EAGT,SAASlB,EAAUe,EAAKC,EAASC,GAE/B,OADAD,EAAUF,EAAWC,EAAKC,EAASC,GAC5BE,EAAWH,GAGpB,SAASG,EAAWH,GAClB,GAAgC,qBAArBA,EAAQC,SACjB,MAAM,IAAIG,MAAM,6BAGlB,IAAIC,GAAS,EAETJ,EAAW,SAAgB/G,EAAKoH,EAAUC,GACvCF,IACHA,GAAS,EACTL,EAAQC,SAAS/G,EAAKoH,EAAUC,KAIpC,SAASC,IACgB,IAAnBC,EAAIC,YACNC,WAAWC,EAAU,GAIzB,SAASC,IAEP,IAAIN,OAAOO,EAQX,GALEP,EADEE,EAAIH,SACCG,EAAIH,SAEJG,EAAIM,cAAgBC,EAAOP,GAGhCQ,EACF,IACEV,EAAOW,KAAKC,MAAMZ,GAClB,MAAOa,IAGX,OAAOb,EAGT,SAASc,EAAUC,GAQjB,OAPAC,aAAaC,GAEPF,aAAelB,QACnBkB,EAAM,IAAIlB,MAAM,IAAMkB,GAAO,kCAG/BA,EAAIG,WAAa,EACVxB,EAASqB,EAAKI,GAIvB,SAASd,IACP,IAAIe,EAAJ,CACA,IAAIC,EACJL,aAAaC,GAIXI,EAFE5B,EAAQ6B,aAAyBf,IAAfL,EAAImB,OAEf,IAEe,OAAfnB,EAAImB,OAAkB,IAAMnB,EAAImB,OAG3C,IAAItB,EAAWoB,EACXxI,EAAM,KAoBV,OAlBe,IAAX0I,GACFtB,EAAW,CACTC,KAAMM,IACNY,WAAYG,EACZE,OAAQA,EACR3C,QAAS,GACT4C,IAAKhC,EACLiC,WAAYvB,GAGVA,EAAIwB,wBAEN3B,EAASnB,QAAUD,EAAauB,EAAIwB,2BAGtC/I,EAAM,IAAIkH,MAAM,iCAGXH,EAAS/G,EAAKoH,EAAUA,EAASC,OAG1C,IAUIjB,EACAqC,EAXAlB,EAAMT,EAAQS,KAAO,KAEpBA,IAEDA,EADET,EAAQkC,MAAQlC,EAAQ6B,OACpB,IAAI7C,EAAUmD,eAEd,IAAInD,EAAUoD,gBAMxB,IAMIZ,EANAzB,EAAMU,EAAIsB,IAAM/B,EAAQD,KAAOC,EAAQ+B,IACvCD,EAASrB,EAAIqB,OAAS9B,EAAQ8B,QAAU,MACxCvB,EAAOP,EAAQO,MAAQP,EAAQ/P,KAC/BkP,EAAUsB,EAAItB,QAAUa,EAAQb,SAAW,GAC3CkD,IAASrC,EAAQqC,KACjBpB,GAAS,EAETS,EAAkB,CACpBnB,UAAMO,EACN3B,QAAS,GACTsC,WAAY,EACZK,OAAQA,EACRC,IAAKhC,EACLiC,WAAYvB,GA+Cd,GA5CI,SAAUT,IAA4B,IAAjBA,EAAQsC,OAC/BrB,GAAS,EACT9B,EAAQ,WAAaA,EAAQ,YAAcA,EAAQ,UAAY,oBAEhD,QAAX2C,GAA+B,SAAXA,IACtB3C,EAAQ,iBAAmBA,EAAQ,kBAAoBA,EAAQ,gBAAkB,oBAEjFoB,EAAOW,KAAKqB,WAA2B,IAAjBvC,EAAQsC,KAAgB/B,EAAOP,EAAQsC,QAIjE7B,EAAI+B,mBAAqBhC,EACzBC,EAAIgC,OAAS7B,EACbH,EAAIiC,QAAUrB,EAEdZ,EAAIkC,WAAa,aAGjBlC,EAAImC,QAAU,WACZjB,GAAU,GAGZlB,EAAIoC,UAAYxB,EAChBZ,EAAIqC,KAAKhB,EAAQ/B,GAAMsC,EAAMrC,EAAQ+C,SAAU/C,EAAQgD,UAElDX,IACH5B,EAAIwC,kBAAoBjD,EAAQiD,kBAM7BZ,GAAQrC,EAAQkD,QAAU,IAC7B1B,EAAeb,YAAW,WACxB,IAAIgB,EAAJ,CACAA,GAAU,EAEVlB,EAAI0C,MAAM,WACV,IAAI/B,EAAI,IAAIhB,MAAM,0BAClBgB,EAAEgC,KAAO,YACT/B,EAAUD,MACTpB,EAAQkD,UAGTzC,EAAI4C,iBACN,IAAK/D,KAAOH,EACNA,EAAQU,eAAeP,IACzBmB,EAAI4C,iBAAiB/D,EAAKH,EAAQG,SAGjC,GAAIU,EAAQb,UAAYQ,EAAQK,EAAQb,SAC7C,MAAM,IAAIiB,MAAM,qDAelB,MAZI,iBAAkBJ,IACpBS,EAAI6C,aAAetD,EAAQsD,cAGzB,eAAgBtD,GAAyC,oBAAvBA,EAAQuD,YAC5CvD,EAAQuD,WAAW9C,GAMrBA,EAAI+C,KAAKjD,GAAQ,MACVE,EAGT,SAASO,EAAOP,GAGd,IACE,GAAyB,aAArBA,EAAI6C,aACN,OAAO7C,EAAIgD,YAGb,IAAIC,EAAwBjD,EAAIgD,aAA4D,gBAA7ChD,EAAIgD,YAAYE,gBAAgBC,SAE/E,GAAyB,KAArBnD,EAAI6C,eAAwBI,EAC9B,OAAOjD,EAAIgD,YAEb,MAAOrC,IAET,OAAO,KAGT,SAASyC,KA/PTjS,EAAOC,QAAUmN,EAEjBpN,EAAOC,QAAQ+C,QAAUoK,EACzBA,EAAUoD,eAAiBzI,EAAOyI,gBAAkByB,EACpD7E,EAAUmD,eAAiB,oBAAqB,IAAInD,EAAUoD,eAAmBpD,EAAUoD,eAAiBzI,EAAOwI,eACnH3C,EAAa,CAAC,MAAO,MAAO,OAAQ,QAAS,OAAQ,WAAW,SAAUsC,GACxE9C,EAAqB,WAAX8C,EAAsB,MAAQA,GAAU,SAAU/B,EAAKC,EAASC,GAGxE,OAFAD,EAAUF,EAAWC,EAAKC,EAASC,GACnCD,EAAQ8B,OAASA,EAAOgC,cACjB3D,EAAWH,Q,qBCjDtB,SAAS+D,EAAgBC,GAIvB,OAHApS,EAAOC,QAAUkS,EAAkB3G,OAAO6G,eAAiB7G,OAAO8G,eAAeC,OAAS,SAAyBH,GACjH,OAAOA,EAAEI,WAAahH,OAAO8G,eAAeF,IAC3CpS,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,QACjEkS,EAAgBC,GAEzBpS,EAAOC,QAAUkS,EAAiBnS,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,S,uBCNvG,SAASyS,EAAuB5K,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI6K,eAAe,6DAE3B,OAAO7K,E,UAET9H,EAAOC,QAAUyS,EAAwB1S,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,S,qBCN9G,SAAS2S,EAAgBR,EAAGS,GAK1B,OAJA7S,EAAOC,QAAU2S,EAAkBpH,OAAO6G,eAAiB7G,OAAO6G,eAAeE,OAAS,SAAyBH,EAAGS,GAEpH,OADAT,EAAEI,UAAYK,EACPT,GACNpS,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,QACjE2S,EAAgBR,EAAGS,GAE5B7S,EAAOC,QAAU2S,EAAiB5S,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,S,yCCPvG,IAAIoS,EAAiBS,EAAQ,QAC7B,SAASC,EAAeC,EAAUC,GAChCD,EAAS/G,UAAYT,OAAO0H,OAAOD,EAAWhH,WAC9C+G,EAAS/G,UAAUkH,YAAcH,EACjCX,EAAeW,EAAUC,GAE3BjT,EAAOC,QAAU8S,EAAgB/S,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,S,oCCNtG,+CAEImT,EAAmB,qBAEnBC,EAAa,SAAoBC,EAASC,GAE5C,GAAI,YAAYlQ,KAAKkQ,GACnB,OAAOA,EAIL,SAASlQ,KAAKiQ,KAChBA,EAAU,IAAOE,UAAY,IAAOA,SAASC,MAAQ,IAKvD,IAAIC,EAAkC,oBAAf,IAAOC,IAC1BC,EAAe,QAAQvQ,KAAKiQ,GAG5BO,GAAkB,IAAOL,WAAa,QAAQnQ,KAAKiQ,GAQvD,GANII,EACFJ,EAAU,IAAI,IAAOK,IAAIL,EAAS,IAAOE,UAAYJ,GAC3C,QAAQ/P,KAAKiQ,KACvBA,EAAU,IAAWQ,iBAAiB,IAAON,UAAY,IAAOA,SAASC,MAAQ,GAAIH,IAGnFI,EAAW,CACb,IAAIK,EAAS,IAAIJ,IAAIJ,EAAaD,GAIlC,OAAIO,EACKE,EAAON,KAAKlS,MAAM6R,EAAiBhR,QACjCwR,EACFG,EAAON,KAAKlS,MAAMwS,EAAOC,SAAS5R,QAGpC2R,EAAON,KAGhB,OAAO,IAAWK,iBAAiBR,EAASC,IAG/B,U,qBCxCf,IAEEU,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAPAC,EAAmB,IASrBP,EAAmB,SAASQ,GAC1B,OAAOA,EAAUD,GAGnBN,EAAmB,SAASO,EAASC,GACnC,OAAOD,EAAUC,GAGnBP,EAAmB,SAASQ,GAC1B,OAAOA,EAAYH,GAGrBJ,EAAmB,SAASO,EAAWD,GACrC,OAAOC,EAAYD,GAGrBL,EAAmB,SAASM,EAAWD,GACrC,OAAOT,EAAiBG,EAAiBO,EAAWD,KAGtDJ,EAAmB,SAASK,EAAWD,GACrC,OAAOR,EAAiBC,EAAiBQ,GAAYD,IAOvDH,EAAsB,SAASI,EAAWC,EAAkBC,GAC1D,OAAOV,EAAiBU,EAAyBF,EAAYA,EAAYC,IAG3E5U,EAAOC,QAAU,CACfuU,iBAAkBA,EAClBP,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,oBAAqBA,I,uBCxDvB,SAASO,IACP,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EACxC,IAEE,OADA5P,QAAQ2G,UAAUkJ,QAAQC,KAAKL,QAAQC,UAAU1P,QAAS,IAAI,iBACvD,EACP,MAAOkK,GACP,OAAO,G,UAGXxP,EAAOC,QAAU6U,EAA2B9U,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,S,kNCAtGoV,EAAoB,SAA2B3S,EAAQ4S,EAAQjH,GACxEiH,EAAOzT,SAAQ,SAAUW,GACvB,IAAK,IAAI+S,KAAY7S,EAAOE,YAAYJ,GACtC,IAAK,IAAIgT,KAAY9S,EAAOE,YAAYJ,GAAW+S,GAAW,CAC5D,IAAIE,EAAkB/S,EAAOE,YAAYJ,GAAW+S,GAAUC,GAC9DnH,EAASoH,EAAiBjT,EAAW+S,EAAUC,Q,wBCPnDE,EAAW,SAAkB1H,GAC/B,QAASA,GAAsB,kBAARA,GAGrB2H,EAAQ,SAASA,IACnB,IAAK,IAAIC,EAAOC,UAAUzT,OAAQ0T,EAAU,IAAI5Q,MAAM0Q,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAClFD,EAAQC,GAAQF,UAAUE,GAG5B,OAAOD,EAAQE,QAAO,SAAUrX,EAAQsX,GACtC,MAAsB,kBAAXA,GAIXzK,OAAO0K,KAAKD,GAAQpU,SAAQ,SAAU6L,GAChCxI,MAAMyI,QAAQhP,EAAO+O,KAASxI,MAAMyI,QAAQsI,EAAOvI,IACrD/O,EAAO+O,GAAO/O,EAAO+O,GAAKyI,OAAOF,EAAOvI,IAC/BgI,EAAS/W,EAAO+O,KAASgI,EAASO,EAAOvI,IAClD/O,EAAO+O,GAAOiI,EAAMhX,EAAO+O,GAAMuI,EAAOvI,IAExC/O,EAAO+O,GAAOuI,EAAOvI,MAThB/O,IAaR,KAEDyX,EAAS,SAAgBhE,GAC3B,OAAO5G,OAAO0K,KAAK9D,GAAG5O,KAAI,SAAU6S,GAClC,OAAOjE,EAAEiE,OAIT,EAAQ,SAAeC,EAAOC,GAGhC,IAFA,IAAI5X,EAAS,GAEJS,EAAIkX,EAAOlX,EAAImX,EAAKnX,IAC3BT,EAAOc,KAAKL,GAGd,OAAOT,GAEL6X,EAAU,SAAiBC,GAC7B,OAAOA,EAAMT,QAAO,SAAUU,EAAGC,GAC/B,OAAOD,EAAEP,OAAOQ,KACf,KAEDxL,EAAO,SAAcyL,GACvB,IAAKA,EAAKxU,OACR,MAAO,GAKT,IAFA,IAAIzD,EAAS,GAEJS,EAAI,EAAGA,EAAIwX,EAAKxU,OAAQhD,IAC/BT,EAAOc,KAAKmX,EAAKxX,IAGnB,OAAOT,GAELkY,EAAc,SAAqBtO,EAAGmF,GACxC,OAAOnF,EAAEyN,QAAO,SAAUhM,EAAGwF,EAAGpQ,GAK9B,OAJIoQ,EAAE9B,IACJ1D,EAAEvK,KAAKL,GAGF4K,IACN,KAaD8M,EAAY,SAAmBF,EAAMG,GACvC,IAAK,IAAI3X,EAAI,EAAGA,EAAIwX,EAAKxU,OAAQhD,IAC/B,GAAI2X,EAAiBH,EAAKxX,IACxB,OAAOA,EAIX,OAAQ,GAWN4X,EAAQ,SAAeP,EAAOQ,GAChC,OAAOb,EAAOK,EAAMT,QAAO,SAAUkB,EAAKN,GAIxC,OAHAA,EAAK/U,SAAQ,SAAUsV,GACrBD,EAAID,EAAYE,IAAOA,KAElBD,IACN,MAGDE,EAAS,CACXC,yBAA0B,2BAC1BC,oBAAqB,sBACrBC,iBAAkB,mBAClBC,YAAa,cACbC,4BAA6B,8BAC7BC,yBAA0B,2BAC1BC,8BAA+B,iCA6B7B,EAAmB,SAA0BC,GAC/C,IAAIC,EAAeD,EAAKtE,QACpBA,OAA2B,IAAjBuE,EAA0B,GAAKA,EACzCC,EAAcF,EAAK3B,OACnBA,OAAyB,IAAhB6B,EAAyB,GAAKA,EACvCC,EAAaH,EAAKI,MAClBA,OAAuB,IAAfD,EAAwB,GAAKA,EACrCE,EAAkBL,EAAKM,WACvBA,OAAiC,IAApBD,EAA6B,GAAKA,EAC/CE,EAAU,CACZhK,IAAK8H,EACLmC,YAAa,eAAW9E,GAAW,GAAI2C,IAGzC,GAAI+B,GAASE,EAAY,CACvB,IAcI9V,EAdAiW,EAAWL,GAAgBE,EAC3BI,EAASD,EAASzW,MAAM,KAExB2W,EAAa,IAAOC,OAAS,IAAOA,OAAOF,EAAO,IAAMG,SAASH,EAAO,GAAI,IAC5EI,EAAW,IAAOF,OAAS,IAAOA,OAAOF,EAAO,IAAMG,SAASH,EAAO,GAAI,IAE1EC,EAAalX,OAAOsX,kBAA0C,kBAAfJ,IACjDA,EAAalX,OAAOkX,IAGlBG,EAAWrX,OAAOsX,kBAAwC,kBAAbD,IAC/CA,EAAWrX,OAAOqX,IAMlBtW,EADsB,kBAAbsW,GAA+C,kBAAfH,EAChC,IAAOC,OAAOE,GAAY,IAAOF,OAAOD,GAAc,IAAOC,OAAO,GAEpEE,EAAWH,EAAa,EAGb,kBAAXnW,GAAuBA,EAASf,OAAOsX,mBAChDvW,EAASf,OAAOe,IAKlB+V,EAAQS,UAAY,CAClBxW,OAAQA,EACRqI,OAAQ8N,GAIZ,OAAOJ,GAEL,EAAoB,SAA2BS,GAGjD,IAAIF,EAQJ,OALEA,EAD8B,kBAArBE,EAAUnO,QAAmD,kBAArBmO,EAAUxW,OAChD,IAAOoW,OAAOI,EAAUnO,QAAU,IAAO+N,OAAOI,EAAUxW,QAAU,IAAOoW,OAAO,GAElFI,EAAUnO,OAASmO,EAAUxW,OAAS,EAG5CwW,EAAUnO,OAAS,IAAMiO,GAc9BG,EAAiB,SAAwBC,GAK3C,OAJIA,GAAkC,kBAAdA,IACtBA,EAAYL,SAASK,EAAW,KAG9BC,MAAMD,GACD,KAGFA,GAQLE,EAAe,CASjBC,OAAQ,SAAiB/V,GACvB,IAAIgW,EAAWhW,EAAWgW,SACtBC,EAAwBjW,EAAW/D,UACnCA,OAAsC,IAA1Bga,EAAmC,EAAIA,EACnDC,EAAiBlW,EAAWkW,eAC5BC,EAAiBnW,EAAWmW,eAC5BP,EAAYD,EAAe3V,EAAW4V,WACtCQ,EAAkBJ,EAAW/Z,EAEjC,MAAyB,kBAAd2Z,EACF,CACLxC,MAAO,EACPC,IAAKuC,GAIqB,kBAAnBO,EACF,CACL/C,MAAO,EACPC,IAAK8C,EAAiBC,GAInB,CACLhD,MAAO,EACPC,IAAK6C,EAAiBE,IAY1BC,QAAS,SAAiBrW,GACxB,IAAIsW,EAAMtW,EAAWsW,IACjBC,EAAevW,EAAWuW,aAC1BC,EAAwBxW,EAAWwW,sBACnCC,EAAyBzW,EAAW/D,UACpCA,OAAuC,IAA3Bwa,EAAoC,EAAIA,EACpDT,EAAWhW,EAAWgW,SACtBU,EAAwB1W,EAAW2W,YACnCA,OAAwC,IAA1BD,EAAmC,EAAIA,EACrDE,EAAwB5W,EAAW6W,oBACnCA,OAAgD,IAA1BD,EAAmC,EAAIA,EAC7DE,EAAwB9W,EAAW+W,qBACnCA,OAAiD,IAA1BD,EAAmCE,IAAWF,EACrElB,EAAYD,EAAe3V,EAAW4V,WAGtCqB,GAAOX,EAAMC,GAAgB,IAG7BW,EAAgBV,EAAwBG,EAExCQ,EAAcF,EAAMJ,EACpBV,EAAiBgB,EAAcD,EAC/BE,EAAeC,KAAKC,KAAKnB,EAAiBla,EAAY+Z,GACtDuB,EAAiBF,KAAKG,OAAOP,EAAMC,EAAgBH,GAAwB9a,EAAY+Z,GACvFyB,EAAeJ,KAAKG,OAAOP,EAAMC,GAAiBjb,EAAY+Z,GAClE,MAAO,CACL5C,MAAOiE,KAAKK,IAAI,EAAGH,GACnBlE,IAA0B,kBAAduC,EAAyBA,EAAYyB,KAAKM,IAAIP,EAAcK,MA4B1EG,EAAa,SAAoB5X,GACnC,OAAO,SAAU6X,GACf,IAAI7B,EAAWhW,EAAWgW,SACtB8B,EAAyB9X,EAAW/D,UACpCA,OAAuC,IAA3B6b,EAAoC,EAAIA,EACpDnB,EAAc3W,EAAW2W,YACzBoB,EAAwB/X,EAAWgY,YACnCA,OAAwC,IAA1BD,EAAmC,EAAIA,EACzD,MAAO,CACLF,OAAQG,EAAcH,EACtB7B,SAAUA,EAAW/Z,EACrBgc,SAAUtB,EACVuB,KAAML,EAAS7B,KAejBmC,EAAkB,SAAyBnY,GAC7C,IAAIb,EAAOa,EAAWb,KAClB6W,EAAWhW,EAAWgW,SACtBoC,EAAyBpY,EAAW/D,UACpCA,OAAuC,IAA3Bmc,EAAoC,EAAIA,EACpDjC,EAAiBnW,EAAWmW,eAC5BD,EAAiBlW,EAAWkW,eAE5BmC,EAAqBvC,EAAa3W,GAAMa,GACxCoT,EAAQiF,EAAmBjF,MAC3BC,EAAMgF,EAAmBhF,IAEzBiF,EAAW,EAAMlF,EAAOC,GAAK/S,IAAIsX,EAAW5X,IAEhD,GAAa,WAATb,EAAmB,CACrB,IAAIoE,EAAQ+U,EAASpZ,OAAS,EAE1BqZ,EAA4C,kBAAnBpC,EAA8BA,EAAiBD,EAE5EoC,EAAS/U,GAAOyS,SAAWuC,EAAkBvC,EAAW/Z,EAAYsH,EAGtE,OAAO+U,GAcLE,EAAmB,SAA0BxY,GAC/C,IAAIoQ,EAAUpQ,EAAWoQ,QACrBqI,EAAwBzY,EAAW0Y,eACnCA,OAA2C,IAA1BD,EAAmC,GAAKA,EACzDvC,EAAiBlW,EAAWkW,eAC5ByC,EAAwB3Y,EAAWgV,WACnCA,OAAuC,IAA1B2D,EAAmC,GAAKA,EACrDhC,EAAc3W,EAAW2W,YACzBiC,EAAmB5Y,EAAW4Y,iBAC9BC,EAAqB7Y,EAAW6X,OAChCA,OAAgC,IAAvBgB,EAAgC,EAAIA,EAC7C7C,EAAWhW,EAAWgW,SAE1B,IAAK5F,EACH,MAAM,IAAI9E,MAAM4I,EAAOI,aAGzB,IAAIwE,EAAc,EAAiB,CACjC1I,QAASA,EACT2C,OAAQ2F,EAAeK,UACvBjE,MAAO4D,EAAe5D,QAEpBG,EAAU,EAAiB,CAC7B7E,QAASA,EACT2C,OAAQ3C,EACR4E,WAAYA,IAKd,GAHAC,EAAQ3U,IAAMwY,EAGV9C,EAAU,CACZ,IAAIgD,EAAkBb,EAAgBnY,GAElCgZ,EAAgB9Z,SAClB+V,EAAQe,SAAWgD,EAAgB,GAAGhD,SACtCf,EAAQgD,SAAWe,EAAgB,GAAGf,eAE/B/B,IACTjB,EAAQe,SAAWE,EACnBjB,EAAQgD,SAAWtB,GASrB,OAFA1B,EAAQ2D,iBAAmBA,GAAoBjC,EAC/C1B,EAAQ4C,OAASA,EACV,CAAC5C,IAcNgE,EAA8B,SAAmCC,EAAUC,EAAM/I,GAEnF,IAmBIgJ,EAnBAN,EAAcI,EAASC,KAAK7Y,IAAM4Y,EAASC,KAAK7Y,IAAM,KAEtD4V,EAAiBgD,EAASC,KAAKnD,SAE/BiC,EAAWiB,EAASjB,UAAY,EAChCoB,EAAgBH,EAASC,KAAKzD,UAC9B4D,EAAUD,EAAc9R,OAAS8R,EAAcna,OAE/CjD,EAAYkd,EAAKld,UAEjBsd,EAAkBJ,EAAKrd,WAAW0d,QAAO,SAAUC,GACrD,OAA2B,IAApBA,EAAEjd,iBAEP8b,EAAW,GACXnZ,EAAO+Z,EAASQ,QAAU,SAAW,UACrC/C,EAAcuC,EAASC,KAAKlB,SAC5BW,EAAmBjC,EACnBkB,EAASqB,EAASS,eAAiB,EAKrCP,EAD8B,kBAArBD,EAAK/c,YACD,IAAOkZ,OAAOgE,GAAWH,EAAK/c,YAE9Bkd,EAAUH,EAAK/c,YAG9B,IAAK,IAAIF,EAAI,EAAGA,EAAIqd,EAAgBra,OAAQhD,IAAK,CAC/C,IAAI0d,EAAYT,EAAKrd,WAAWI,GAE5B2d,EAAOD,EAAUnd,eAGjBuZ,EAAW4D,EAAUld,mBAErBod,OAAW,EAGbA,EADwB,kBAAfV,EACEA,EAAa,IAAO9D,OAAOuE,GAAQ,IAAOvE,OAAO,GAEjD8D,EAAaS,EAAO,EAGjC,IAAI7E,EAAaoE,EAAa,IAAMU,EAChC9Z,EAAa,CACfoQ,QAASA,EACTnU,UAAWA,EACXgc,SAAUA,EACVtB,YAAaA,EACbiC,iBAAkBA,EAClBf,OAAQA,EACR7B,SAAUA,EACVE,eAAgBA,EAChBlB,WAAYA,EACZ7V,KAAMA,GAEJ8V,EAAUuD,EAAiBxY,GAAY,GAEvC8Y,IACF7D,EAAQ3U,IAAMwY,GAGhBR,EAAS/b,KAAK0Y,GAGZmE,GADwB,kBAAfA,EACK,IAAO9D,OAAOuE,GAEdA,EAGhBjB,GAAoB5C,EAAW/Z,EAC/B4b,IAIF,OADAqB,EAASZ,SAAWA,EACbY,GAGLa,EAAwB,CAAC,QAAS,aAElCC,EAAa,EAAI,GASjBC,EAA0B,SAAiCC,GAC7D,OAAOpG,EAAMoG,GAAgB,SAAUxF,GACrC,IAAIuD,EAAWvD,EAAKuD,SACpB,OAAOA,KACNkC,MAAK,SAAUrT,EAAGT,GACnB,OAAOS,EAAEmR,SAAW5R,EAAE4R,SAAW,GAAK,MAYtCmC,EAAuB,SAA8Bra,EAAWjB,GAClE,IAAK,IAAI5C,EAAI,EAAGA,EAAI6D,EAAUb,OAAQhD,IACpC,GAAI6D,EAAU7D,GAAG8D,WAAWqa,OAASvb,EACnC,OAAOiB,EAAU7D,GAIrB,OAAO,MAUL,EAAyB,SAAgCoe,GAC3D,IAAIC,EAAsB,GAI1B,OAHApI,EAAkBmI,EAAUP,GAAuB,SAAUS,EAAYrb,EAAMsb,EAAOC,GACpFH,EAAsBA,EAAoBtH,OAAOuH,EAAWza,WAAa,OAEpEwa,GAULI,EAAiC,SAAwCC,GAC3E,IAAI1B,EAAW0B,EAAM1B,SACjBS,EAAgBiB,EAAMjB,cAC1BT,EAASS,cAAgBA,EACzBT,EAASZ,SAAS3Z,SAAQ,SAAUsW,EAAS1R,GAC3C0R,EAAQ4C,OAASqB,EAASS,cAAgBpW,MAkB1CsX,EAAwB,SAA+BC,GACzD,IAAIC,EAAeD,EAAMC,aACrBC,EAAeF,EAAME,aACrBd,EAAiBY,EAAMZ,eAC3Bc,EAAarc,SAAQ,SAAUua,GAC7BA,EAAS+B,sBAAwBrH,EAAUsG,GAAgB,SAAUgB,GACnE,IAAIjD,EAAWiD,EAAMjD,SACrB,OAAOA,IAAaiB,EAASjB,YAM/B,IAAIkD,EAAcf,EAAqBW,EAAc7B,EAASlZ,WAAWqa,MAEzE,GAAKc,IAgBDjC,EAASC,KAAb,CAMA,IAAIiC,EAAkBlC,EAASZ,SAAS,GACpC+C,EAA0BzH,EAAUuH,EAAY7C,UAAU,SAAUgD,GACtE,OAAOjE,KAAKkE,IAAID,EAAW1C,iBAAmBwC,EAAgBxC,kBAAoBoB,KAMpF,IAAiC,IAA7BqB,EA8BF,OA7BAV,EAA+B,CAC7BzB,SAAUA,EACVS,cAAewB,EAAYxB,cAAgBwB,EAAY7C,SAASpZ,SAElEga,EAASZ,SAAS,GAAGkD,eAAgB,EACrCtC,EAASuC,oBAAoBC,QAAQ,UAoBhCP,EAAY7C,SAASpZ,QAAUga,EAASjB,SAAWkD,EAAYlD,UAAYkD,EAAY7C,SAASpZ,QAAUga,EAASjB,SAAWkD,EAAY7C,SAAS6C,EAAY7C,SAASpZ,OAAS,GAAG+Y,WACvLiB,EAAS+B,yBAiBb,IAAIU,EAAqBR,EAAY7C,SAAS+C,GAE1CM,EAAmBH,gBAAkBJ,EAAgBI,gBACvDJ,EAAgBI,eAAgB,EAChCtC,EAASuC,oBAAoBC,QAAQ,GACrCxC,EAAS+B,yBAGXN,EAA+B,CAC7BzB,SAAUA,EACVS,cAAewB,EAAY7C,SAAS+C,GAAyBxD,cAe/D+D,EAA6B,SAAoCC,GACnE,IAAIC,EAAcD,EAAMC,YACpBC,EAAcF,EAAME,YAoBpBhB,EAAee,EAAY/b,UAAUkT,OAAO,EAAuB6I,IACnEd,EAAee,EAAYhc,UAAUkT,OAAO,EAAuB8I,IAavE,OANAA,EAAY7B,eAAiBD,EAAwB,CAAC6B,EAAY5B,eAAgB6B,EAAY7B,iBAC9FW,EAAsB,CACpBE,aAAcA,EACdC,aAAcA,EACdd,eAAgB6B,EAAY7B,iBAEvB6B,GAGLC,EAAkB,SAAyB7C,GAC7C,OAAOA,GAAQA,EAAKlO,IAAM,IAAM,EAAkBkO,EAAKzD,YAGrDuG,EAA8B,SAAqClc,GACrE,IAAImc,EAAkBhJ,EAAOnT,EAAU+S,QAAO,SAAUkB,EAAKkF,GAI3D,IAAIpa,EAAOoa,EAASlZ,WAAWmc,IAAMjD,EAASlZ,WAAWoc,MAAQ,IAEjE,GAAKpI,EAAIlV,GAIF,CAGH,IAAIud,EADN,GAAInD,EAASZ,SAIPY,EAASZ,SAAS,KACpBY,EAASZ,SAAS,GAAGkD,eAAgB,IAGtCa,EAAqBrI,EAAIlV,GAAMwZ,UAAU/b,KAAK+f,MAAMD,EAAoBnD,EAASZ,UAKhFY,EAASlZ,WAAWuc,oBACtBvI,EAAIlV,GAAMkB,WAAWuc,kBAAoBrD,EAASlZ,WAAWuc,wBAlB/DvI,EAAIlV,GAAQoa,EACZlF,EAAIlV,GAAMkB,WAAWka,eAAiB,GA2BxC,OANAlG,EAAIlV,GAAMkB,WAAWka,eAAe3d,KAAK,CAGvC6W,MAAO8F,EAASlZ,WAAW2W,YAC3BsB,SAAUiB,EAASlZ,WAAW2W,cAEzB3C,IACN,KACH,OAAOkI,EAAgB5b,KAAI,SAAU4Y,GAEnC,OADAA,EAASuC,oBAAsB9H,EAAYuF,EAASZ,UAAY,GAAI,iBAC7DY,MAIP,EAA4B,SAAmCA,EAAUsD,GAC3E,IAAIC,EAAUT,EAAgB9C,EAASC,MACnCuD,EAAYD,GAAWD,EAAYC,IAAYD,EAAYC,GAAStD,KAMxE,OAJIuD,GACFzD,EAA4BC,EAAUwD,EAAWxD,EAASC,KAAKjE,aAG1DgE,GAELyD,EAA6B,SAAoC5c,EAAWyc,GAK9E,QAJoB,IAAhBA,IACFA,EAAc,KAGXlU,OAAO0K,KAAKwJ,GAAatd,OAC5B,OAAOa,EAGT,IAAK,IAAI7D,KAAK6D,EACZA,EAAU7D,GAAK,EAA0B6D,EAAU7D,GAAIsgB,GAGzD,OAAOzc,GAEL6c,EAAsB,SAA6BlI,EAAMmI,GAC3D,IAAIC,EAEA9c,EAAa0U,EAAK1U,WAClBsY,EAAW5D,EAAK4D,SAChBa,EAAOzE,EAAKyE,KACZQ,EAAgBjF,EAAKiF,cACrBsB,EAAwBvG,EAAKuG,sBAC7BQ,EAAsB/G,EAAK+G,oBAC3BvC,EAAW,CACblZ,YAAa8c,EAAc,CACzBzC,KAAMra,EAAWmc,GACjBY,UAAW/c,EAAWgd,UACtB/c,OAAQD,EAAWvB,QAClBqe,EAAY,cAAgB,EAAGA,GAClC7R,IAAK,GACLyO,QAA6B,WAApB1Z,EAAWb,KACpB8Y,SAAUjY,EAAW2W,YACrBzB,YAAa,GACb+H,eAAgBjd,EAAWgW,SAC3BiF,sBAAuBA,EACvBQ,oBAAqBA,EACrBvB,eAAgBla,EAAWka,eAC3BP,cAAeA,EACfrB,SAAUA,GAgBZ,OAbItY,EAAWuc,oBACbrD,EAASqD,kBAAoBvc,EAAWuc,mBAGtCpD,IACFD,EAASC,KAAOA,GAGd0D,IACF3D,EAASlZ,WAAWL,MAAQ,QAC5BuZ,EAASlZ,WAAWkd,UAAY,QAG3BhE,GAELiE,EAAoB,SAA2BvC,GACjD,IAAIwC,EAEApd,EAAa4a,EAAM5a,WACnBsY,EAAWsC,EAAMtC,SACjBqB,EAAgBiB,EAAMjB,cACtB8B,EAAsBb,EAAMa,oBAC5BR,EAAwBL,EAAMK,sBAEV,qBAAb3C,IAETA,EAAW,CAAC,CACVrN,IAAKjL,EAAWoQ,QAChB6H,SAAUjY,EAAW2W,YACrBzB,YAAalV,EAAWoQ,SAAW,GACnC4F,SAAUhW,EAAWkW,eACrB2B,OAAQ,IAGV7X,EAAWgW,SAAWhW,EAAWkW,gBAGnC,IAAImH,GAAkBD,EAAkB,CACtC/C,KAAMra,EAAWmc,GACjBY,UAAW/c,EAAWgd,WACrBI,EAAgB,cAAgB,EAAGA,GAMtC,OAJIpd,EAAWvB,SACb4e,EAAepd,OAASD,EAAWvB,QAG9B,CACLuB,WAAYqd,EACZpS,IAAK,GACLyO,QAA6B,WAApB1Z,EAAWb,KACpB8Y,SAAUjY,EAAW2W,YACrBzB,YAAalV,EAAWoQ,SAAW,GACnC6M,eAAgBjd,EAAWgW,SAC3BkE,eAAgBla,EAAWka,eAC3BuB,oBAAqBA,EACrBR,sBAAuBA,EACvBtB,cAAeA,EACfrB,SAAUA,IAGVgF,EAAyB,SAAgCvd,EAAWyc,EAAaK,GASnF,IAAIU,OARgB,IAAhBf,IACFA,EAAc,SAGI,IAAhBK,IACFA,GAAc,GAIhB,IAAIW,EAAqBzd,EAAU+S,QAAO,SAAUhM,EAAGoS,GACrD,IAAIuE,EAAOvE,EAASlZ,WAAWyd,MAAQvE,EAASlZ,WAAWyd,KAAK/U,OAAS,GACrEgV,EAAWxE,EAASlZ,WAAWoc,MAAQ,GACvC1B,EAAQxB,EAASlZ,WAAW0a,OAAS,OAEzC,GAAIgD,IAAaxE,EAASlZ,WAAW0a,MAAO,CAC1C,IAAIiD,EAAYF,EAAO,KAAOA,EAAO,IAAM,GAC3C/C,EAAQ,GAAKxB,EAASlZ,WAAWoc,KAAOuB,EAGrC7W,EAAE4T,KACL5T,EAAE4T,GAAS,CACTgD,SAAUA,EACVE,YAAY,EACZ9d,QAAkB,SAAT2d,EACT1d,UAAW,GACXkL,IAAK,KAIT,IAAI4S,EAAY,EAA0BjB,EAAoB1D,EAAU2D,GAAcL,GAQtF,OAPA1V,EAAE4T,GAAO3a,UAAUxD,KAAKshB,GAEI,qBAAjBN,GAAyC,SAATE,IACzCF,EAAerE,EACfqE,EAAazd,SAAU,GAGlBgH,IACN,IAEH,IAAKyW,EAAc,CACjB,IAAIO,EAAaxV,OAAO0K,KAAKwK,GAAoB,GACjDA,EAAmBM,GAAYhe,SAAU,EAG3C,OAAO0d,GAELO,EAAuB,SAA8Bhe,EAAWyc,GAKlE,YAJoB,IAAhBA,IACFA,EAAc,IAGTzc,EAAU+S,QAAO,SAAUhM,EAAGoS,GACnC,IAAIwB,EAAQxB,EAASlZ,WAAWoc,MAAQ,OAaxC,OAXKtV,EAAE4T,KACL5T,EAAE4T,GAAS,CACTgD,SAAUhD,EACV5a,SAAS,EACT8d,YAAY,EACZ7d,UAAW,GACXkL,IAAK,KAITnE,EAAE4T,GAAO3a,UAAUxD,KAAK,EAA0B4gB,EAAkBjE,GAAWsD,IACxE1V,IACN,KAGDkX,EAA0B,SAAiCC,GAC7D,OAAOA,EAAgBnL,QAAO,SAAUoL,EAAQC,GAC9C,OAAKA,GAILA,EAAIxf,SAAQ,SAAUyf,GACpB,IAAIC,EAAUD,EAAQC,QAClBX,EAAWU,EAAQV,SACvBQ,EAAOR,GAAY,CACjBE,YAAY,EACZ9d,SAAS,EACTwe,WAAYD,EACZX,SAAUA,GAGRU,EAAQrT,eAAe,iBACzBmT,EAAOR,GAAUa,YAAcH,EAAQG,aAGrCH,EAAQrT,eAAe,gBACzBmT,EAAOR,GAAUc,WAAaJ,EAAQI,YAGpCJ,EAAQrT,eAAe,QACzBmT,EAAOR,GAAU,MAAQU,EAAQ,UAG9BF,GAzBEA,IA0BR,KAGDO,EAAsB,SAA6B3D,GACrD,IAAI4D,EAEA1e,EAAa8a,EAAM9a,WACnBsY,EAAWwC,EAAMxC,SACjBa,EAAO2B,EAAM3B,KACbsC,EAAsBX,EAAMW,oBAC5BvC,EAAW,CACblZ,YAAa0e,EAAe,CAC1BrE,KAAMra,EAAWmc,GACjBxc,MAAO,QACPud,UAAW,OACXyB,WAAY,CACVnc,MAAOxC,EAAWwC,MAClBC,OAAQzC,EAAWyC,QAErBxC,OAAQD,EAAWvB,OACnBse,UAAW/c,EAAWgd,WACrB0B,EAAa,cAAgB,EAAGA,GACnCzT,IAAK,GACLyO,QAA6B,WAApB1Z,EAAWb,KACpB8Y,SAAUjY,EAAW2W,YACrBzB,YAAa,GACb+H,eAAgBjd,EAAWgW,SAC3ByF,oBAAqBA,EACrBvB,eAAgBla,EAAWka,eAC3B5B,SAAUA,GAeZ,OAZItY,EAAW4e,YACb1F,EAASlZ,WAAW,cAAgBA,EAAW4e,WAG7C5e,EAAWuc,oBACbrD,EAASqD,kBAAoBvc,EAAWuc,mBAGtCpD,IACFD,EAASC,KAAOA,GAGXD,GAGL2F,EAAY,SAAmB3D,GACjC,IAAIlb,EAAakb,EAAMlb,WACvB,MAA+B,cAAxBA,EAAW8e,UAAoD,eAAxB9e,EAAW8e,UAAwD,UAA3B9e,EAAW+e,aAG/FC,EAAY,SAAmBnD,GACjC,IAAI7b,EAAa6b,EAAM7b,WACvB,MAA+B,cAAxBA,EAAW8e,UAAoD,eAAxB9e,EAAW8e,UAAwD,UAA3B9e,EAAW+e,aAG/FE,EAAU,SAAiBC,GAC7B,IAAIlf,EAAakf,EAAMlf,WACvB,MAA+B,aAAxBA,EAAW8e,UAAsD,SAA3B9e,EAAW+e,aAkCtDI,EAAyB,SAAgCpf,EAAWma,GAEtEna,EAAUpB,SAAQ,SAAUua,GAC1BA,EAASS,cAAgB,EACzBT,EAAS+B,sBAAwBrH,EAAUsG,GAAgB,SAAUkF,GACnE,IAAInH,EAAWmH,EAAMnH,SACrB,OAAOA,IAAaiB,EAASjB,YAG1BiB,EAASZ,UAIdY,EAASZ,SAAS3Z,SAAQ,SAAUsW,EAAS1R,GAC3C0R,EAAQ4C,OAAStU,SAcnB8b,EAA6B,SAAoCC,GACnE,OAAKA,EAIEhX,OAAO0K,KAAKsM,GAAkBxM,QAAO,SAAUkB,EAAK0G,GACzD,IAAI6E,EAAgBD,EAAiB5E,GACrC,OAAO1G,EAAIf,OAAOsM,EAAcxf,aAC/B,IANM,IAQPyf,EAAS,SAAgBC,GAC3B,IAAIC,EAEAC,EAAgBF,EAAME,cACtBC,EAAYH,EAAMG,UAClBC,EAAoBJ,EAAMjD,YAC1BA,OAAoC,IAAtBqD,EAA+B,GAAKA,EAClDC,EAAmBL,EAAMK,iBAE7B,IAAKH,EAAczgB,OACjB,MAAO,GAIT,IAAI6gB,EAAwBJ,EAAc,GAAG3f,WACzCgW,EAAW+J,EAAsB7J,eACjC/W,EAAO4gB,EAAsB5gB,KAC7B6gB,EAA6BD,EAAsBC,2BACnDnJ,EAAsBkJ,EAAsBlJ,oBAC5CoJ,EAAiBhE,EAA4B0D,EAAcnG,OAAOqF,IAAYve,IAAIme,GAClFyB,EAAiBjE,EAA4B0D,EAAcnG,OAAOwF,IAClEmB,EAAelE,EAA4B0D,EAAcnG,OAAOyF,IAChEmB,EAAWT,EAAcrf,KAAI,SAAU4Y,GACzC,OAAOA,EAASlZ,WAAWie,mBAC1BzE,OAAOpX,SACNkY,EAAW,CACb+F,YAAY,EACZ5E,oBAAqB,GACrBnD,SAAU,GACVoB,SAAS,EACTha,aAAcggB,EAAe,CAC3B/f,MAAO,GACP2gB,MAAO,IACNZ,EAAa,mBAAqB,GAAIA,EAAaxC,UAAY,GAAIwC,GACtEzU,IAAK,GACL+K,SAAUA,EACVjW,UAAW4c,EAA2BsD,EAAgBzD,IAGpD3F,GAAuB,IACzByD,EAASzD,oBAA4C,IAAtBA,GAG7B+I,IACFtF,EAASsF,UAAYA,GAGV,YAATzgB,IACFmb,EAAS0F,2BAA6BA,GAGxC,IAAInD,EAA4C,IAA9BvC,EAASva,UAAUb,OACjCqhB,EAAsBL,EAAehhB,OAASoe,EAAuB4C,EAAgB1D,EAAaK,GAAe,KACjH2D,EAAoBL,EAAajhB,OAAS6e,EAAqBoC,EAAc3D,GAAe,KAC5FgB,EAAqByC,EAAehN,OAAOoM,EAA2BkB,GAAsBlB,EAA2BmB,IACvHC,EAAyBjD,EAAmBld,KAAI,SAAUogB,GAC5D,IAAIxG,EAAiBwG,EAAMxG,eAC3B,OAAOA,KAiBT,OAfAI,EAASJ,eAAiBD,EAAwBwG,GAClDtB,EAAuB3B,EAAoBlD,EAASJ,gBAEhDqG,IACFjG,EAAS5a,YAAYC,MAAMtC,MAAQkjB,GAGjCC,IACFlG,EAAS5a,YAAYwd,UAAUyD,KAAOH,GAGpCJ,EAASlhB,SACXob,EAAS5a,YAAY,mBAAmB+F,GAAKuY,EAAwBoC,IAGnEN,EACKlE,EAA2B,CAChCE,YAAagE,EACb/D,YAAazB,IAIVA,GAkBLsG,EAAgB,SAAuB5gB,EAAYkY,EAAMlC,GAC3D,IAAIM,EAAMtW,EAAWsW,IACjBC,EAAevW,EAAWuW,aAC1BC,EAAwBxW,EAAWwW,sBACnCP,EAAwBjW,EAAW/D,UACnCA,OAAsC,IAA1Bga,EAAmC,EAAIA,EACnDS,EAAwB1W,EAAW2W,YACnCA,OAAwC,IAA1BD,EAAmC,EAAIA,EACrDE,EAAwB5W,EAAW6W,oBACnCA,OAAgD,IAA1BD,EAAmC,EAAIA,EAC7DK,GAAOX,EAAMC,GAAgB,IAC7BW,EAAgBV,EAAwBG,EACxCQ,EAAcF,EAAMJ,EACpBV,EAAiBgB,EAAcD,EACnC,OAAOG,KAAKC,MAAMnB,EAAiBla,EAAYic,GAAQlC,IAiBrD6K,EAAkB,SAAyB7gB,EAAY8gB,GAezD,IAdA,IAAI3hB,EAAOa,EAAWb,KAClB4hB,EAAyB/gB,EAAW6W,oBACpCA,OAAiD,IAA3BkK,EAAoC,EAAIA,EAC9DC,EAAoBhhB,EAAWihB,MAC/BA,OAA8B,IAAtBD,EAA+B,GAAKA,EAC5C9K,EAAiBlW,EAAWkW,eAC5BO,EAAyBzW,EAAW/D,UACpCA,OAAuC,IAA3Bwa,EAAoC,EAAIA,EACpDsB,EAAwB/X,EAAWgY,YACnCA,OAAwC,IAA1BD,EAAmC,EAAIA,EACrDE,EAAWjY,EAAW2W,YACtB2B,EAAW,GACXJ,GAAQ,EAEHgJ,EAAS,EAAGA,EAASJ,EAAgB5hB,OAAQgiB,IAAU,CAC9D,IAAIC,EAAIL,EAAgBI,GACpBlL,EAAWmL,EAAEC,EACbC,EAASF,EAAE1H,GAAK,EAChB6H,EAAcH,EAAE/b,GAAK,EAErB8S,EAAO,IAETA,EAAOoJ,GAGLA,GAAeA,EAAcpJ,IAqB/BA,EAAOoJ,GAGT,IAAIC,OAAQ,EAEZ,GAAIF,EAAS,EAAG,CACd,IAAIG,EAAQN,EAAS,EAKjBK,EAHAC,IAAUV,EAAgB5hB,OAEf,YAATC,GAAsB0X,EAAsB,GAAKoK,EAAM1W,QAAQ,YAAc,EACvEqW,EAAc5gB,EAAYkY,EAAMlC,IAG/BE,EAAiBja,EAAYic,GAAQlC,GAGvC8K,EAAgBU,GAAOpc,EAAI8S,GAAQlC,OAG9CuL,EAAQF,EAAS,EAGnB,IAAIhO,EAAM2E,EAAcM,EAASpZ,OAASqiB,EACtC1J,EAASG,EAAcM,EAASpZ,OAEpC,MAAO2Y,EAASxE,EACdiF,EAAS/b,KAAK,CACZsb,OAAQA,EACR7B,SAAUA,EAAW/Z,EACrBic,KAAMA,EACND,SAAUA,IAEZC,GAAQlC,EACR6B,IAIJ,OAAOS,GAGLmJ,EAAoB,kCAsCpBC,GAAwB,SAA+BxO,GACzD,OAAO,SAAUnU,EAAO4iB,EAAYC,EAAQpf,GAC1C,GAAc,OAAVzD,EAEF,MAAO,IAGT,GAAkC,qBAAvBmU,EAAOyO,GAChB,OAAO5iB,EAGT,IAAI2J,EAAQ,GAAKwK,EAAOyO,GAExB,MAAmB,qBAAfA,EAEKjZ,GAMPlG,EAHGof,EAGKrM,SAAS/S,EAAO,IAFhB,EAKNkG,EAAMxJ,QAAUsD,EACXkG,EAGF,GAAK,IAAI1G,MAAMQ,EAAQkG,EAAMxJ,OAAS,GAAGiH,KAAK,KAAOuC,KAsB5DmZ,GAAuB,SAA8B5U,EAAKiG,GAC5D,OAAOjG,EAAInP,QAAQ2jB,EAAmBC,GAAsBxO,KAgB1D4O,GAAoB,SAA2B9hB,EAAY8gB,GAC7D,OAAK9gB,EAAWgW,UAAa8K,EAWzB9gB,EAAWgW,SACNmC,EAAgBnY,GAGlB6gB,EAAgB7gB,EAAY8gB,GAZ1B,CAAC,CACNjJ,OAAQ7X,EAAWgY,aAAe,EAClChC,SAAUhW,EAAWkW,eACrBgC,KAAM,EACND,SAAUjY,EAAW2W,eAuBvB,GAAuB,SAA8B3W,EAAY8gB,GACnE,IAAIiB,EAAiB,CACnBC,iBAAkBhiB,EAAWmc,GAC7B8F,UAAWjiB,EAAWgd,WAAa,GAEjCvE,EAAwBzY,EAAW0Y,eACnCA,OAA2C,IAA1BD,EAAmC,CACtDM,UAAW,GACXjE,MAAO,IACL2D,EACAyJ,EAAa,EAAiB,CAChC9R,QAASpQ,EAAWoQ,QACpB2C,OAAQ8O,GAAqBnJ,EAAeK,UAAWgJ,GACvDjN,MAAO4D,EAAe5D,QAEpBwD,EAAWwJ,GAAkB9hB,EAAY8gB,GAC7C,OAAOxI,EAAShY,KAAI,SAAU2U,GAC5B8M,EAAe5jB,OAAS8W,EAAQ4C,OAChCkK,EAAeI,KAAOlN,EAAQiD,KAC9B,IAAIjN,EAAM4W,GAAqB7hB,EAAWihB,OAAS,GAAIc,GAGnD9lB,EAAY+D,EAAW/D,WAAa,EAEpCmmB,EAAyBpiB,EAAWoiB,wBAA0B,EAC9DxJ,EAEJ5Y,EAAW2W,aAAe1B,EAAQiD,KAAOkK,GAA0BnmB,EAC/DqE,EAAM,CACR2K,IAAKA,EACLgN,SAAUhD,EAAQgD,SAClBjC,SAAUf,EAAQe,SAClBd,YAAa,eAAWlV,EAAWoQ,SAAW,GAAInF,GAClD3K,IAAK4hB,EACLrK,OAAQ5C,EAAQ4C,OAChBe,iBAAkBA,GAEpB,OAAOtY,MAgBP+hB,GAA4B,SAAmCriB,EAAYsiB,GAC7E,IAAIlS,EAAUpQ,EAAWoQ,QACrBqI,EAAwBzY,EAAW0Y,eACnCA,OAA2C,IAA1BD,EAAmC,GAAKA,EACzDK,EAAc,EAAiB,CACjC1I,QAASA,EACT2C,OAAQ2F,EAAeK,UACvBjE,MAAO4D,EAAe5D,QAEpBG,EAAU,EAAiB,CAC7B7E,QAASA,EACT2C,OAAQuP,EAAWrB,MACnBnM,MAAOwN,EAAWC,aAGpB,OADAtN,EAAQ3U,IAAMwY,EACP7D,GAiBLuN,GAAmB,SAA0BxiB,EAAY8gB,GAC3D,IAAI9K,EAAWhW,EAAWgW,SACtByM,EAAwBziB,EAAW0iB,YACnCA,OAAwC,IAA1BD,EAAmC,GAAKA,EACtD9L,EAAc3W,EAAW2W,YAG7B,IAAKX,IAAa8K,GAAmB9K,GAAY8K,EAC/C,MAAM,IAAIxV,MAAM4I,EAAOM,0BAGzB,IAGIwE,EAHA2J,EAAgBD,EAAYpiB,KAAI,SAAUsiB,GAC5C,OAAOP,GAA0BriB,EAAY4iB,MAI3C5M,IACFgD,EAAkBb,EAAgBnY,IAGhC8gB,IACF9H,EAAkB6H,EAAgB7gB,EAAY8gB,IAGhD,IAAIxI,EAAWU,EAAgB1Y,KAAI,SAAUghB,EAAa/d,GACxD,GAAIof,EAAcpf,GAAQ,CACxB,IAAI0R,EAAU0N,EAAcpf,GAGxBtH,EAAY+D,EAAW/D,WAAa,EAEpCmmB,EAAyBpiB,EAAWoiB,wBAA0B,EAKlE,OAJAnN,EAAQgD,SAAWqJ,EAAYrJ,SAC/BhD,EAAQe,SAAWsL,EAAYtL,SAC/Bf,EAAQ4C,OAASyJ,EAAYzJ,OAC7B5C,EAAQ2D,iBAAmBjC,GAAe2K,EAAYpJ,KAAOkK,GAA0BnmB,EAChFgZ,MAKRuE,QAAO,SAAUvE,GAClB,OAAOA,KAET,OAAOqD,GAGLuK,GAAmB,SAA0BnO,GAC/C,IAEIoO,EACAC,EAHA/iB,EAAa0U,EAAK1U,WAClBgjB,EAActO,EAAKsO,YAInBA,EAAYC,UACdF,EAAa,GACbD,EAAoBrQ,EAAMzS,EAAYgjB,EAAYC,WACzCD,EAAYE,MACrBH,EAAavK,EACbsK,EAAoBrQ,EAAMzS,EAAYgjB,EAAYE,OACzCF,EAAYtP,OACrBqP,EAAaP,GACbM,EAAoBrQ,EAAMzS,EAAYgjB,EAAYtP,OAGpD,IAAIyP,EAAe,CACjBnjB,WAAYA,GAGd,IAAK+iB,EACH,OAAOI,EAGT,IAAI7K,EAAWyK,EAAWD,EAAmBE,EAAYlC,iBAIzD,GAAIgC,EAAkB9M,SAAU,CAC9B,IAAIoN,EAAqBN,EACrB9M,EAAWoN,EAAmBpN,SAC9BqN,EAAwBD,EAAmBnnB,UAC3CA,OAAsC,IAA1BonB,EAAmC,EAAIA,EACvDP,EAAkB9M,SAAWA,EAAW/Z,OAC/Bqc,EAASpZ,OAGlB4jB,EAAkB9M,SAAWsC,EAASxF,QAAO,SAAU4E,EAAKzC,GAC1D,OAAOoC,KAAKK,IAAIA,EAAKL,KAAKC,KAAKrC,EAAQe,aACtC,GAEH8M,EAAkB9M,SAAW,EAW/B,OARAmN,EAAanjB,WAAa8iB,EAC1BK,EAAa7K,SAAWA,EAEpB0K,EAAYE,MAAQJ,EAAkB9N,aACxCmO,EAAahK,KAAOb,EAAS,GAC7B6K,EAAa7K,SAAW,IAGnB6K,GAELG,GAAc,SAAqBC,GACrC,OAAOA,EAAgBjjB,IAAIuiB,KAGzBW,GAAe,SAAsBC,EAAS3kB,GAChD,OAAOmJ,EAAKwb,EAAQC,YAAYlK,QAAO,SAAU9E,GAC/C,IAAIiP,EAAUjP,EAAKiP,QACnB,OAAOA,IAAY7kB,MAGnB8kB,GAAa,SAAoBH,GACnC,OAAOA,EAAQI,YAAYhlB,QAUzBilB,GAAqB,SAA4Bpb,GACnD,OAAOqb,WAAWrb,EAAMhK,MAAM,KAAKoU,QAAO,SAAUkR,EAAMC,GACxD,OAAOD,EAAOC,OAIdC,GAAgB,SAAuBC,GACzC,IAAIC,EAAkB,QAClBC,EAAmB,OACnBC,EAAiB,MACjBC,EAAkB,KAClBC,EAAiB,GAEjBC,EAAgB,+EAChB1lB,EAAQ0lB,EAAczlB,KAAKmlB,GAE/B,IAAKplB,EACH,OAAO,EAGT,IAAI2lB,EAAe3lB,EAAMV,MAAM,GAC3BsmB,EAAOD,EAAa,GACpBE,EAAQF,EAAa,GACrBG,EAAMH,EAAa,GACnBI,EAAOJ,EAAa,GACpBK,EAASL,EAAa,GACtBM,EAASN,EAAa,GAE1B,OAAOX,WAAWY,GAAQ,GAAKP,EAAkBL,WAAWa,GAAS,GAAKP,EAAmBN,WAAWc,GAAO,GAAKP,EAAiBP,WAAWe,GAAQ,GAAKP,EAAkBR,WAAWgB,GAAU,GAAKP,EAAiBT,WAAWiB,GAAU,IAE7OC,GAAY,SAAmBd,GAGjC,IAAIe,EAAY,oCAOhB,OAJIA,EAAU/kB,KAAKgkB,KACjBA,GAAO,KAGFgB,KAAK9Y,MAAM8X,IAGhBiB,GAAU,CAUZC,0BAA2B,SAAmC3c,GAC5D,OAAOwb,GAAcxb,IAavB8N,sBAAuB,SAA+B9N,GACpD,OAAOuc,GAAUvc,GAAS,KAY5BmO,oBAAqB,SAA6BnO,GAChD,OAAOwb,GAAcxb,IAYvBsX,2BAA4B,SAAoCtX,GAC9D,OAAOwb,GAAcxb,IAYvBvJ,KAAM,SAAcuJ,GAClB,OAAOA,GAYTqO,qBAAsB,SAA8BrO,GAClD,OAAOwb,GAAcxb,IAYvB0K,MAAO,SAAe1K,GACpB,OAAOwb,GAAcxb,IAWvBlG,MAAO,SAAekG,GACpB,OAAO6M,SAAS7M,EAAO,KAWzBjG,OAAQ,SAAgBiG,GACtB,OAAO6M,SAAS7M,EAAO,KAWzBsU,UAAW,SAAmBtU,GAC5B,OAAO6M,SAAS7M,EAAO,KAWzBkW,UAAW,SAAmBlW,GAC5B,OAAOob,GAAmBpb,IAW5BsP,YAAa,SAAqBtP,GAChC,OAAO6M,SAAS7M,EAAO,KAWzBzM,UAAW,SAAmByM,GAC5B,OAAO6M,SAAS7M,EAAO,KAYzB0Z,uBAAwB,SAAgC1Z,GACtD,OAAO6M,SAAS7M,EAAO,KAezBsN,SAAU,SAAkBtN,GAC1B,IAAI4c,EAAc/P,SAAS7M,EAAO,IAElC,OAAImN,MAAMyP,GACDpB,GAAcxb,GAGhB4c,GAWTlE,EAAG,SAAW1Y,GACZ,OAAO6M,SAAS7M,EAAO,KAYzBtD,EAAG,SAAWsD,GACZ,OAAO6M,SAAS7M,EAAO,KAYzB+Q,EAAG,SAAW/Q,GACZ,OAAO6M,SAAS7M,EAAO,KAYzB6c,QAAS,SAAiB7c,GACxB,OAAOA,IAaP8c,GAAkB,SAAyBvR,GAC7C,OAAMA,GAAMA,EAAGjU,WAIRiI,EAAKgM,EAAGjU,YAAY8S,QAAO,SAAUhM,EAAGwF,GAC7C,IAAImZ,EAAUL,GAAQ9Y,EAAExN,OAASsmB,GAAQG,QAEzC,OADAze,EAAEwF,EAAExN,MAAQ2mB,EAAQnZ,EAAE5D,OACf5B,IACN,IAPM,IAUP4e,GAAgB,CAClB,gDAAiD,kBACjD,gDAAiD,qBACjD,gDAAiD,0BACjD,gDAAiD,uBAa/C,GAAgB,SAAuBC,EAAeC,GACxD,OAAKA,EAAgB1mB,OAIdoU,EAAQqS,EAAcrlB,KAAI,SAAUsZ,GACzC,OAAOgM,EAAgBtlB,KAAI,SAAUulB,GACnC,OAAO,eAAWjM,EAAWgK,GAAWiC,WALnCF,GAgCPG,GAAwB,SAA+BC,GACzD,IAAIC,EAAkBxC,GAAauC,EAAe,mBAAmB,GACjEE,EAAczC,GAAauC,EAAe,eAAe,GACzDrD,EAAcuD,GAAezC,GAAayC,EAAa,cAAc3lB,KAAI,SAAU4lB,GACrF,OAAOzT,EAAM,CACX0T,IAAK,cACJX,GAAgBU,OAEjBE,EAAc5C,GAAauC,EAAe,eAAe,GACzDM,EAA4BJ,GAAeD,EAC3ClF,EAAkBuF,GAA6B7C,GAAa6C,EAA2B,mBAAmB,GAC1GC,EAAkCL,GAAeG,GAAeJ,EAChEO,EAAwBD,GAAmC9C,GAAa8C,EAAiC,kBAAkB,GAM3HrD,EAAW+C,GAAmBR,GAAgBQ,GAE9C/C,GAAYsD,EACdtD,EAASvK,eAAiB6N,GAAyBf,GAAgBe,GAC1DtD,GAAYA,EAASvK,iBAI9BuK,EAASvK,eAAiB,CACxBK,UAAWkK,EAASvK,iBAIxB,IAAIsK,EAAc,CAChBC,SAAUA,EACVnC,gBAAiBA,GAAmB0C,GAAa1C,EAAiB,KAAKxgB,KAAI,SAAU4lB,GACnF,OAAOV,GAAgBU,MAEzBxS,KAAMuS,GAAexT,EAAM+S,GAAgBS,GAAc,CACvDvD,YAAaA,EACbhK,eAAgB8M,GAAgBe,KAElCrD,KAAMkD,GAAe3T,EAAM+S,GAAgBY,GAAc,CACvD1N,eAAgB8M,GAAgBe,MAQpC,OALAje,OAAO0K,KAAKgQ,GAAarkB,SAAQ,SAAU6L,GACpCwY,EAAYxY,WACRwY,EAAYxY,MAGhBwY,GAsCLwD,GAAkB,SAAyBC,EAAyBC,EAAuBC,GAC7F,OAAO,SAAUC,GACf,IAAIC,EAAqBrD,GAAaoD,EAAgB,WAClDE,EAAc,GAAcJ,EAAuBG,GACnD7mB,EAAayS,EAAMgU,EAAyBjB,GAAgBoB,IAC5DG,EAA4BjB,GAAsBc,GACtD,OAAOE,EAAYxmB,KAAI,SAAU8P,GAC/B,MAAO,CACL4S,YAAavQ,EAAMkU,EAA0BI,GAC7C/mB,WAAYyS,EAAMzS,EAAY,CAC5BoQ,QAASA,UAgBf,GAA+B,SAAsC4W,GACvE,OAAOA,EAAuBlU,QAAO,SAAUkB,EAAKiT,GAClD,IAAIjnB,EAAawlB,GAAgByB,GAK7BjnB,EAAWknB,cACblnB,EAAWknB,YAAclnB,EAAWknB,YAAYjoB,eAGlD,IAAIkoB,EAAYzB,GAAc1lB,EAAWknB,aAEzC,GAAIC,EAAW,CACbnT,EAAImT,GAAa,CACfnnB,WAAYA,GAEd,IAAIonB,EAAW5D,GAAayD,EAAM,aAAa,GAE/C,GAAIG,EAAU,CACZ,IAAIC,EAAOzD,GAAWwD,GACtBpT,EAAImT,GAAWE,KAAOA,GAAQ,eAAsBA,IAIxD,OAAOrT,IACN,KAIDsT,GAA8B,SAAqClJ,GAErE,GAA4B,kCAAxBA,EAAQ8I,YAAiD,CAC3D,IAAIhU,EAAkC,kBAAlBkL,EAAQ1V,MAAqB,GAAK0V,EAAQ1V,MAAMhK,MAAM,KAC1E,OAAOwU,EAAO5S,KAAI,SAAUoI,GAC1B,IAAI2V,EACAX,EAIJ,GAFAA,EAAWhV,EAEP,SAASvI,KAAKuI,GAAQ,CACxB,IAAI6e,EAAe7e,EAAMhK,MAAM,KAE/B2f,EAAUkJ,EAAa,GACvB7J,EAAW6J,EAAa,OACf,SAASpnB,KAAKuI,KACvB2V,EAAU3V,GAGZ,MAAO,CACL2V,QAASA,EACTX,SAAUA,MAGT,GAA4B,kCAAxBU,EAAQ8I,YAAiD,CAClE,IAAIM,EAAmC,kBAAlBpJ,EAAQ1V,MAAqB,GAAK0V,EAAQ1V,MAAMhK,MAAM,KAE3E,OAAO8oB,EAAQlnB,KAAI,SAAUoI,GAC3B,IAAI/M,EAAQ,CAEV,aAAWqQ,EAGX,cAAYA,EAGZ,YAAe,EAIf,WAAc,EAId,KAAM,GAGR,GAAI,IAAI7L,KAAKuI,GAAQ,CACnB,IAAI+e,EAAgB/e,EAAMhK,MAAM,KAC5B2f,EAAUoJ,EAAc,GACxBC,EAAiBD,EAAc,GAC/BE,OAA0B,IAAnBD,EAA4B,GAAKA,EAE5C/rB,EAAM0iB,QAAUA,EAChB1iB,EAAM+hB,SAAWhV,EACjBif,EAAKjpB,MAAM,KAAKC,SAAQ,SAAUipB,GAChC,IAAIC,EAAaD,EAAIlpB,MAAM,KACvBI,EAAO+oB,EAAW,GAClBC,EAAMD,EAAW,GAER,SAAT/oB,EACFnD,EAAM+hB,SAAWoK,EACC,OAAThpB,EACTnD,EAAM6iB,WAAargB,OAAO2pB,GACR,QAAThpB,EACTnD,EAAM4iB,YAAcpgB,OAAO2pB,GACT,OAAThpB,IACTnD,EAAM,MAAQwC,OAAO2pB,YAIzBnsB,EAAM+hB,SAAWhV,EAOnB,OAJI/M,EAAM0iB,UACR1iB,EAAM0iB,QAAU,UAAY1iB,EAAM0iB,SAG7B1iB,OA6BTosB,GAAoB,SAA2BC,EAAkBC,EAAgBC,GACnF,OAAO,SAAUnC,GACf,IAAIU,EAA0BjB,GAAgBO,GAC1CW,EAAwB,GAAcuB,EAAgBzE,GAAauC,EAAe,YAClFtI,EAAO+F,GAAauC,EAAe,QAAQ,GAC3CoC,EAAiB,CACnB1K,KAAM+H,GAAgB/H,IAEpB7b,EAAQ6Q,EAAMuV,EAAkBvB,EAAyB0B,GACzDC,EAAgB5E,GAAauC,EAAe,iBAAiB,GAC7D9H,EAAkBqJ,GAA4B9B,GAAgB4C,IAE9DnK,IACFrc,EAAQ6Q,EAAM7Q,EAAO,CACnBqc,gBAAiBA,KAIrB,IAAIvD,EAAQ8I,GAAauC,EAAe,SAAS,GAEjD,GAAIrL,GAASA,EAAMgJ,WAAWxkB,OAAQ,CACpC,IAAImpB,EAAW3N,EAAMgJ,WAAW,GAAG4E,UAAUzpB,OAC7C+C,EAAQ6Q,EAAM7Q,EAAO,CACnB8Y,MAAO2N,IAIX,IAAI9L,EAAoB,GAA6BiH,GAAauC,EAAe,sBAE7Ezd,OAAO0K,KAAKuJ,GAAmBrd,SACjC0C,EAAQ6Q,EAAM7Q,EAAO,CACnB2a,kBAAmBA,KAIvB,IAAIyG,EAAc8C,GAAsBC,GACpCxC,EAAkBC,GAAauC,EAAe,kBAC9CY,EAA2BlU,EAAMyV,EAAmBlF,GACxD,OAAO1P,EAAQiQ,EAAgBjjB,IAAIkmB,GAAgB5kB,EAAO8kB,EAAuBC,OAuCjF4B,GAAmB,SAA0BC,EAAeC,GAC9D,OAAO,SAAUC,EAAQnlB,GACvB,IAAI0kB,EAAiB,GAAcQ,EAAajF,GAAakF,EAAOzB,KAAM,YACtEe,EAAmBvV,EAAM+V,EAAe,CAC1C7R,YAAa+R,EAAO1oB,WAAWoT,QAGS,kBAA/BsV,EAAO1oB,WAAWgW,WAC3BgS,EAAiB7R,eAAiBuS,EAAO1oB,WAAWgW,UAGtD,IAAI2S,EAAiBnF,GAAakF,EAAOzB,KAAM,iBAC3CiB,EAAoBpC,GAAsB4C,EAAOzB,MACrD,OAAO3T,EAAQqV,EAAeroB,IAAIynB,GAAkBC,EAAkBC,EAAgBC,OAkBtFU,GAAiB,SAAwBlU,GAC3C,IAAI1U,EAAa0U,EAAK1U,WAClB6oB,EAAwBnU,EAAKmU,sBAC7BC,EAAUpU,EAAKoU,QAgBnB,MAAgC,kBAArB9oB,EAAWoT,MACbpT,EAAWoT,MAIhByV,GAAgE,kBAAhCA,EAAsBzV,OAAgE,kBAAnCyV,EAAsB7S,SACpG6S,EAAsBzV,MAAQyV,EAAsB7S,SAIxD6S,GAAqC,WAAZC,EAWvB,KAVE,GA8BPC,GAAoB,SAA2BC,EAAK9d,QACtC,IAAZA,IACFA,EAAU,IAGZ,IAAI+d,EAAW/d,EACXge,EAAuBD,EAASE,YAChCA,OAAuC,IAAzBD,EAAkC,GAAKA,EACrDE,EAAeH,EAAS3S,IACxBA,OAAuB,IAAjB8S,EAA0BjE,KAAKlO,MAAQmS,EAC7CC,EAAwBJ,EAAS1S,aACjCA,OAAyC,IAA1B8S,EAAmC,EAAIA,EACtDC,EAAc9F,GAAawF,EAAK,UAEpC,IAAKM,EAAYpqB,OACf,MAAM,IAAIoM,MAAM4I,EAAOC,0BAGzB,IAAIyL,EAAY4D,GAAawF,EAAK,YAC9BR,EAAgBhD,GAAgBwD,GAChCP,EAAc,GAAc,CAACU,GAAc3F,GAAawF,EAAK,YAEjER,EAAcrpB,KAAOqpB,EAAcrpB,MAAQ,SAC3CqpB,EAActS,eAAiBsS,EAAcnD,2BAA6B,EAC1EmD,EAAclS,IAAMA,EACpBkS,EAAcjS,aAAeA,EAEzBqJ,EAAU1gB,SACZspB,EAAc5I,UAAYA,EAAUtf,IAAIsjB,KAG1C,IAAI2F,EAAU,GAoBd,OAfAD,EAAY3qB,SAAQ,SAAUsoB,EAAM1jB,GAClC,IAAIvD,EAAawlB,GAAgByB,GAG7BuC,EAAcD,EAAQhmB,EAAQ,GAClCvD,EAAWoT,MAAQwV,GAAe,CAChC5oB,WAAYA,EACZ6oB,sBAAuBW,EAAcA,EAAYxpB,WAAa,KAC9D8oB,QAASN,EAAcrpB,OAEzBoqB,EAAQhtB,KAAK,CACX0qB,KAAMA,EACNjnB,WAAYA,OAGT,CACL4f,UAAW4I,EAAc5I,UACzB6J,mBAAoBnW,EAAQiW,EAAQjpB,IAAIioB,GAAiBC,EAAeC,OAIxE,GAAiB,SAAwBiB,GAC3C,GAAuB,KAAnBA,EACF,MAAM,IAAIpe,MAAM4I,EAAOE,qBAGzB,IACIuV,EACAX,EAFAY,EAAS,IAAI,eAIjB,IACED,EAAMC,EAAOC,gBAAgBH,EAAgB,mBAC7CV,EAAMW,GAAuC,QAAhCA,EAAI9a,gBAAgB8U,QAAoBgG,EAAI9a,gBAAkB,KAC3E,MAAOvC,IAGT,IAAK0c,GAAOA,GAAOA,EAAIc,qBAAqB,eAAe5qB,OAAS,EAClE,MAAM,IAAIoM,MAAM4I,EAAOG,kBAGzB,OAAO2U,GAYLe,GAAuB,SAA8Bf,GACvD,IAAIgB,EAAgBxG,GAAawF,EAAK,aAAa,GAEnD,IAAKgB,EACH,OAAO,KAGT,IAAIhqB,EAAawlB,GAAgBwE,GAEjC,OAAQhqB,EAAWknB,aACjB,IAAK,mCACL,IAAK,mCACHlnB,EAAWgN,OAAS,OACpB,MAEF,IAAK,qCACL,IAAK,kCACL,IAAK,qCACL,IAAK,kCACHhN,EAAWgN,OAAS,MACpB,MAEF,IAAK,gCACL,IAAK,gCACHhN,EAAWgN,OAAS,SACpBhN,EAAW0I,MAAQyc,KAAK9Y,MAAMrM,EAAW0I,OACzC,MAEF,IAAK,kCACL,IAAK,6BACL,IAAK,8BACL,QACE,MAAM,IAAI4C,MAAM4I,EAAOO,+BAG3B,OAAOzU,GAkBLqM,GAAQ,SAAeqd,EAAgBxe,QACzB,IAAZA,IACFA,EAAU,IAGZ,IAAI+e,EAAqBlB,GAAkB,GAAeW,GAAiBxe,GACvEnL,EAAYujB,GAAY2G,EAAmBR,oBAC/C,OAAOjK,EAAO,CACZG,cAAe5f,EACf6f,UAAWqK,EAAmBrK,UAC9BpD,YAAatR,EAAQsR,YACrBsD,iBAAkB5U,EAAQ4U,oBAa1BoK,GAAiB,SAAwBR,GAC3C,OAAOK,GAAqB,GAAeL,M,oCCnnF7C,SAASS,EAAKzW,EAAM0W,EAAWC,GAI9B,QAHWre,IAAPqe,IACHA,EAAKroB,MAAM+G,WAER2K,GAA2B,oBAAZ2W,EAAGF,KACrB,OAAOE,EAAGF,KAAKjY,KAAKwB,EAAM0W,GAE3B,IAAK,IAAIluB,EAAI,EAAGA,EAAIwX,EAAKxU,OAAQhD,IAChC,GAAIoM,OAAOS,UAAUgC,eAAemH,KAAKwB,EAAMxX,GAAI,CAClD,IAAIouB,EAAO5W,EAAKxX,GAChB,GAAIkuB,EAAUlY,UAAKlG,EAAWse,EAAMpuB,EAAGwX,GACtC,OAAO4W,GAqBX,SAASC,EAAOC,EAAQC,GAIvB,YAHWze,IAAPye,IACHA,EAAKniB,QAECmiB,GAA2B,oBAAdA,EAAGF,OAAwBE,EAAGF,OAAOC,GAAUA,EAgBpE,SAASE,EAAOC,EAAQ5X,GACvB,GAAe,OAAX4X,GAAqC,kBAAXA,EAC7B,MAAM,IAAIC,UAAU,2BAErB,IAAK,IAAIpgB,KAAOuI,EACXzK,OAAOS,UAAUgC,eAAemH,KAAKa,EAAQvI,KAChDmgB,EAAOngB,GAAOuI,EAAOvI,IAGvB,OAAOmgB,EAUR,IAAIE,EAAYN,EAAO,CAUtBO,KAAM,YAYNC,OAAQ,SAAUriB,GACjB,OAAOA,IAAUmiB,EAAUC,MAU5BE,gBAAiB,kBASjBC,SAAU,WAUVC,sBAAuB,wBASvBC,cAAe,kBAQZC,EAAYb,EAAO,CAMtBO,KAAM,+BASNC,OAAQ,SAAU9f,GACjB,OAAOA,IAAQmgB,EAAUN,MAQ1BO,IAAK,6BAOLC,IAAK,uCAOLC,MAAO,kCAGRxuB,EAAQ2tB,OAASA,EACjB3tB,EAAQotB,KAAOA,EACfptB,EAAQwtB,OAASA,EACjBxtB,EAAQ8tB,UAAYA,EACpB9tB,EAAQquB,UAAYA,G,oCC1MpB,sCAAII,EAAgB,yDAChBC,EAAa,2BAaNC,EAA2B,SAAkCvsB,GACtE,OAAIqsB,EAAcrrB,KAAKhB,GACd,MAGLssB,EAAWtrB,KAAKhB,GACX,OAUI,qCAATA,EACK,WAGF,O,oCChCT,IAAI0F,EAAS,EAAQ,SAEjB8mB,EAAsB,SAA6BxgB,EAAUygB,GAK/D,YAJ2B,IAAvBA,IACFA,GAAqB,GAGhB,SAAUxnB,EAAKoH,EAAUqgB,GAE9B,GAAIznB,EACF+G,EAAS/G,QAKX,GAAIoH,EAASmB,YAAc,KAAOnB,EAASmB,YAAc,IAAzD,CACE,IAAImf,EAAQD,EAEZ,GAAID,EACF,GAAI/mB,EAAOknB,YAAa,CACtB,IAAIC,EAAUC,EAAWzgB,EAASnB,SAAWmB,EAASnB,QAAQ,iBAE9D,IACEyhB,EAAQ,IAAIC,YAAYC,GAAShkB,OAAO6jB,GACxC,MAAOvf,UAETwf,EAAQ5pB,OAAOqD,aAAa+W,MAAM,KAAM,IAAI1gB,WAAWiwB,IAI3D1gB,EAAS,CACP2gB,MAAOA,SAMX3gB,EAAS,KAAM0gB,KAInB,SAASI,EAAWC,GAKlB,YAJ0B,IAAtBA,IACFA,EAAoB,IAGfA,EAAkBjtB,cAAcP,MAAM,KAAKoU,QAAO,SAAUkZ,EAASjN,GAC1E,IAAIoN,EAAqBpN,EAAYrgB,MAAM,KACvCS,EAAOgtB,EAAmB,GAC1BzjB,EAAQyjB,EAAmB,GAE/B,MAAoB,YAAhBhtB,EAAKN,OACA6J,EAAM7J,OAGRmtB,IACN,SAGLlvB,EAAOC,QAAU4uB,G,+BC7DjB,IAAIvc,EAAiBQ,EAAQ,QACzBT,EAAiBS,EAAQ,QACzBwc,EAAmBxc,EAAQ,QAC3BkC,EAAYlC,EAAQ,QACxB,SAASyc,EAAiBC,GACxB,IAAIC,EAAwB,oBAARC,IAAqB,IAAIA,SAAQxgB,EAuBrD,OAtBAlP,EAAOC,QAAUsvB,EAAmB,SAA0BC,GAC5D,GAAc,OAAVA,IAAmBF,EAAiBE,GAAQ,OAAOA,EACvD,GAAqB,oBAAVA,EACT,MAAM,IAAI1B,UAAU,sDAEtB,GAAsB,qBAAX2B,EAAwB,CACjC,GAAIA,EAAOE,IAAIH,GAAQ,OAAOC,EAAOG,IAAIJ,GACzCC,EAAOI,IAAIL,EAAOM,GAEpB,SAASA,IACP,OAAO9a,EAAUwa,EAAO3Z,UAAWvD,EAAe9N,MAAM2O,aAU1D,OARA2c,EAAQ7jB,UAAYT,OAAO0H,OAAOsc,EAAMvjB,UAAW,CACjDkH,YAAa,CACXvH,MAAOkkB,EACPjkB,YAAY,EACZC,UAAU,EACVC,cAAc,KAGXsG,EAAeyd,EAASN,IAC9BxvB,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,QACjEsvB,EAAiBC,GAE1BxvB,EAAOC,QAAUsvB,EAAkBvvB,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,S,mBC9BxG,SAASiN,IAYP,OAXAlN,EAAOC,QAAUiN,EAAW1B,OAAOoiB,OAASpiB,OAAOoiB,OAAOrb,OAAS,SAAUsb,GAC3E,IAAK,IAAIzuB,EAAI,EAAGA,EAAIyW,UAAUzT,OAAQhD,IAAK,CACzC,IAAI6W,EAASJ,UAAUzW,GACvB,IAAK,IAAIsO,KAAOuI,EACVzK,OAAOS,UAAUgC,eAAemH,KAAKa,EAAQvI,KAC/CmgB,EAAOngB,GAAOuI,EAAOvI,IAI3B,OAAOmgB,GACN7tB,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,QACjEiN,EAASsS,MAAMhb,KAAMqR,WAE9B7V,EAAOC,QAAUiN,EAAUlN,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,S,mBCEhG,IAAI8vB,EAAc,OACdC,EAAmB,CACrB,GAAI,EACJ,GAAM,EACN,GAAM,GAEJC,EAAe,CACjB,MAAS,EACT,OAAU,EACV,IAAO,EACP,KAAQ,EACR,MAAS,EACT,KAAQ,EACR,YAAa,EACb,aAAc,GAGhB,SAASC,EAAqBtkB,GAC5B,GAAqB,kBAAVA,EACT,OAAO,EAET,IAAIukB,EAAMH,EAAiBpkB,EAAMzJ,eACjC,QAAOguB,GAAMvkB,EAAMzJ,cAGrB,SAASiuB,EAAiBxkB,GACxB,GAAqB,kBAAVA,EACT,OAAO,EAET,IAAIykB,EAAQJ,EAAarkB,EAAMzJ,eAC/B,QAAOkuB,GAAQzkB,EAAMzJ,cAGvB,SAASiK,EAAOkkB,EAAWC,EAAS/vB,GASlCgE,KAAKgsB,cAAe,EAOpB,IAAIC,EAAM,GACNC,GAAe,EACfC,EAAaL,EACbM,EAAWL,EACXM,EAAQrwB,EACRswB,EAAU,KACVC,EAAY,GACZC,GAAe,EACfC,EAAQ,OACRC,EAAa,QACbC,EAAY,OACZC,EAAiB,OACjBC,EAAQ,IACRC,EAAS,SAEb9lB,OAAO+lB,iBAAiB/sB,KAAM,CAC5B,GAAM,CACJqH,YAAY,EACZ+jB,IAAK,WACH,OAAOa,GAETZ,IAAK,SAASjkB,GACZ6kB,EAAM,GAAK7kB,IAIf,YAAe,CACbC,YAAY,EACZ+jB,IAAK,WACH,OAAOc,GAETb,IAAK,SAASjkB,GACZ8kB,IAAiB9kB,IAIrB,UAAa,CACXC,YAAY,EACZ+jB,IAAK,WACH,OAAOe,GAETd,IAAK,SAASjkB,GACZ,GAAqB,kBAAVA,EACT,MAAM,IAAIkiB,UAAU,uCAEtB6C,EAAa/kB,EACbpH,KAAKgsB,cAAe,IAIxB,QAAW,CACT3kB,YAAY,EACZ+jB,IAAK,WACH,OAAOgB,GAETf,IAAK,SAASjkB,GACZ,GAAqB,kBAAVA,EACT,MAAM,IAAIkiB,UAAU,qCAEtB8C,EAAWhlB,EACXpH,KAAKgsB,cAAe,IAIxB,KAAQ,CACN3kB,YAAY,EACZ+jB,IAAK,WACH,OAAOiB,GAEThB,IAAK,SAASjkB,GACZilB,EAAQ,GAAKjlB,EACbpH,KAAKgsB,cAAe,IAIxB,OAAU,CACR3kB,YAAY,EACZ+jB,IAAK,WACH,OAAOkB,GAETjB,IAAK,SAASjkB,GACZklB,EAAUllB,EACVpH,KAAKgsB,cAAe,IAIxB,SAAY,CACV3kB,YAAY,EACZ+jB,IAAK,WACH,OAAOmB,GAETlB,IAAK,SAASjkB,GACZ,IAAI4lB,EAAUtB,EAAqBtkB,GAEnC,IAAgB,IAAZ4lB,EACF,MAAM,IAAIC,YAAY,mEAExBV,EAAYS,EACZhtB,KAAKgsB,cAAe,IAIxB,YAAe,CACb3kB,YAAY,EACZ+jB,IAAK,WACH,OAAOoB,GAETnB,IAAK,SAASjkB,GACZolB,IAAiBplB,EACjBpH,KAAKgsB,cAAe,IAIxB,KAAQ,CACN3kB,YAAY,EACZ+jB,IAAK,WACH,OAAOqB,GAETpB,IAAK,SAASjkB,GACZ,GAAqB,kBAAVA,GAAsBA,IAAUmkB,EACzC,MAAM,IAAI0B,YAAY,4DAExBR,EAAQrlB,EACRpH,KAAKgsB,cAAe,IAIxB,UAAa,CACX3kB,YAAY,EACZ+jB,IAAK,WACH,OAAOsB,GAETrB,IAAK,SAASjkB,GACZ,IAAI4lB,EAAUpB,EAAiBxkB,GAC1B4lB,GAGHN,EAAaM,EACbhtB,KAAKgsB,cAAe,GAHpBppB,QAAQsqB,KAAK,4DAQnB,SAAY,CACV7lB,YAAY,EACZ+jB,IAAK,WACH,OAAOuB,GAETtB,IAAK,SAASjkB,GACZ,GAAIA,EAAQ,GAAKA,EAAQ,IACvB,MAAM,IAAI4C,MAAM,uCAElB2iB,EAAYvlB,EACZpH,KAAKgsB,cAAe,IAIxB,cAAiB,CACf3kB,YAAY,EACZ+jB,IAAK,WACH,OAAOwB,GAETvB,IAAK,SAASjkB,GACZ,IAAI4lB,EAAUpB,EAAiBxkB,GAC1B4lB,GAGHJ,EAAiBI,EACjBhtB,KAAKgsB,cAAe,GAHpBppB,QAAQsqB,KAAK,gEAQnB,KAAQ,CACN7lB,YAAY,EACZ+jB,IAAK,WACH,OAAOyB,GAETxB,IAAK,SAASjkB,GACZ,GAAIA,EAAQ,GAAKA,EAAQ,IACvB,MAAM,IAAI4C,MAAM,mCAElB6iB,EAAQzlB,EACRpH,KAAKgsB,cAAe,IAIxB,MAAS,CACP3kB,YAAY,EACZ+jB,IAAK,WACH,OAAO0B,GAETzB,IAAK,SAASjkB,GACZ,IAAI4lB,EAAUpB,EAAiBxkB,GAC/B,IAAK4lB,EACH,MAAM,IAAIC,YAAY,gEAExBH,EAASE,EACThtB,KAAKgsB,cAAe,MAU1BhsB,KAAKmtB,kBAAeziB,EAOtB9C,EAAOH,UAAU2lB,aAAe,WAE9B,OAAOzlB,OAAO0lB,oBAAoB9pB,OAAQvD,KAAKhE,OAGjDR,EAAOC,QAAUmM,G,qBC7RjB,IAAI0lB,EAAc,EAAQ,QACtB5tB,EAAM,EAAQ,QACd6tB,EAAW,EAAQ,QACnBC,EAAM,EAAQ,QAEd7tB,EAAoBD,EAAIC,kBAExBmqB,EAAYwD,EAAYxD,UAExB2D,EAAaD,EAAIC,WACjBC,EAAYF,EAAIE,UAuBpB,SAASC,EAAqBC,GAC7B,OAAOA,EACLpxB,QAAQ,gBAAiB,MACzBA,QAAQ,oBAAqB,MAkChC,SAASqD,EAAU+J,GAClB5J,KAAK4J,QAAUA,GAAU,CAACikB,QAAQ,IAkCnC,SAASC,EAAkBC,EAAUC,EAAWH,GAC/C,IAAIE,EAAU,CACb,GAAGC,aAAsBC,EACxB,OAAOD,EAERD,EAAYC,EAEb,IAAIE,EAAe,GACfC,EAAaJ,aAAqBK,SAEtC,SAASC,EAAMnlB,GACd,IAAIolB,EAAKP,EAAU7kB,IACfolB,GAAMH,IACTG,EAAyB,GAApBP,EAAUnwB,OAAY,SAAS2wB,GAAKR,EAAU7kB,EAAIqlB,IAAMR,GAE9DG,EAAahlB,GAAOolB,GAAM,SAASC,GAClCD,EAAG,WAAWplB,EAAI,MAAMqlB,EAAIC,EAASX,MACnC,aAKJ,OAbAA,EAAUA,GAAS,GAUnBQ,EAAM,WACNA,EAAM,SACNA,EAAM,cACCH,EAaR,SAASD,IACLjuB,KAAKyuB,OAAQ,EAEjB,SAASC,EAASb,EAAQlI,GACzBA,EAAKgJ,WAAad,EAAQc,WAC1BhJ,EAAKiJ,aAAef,EAAQe,aAkH7B,SAASJ,EAASzqB,GACjB,GAAGA,EACF,MAAO,OAAOA,EAAE8qB,UAAW,IAAI,UAAU9qB,EAAE4qB,WAAW,QAAQ5qB,EAAE6qB,aAAa,IAG/E,SAASE,EAAUlqB,EAAMkN,EAAMlU,GAC9B,MAAmB,iBAATgH,EACFA,EAAMmqB,OAAOjd,EAAMlU,GAEvBgH,EAAMhH,QAAUkU,EAAMlU,GAAUkU,EAC3B,IAAIkd,KAAKlU,KAAKla,OAAOgE,EAAMkN,EAAMlU,GAAQ,GAE1CgH,EAwCT,SAASqqB,EAAeC,EAAOvJ,GACtBuJ,EAAOC,eAGRD,EAAOC,eAAeC,YAAYzJ,GAFlCuJ,EAAOG,IAAID,YAAYzJ,GA/O/B9lB,EAAU4H,UAAU8gB,gBAAkB,SAAS9W,EAAO+L,GACrD,IAAI5T,EAAU5J,KAAK4J,QACf4jB,EAAO,IAAIE,EACXM,EAAapkB,EAAQokB,YAAc,IAAIC,EACvCC,EAAetkB,EAAQskB,aACvBL,EAAUjkB,EAAQikB,QAClByB,EAAe1lB,EAAQ2lB,OAAO,GAC9B9F,EAAS,aAAa5qB,KAAK2e,GACzBgS,EAAY/F,EAAS8D,EAASkC,cAAgBlC,EAASmC,aAC1D7B,GACFG,EAAW2B,mBAAmB9B,GAG/BL,EAAIU,aAAeJ,EAAkBI,EAAaF,EAAWH,GAC7DL,EAAIQ,WAAapkB,EAAQokB,YAAcA,EACpCvE,IACF6F,EAAa,IAAMxF,EAAUN,MAE9B8F,EAAajH,IAAMiH,EAAajH,KAAOyB,EAAUE,IACjD,IAAI4F,EAAYhmB,EAAQ+jB,sBAAwBA,EAUhD,OATIlc,GAA4B,kBAAXA,EACpB+b,EAAIziB,MACH6kB,EAAUne,GACV6d,EACAE,GAGDhC,EAAIU,aAAa2B,MAAM,sBAEjB7B,EAAWqB,KAgDnBpB,EAAWxmB,UAAY,CACtBqoB,cAAgB,WACZ9vB,KAAKqvB,KAAM,IAAI1vB,GAAoBowB,eAAe,KAAM,KAAM,MAC1D/vB,KAAK6tB,UACL7tB,KAAKqvB,IAAIW,YAAchwB,KAAK6tB,QAAQgB,WAG5CoB,aAAa,SAASC,EAAcC,EAAWC,EAAO9vB,GACrD,IAAI+uB,EAAMrvB,KAAKqvB,IACR1c,EAAK0c,EAAIgB,gBAAgBH,EAAcE,GAAOD,GAC9C/pB,EAAM9F,EAAM1C,OAChBqxB,EAAcjvB,KAAM2S,GACpB3S,KAAKmvB,eAAiBxc,EAEzB3S,KAAK6tB,SAAWa,EAAS1uB,KAAK6tB,QAAQlb,GACnC,IAAK,IAAI/X,EAAI,EAAIA,EAAIwL,EAAKxL,IAAK,CACvBs1B,EAAe5vB,EAAMgwB,OAAO11B,GAAhC,IACIwM,EAAQ9G,EAAMiwB,SAAS31B,GAE7B41B,GADMJ,EAAQ9vB,EAAMmwB,SAAS71B,GACtBy0B,EAAIqB,kBAAkBR,EAAcE,IAC/CpwB,KAAK6tB,SAAUa,EAASpuB,EAAMqwB,WAAW/1B,GAAG41B,GAC5CA,EAAKppB,MAAQopB,EAAKxJ,UAAY5f,EAC9BuL,EAAGie,iBAAiBJ,KAGtBK,WAAW,SAASX,EAAcC,EAAWC,GAC5C,IAAIzN,EAAU3iB,KAAKmvB,eACLxM,EAAQN,QACtBriB,KAAKmvB,eAAiBxM,EAAQmO,YAE/BC,mBAAmB,SAASC,EAAQrnB,KAEpCsnB,iBAAiB,SAASD,KAE1BE,sBAAsB,SAAS7H,EAAQxvB,GACnC,IAAIs3B,EAAMnxB,KAAKqvB,IAAI+B,4BAA4B/H,EAAQxvB,GACvDmG,KAAK6tB,SAAWa,EAAS1uB,KAAK6tB,QAAQsD,GACtClC,EAAcjvB,KAAMmxB,IAExBE,oBAAoB,SAASC,EAAIxf,EAAOlU,KAExC2zB,WAAW,SAAS3sB,EAAOkN,EAAOlU,GAGjC,GAFAgH,EAAQkqB,EAAU9T,MAAMhb,KAAKqR,WAE1BzM,EAAM,CACR,GAAI5E,KAAKyuB,MACR,IAAI+C,EAAWxxB,KAAKqvB,IAAIoC,mBAAmB7sB,QAEvC4sB,EAAWxxB,KAAKqvB,IAAIqC,eAAe9sB,GAErC5E,KAAKmvB,eACPnvB,KAAKmvB,eAAeC,YAAYoC,GACxB,QAAQ3yB,KAAK+F,IACrB5E,KAAKqvB,IAAID,YAAYoC,GAGtBxxB,KAAK6tB,SAAWa,EAAS1uB,KAAK6tB,QAAQ2D,KAGxCG,cAAc,SAASn0B,KAEvBo0B,YAAY,WACX5xB,KAAKqvB,IAAIO,aAEVD,mBAAmB,SAAU9B,IACtB7tB,KAAK6tB,QAAUA,KACjBA,EAAQc,WAAa,IAI1BkD,QAAQ,SAASjtB,EAAOkN,EAAOlU,GAC9BgH,EAAQkqB,EAAU9T,MAAMhb,KAAKqR,WAC1B,IAAIygB,EAAO9xB,KAAKqvB,IAAI0C,cAAcntB,GAClC5E,KAAK6tB,SAAWa,EAAS1uB,KAAK6tB,QAAQiE,GACtC7C,EAAcjvB,KAAM8xB,IAGxBE,WAAW,WAEPhyB,KAAKyuB,OAAQ,GAEjBwD,SAAS,WACLjyB,KAAKyuB,OAAQ,GAGjByD,SAAS,SAAS10B,EAAM20B,EAAUtD,GACjC,IAAIuD,EAAOpyB,KAAKqvB,IAAIgD,eACjB,GAAID,GAAQA,EAAKE,mBAAoB,CACjC,IAAIC,EAAKH,EAAKE,mBAAmB90B,EAAM20B,EAAUtD,GACjD7uB,KAAK6tB,SAAWa,EAAS1uB,KAAK6tB,QAAQ0E,GACtCtD,EAAcjvB,KAAMuyB,GACxBvyB,KAAKqvB,IAAImD,QAAUD,IAOvBE,QAAQ,SAAS5C,GAChBjtB,QAAQsqB,KAAK,qBAAqB2C,EAAMrB,EAASxuB,KAAK6tB,WAEvDgC,MAAM,SAASA,GACdjtB,QAAQitB,MAAM,mBAAmBA,EAAMrB,EAASxuB,KAAK6tB,WAEtD6E,WAAW,SAAS7C,GACnB,MAAM,IAAIpC,EAAWoC,EAAO7vB,KAAK6tB,WAkDnC,+JAA+JrxB,QAAQ,QAAO,SAAS0M,GACtL+kB,EAAWxmB,UAAUyB,GAAO,WAAW,OAAO,SAY/CzN,EAAQk3B,aAAe1E,EACvBxyB,EAAQkyB,qBAAuBA,EAC/BlyB,EAAQoE,UAAYA,G,yCCjUpB,IAAIgO,EAAiBS,EAAQ,QACzBskB,EAA2BtkB,EAAQ,QACvC,SAASukB,EAAWC,EAAQC,EAAM/H,GAahC,OAZI4H,KACFp3B,EAAOC,QAAUo3B,EAAatiB,QAAQC,UAAUzC,OAAQvS,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,UAE7HD,EAAOC,QAAUo3B,EAAa,SAAoBC,EAAQC,EAAM/H,GAC9D,IAAIxlB,EAAI,CAAC,MACTA,EAAEvK,KAAK+f,MAAMxV,EAAGutB,GAChB,IAAIC,EAAc5E,SAASrgB,KAAKiN,MAAM8X,EAAQttB,GAC1CytB,EAAW,IAAID,EAEnB,OADIhI,GAAOnd,EAAeolB,EAAUjI,EAAMvjB,WACnCwrB,GACNz3B,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,SAEnEo3B,EAAW7X,MAAM,KAAM3J,WAEhC7V,EAAOC,QAAUo3B,EAAYr3B,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,S,kCCflG,IAAIwtB,EAAS,EAAQ,QAAiBA,OAStCxtB,EAAQi0B,aAAezG,EAAO,CAC7BiK,IAAK,IACLC,KAAM,IACNC,GAAI,IACJC,GAAI,IACJC,KAAM,MAiBP73B,EAAQg0B,cAAgBxG,EAAO,CAC9BsK,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACR3K,GAAI,IACJ4K,IAAK,IACLC,IAAK,KACLC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,GAAI,IACJC,IAAK,KACLC,IAAK,KACLC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,IAAK,IACL9B,IAAK,IACL+B,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,KAAM,IACNC,SAAU,IACVC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,MAAO,IACPC,QAAS,IACTC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,GAAI,IACJC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,KAAM,IACN9D,KAAM,IACN+D,cAAe,IACfC,OAAQ,IACRC,SAAU,IACVC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,IAAK,IACLC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,UAAW,IACXC,QAAS,IACTC,UAAW,IACXC,UAAW,IACXC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,SAAU,IACVC,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,WAAY,IACZC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,QAAS,IACTC,IAAK,KACLC,IAAK,KACLC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,UAAW,IACXC,SAAU,IACVC,QAAS,IACTC,gBAAiB,IACjBC,cAAe,IACfC,SAAU,IACVC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,aAAc,IACdC,YAAa,IACbC,cAAe,IACfC,kBAAmB,IACnBC,kBAAmB,IACnBC,mBAAoB,IACpBC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,IAAK,KACLC,QAAS,KACTC,KAAM,IACNC,KAAM,IACNC,KAAM,KACNC,KAAM,KACNC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,QAAS,IACTC,SAAU,IACVC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,KAAM,KACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,KACNC,MAAO,IACPC,SAAU,IACVC,KAAM,IACNC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,qBAAsB,IACtBC,KAAM,KACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,KAAM,IACNC,UAAW,IACXC,UAAW,IACXC,IAAK,IACLC,IAAK,KACLC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,UAAW,IACXC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,WAAY,IACZC,YAAa,IACbC,YAAa,IACbC,UAAW,IACXC,SAAU,IACVC,SAAU,IACVC,YAAa,IACbC,WAAY,IACZC,YAAa,IACbC,KAAM,IACNC,KAAM,IACNC,SAAU,IACVC,OAAQ,IACRC,QAAS,IACTC,yBAA0B,IAC1BC,sBAAuB,IACvBC,gBAAiB,IACjBC,MAAO,IACPC,SAAU,IACVC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,OAAQ,IACRC,WAAY,IACZC,UAAW,IACXC,KAAM,IACNC,QAAS,IACTC,UAAW,IACXC,OAAQ,IACRC,OAAQ,IACRC,gBAAiB,IACjBC,KAAM,IACNC,KAAM,KACNC,OAAQ,IACRC,UAAW,IACXC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,gCAAiC,IACjCC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,IAAK,IACLC,IAAK,IACLC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,QAAS,IACTC,YAAa,IACbC,YAAa,IACbC,SAAU,IACVC,WAAY,IACZC,OAAQ,IACRC,eAAgB,IAChBC,gBAAiB,IACjBC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,GAAI,IACJC,GAAI,IACJC,QAAS,IACTC,MAAO,IACPC,SAAU,IACVC,QAAS,IACTC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,IAAK,KACLC,IAAK,KACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,iBAAkB,IAClBC,eAAgB,IAChBC,uBAAwB,IACxBC,iBAAkB,IAClBC,iBAAkB,IAClBC,KAAM,IACNC,QAAS,IACTC,QAAS,IACTC,YAAa,IACbC,MAAO,IACPC,IAAK,IACLC,cAAe,IACfC,QAAS,IACTC,MAAO,IACPC,IAAK,IACLC,OAAQ,IACRC,cAAe,IACfC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACPC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,QAAS,IACTC,UAAW,IACXC,eAAgB,IAChBC,sBAAuB,IACvBC,UAAW,IACXC,gBAAiB,IACjBC,gBAAiB,IACjBC,qBAAsB,IACtBC,cAAe,IACfC,oBAAqB,IACrBC,yBAA0B,IAC1BC,qBAAsB,IACtBC,iBAAkB,IAClBC,eAAgB,IAChBC,cAAe,IACfC,kBAAmB,IACnBC,kBAAmB,IACnBC,UAAW,IACXC,UAAW,IACXC,UAAW,IACXC,aAAc,IACdC,iBAAkB,IAClBC,UAAW,IACXC,eAAgB,IAChBC,gBAAiB,IACjBC,iBAAkB,IAClBC,oBAAqB,IACrBC,kBAAmB,IACnBC,eAAgB,IAChBC,kBAAmB,IACnBC,mBAAoB,IACpBC,gBAAiB,IACjBC,mBAAoB,IACpBC,QAAS,IACTC,aAAc,IACdC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,GAAI,IACJC,MAAO,IACPC,IAAK,KACLC,IAAK,KACLC,GAAI,IACJC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRp+B,GAAI,IACJq+B,QAAS,IACTC,SAAU,IACVC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,iBAAkB,IAClBC,OAAQ,IACRC,qBAAsB,IACtBC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,MAAO,IACPC,WAAY,IACZC,YAAa,IACbC,MAAO,IACPC,OAAQ,IACRC,WAAY,IACZC,OAAQ,IACRC,YAAa,IACbC,MAAO,IACPC,QAAS,IACTC,SAAU,IACVC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,YAAa,IACbC,aAAc,IACdC,aAAc,IACdC,cAAe,IACfC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,IAAK,KACLC,IAAK,KACLC,MAAO,IACPC,kBAAmB,IACnBC,sBAAuB,IACvBC,MAAO,KACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,WAAY,IACZC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,KACNC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,KAAM,KACNC,OAAQ,IACRC,IAAK,KACLC,IAAK,KACLC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,MAAO,IACPC,aAAc,IACdC,iBAAkB,IAClBC,iBAAkB,IAClBC,eAAgB,IAChBC,YAAa,IACbC,kBAAmB,IACnBC,aAAc,IACdC,KAAM,KACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,GAAI,IACJC,GAAI,IACJtoB,GAAI,IACJuoB,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,UAAW,IACXC,OAAQ,IACRC,OAAQ,IACRC,UAAW,IACXC,WAAY,IACZC,QAAS,IACTC,OAAQ,IACRC,UAAW,KACXC,KAAM,KACNC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,QAAS,IACTC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,UAAW,IACXC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,KACLC,aAAc,IACdC,SAAU,IACVC,SAAU,IACVC,MAAO,IACPC,OAAQ,IACRC,cAAe,IACfC,eAAgB,IAChBC,KAAM,IACNC,KAAM,KACNC,OAAQ,IACRC,eAAgB,IAChBC,KAAM,IACNC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,aAAc,IACdC,UAAW,IACXC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,GAAI,IACJC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,IAAK,KACLC,OAAQ,IACRC,OAAQ,IACRC,GAAI,IACJC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,GAAI,IACJC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,WAAY,IACZC,SAAU,IACVC,SAAU,IACVC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,QAAS,IACTC,GAAI,IACJC,OAAQ,IACRC,MAAO,IACPC,SAAU,IACVC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,aAAc,IACdC,SAAU,IACVC,QAAS,IACTC,eAAgB,IAChBC,eAAgB,IAChBC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,KAAM,KACNC,KAAM,IACNC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,IAAK,KACLC,IAAK,KACLC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,IAAK,KACLC,IAAK,KACLC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNtrC,KAAM,IACNurC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,WAAY,IACZC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,KACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,KAAM,IACNC,GAAI,IACJC,GAAI,IACJC,iBAAkB,IAClBC,UAAW,IACXC,UAAW,IACXC,UAAW,IACXC,aAAc,IACdC,oBAAqB,IACrBC,cAAe,IACfC,YAAa,IACbC,kBAAmB,IACnBC,kBAAmB,IACnBC,eAAgB,IAChBC,kBAAmB,IACnBC,UAAW,IACXC,gBAAiB,IACjBC,cAAe,IACfC,eAAgB,IAChBC,eAAgB,IAChBC,eAAgB,IAChBC,eAAgB,IAChBC,gBAAiB,IACjBC,kBAAmB,IACnBC,oBAAqB,IACrBC,gBAAiB,IACjBC,QAAS,IACTC,aAAc,IACdC,cAAe,IACfC,eAAgB,IAChBC,aAAc,IACdC,gBAAiB,IACjBC,kBAAmB,IACnBC,iBAAkB,IAClBC,gBAAiB,IACjBC,aAAc,IACdC,gBAAiB,IACjBC,WAAY,IACZC,cAAe,IACfC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,KAAM,KACNC,OAAQ,IACRC,WAAY,IACZC,QAAS,IACTC,UAAW,IACXC,WAAY,IACZC,iBAAkB,IAClBC,cAAe,IACfC,YAAa,IACbC,QAAS,IACTC,SAAU,IACVC,QAAS,IACTC,eAAgB,IAChBC,UAAW,IACXC,OAAQ,IACRC,OAAQ,IACRC,IAAK,KACLC,IAAK,KACLC,GAAI,IACJC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,GAAI,IACJC,GAAI,IACJC,MAAO,IACPC,SAAU,IACVC,WAAY,IACZC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,WAAY,IACZC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,cAAe,IACfC,cAAe,IACfC,cAAe,IACfC,mBAAoB,IACpBC,mBAAoB,IACpBC,mBAAoB,IACpBC,WAAY,IACZC,eAAgB,IAChBC,eAAgB,IAChBC,eAAgB,IAChBC,cAAe,IACfC,eAAgB,IAChBC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,eAAgB,IAChBC,gBAAiB,IACjBC,IAAK,IACLC,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,SAAU,IACVC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,KAAM,KACNC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,GAAI,IACJC,GAAI,IACJz+B,GAAI,IACJ0+B,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,QAAS,IACTC,UAAW,KACXC,KAAM,KACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,QAAS,IACT/nC,IAAK,IACLlsB,IAAK,IACLk0D,OAAQ,IACRC,WAAY,IACZC,WAAY,IACZC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,cAAe,IACfC,YAAa,IACbC,UAAW,IACXC,IAAK,KACLC,IAAK,KACLC,IAAK,IACLC,MAAO,IACPC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,UAAW,IACXC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,GAAI,IACJC,KAAM,IACNC,KAAM,KACNC,OAAQ,IACRC,GAAI,IACJC,GAAI,IACJC,SAAU,IACVC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,IAAK,IACLC,KAAM,KACNC,MAAO,KACPC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,SAAU,IACVC,KAAM,IACNC,MAAO,KACPC,OAAQ,KACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,SAAU,KACVC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,GAAI,IACJC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,MAAO,KACPC,oBAAqB,IACrBC,mBAAoB,IACpBC,kBAAmB,IACnBC,sBAAuB,IACvBC,OAAQ,IACRC,OAAQ,IACRC,MAAO,KACPC,qBAAsB,IACtBC,eAAgB,IAChBC,QAAS,KACTC,OAAQ,IACRC,QAAS,IACTC,IAAK,KACLC,IAAK,KACLC,IAAK,KACLC,IAAK,IACLC,KAAM,IACNC,MAAO,KACPC,UAAW,KACXC,KAAM,KACNC,IAAK,KACLC,MAAO,IACPC,IAAK,KACLC,IAAK,IACLC,KAAM,IACNC,KAAM,KACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,GAAI,IACJC,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,IAAK,KACLC,IAAK,IACLC,WAAY,IACZC,WAAY,IACZC,gBAAiB,IACjBC,gBAAiB,IACjBC,KAAM,IACNC,MAAO,KACPC,UAAW,KACXC,KAAM,KACNC,MAAO,IACPC,IAAK,KACLC,MAAO,IACPC,IAAK,KACLC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,KAAM,KACNC,KAAM,IACNC,QAAS,IACTC,iBAAkB,IAClBC,KAAM,IACNC,KAAM,KACNC,IAAK,IACLC,IAAK,IACLC,aAAc,IACdC,UAAW,IACXC,qBAAsB,IACtBC,WAAY,IACZC,SAAU,IACVC,cAAe,KACfC,UAAW,IACXC,WAAY,IACZC,gBAAiB,IACjBC,oBAAqB,KACrBC,kBAAmB,KACnBC,eAAgB,IAChBC,qBAAsB,KACtBC,gBAAiB,IACjBC,gBAAiB,KACjBC,aAAc,KACdC,MAAO,IACPC,SAAU,KACVC,OAAQ,KACRC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,gBAAiB,IACjBC,mBAAoB,KACpBC,qBAAsB,IACtBC,QAAS,IACTC,aAAc,IACdC,eAAgB,IAChBC,YAAa,KACbC,kBAAmB,KACnBC,aAAc,IACdC,wBAAyB,KACzBC,kBAAmB,KACnBC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,YAAa,IACbC,iBAAkB,KAClBC,sBAAuB,IACvBC,kBAAmB,IACnBC,iBAAkB,IAClBC,oBAAqB,KACrBC,sBAAuB,IACvBC,gBAAiB,KACjBC,qBAAsB,IACtBC,kBAAmB,KACnBC,uBAAwB,IACxBC,UAAW,KACXC,eAAgB,IAChBC,YAAa,IACbC,iBAAkB,KAClBC,sBAAuB,IACvBC,iBAAkB,KAClBC,YAAa,KACbC,iBAAkB,IAClBC,SAAU,IACVC,cAAe,IACfC,kBAAmB,IACnBC,cAAe,IACfC,eAAgB,IAChBC,KAAM,IACNC,UAAW,IACXC,OAAQ,KACRC,MAAO,KACPC,QAAS,IACTC,IAAK,IACLC,OAAQ,IACRC,KAAM,KACNC,MAAO,IACPC,QAAS,KACTC,MAAO,IACPC,MAAO,IACPC,OAAQ,KACRC,OAAQ,KACRC,YAAa,IACbC,YAAa,IACbC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,UAAW,IACXC,eAAgB,IAChBC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,KAAM,IACNC,MAAO,KACPC,MAAO,IACPC,QAAS,KACTC,UAAW,IACXC,WAAY,KACZC,MAAO,IACPC,QAAS,KACTC,KAAM,IACNC,MAAO,KACPC,MAAO,IACPC,QAAS,KACTC,UAAW,IACXC,WAAY,KACZC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,cAAe,IACfC,gBAAiB,IACjBC,eAAgB,IAChBC,iBAAkB,IAClBC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,QAAS,KACTC,OAAQ,IACRC,QAAS,KACTC,MAAO,KACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,IAAK,KACLC,IAAK,KACLC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,KAAM,IACNC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,qBAAsB,IACtBC,eAAgB,IAChBC,MAAO,IACPC,MAAO,IACPC,GAAI,IACJC,GAAI,IACJC,MAAO,IACP3iE,IAAK,IACL4iE,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,KAAM,IACNC,QAAS,IACTC,IAAK,IACLC,GAAI,IACJC,KAAM,KACNC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,SAAU,IACVC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,QAAS,IACTC,UAAW,IACXC,YAAa,IACbC,gBAAiB,IACjBC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRtiD,OAAQ,IACRuiD,OAAQ,IACRC,KAAM,IACNC,QAAS,IACTC,IAAK,KACLC,IAAK,KACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJC,GAAI,IACJC,UAAW,IACXC,IAAK,IACLC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,UAAW,IACXC,OAAQ,IACRC,QAAS,IACTC,QAAS,IACTC,GAAI,IACJC,cAAe,IACfC,SAAU,IACVC,KAAM,IACNC,KAAM,KACNC,MAAO,IACPC,GAAI,IACJC,GAAI,IACJC,KAAM,IACNC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,WAAY,IACZC,YAAa,IACbC,SAAU,IACVC,cAAe,IACfC,mBAAoB,IACpBC,cAAe,IACfC,OAAQ,IACRC,YAAa,IACbC,SAAU,IACVC,SAAU,IACVC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRC,KAAM,IACNC,QAAS,IACTC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,KAAM,IACNC,WAAY,IACZC,aAAc,IACdC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,IAAK,KACLC,IAAK,KACLC,KAAM,IACNC,KAAM,IACNC,KAAM,KACNC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,YAAa,IACbC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,KAAM,IACN37C,KAAM,IACN47C,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,SAAU,IACVC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPl8D,MAAO,IACPm8D,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,UAAW,IACXC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,GAAI,IACJC,KAAM,IACNC,QAAS,IACTC,SAAU,IACVC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,eAAgB,IAChBC,mBAAoB,IACpBC,qBAAsB,IACtBC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,KACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,kBAAmB,IACnBC,WAAY,IACZC,WAAY,IACZC,WAAY,IACZC,cAAe,IACfC,oBAAqB,IACrBC,eAAgB,IAChBC,aAAc,IACdC,mBAAoB,IACpBC,mBAAoB,IACpBC,gBAAiB,IACjBC,mBAAoB,IACpBC,WAAY,IACZC,iBAAkB,IAClBC,eAAgB,IAChBC,gBAAiB,IACjBC,kBAAmB,IACnBC,iBAAkB,IAClBC,gBAAiB,IACjBC,SAAU,IACVC,cAAe,IACfC,eAAgB,IAChBC,gBAAiB,IACjBC,cAAe,IACfC,iBAAkB,IAClBC,mBAAoB,IACpBC,kBAAmB,IACnBC,iBAAkB,IAClBC,cAAe,IACfC,iBAAkB,IAClBC,YAAa,IACbC,eAAgB,IAChBC,KAAM,IACNC,aAAc,IACdC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,OAAQ,IACRC,WAAY,IACZC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,KACNC,OAAQ,IACRC,QAAS,IACTC,aAAc,IACdC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,MAAO,IACPC,YAAa,IACbC,OAAQ,IACRC,KAAM,IACNC,KAAM,KACNC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,QAAS,IACTC,GAAI,IACJC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJC,GAAI,IACJC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,MAAO,IACPC,KAAM,IACNC,IAAK,KACLC,IAAK,KACLC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,eAAgB,IAChBC,eAAgB,IAChBC,SAAU,IACVC,cAAe,IACfC,gBAAiB,IACjBC,aAAc,IACdC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,YAAa,IACbC,cAAe,IACfC,OAAQ,IACRC,SAAU,IACVC,KAAM,IACNC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,MAAO,KACPC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,UAAW,IACXC,KAAM,IACNC,MAAO,IACPC,OAAQ,KACRC,MAAO,IACPC,OAAQ,KACRC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,WAAY,IACZC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,WAAY,IACZC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,mBAAoB,IACpBC,aAAc,IACdC,kBAAmB,IACnBC,eAAgB,IAChBC,oBAAqB,IACrBC,YAAa,IACbC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,gBAAiB,IACjBC,YAAa,IACbC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,SAAU,IACVC,UAAW,IACXC,YAAa,IACbC,UAAW,IACXC,WAAY,IACZC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,WAAY,IACZC,YAAa,IACbC,SAAU,IACVC,cAAe,IACfC,mBAAoB,IACpBC,cAAe,IACfC,OAAQ,IACRC,YAAa,IACbC,SAAU,IACVC,SAAU,IACVC,QAAS,IACTC,SAAU,IACVC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,QAAS,IACTC,SAAU,IACVC,cAAe,IACfC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,SAAU,IACVC,UAAW,IACXC,UAAW,IACXC,WAAY,IACZC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,MAAO,IACPC,IAAK,KACL96D,OAAQ,IACR+6D,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRC,IAAK,KACLC,IAAK,KACLC,OAAQ,IACRC,UAAW,IACXC,UAAW,IACXC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,OAAQ,IACRC,YAAa,IACbC,SAAU,IACVC,WAAY,KACZC,OAAQ,IACRC,UAAW,IACXC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,WAAY,IACZC,eAAgB,IAChBC,WAAY,IACZC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,QAAS,IACTC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,aAAc,IACdC,aAAc,IACdC,eAAgB,IAChBC,UAAW,IACXC,cAAe,IACfC,gBAAiB,IACjBC,OAAQ,IACRC,KAAM,IACNC,SAAU,IACVC,UAAW,IACXC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,SAAU,IACVC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,iBAAkB,IAClBC,kBAAmB,IACnBC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,IAAK,KACLC,IAAK,KACLC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,SAAU,IACVC,WAAY,IACZC,aAAc,IACdC,iBAAkB,IAClBC,MAAO,IACPC,UAAW,IACXC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,WAAY,IACZC,iBAAkB,IAClBC,YAAa,IACbC,YAAa,IACbC,YAAa,IACbC,cAAe,IACfC,cAAe,IACfC,eAAgB,IAChBC,MAAO,IACPC,eAAgB,IAChBC,gBAAiB,IACjBC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,WAAY,IACZC,WAAY,IACZC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,QAAS,IACTC,OAAQ,IACRC,WAAY,IACZC,SAAU,IACVC,WAAY,IACZC,OAAQ,IACRC,MAAO,IACPC,UAAW,IACXC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,aAAc,KACdC,cAAe,KACfC,aAAc,KACdC,cAAe,KACfC,SAAU,IACVC,gBAAiB,IACjBC,iBAAkB,IAClBC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,YAAa,IACbC,aAAc,IACdC,kBAAmB,IACnBC,cAAe,IACfC,cAAe,IACfC,IAAK,KACLC,IAAK,KACLC,MAAO,IACPC,MAAO,KACPC,MAAO,KACPC,KAAM,KACNC,KAAM,KACNC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,IACRC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,IAAK,KACLC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNC,GAAI,IACJC,GAAI,IACJC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,IAAK,KACLC,IAAK,KACLC,MAAO,IACPC,MAAO,IACPC,GAAI,IACJC,GAAI,IACJC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,KACLC,IAAK,KACLC,KAAM,IACNC,KAAM,IACNC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,eAAgB,IAChBC,KAAM,IACNC,KAAM,IACNC,IAAK,IACLC,IAAK,KACLC,KAAM,IACNC,KAAM,IACNC,QAAS,IACTC,KAAM,IACNC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,IAAK,IACLC,KAAM,MAOP57F,EAAQ+zB,UAAY/zB,EAAQg0B,e,uBCrnE5B,kBAGI6nE,EADkB,qBAAX/zF,OACDA,OACmB,qBAAXH,EACRA,EACiB,qBAATE,KACRA,KAEA,GAGV9H,EAAOC,QAAU67F,I,yCCZjB,SAASC,EAAkBjpE,GACzB,OAAgE,IAAzDF,SAAStxB,SAAS8T,KAAK0d,GAAIrlB,QAAQ,iBAE5CzN,EAAOC,QAAU87F,EAAmB/7F,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,S,4CCezG,IAAI+7F,EAAW,EAAQ,QAEnBC,EAAazwF,OAAO0H,QAAU,WAChC,SAASgpF,KACT,OAAO,SAAS9pF,GACd,GAAyB,IAArByD,UAAUzT,OACZ,MAAM,IAAIoM,MAAM,kDAGlB,OADA0tF,EAAEjwF,UAAYmG,EACP,IAAI8pF,GAPmB,GAelC,SAASC,EAAaC,EAAWC,GAC/B73F,KAAKxC,KAAO,eACZwC,KAAKgN,KAAO4qF,EAAU5qF,KACtBhN,KAAK63F,QAAUA,GAAWD,EAAUC,QAkBtC,SAASC,EAAelqE,GAEtB,SAASmqE,EAAeC,EAAGC,EAAGrzE,EAAGszE,GAC/B,OAAiB,MAAL,EAAJF,GAA0B,IAAL,EAAJC,IAAmB,EAAJrzE,IAAc,EAAJszE,GAAS,IAG7D,IAAID,EAAIrqE,EAAMnwB,MAAM,wCACpB,OAAKw6F,EAIDA,EAAE,GAEGF,EAAeE,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAGz7F,QAAQ,IAAK,IAAKy7F,EAAE,IAClDA,EAAE,GAAK,GAGTF,EAAeE,EAAE,GAAIA,EAAE,GAAI,EAAIA,EAAE,IAGjCF,EAAe,EAAGE,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAZhC,KAkBX,SAASE,IACPn4F,KAAK4R,OAAS6lF,EAAW,MAwD3B,SAASW,EAAaxqE,EAAO/jB,EAAUwuF,EAAeC,GACpD,IAAIxnF,EAASwnF,EAAa1qE,EAAMxwB,MAAMk7F,GAAc,CAAC1qE,GACrD,IAAK,IAAIhzB,KAAKkW,EACZ,GAAyB,kBAAdA,EAAOlW,GAAlB,CAGA,IAAI29F,EAAKznF,EAAOlW,GAAGwC,MAAMi7F,GACzB,GAAkB,IAAdE,EAAG36F,OAAP,CAGA,IAAIiU,EAAI0mF,EAAG,GAAGh7F,OACV4J,EAAIoxF,EAAG,GAAGh7F,OACdsM,EAASgI,EAAG1K,KAIhB,SAASqxF,EAAS5qE,EAAO6qE,EAAKC,GAE5B,IAAIC,EAAS/qE,EAEb,SAASgrE,IACP,IAAIC,EAAKf,EAAelqE,GACxB,GAAW,OAAPirE,EACF,MAAM,IAAIlB,EAAaA,EAAamB,OAAOC,aACrB,wBAA0BJ,GAIlD,OADA/qE,EAAQA,EAAMpxB,QAAQ,iBAAkB,IACjCq8F,EAIT,SAASG,EAAmBprE,EAAO6qE,GACjC,IAAIQ,EAAW,IAAId,EAEnBC,EAAaxqE,GAAO,SAAU/b,EAAG1K,GAC/B,OAAQ0K,GACR,IAAK,SAEH,IAAK,IAAIjX,EAAI89F,EAAW96F,OAAS,EAAGhD,GAAK,EAAGA,IAC1C,GAAI89F,EAAW99F,GAAGigB,KAAO1T,EAAG,CAC1B8xF,EAAS5tE,IAAIxZ,EAAG6mF,EAAW99F,GAAGs+F,QAC9B,MAGJ,MACF,IAAK,WACHD,EAASE,IAAItnF,EAAG1K,EAAG,CAAC,KAAM,OAC1B,MACF,IAAK,OACH,IAAIiyF,EAAOjyF,EAAE/J,MAAM,KACfi8F,EAAQD,EAAK,GACjBH,EAASK,QAAQznF,EAAGwnF,GACpBJ,EAASM,QAAQ1nF,EAAGwnF,IAASJ,EAAS5tE,IAAI,eAAe,GACzD4tE,EAASE,IAAItnF,EAAGwnF,EAAO,CAAC,SACJ,IAAhBD,EAAKx7F,QACPq7F,EAASE,IAAI,YAAaC,EAAK,GAAI,CAAC,QAAS,SAAU,QAEzD,MACF,IAAK,WACHA,EAAOjyF,EAAE/J,MAAM,KACf67F,EAASM,QAAQ1nF,EAAGunF,EAAK,IACL,IAAhBA,EAAKx7F,QACPq7F,EAASE,IAAI,gBAAiBC,EAAK,GAAI,CAAC,QAAS,SAAU,QAE7D,MACF,IAAK,OACHH,EAASM,QAAQ1nF,EAAG1K,GACpB,MACF,IAAK,QACH8xF,EAASE,IAAItnF,EAAG1K,EAAG,CAAC,QAAS,SAAU,MAAO,OAAQ,UACtD,SAED,IAAK,MAGRsxF,EAAIS,OAASD,EAAS7tE,IAAI,SAAU,MACpCqtE,EAAIe,SAAWP,EAAS7tE,IAAI,WAAY,IACxC,IACEqtE,EAAIgB,KAAOR,EAAS7tE,IAAI,OAAQ,QAChC,MAAOpgB,IACTytF,EAAIiB,UAAYT,EAAS7tE,IAAI,YAAa,SAC1CqtE,EAAIkB,YAAcV,EAAS7tE,IAAI,eAAe,GAC9CqtE,EAAIlgF,KAAO0gF,EAAS7tE,IAAI,OAAQ,KAEhC,IACEqtE,EAAI5sE,MAAQotE,EAAS7tE,IAAI,QAAS,UAClC,MAAOpgB,GACPytF,EAAI5sE,MAAQotE,EAAS7tE,IAAI,QAAS,UAEpC,IACEqtE,EAAI/pE,SAAWuqE,EAAS7tE,IAAI,WAAY,QACxC,MAAOpgB,GACPytF,EAAI/pE,SAAWuqE,EAAS7tE,IAAI,WAAY,CACtCtZ,MAAO,EACP8nF,KAAM,EACNC,OAAQ,GACRC,OAAQ,GACR/nF,IAAK,IACLgoF,MAAO,KACNtB,EAAI5sE,OAIT4sE,EAAIuB,cAAgBf,EAAS7tE,IAAI,gBAAiB,CAChDtZ,MAAO,QACP8nF,KAAM,QACNC,OAAQ,SACRC,OAAQ,SACR/nF,IAAK,MACLgoF,MAAO,OACNtB,EAAI5sE,OAGT,SAASouE,IACPrsE,EAAQA,EAAMpxB,QAAQ,OAAQ,IAOhC,GAHAy9F,IACAxB,EAAI3sE,UAAY8sE,IAChBqB,IAC2B,WAAvBrsE,EAAMmB,OAAO,EAAG,GAClB,MAAM,IAAI4oE,EAAaA,EAAamB,OAAOC,aACpB,qEACAJ,GAEzB/qE,EAAQA,EAAMmB,OAAO,GACrBkrE,IACAxB,EAAI1sE,QAAU6sE,IAGdqB,IACAjB,EAAmBprE,EAAO6qE,GAxO5Bd,EAAalwF,UAAYgwF,EAAWztF,MAAMvC,WAC1CkwF,EAAalwF,UAAUkH,YAAcgpF,EAGrCA,EAAamB,OAAS,CACpBoB,aAAc,CACZltF,KAAM,EACN6qF,QAAS,+BAEXkB,aAAc,CACZ/rF,KAAM,EACN6qF,QAAS,0BAmCbM,EAAS1wF,UAAY,CAEnB4jB,IAAK,SAASxZ,EAAG1K,GACVnH,KAAKorB,IAAIvZ,IAAY,KAAN1K,IAClBnH,KAAK4R,OAAOC,GAAK1K,IAQrBikB,IAAK,SAASvZ,EAAGsoF,EAAMC,GACrB,OAAIA,EACKp6F,KAAKmrB,IAAItZ,GAAK7R,KAAK4R,OAAOC,GAAKsoF,EAAKC,GAEtCp6F,KAAKmrB,IAAItZ,GAAK7R,KAAK4R,OAAOC,GAAKsoF,GAGxChvE,IAAK,SAAStZ,GACZ,OAAOA,KAAK7R,KAAK4R,QAGnBunF,IAAK,SAAStnF,EAAG1K,EAAG3B,GAClB,IAAK,IAAIa,EAAI,EAAGA,EAAIb,EAAE5H,SAAUyI,EAC9B,GAAIc,IAAM3B,EAAEa,GAAI,CACdrG,KAAKqrB,IAAIxZ,EAAG1K,GACZ,QAKNmyF,QAAS,SAASznF,EAAG1K,GACf,UAAUtI,KAAKsI,IACjBnH,KAAKqrB,IAAIxZ,EAAGoC,SAAS9M,EAAG,MAI5BoyF,QAAS,SAAS1nF,EAAG1K,GAEnB,SAASA,EAAE1J,MAAM,8BACf0J,EAAIsb,WAAWtb,GACXA,GAAK,GAAKA,GAAK,QACjBnH,KAAKqrB,IAAIxZ,EAAG1K,IACL,KAmJf,IAAIkzF,EAAmB7C,EAAS8C,eAAiB9C,EAAS8C,cAAc,YAEpEC,EAAW,CACbt7F,EAAG,OACHrE,EAAG,IACHmK,EAAG,IACHR,EAAG,IACHi2F,KAAM,OACNC,GAAI,KACJtzF,EAAG,OACH2T,KAAM,QAKJ4/E,EAAsB,CACxBC,MAAO,sBACPC,KAAM,kBACNC,KAAM,oBACNC,IAAK,kBACLC,OAAQ,oBACRC,QAAS,oBACTC,KAAM,kBACNC,MAAO,iBAGLC,EAAiB,CACnBh0F,EAAG,QACH2T,KAAM,QAGJsgF,EAAe,CACjBX,GAAI,QAIN,SAASY,EAAa93F,EAAQqqB,GAC5B,SAAS0tE,IAEP,IAAK1tE,EACH,OAAO,KAIT,SAAS2tE,EAAQphG,GAEf,OADAyzB,EAAQA,EAAMmB,OAAO50B,EAAOyD,QACrBzD,EAGT,IAAI89F,EAAIrqE,EAAMnwB,MAAM,uBAGpB,OAAO89F,EAAQtD,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAGjC,SAASx2F,EAASmjB,GAIhB,OAHAy1E,EAAiBmB,UAAY52E,EAC7BA,EAAIy1E,EAAiB93E,YACrB83E,EAAiB93E,YAAc,GACxBqC,EAGT,SAAS62E,EAAU94E,EAASR,GAC1B,OAAQi5E,EAAaj5E,EAAQgO,YACtBirE,EAAaj5E,EAAQgO,aAAexN,EAAQwN,UAIrD,SAASmqE,EAAcz8F,EAAM69F,GAC3B,IAAIr5E,EAAUk4E,EAAS18F,GACvB,IAAKwkB,EACH,OAAO,KAET,IAAIF,EAAU5e,EAAOi0F,SAAS8C,cAAcj4E,GACxC7kB,EAAO29F,EAAet9F,GAI1B,OAHIL,GAAQk+F,IACVv5E,EAAQ3kB,GAAQk+F,EAAWn+F,QAEtB4kB,EAGT,IAEIre,EAFA63F,EAAUp4F,EAAOi0F,SAAS8C,cAAc,OACxC33E,EAAUg5E,EAEVC,EAAW,GAEf,MAA6B,QAArB93F,EAAIw3F,KACV,GAAa,MAATx3F,EAAE,GA8DN6e,EAAQyM,YAAY7rB,EAAOi0F,SAAS9lE,eAAejwB,EAASqC,SA9D5D,CACE,GAAa,MAATA,EAAE,GAAY,CAEZ83F,EAASh+F,QACTg+F,EAASA,EAASh+F,OAAS,KAAOkG,EAAEirB,OAAO,GAAGvyB,QAAQ,IAAK,MAC7Do/F,EAASC,MACTl5E,EAAUA,EAAQmO,YAGpB,SAEF,IACInL,EADAkzE,EAAKf,EAAeh0F,EAAEirB,OAAO,EAAGjrB,EAAElG,OAAS,IAE/C,GAAIi7F,EAAI,CAENlzE,EAAOpiB,EAAOi0F,SAASpmE,4BAA4B,YAAaynE,GAChEl2E,EAAQyM,YAAYzJ,GACpB,SAEF,IAAIsyE,EAAIn0F,EAAErG,MAAM,oDAEhB,IAAKw6F,EACH,SAIF,GADAtyE,EAAO20E,EAAcrC,EAAE,GAAIA,EAAE,KACxBtyE,EACH,SAIF,IAAK81E,EAAU94E,EAASgD,GACtB,SAGF,GAAIsyE,EAAE,GAAI,CACR,IAAI6D,EAAU7D,EAAE,GAAG76F,MAAM,KAEzB0+F,EAAQz+F,SAAQ,SAAS0+F,GACvB,IAAIC,EAAU,OAAOn9F,KAAKk9F,GAEtBE,EAAYD,EAAUD,EAAGh/F,MAAM,GAAKg/F,EAExC,GAAIrB,EAAoBjxF,eAAewyF,GAAY,CACjD,IAAIC,EAAWF,EAAU,mBAAqB,QAC1CG,EAAYzB,EAAoBuB,GAEpCt2E,EAAKvlB,MAAM87F,GAAYC,MAI3Bx2E,EAAKy2E,UAAYN,EAAQj3F,KAAK,KAIhC+2F,EAAS3gG,KAAKg9F,EAAE,IAChBt1E,EAAQyM,YAAYzJ,GACpBhD,EAAUgD,EAQd,OAAOg2E,EAQT,IAAIU,EAAkB,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAC9E,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MACxE,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MACxE,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MACxE,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MACxE,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MACxE,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAQ,MACzD,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC/D,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC/D,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC/D,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAS,OAAU,CAAC,MAAS,OAClE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OACtE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OACtE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OACtE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OACtE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OACtE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,QAAU,UAExE,SAASC,EAAgBC,GACvB,IAAK,IAAI3hG,EAAI,EAAGA,EAAIyhG,EAAgBz+F,OAAQhD,IAAK,CAC/C,IAAI4hG,EAAeH,EAAgBzhG,GACnC,GAAI2hG,GAAYC,EAAa,IAAMD,GAAYC,EAAa,GAC1D,OAAO,EAIX,OAAO,EAGT,SAASC,EAAcC,GACrB,IAEIH,EAFAI,EAAY,GACZ3gG,EAAO,GAGX,IAAK0gG,IAAWA,EAAOt6E,WACrB,MAAO,MAGT,SAASw6E,EAAUD,EAAWh3E,GAC5B,IAAK,IAAI/qB,EAAI+qB,EAAKvD,WAAWxkB,OAAS,EAAGhD,GAAK,EAAGA,IAC/C+hG,EAAU1hG,KAAK0qB,EAAKvD,WAAWxnB,IAInC,SAASiiG,EAAaF,GACpB,IAAKA,IAAcA,EAAU/+F,OAC3B,OAAO,KAGT,IAAI+nB,EAAOg3E,EAAUd,MACjB7/F,EAAO2pB,EAAKpD,aAAeoD,EAAKm3E,UACpC,GAAI9gG,EAAM,CAGR,IAAIi8F,EAAIj8F,EAAKyB,MAAM,cACnB,OAAIw6F,GACF0E,EAAU/+F,OAAS,EACZq6F,EAAE,IAEJj8F,EAET,MAAqB,SAAjB2pB,EAAKtD,QACAw6E,EAAaF,GAElBh3E,EAAKvD,YACPw6E,EAAUD,EAAWh3E,GACdk3E,EAAaF,SAFtB,EAMFC,EAAUD,EAAWD,GACrB,MAAQ1gG,EAAO6gG,EAAaF,GAC1B,IAAK,IAAI/hG,EAAI,EAAGA,EAAIoB,EAAK4B,OAAQhD,IAE/B,GADA2hG,EAAWvgG,EAAKoI,WAAWxJ,GACvB0hG,EAAgBC,GAClB,MAAO,MAIb,MAAO,MAGT,SAASQ,EAAetE,GACtB,GAAwB,kBAAbA,EAAIgB,OACVhB,EAAIkB,aAAgBlB,EAAIgB,MAAQ,GAAKhB,EAAIgB,MAAQ,KACpD,OAAOhB,EAAIgB,KAEb,IAAKhB,EAAIuE,QAAUvE,EAAIuE,MAAMC,gBACxBxE,EAAIuE,MAAMC,cAAcC,aAC3B,OAAQ,EAKV,IAHA,IAAIF,EAAQvE,EAAIuE,MACZG,EAAYH,EAAMC,cAClBh9E,EAAQ,EACHrlB,EAAI,EAAGA,EAAIuiG,EAAUv/F,QAAUu/F,EAAUviG,KAAOoiG,EAAOpiG,IACpC,YAAtBuiG,EAAUviG,GAAGwiG,MACfn9E,IAGJ,OAAkB,IAATA,EAGX,SAASo9E,KAoBT,SAASC,EAAY/5F,EAAQk1F,EAAK8E,GAChCF,EAASzsF,KAAK5Q,MACdA,KAAKy4F,IAAMA,EAIXz4F,KAAK08F,OAASrB,EAAa93F,EAAQk1F,EAAIz8F,MACvC,IAAIwhG,EAAS,CACXC,MAAO,yBACPC,gBAAkB,qBAClBhvE,SAAU,WACVkrE,KAAM,EACNG,MAAO,EACPnT,IAAK,EACL3qD,OAAQ,EACR0hE,QAAS,SACTC,YAA8B,KAAjBnF,EAAIe,SAAkB,gBACiB,OAAjBf,EAAIe,SAAoB,cACA,cAC3DqE,YAAa,aAGf79F,KAAK89F,YAAYN,EAAQx9F,KAAK08F,QAK9B18F,KAAKgrC,IAAMznC,EAAOi0F,SAAS8C,cAAc,OACzCkD,EAAS,CACPO,UAAWtB,EAAcz8F,KAAK08F,QAC9BkB,YAA8B,KAAjBnF,EAAIe,SAAkB,gBACiB,OAAjBf,EAAIe,SAAoB,cACA,cAC3DqE,YAAa,YACbG,UAAyB,WAAdvF,EAAI5sE,MAAqB,SAAW4sE,EAAI5sE,MACnDoyE,KAAMV,EAAaU,KACnBC,WAAY,WACZxvE,SAAU,YAGZ1uB,KAAK89F,YAAYN,GACjBx9F,KAAKgrC,IAAI5b,YAAYpvB,KAAK08F,QAK1B,IAAIyB,EAAU,EACd,OAAQ1F,EAAIuB,eACZ,IAAK,QACL,IAAK,YACHmE,EAAU1F,EAAI/pE,SACd,MACF,IAAK,SACHyvE,EAAU1F,EAAI/pE,SAAY+pE,EAAIlgF,KAAO,EACrC,MACF,IAAK,MACL,IAAK,aACH4lF,EAAU1F,EAAI/pE,SAAW+pE,EAAIlgF,KAC7B,MAMmB,KAAjBkgF,EAAIe,SACNx5F,KAAK89F,YAAY,CACflE,KAAO55F,KAAKo+F,YAAYD,EAAS,KACjCj9F,MAAOlB,KAAKo+F,YAAY3F,EAAIlgF,KAAM,OAMpCvY,KAAK89F,YAAY,CACflX,IAAK5mF,KAAKo+F,YAAYD,EAAS,KAC/Bh9F,OAAQnB,KAAKo+F,YAAY3F,EAAIlgF,KAAM,OAIvCvY,KAAKq+F,KAAO,SAASC,GACnBt+F,KAAK89F,YAAY,CACflX,IAAK5mF,KAAKo+F,YAAYE,EAAI1X,IAAK,MAC/B3qD,OAAQj8B,KAAKo+F,YAAYE,EAAIriE,OAAQ,MACrC29D,KAAM55F,KAAKo+F,YAAYE,EAAI1E,KAAM,MACjCG,MAAO/5F,KAAKo+F,YAAYE,EAAIvE,MAAO,MACnC54F,OAAQnB,KAAKo+F,YAAYE,EAAIn9F,OAAQ,MACrCD,MAAOlB,KAAKo+F,YAAYE,EAAIp9F,MAAO,SAUzC,SAASq9F,EAAY/0F,GAKnB,IAAIg1F,EAAIr9F,EAAQD,EAAO0lF,EACvB,GAAIp9E,EAAIwhC,IAAK,CACX7pC,EAASqI,EAAIwhC,IAAIyzD,aACjBv9F,EAAQsI,EAAIwhC,IAAI0zD,YAChB9X,EAAMp9E,EAAIwhC,IAAI2zD,UAEd,IAAIC,GAASA,EAAQp1F,EAAIwhC,IAAI5oB,cAAgBw8E,EAAQA,EAAM,KAC/CA,EAAMC,gBAAkBD,EAAMC,iBAC1Cr1F,EAAMA,EAAIwhC,IAAI8zD,wBAKdN,EAAKI,EAAQ7oF,KAAKK,IAAKwoF,EAAM,IAAMA,EAAM,GAAGz9F,QAAW,EAAGqI,EAAIrI,OAASy9F,EAAMhhG,QAChE,EAGfoC,KAAK45F,KAAOpwF,EAAIowF,KAChB55F,KAAK+5F,MAAQvwF,EAAIuwF,MACjB/5F,KAAK4mF,IAAMp9E,EAAIo9E,KAAOA,EACtB5mF,KAAKmB,OAASqI,EAAIrI,QAAUA,EAC5BnB,KAAKi8B,OAASzyB,EAAIyyB,QAAW2qD,GAAOp9E,EAAIrI,QAAUA,GAClDnB,KAAKkB,MAAQsI,EAAItI,OAASA,EAC1BlB,KAAK++F,gBAAoBr0F,IAAP8zF,EAAmBA,EAAKh1F,EAAIu1F,WAsHhD,SAASC,EAAsBz7F,EAAQ07F,EAAUC,EAAcC,GAO7D,SAASC,EAAiBr6F,EAAGs6F,GAK3B,IAJA,IAAIC,EACAC,EAAoB,IAAIhB,EAAYx5F,GACpCy6F,EAAa,EAER5kG,EAAI,EAAGA,EAAIykG,EAAKzhG,OAAQhD,IAAK,CACpC,MAAOmK,EAAE06F,qBAAqBP,EAAcG,EAAKzkG,KACzCmK,EAAE26F,OAAOR,IAAiBn6F,EAAE46F,YAAYR,GAC9Cp6F,EAAEs5F,KAAKgB,EAAKzkG,IAId,GAAImK,EAAE26F,OAAOR,GACX,OAAOn6F,EAET,IAAIsJ,EAAItJ,EAAE66F,oBAAoBV,GAG1BM,EAAanxF,IACfixF,EAAe,IAAIf,EAAYx5F,GAC/By6F,EAAanxF,GAGftJ,EAAI,IAAIw5F,EAAYgB,GAEtB,OAAOD,GAAgBC,EAGzB,IAAIM,EAAc,IAAItB,EAAYU,GAC9BxG,EAAMwG,EAASxG,IACfqH,EAAU/C,EAAetE,GACzB4G,EAAO,GAGX,GAAI5G,EAAIkB,YAAa,CACnB,IAAIphF,EACJ,OAAQkgF,EAAIe,UACZ,IAAK,GACH6F,EAAO,CAAE,KAAM,MACf9mF,EAAO,SACP,MACF,IAAK,KACH8mF,EAAO,CAAE,KAAM,MACf9mF,EAAO,QACP,MACF,IAAK,KACH8mF,EAAO,CAAE,KAAM,MACf9mF,EAAO,QACP,MAGF,IAAIwnF,EAAOF,EAAYd,WACnBrwE,EAAWqxE,EAAOhqF,KAAKiqF,MAAMF,GAC7BG,EAAcf,EAAa3mF,GAAQwnF,EACnCG,EAAcb,EAAK,GAKnBtpF,KAAKkE,IAAIyU,GAAYuxE,IACvBvxE,EAAWA,EAAW,GAAK,EAAI,EAC/BA,GAAY3Y,KAAKC,KAAKiqF,EAAcF,GAAQA,GAO1CD,EAAU,IACZpxE,GAA6B,KAAjB+pE,EAAIe,SAAkB0F,EAAa/9F,OAAS+9F,EAAah+F,MACrEm+F,EAAOA,EAAKc,WAKdN,EAAYxB,KAAK6B,EAAaxxE,OAEzB,CAEL,IAAI0xE,EAAwBP,EAAYd,WAAaG,EAAa/9F,OAAU,IAE5E,OAAQs3F,EAAIiB,WACZ,IAAK,SACHoG,GAAYM,EAAuB,EACnC,MACF,IAAK,MACHN,GAAWM,EACX,MAIF,OAAQ3H,EAAIe,UACZ,IAAK,GACHyF,EAASnB,YAAY,CACnBlX,IAAKqY,EAASb,YAAY0B,EAAS,OAErC,MACF,IAAK,KACHb,EAASnB,YAAY,CACnBlE,KAAMqF,EAASb,YAAY0B,EAAS,OAEtC,MACF,IAAK,KACHb,EAASnB,YAAY,CACnB/D,MAAOkF,EAASb,YAAY0B,EAAS,OAEvC,MAGFT,EAAO,CAAE,KAAM,KAAM,KAAM,MAI3BQ,EAAc,IAAItB,EAAYU,GAGhC,IAAIK,EAAeF,EAAiBS,EAAaR,GACjDJ,EAASZ,KAAKiB,EAAae,kBAAkBnB,IAG/C,SAASv3F,KAhYT01F,EAAS51F,UAAUq2F,YAAc,SAASN,EAAQxyD,GAEhD,IAAK,IAAI0iC,KADT1iC,EAAMA,GAAOhrC,KAAKgrC,IACDwyD,EACXA,EAAO/zF,eAAeikE,KACxB1iC,EAAI5qC,MAAMstE,GAAQ8vB,EAAO9vB,KAK/B2vB,EAAS51F,UAAU22F,YAAc,SAAS53E,EAAK85E,GAC7C,OAAe,IAAR95E,EAAY,EAAIA,EAAM85E,GA+F/BhD,EAAY71F,UAAYgwF,EAAW4F,EAAS51F,WAC5C61F,EAAY71F,UAAUkH,YAAc2uF,EAuCpCiB,EAAY92F,UAAU42F,KAAO,SAASgB,EAAMkB,GAE1C,OADAA,OAAoB71F,IAAX61F,EAAuBA,EAASvgG,KAAK++F,WACtCM,GACR,IAAK,KACHr/F,KAAK45F,MAAQ2G,EACbvgG,KAAK+5F,OAASwG,EACd,MACF,IAAK,KACHvgG,KAAK45F,MAAQ2G,EACbvgG,KAAK+5F,OAASwG,EACd,MACF,IAAK,KACHvgG,KAAK4mF,KAAO2Z,EACZvgG,KAAKi8B,QAAUskE,EACf,MACF,IAAK,KACHvgG,KAAK4mF,KAAO2Z,EACZvgG,KAAKi8B,QAAUskE,EACf,QAKJhC,EAAY92F,UAAU+4F,SAAW,SAASC,GACxC,OAAOzgG,KAAK45F,KAAO6G,EAAG1G,OACf/5F,KAAK+5F,MAAQ0G,EAAG7G,MAChB55F,KAAK4mF,IAAM6Z,EAAGxkE,QACdj8B,KAAKi8B,OAASwkE,EAAG7Z,KAI1B2X,EAAY92F,UAAUk4F,YAAc,SAASe,GAC3C,IAAK,IAAI9lG,EAAI,EAAGA,EAAI8lG,EAAM9iG,OAAQhD,IAChC,GAAIoF,KAAKwgG,SAASE,EAAM9lG,IACtB,OAAO,EAGX,OAAO,GAIT2jG,EAAY92F,UAAUi4F,OAAS,SAASxgG,GACtC,OAAOc,KAAK4mF,KAAO1nF,EAAU0nF,KACtB5mF,KAAKi8B,QAAU/8B,EAAU+8B,QACzBj8B,KAAK45F,MAAQ16F,EAAU06F,MACvB55F,KAAK+5F,OAAS76F,EAAU66F,OAOjCwE,EAAY92F,UAAUg4F,qBAAuB,SAASvgG,EAAWmgG,GAC/D,OAAQA,GACR,IAAK,KACH,OAAOr/F,KAAK45F,KAAO16F,EAAU06F,KAC/B,IAAK,KACH,OAAO55F,KAAK+5F,MAAQ76F,EAAU66F,MAChC,IAAK,KACH,OAAO/5F,KAAK4mF,IAAM1nF,EAAU0nF,IAC9B,IAAK,KACH,OAAO5mF,KAAKi8B,OAAS/8B,EAAU+8B,SAMnCsiE,EAAY92F,UAAUm4F,oBAAsB,SAASa,GACnD,IAAIvuF,EAAI6D,KAAKK,IAAI,EAAGL,KAAKM,IAAIrW,KAAK+5F,MAAO0G,EAAG1G,OAAShkF,KAAKK,IAAIpW,KAAK45F,KAAM6G,EAAG7G,OACxEznF,EAAI4D,KAAKK,IAAI,EAAGL,KAAKM,IAAIrW,KAAKi8B,OAAQwkE,EAAGxkE,QAAUlmB,KAAKK,IAAIpW,KAAK4mF,IAAK6Z,EAAG7Z,MACzE+Z,EAAgBzuF,EAAIC,EACxB,OAAOwuF,GAAiB3gG,KAAKmB,OAASnB,KAAKkB,QAO7Cq9F,EAAY92F,UAAU44F,kBAAoB,SAAS/nF,GACjD,MAAO,CACLsuE,IAAK5mF,KAAK4mF,IAAMtuE,EAAUsuE,IAC1B3qD,OAAQ3jB,EAAU2jB,OAASj8B,KAAKi8B,OAChC29D,KAAM55F,KAAK45F,KAAOthF,EAAUshF,KAC5BG,MAAOzhF,EAAUyhF,MAAQ/5F,KAAK+5F,MAC9B54F,OAAQnB,KAAKmB,OACbD,MAAOlB,KAAKkB,QAMhBq9F,EAAYqC,qBAAuB,SAASp3F,GAC1C,IAAIrI,EAASqI,EAAIwhC,IAAMxhC,EAAIwhC,IAAIyzD,aAAej1F,EAAI6Y,QAAU7Y,EAAIi1F,aAAe,EAC3Ev9F,EAAQsI,EAAIwhC,IAAMxhC,EAAIwhC,IAAI0zD,YAAcl1F,EAAI6Y,QAAU7Y,EAAIk1F,YAAc,EACxE9X,EAAMp9E,EAAIwhC,IAAMxhC,EAAIwhC,IAAI2zD,UAAYn1F,EAAI6Y,QAAU7Y,EAAIm1F,UAAY,EAEtEn1F,EAAMA,EAAIwhC,IAAMxhC,EAAIwhC,IAAI8zD,wBACVt1F,EAAI6Y,QAAU7Y,EAAIs1F,wBAA0Bt1F,EAC1D,IAAIq3F,EAAM,CACRjH,KAAMpwF,EAAIowF,KACVG,MAAOvwF,EAAIuwF,MACXnT,IAAKp9E,EAAIo9E,KAAOA,EAChBzlF,OAAQqI,EAAIrI,QAAUA,EACtB86B,OAAQzyB,EAAIyyB,QAAW2qD,GAAOp9E,EAAIrI,QAAUA,GAC5CD,MAAOsI,EAAItI,OAASA,GAEtB,OAAO2/F,GA0ITl5F,EAAOm5F,cAAgB,WACrB,MAAO,CACLp6F,OAAQ,SAAS7M,GACf,IAAKA,EACH,MAAO,GAET,GAAoB,kBAATA,EACT,MAAM,IAAImQ,MAAM,iCAElB,OAAO+2F,mBAAmBC,mBAAmBnnG,OAKnD8N,EAAO0lB,oBAAsB,SAAS9pB,EAAQ09F,GAC5C,OAAK19F,GAAW09F,EAGT5F,EAAa93F,EAAQ09F,GAFnB,MAKX,IAAIC,EAAoB,IACpBC,EAAa,aACbC,EAAyB,OAK7Bz5F,EAAO05F,YAAc,SAAS99F,EAAQ+9F,EAAMC,GAC1C,IAAKh+F,IAAW+9F,IAASC,EACvB,OAAO,KAIT,MAAOA,EAAQC,WACbD,EAAQE,YAAYF,EAAQC,YAG9B,IAAIE,EAAgBn+F,EAAOi0F,SAAS8C,cAAc,OAYlD,SAASqH,EAAcL,GACrB,IAAK,IAAI1mG,EAAI,EAAGA,EAAI0mG,EAAK1jG,OAAQhD,IAC/B,GAAI0mG,EAAK1mG,GAAGoxB,eAAiBs1E,EAAK1mG,GAAGuyB,aACnC,OAAO,EAGX,OAAO,EAIT,GArBAu0E,EAActhG,MAAMsuB,SAAW,WAC/BgzE,EAActhG,MAAMw5F,KAAO,IAC3B8H,EAActhG,MAAM25F,MAAQ,IAC5B2H,EAActhG,MAAMwmF,IAAM,IAC1B8a,EAActhG,MAAM67B,OAAS,IAC7BylE,EAActhG,MAAMwhG,OAASR,EAC7BG,EAAQnyE,YAAYsyE,GAefC,EAAcL,GAAnB,CAOA,IAAInC,EAAe,GACfD,EAAeX,EAAYqC,qBAAqBc,GAChDG,EAAW9rF,KAAKiqF,MAAMd,EAAa/9F,OAAS+/F,EAAoB,KAAO,IACvE3D,EAAe,CACjBU,KAAM4D,EAAW,MAAQV,IAG3B,WAGE,IAFA,IAAIlC,EAAUxG,EAEL79F,EAAI,EAAGA,EAAI0mG,EAAK1jG,OAAQhD,IAC/B69F,EAAM6I,EAAK1mG,GAGXqkG,EAAW,IAAI3B,EAAY/5F,EAAQk1F,EAAK8E,GACxCmE,EAActyE,YAAY6vE,EAASj0D,KAGnCg0D,EAAsBz7F,EAAQ07F,EAAUC,EAAcC,GAItD1G,EAAItrE,aAAe8xE,EAASj0D,IAE5Bm0D,EAAalkG,KAAKsjG,EAAYqC,qBAAqB3B,KAjBvD,QAbE,IAAK,IAAIrkG,EAAI,EAAGA,EAAI0mG,EAAK1jG,OAAQhD,IAC/B8mG,EAActyE,YAAYkyE,EAAK1mG,GAAGuyB,eAkCxCxlB,EAAOm6F,OAAS,SAASv+F,EAAQmE,EAAOq6F,GACjCA,IACHA,EAAUr6F,EACVA,EAAQ,IAELA,IACHA,EAAQ,IAGV1H,KAAKuD,OAASA,EACdvD,KAAK0H,MAAQA,EACb1H,KAAKgiG,MAAQ,UACbhiG,KAAKhG,OAAS,GACdgG,KAAK+hG,QAAUA,GAAW,IAAIt3E,YAAY,QAC1CzqB,KAAK04F,WAAa,IAGpB/wF,EAAOm6F,OAAOr6F,UAAY,CAGxBw6F,mBAAoB,SAASj3F,GAC3B,KAAIA,aAAa2sF,GAGf,MAAM3sF,EAFNhL,KAAKkiG,gBAAkBliG,KAAKkiG,eAAel3F,IAK/CD,MAAO,SAAUlR,GACf,IAAIyJ,EAAOtD,KAUX,SAASmiG,IACP,IAAInoG,EAASsJ,EAAKtJ,OACdooG,EAAM,EACV,MAAOA,EAAMpoG,EAAO4D,QAA0B,OAAhB5D,EAAOooG,IAAiC,OAAhBpoG,EAAOooG,KACzDA,EAEJ,IAAI3I,EAAOz/F,EAAO+0B,OAAO,EAAGqzE,GAS5B,MAPoB,OAAhBpoG,EAAOooG,MACPA,EAEgB,OAAhBpoG,EAAOooG,MACPA,EAEJ9+F,EAAKtJ,OAASA,EAAO+0B,OAAOqzE,GACrB3I,EAIT,SAAS4I,EAAYz0E,GACnB,IAAIqrE,EAAW,IAAId,EAsCnB,GApCAC,EAAaxqE,GAAO,SAAU/b,EAAG1K,GAC/B,OAAQ0K,GACR,IAAK,KACHonF,EAAS5tE,IAAIxZ,EAAG1K,GAChB,MACF,IAAK,QACH8xF,EAASM,QAAQ1nF,EAAG1K,GACpB,MACF,IAAK,QACH8xF,EAASK,QAAQznF,EAAG1K,GACpB,MACF,IAAK,eACL,IAAK,iBACH,IAAIm7F,EAAKn7F,EAAE/J,MAAM,KACjB,GAAkB,IAAdklG,EAAG1kG,OACL,MAIF,IAAI2kG,EAAS,IAAIpK,EAGjB,GAFAoK,EAAOhJ,QAAQ,IAAK+I,EAAG,IACvBC,EAAOhJ,QAAQ,IAAK+I,EAAG,KAClBC,EAAOp3E,IAAI,OAASo3E,EAAOp3E,IAAI,KAClC,MAEF8tE,EAAS5tE,IAAIxZ,EAAI,IAAK0wF,EAAOn3E,IAAI,MACjC6tE,EAAS5tE,IAAIxZ,EAAI,IAAK0wF,EAAOn3E,IAAI,MACjC,MACF,IAAK,SACH6tE,EAASE,IAAItnF,EAAG1K,EAAG,CAAC,OACpB,SAED,IAAK,MAIJ8xF,EAAS9tE,IAAI,MAAO,CACtB,IAAI+tE,EAAS,IAAK51F,EAAKoE,MAAMG,WAAavE,EAAKC,OAAOsE,WACtDqxF,EAAOh4F,MAAQ+3F,EAAS7tE,IAAI,QAAS,KACrC8tE,EAAOsJ,MAAQvJ,EAAS7tE,IAAI,QAAS,GACrC8tE,EAAOuJ,cAAgBxJ,EAAS7tE,IAAI,gBAAiB,GACrD8tE,EAAOwJ,cAAgBzJ,EAAS7tE,IAAI,gBAAiB,KACrD8tE,EAAOyJ,gBAAkB1J,EAAS7tE,IAAI,kBAAmB,GACzD8tE,EAAO0J,gBAAkB3J,EAAS7tE,IAAI,kBAAmB,KACzD8tE,EAAO2J,OAAS5J,EAAS7tE,IAAI,SAAU,IAEvC9nB,EAAKw/F,UAAYx/F,EAAKw/F,SAAS5J,GAG/B51F,EAAKo1F,WAAWz9F,KAAK,CACnB4f,GAAIo+E,EAAS7tE,IAAI,MACjB8tE,OAAQA,KAQd,SAAS6J,EAAkBn1E,GACzB,IAAIqrE,EAAW,IAAId,EAEnBC,EAAaxqE,GAAO,SAAS/b,EAAG1K,GAC9B,OAAO0K,GACP,IAAK,QACHonF,EAASK,QAAQznF,EAAI,IAAK1K,GAC1B,MACF,IAAK,OACH8xF,EAAS5tE,IAAIxZ,EAAI,IAAKimF,EAAe3wF,IACrC,SAED,SAAU,KAEb7D,EAAK0/F,gBAAkB1/F,EAAK0/F,eAAe,CACzC,OAAU/J,EAAS7tE,IAAI,UACvB,MAAS6tE,EAAS7tE,IAAI,WAK1B,SAAS63E,EAAYr1E,GACfA,EAAMnwB,MAAM,mBAEd26F,EAAaxqE,GAAO,SAAS/b,EAAG1K,GAC9B,OAAO0K,GACP,IAAK,kBACHkxF,EAAkB57F,GAClB,SAED,KAEHixF,EAAaxqE,GAAO,SAAU/b,EAAG1K,GAC/B,OAAQ0K,GACR,IAAK,SAEHwwF,EAAYl7F,GACZ,SAED,KA7HHtN,IAEFyJ,EAAKtJ,QAAUsJ,EAAKy+F,QAAQr7F,OAAO7M,EAAM,CAACqpG,QAAQ,KAiIpD,IACE,IAAIzJ,EACJ,GAAmB,YAAfn2F,EAAK0+F,MAAqB,CAE5B,IAAK,UAAUnjG,KAAKyE,EAAKtJ,QACvB,OAAOgG,KAGTy5F,EAAO0I,IAEP,IAAIlK,EAAIwB,EAAKh8F,MAAM,sBACnB,IAAKw6F,IAAMA,EAAE,GACX,MAAM,IAAIN,EAAaA,EAAamB,OAAOoB,cAG7C52F,EAAK0+F,MAAQ,SAGf,IAAImB,GAAuB,EAC3B,MAAO7/F,EAAKtJ,OAAQ,CAElB,IAAK,UAAU6E,KAAKyE,EAAKtJ,QACvB,OAAOgG,KAST,OANKmjG,EAGHA,GAAuB,EAFvB1J,EAAO0I,IAKD7+F,EAAK0+F,OACb,IAAK,SAEC,IAAInjG,KAAK46F,GACXwJ,EAAYxJ,GACFA,IAEVn2F,EAAK0+F,MAAQ,MAEf,SACF,IAAK,OAEEvI,IACHn2F,EAAK0+F,MAAQ,MAEf,SACF,IAAK,KAEH,GAAI,iBAAiBnjG,KAAK46F,GAAO,CAC/Bn2F,EAAK0+F,MAAQ,OACb,MAGF,IAAKvI,EACH,SAEFn2F,EAAKm1F,IAAM,IAAKn1F,EAAKoE,MAAME,QAAUtE,EAAKC,OAAOqE,QAAQ,EAAG,EAAG,IAE/D,IACEtE,EAAKm1F,IAAI5sE,MAAQ,SACjB,MAAO7gB,GACP1H,EAAKm1F,IAAI5sE,MAAQ,SAInB,GAFAvoB,EAAK0+F,MAAQ,OAEgB,IAAzBvI,EAAKxwF,QAAQ,UAAe,CAC9B3F,EAAKm1F,IAAI59E,GAAK4+E,EACd,SAIJ,IAAK,MAEH,IACEjB,EAASiB,EAAMn2F,EAAKm1F,IAAKn1F,EAAKo1F,YAC9B,MAAO1tF,GACP1H,EAAK2+F,mBAAmBj3F,GAExB1H,EAAKm1F,IAAM,KACXn1F,EAAK0+F,MAAQ,SACb,SAEF1+F,EAAK0+F,MAAQ,UACb,SACF,IAAK,UACH,IAAIoB,GAAwC,IAAzB3J,EAAKxwF,QAAQ,UAKhC,IAAKwwF,GAAQ2J,IAAiBD,GAAuB,GAAO,CAE1D7/F,EAAK+/F,OAAS//F,EAAK+/F,MAAM//F,EAAKm1F,KAC9Bn1F,EAAKm1F,IAAM,KACXn1F,EAAK0+F,MAAQ,KACb,SAEE1+F,EAAKm1F,IAAIz8F,OACXsH,EAAKm1F,IAAIz8F,MAAQ,MAEnBsH,EAAKm1F,IAAIz8F,MAAQy9F,EAAKj9F,QAAQ,UAAW,MAAMA,QAAQ,SAAU,MACjE,SACF,IAAK,SAEEi9F,IACHn2F,EAAK0+F,MAAQ,MAEf,WAGJ,MAAOh3F,GACP1H,EAAK2+F,mBAAmBj3F,GAGL,YAAf1H,EAAK0+F,OAAuB1+F,EAAKm1F,KAAOn1F,EAAK+/F,OAC/C//F,EAAK+/F,MAAM//F,EAAKm1F,KAElBn1F,EAAKm1F,IAAM,KAGXn1F,EAAK0+F,MAAuB,YAAf1+F,EAAK0+F,MAAsB,YAAc,SAExD,OAAOhiG,MAETsjG,MAAO,WACL,IAAIhgG,EAAOtD,KACX,IAWE,GATAsD,EAAKtJ,QAAUsJ,EAAKy+F,QAAQr7F,UAExBpD,EAAKm1F,KAAsB,WAAfn1F,EAAK0+F,SACnB1+F,EAAKtJ,QAAU,OACfsJ,EAAKyH,SAKY,YAAfzH,EAAK0+F,MACP,MAAM,IAAIrK,EAAaA,EAAamB,OAAOoB,cAE7C,MAAMlvF,GACN1H,EAAK2+F,mBAAmBj3F,GAG1B,OADA1H,EAAKigG,SAAWjgG,EAAKigG,UACdvjG,OAIXxE,EAAOC,QAAUkM,G,sBCp0CjB,SAAW67F,GACT,IAAIC,EACF,iIACEC,EAAsB,2BACtBC,EAAkB,oBAClBC,EAAsB,wCAEtBC,EAAa,CAOfv0F,iBAAkB,SAAUw0F,EAASC,EAAa19E,GAKhD,GAJAA,EAAOA,GAAQ,GAEfy9E,EAAUA,EAAQvmG,OAClBwmG,EAAcA,EAAYxmG,QACrBwmG,EAAa,CAIhB,IAAK19E,EAAK29E,gBACR,OAAOF,EAET,IAAIG,EAAwBJ,EAAWK,SAASJ,GAChD,IAAKG,EACH,MAAM,IAAIj6F,MAAM,mCAKlB,OAHAi6F,EAAsBE,KAAON,EAAWO,cACtCH,EAAsBE,MAEjBN,EAAWQ,kBAAkBJ,GAEtC,IAAIK,EAAgBT,EAAWK,SAASH,GACxC,IAAKO,EACH,MAAM,IAAIt6F,MAAM,uCAElB,GAAIs6F,EAAcC,OAGhB,OAAKl+E,EAAK29E,iBAGVM,EAAcH,KAAON,EAAWO,cAAcE,EAAcH,MACrDN,EAAWQ,kBAAkBC,IAH3BP,EAKX,IAAIS,EAAYX,EAAWK,SAASJ,GACpC,IAAKU,EACH,MAAM,IAAIx6F,MAAM,mCAElB,IAAKw6F,EAAUC,QAAUD,EAAUL,MAA8B,MAAtBK,EAAUL,KAAK,GAAY,CAGpE,IAAIO,EAAYhB,EAAoBhmG,KAAK8mG,EAAUL,MACnDK,EAAUC,OAASC,EAAU,GAC7BF,EAAUL,KAAOO,EAAU,GAEzBF,EAAUC,SAAWD,EAAUL,OACjCK,EAAUL,KAAO,KAEnB,IAAIQ,EAAa,CAGfJ,OAAQC,EAAUD,OAClBE,OAAQH,EAAcG,OACtBN,KAAM,KACNr6F,OAAQw6F,EAAcx6F,OACtB86F,MAAON,EAAcM,MACrBC,SAAUP,EAAcO,UAE1B,IAAKP,EAAcG,SAIjBE,EAAWF,OAASD,EAAUC,OAGA,MAA1BH,EAAcH,KAAK,IACrB,GAAKG,EAAcH,KAgBZ,CAKL,IAAIW,EAAcN,EAAUL,KACxBY,EACFD,EAAYhnG,UAAU,EAAGgnG,EAAYE,YAAY,KAAO,GACxDV,EAAcH,KAChBQ,EAAWR,KAAON,EAAWO,cAAcW,QAtB3CJ,EAAWR,KAAOK,EAAUL,KAIvBG,EAAcx6F,SACjB66F,EAAW76F,OAAS06F,EAAU16F,OAIzBw6F,EAAcM,QACjBD,EAAWC,MAAQJ,EAAUI,QAqBvC,OALwB,OAApBD,EAAWR,OACbQ,EAAWR,KAAO99E,EAAK29E,gBACnBH,EAAWO,cAAcE,EAAcH,MACvCG,EAAcH,MAEbN,EAAWQ,kBAAkBM,IAEtCT,SAAU,SAAUv4F,GAClB,IAAIs5F,EAAQxB,EAAU/lG,KAAKiO,GAC3B,OAAKs5F,EAGE,CACLV,OAAQU,EAAM,IAAM,GACpBR,OAAQQ,EAAM,IAAM,GACpBd,KAAMc,EAAM,IAAM,GAClBn7F,OAAQm7F,EAAM,IAAM,GACpBL,MAAOK,EAAM,IAAM,GACnBJ,SAAUI,EAAM,IAAM,IARf,MAWXb,cAAe,SAAUD,GAOvBA,EAAOA,EAAK/mG,MAAM,IAAI+iG,UAAUt7F,KAAK,IAAIrI,QAAQmnG,EAAiB,IASlE,MACEQ,EAAKvmG,UAAYumG,EAAOA,EAAK3nG,QAAQonG,EAAqB,KAAKhmG,QAEjE,OAAOumG,EAAK/mG,MAAM,IAAI+iG,UAAUt7F,KAAK,KAEvCw/F,kBAAmB,SAAUY,GAC3B,OACEA,EAAMV,OACNU,EAAMR,OACNQ,EAAMd,KACNc,EAAMn7F,OACNm7F,EAAML,MACNK,EAAMJ,WAMVrpG,EAAOC,QAAUooG,GApKrB,I,qBCFA,IAAI58F,EAAiB,EAAQ,QAAuCixF,EAChEgN,EAAS,EAAQ,QACjBC,EAAkB,EAAQ,QAE1BC,EAAgBD,EAAgB,eAEpC3pG,EAAOC,QAAU,SAAU4tB,EAAQg8E,EAAKC,GAClCj8E,IAAWi8E,IAAQj8E,EAASA,EAAO5hB,WACnC4hB,IAAW67E,EAAO77E,EAAQ+7E,IAC5Bn+F,EAAeoiB,EAAQ+7E,EAAe,CAAE79F,cAAc,EAAMH,MAAOi+F,M,6FCAnEE,EAAsB,WACxB,SAASA,IACPvlG,KAAKwlG,UAAY,GAWnB,IAAIC,EAASF,EAAO99F,UA+FpB,OA7FAg+F,EAAOC,GAAK,SAAY7nG,EAAM8nG,GACvB3lG,KAAKwlG,UAAU3nG,KAClBmC,KAAKwlG,UAAU3nG,GAAQ,IAGzBmC,KAAKwlG,UAAU3nG,GAAM5C,KAAK0qG,IAY5BF,EAAOG,IAAM,SAAa/nG,EAAM8nG,GAC9B,IAAK3lG,KAAKwlG,UAAU3nG,GAClB,OAAO,EAGT,IAAIoE,EAAQjC,KAAKwlG,UAAU3nG,GAAMoL,QAAQ08F,GAWzC,OAFA3lG,KAAKwlG,UAAU3nG,GAAQmC,KAAKwlG,UAAU3nG,GAAMd,MAAM,GAClDiD,KAAKwlG,UAAU3nG,GAAMgoG,OAAO5jG,EAAO,GAC5BA,GAAS,GAUlBwjG,EAAOK,QAAU,SAAiBjoG,GAChC,IAAIkoG,EAAY/lG,KAAKwlG,UAAU3nG,GAE/B,GAAKkoG,EAQL,GAAyB,IAArB10F,UAAUzT,OAGZ,IAFA,IAAIA,EAASmoG,EAAUnoG,OAEdhD,EAAI,EAAGA,EAAIgD,IAAUhD,EAC5BmrG,EAAUnrG,GAAGgW,KAAK5Q,KAAMqR,UAAU,SAMpC,IAHA,IAAI0hB,EAAOryB,MAAM+G,UAAU1K,MAAM6T,KAAKS,UAAW,GAC7C20F,EAAUD,EAAUnoG,OAEfqoG,EAAK,EAAGA,EAAKD,IAAWC,EAC/BF,EAAUE,GAAIjrF,MAAMhb,KAAM+yB,IAShC0yE,EAAOS,QAAU,WACflmG,KAAKwlG,UAAY,IAYnBC,EAAOU,KAAO,SAAcC,GAC1BpmG,KAAK0lG,GAAG,QAAQ,SAAU7rG,GACxBusG,EAAYnrG,KAAKpB,OAId0rG,EA5GiB,G,sDCMtB,EAA0B,SAAUc,GAGtC,SAASC,IACP,IAAIC,EAIJ,OAFAA,EAAQF,EAAQz1F,KAAK5Q,OAASA,KAC9BumG,EAAMvsG,OAAS,GACRusG,EAPT,IAAeD,EAAYD,GAgB3B,IAAIZ,EAASa,EAAW7+F,UAaxB,OAXAg+F,EAAOxqG,KAAO,SAAcpB,GAC1B,IAAI2sG,EAIJ,IAHAxmG,KAAKhG,QAAUH,EACf2sG,EAAcxmG,KAAKhG,OAAOiP,QAAQ,MAE3Bu9F,GAAe,EAAGA,EAAcxmG,KAAKhG,OAAOiP,QAAQ,MACzDjJ,KAAK8lG,QAAQ,OAAQ9lG,KAAKhG,OAAO8D,UAAU,EAAG0oG,IAC9CxmG,KAAKhG,OAASgG,KAAKhG,OAAO8D,UAAU0oG,EAAc,IAI/CF,EA9BqB,CA+B5Bf,GAEEkB,EAAM7lG,OAAOqD,aAAa,GAE1ByiG,EAAiB,SAAwBC,GAG3C,IAAIlpG,EAAQ,yBAAyBC,KAAKipG,GAAmB,IACzDxsG,EAAS,GAUb,OARIsD,EAAM,KACRtD,EAAOyD,OAASqW,SAASxW,EAAM,GAAI,KAGjCA,EAAM,KACRtD,EAAO8L,OAASgO,SAASxW,EAAM,GAAI,KAG9BtD,GAWLysG,EAAqB,WACvB,IAAI19F,EAAM,QACN9B,EAAQ,gBACRy/F,EAAW,MAAQ39F,EAAM,QAAU9B,EAAQ,IAC/C,OAAO,IAAI0/F,OAAO,WAAaD,EAAW,MASxC3iF,EAAkB,SAAyBxlB,GAE7C,IAGI8xB,EAHAlwB,EAAQ5B,EAAWtB,MAAMwpG,KACzBzsG,EAAS,GACTS,EAAI0F,EAAM1C,OAGd,MAAOhD,IAEY,KAAb0F,EAAM1F,KAKV41B,EAAO,eAAe9yB,KAAK4C,EAAM1F,IAAImC,MAAM,GAE3CyzB,EAAK,GAAKA,EAAK,GAAGh0B,QAAQ,aAAc,IACxCg0B,EAAK,GAAKA,EAAK,GAAGh0B,QAAQ,aAAc,IACxCg0B,EAAK,GAAKA,EAAK,GAAGh0B,QAAQ,kBAAmB,MAC7CrC,EAAOq2B,EAAK,IAAMA,EAAK,IAGzB,OAAOr2B,GA4BL,EAA2B,SAAUksG,GAGvC,SAASU,IACP,IAAIR,EAKJ,OAHAA,EAAQF,EAAQz1F,KAAK5Q,OAASA,KAC9BumG,EAAMS,cAAgB,GACtBT,EAAMU,WAAa,GACZV,EART,IAAeQ,EAAaV,GAiB5B,IAAIZ,EAASsB,EAAYt/F,UAioBzB,OA/nBAg+F,EAAOxqG,KAAO,SAAcw+F,GAC1B,IAEIh8F,EACAypG,EAHAC,EAASnnG,KAOb,GAFAy5F,EAAOA,EAAKl8F,OAEQ,IAAhBk8F,EAAK77F,OAMT,GAAgB,MAAZ67F,EAAK,GAAT,CASA,IAAI2N,EAAWpnG,KAAKinG,WAAWz1F,QAAO,SAAUkB,EAAK20F,GACnD,IAAIC,EAAaD,EAAO5N,GAExB,OAAI6N,IAAe7N,EACV/mF,EAGFA,EAAIf,OAAO,CAAC21F,MAClB,CAAC7N,IACJ2N,EAAS/pG,SAAQ,SAAUkqG,GACzB,IAAK,IAAI3sG,EAAI,EAAGA,EAAIusG,EAAOH,cAAcppG,OAAQhD,IAC/C,GAAIusG,EAAOH,cAAcpsG,GAAGgW,KAAKu2F,EAAQI,GACvC,OAKJ,GAAgC,IAA5BA,EAAQt+F,QAAQ,QAepB,GAJAs+F,EAAUA,EAAQ/qG,QAAQ,KAAM,IAEhCiB,EAAQ,WAAWC,KAAK6pG,GAEpB9pG,EACF0pG,EAAOrB,QAAQ,OAAQ,CACrBjoG,KAAM,MACN2pG,QAAS,YAHb,CAWA,GAFA/pG,EAAQ,gCAAgCC,KAAK6pG,GAEzC9pG,EAgBF,OAfAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,OAGP/pG,EAAM,KACRypG,EAAMxyF,SAAW+N,WAAWhlB,EAAM,KAGhCA,EAAM,KACRypG,EAAMO,MAAQhqG,EAAM,SAGtB0pG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,qCAAqCC,KAAK6pG,GAE9C9pG,EAYF,OAXAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,kBAGP/pG,EAAM,KACRypG,EAAMxyF,SAAWT,SAASxW,EAAM,GAAI,UAGtC0pG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,8BAA8BC,KAAK6pG,GAEvC9pG,EAYF,OAXAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,WAGP/pG,EAAM,KACRypG,EAAM9sG,QAAU6Z,SAASxW,EAAM,GAAI,UAGrC0pG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,wCAAwCC,KAAK6pG,GAEjD9pG,EAYF,OAXAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,kBAGP/pG,EAAM,KACRypG,EAAM3wF,OAAStC,SAASxW,EAAM,GAAI,UAGpC0pG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,gDAAgDC,KAAK6pG,GAEzD9pG,EAYF,OAXAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,0BAGP/pG,EAAM,KACRypG,EAAM3wF,OAAStC,SAASxW,EAAM,GAAI,UAGpC0pG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,gCAAgCC,KAAK6pG,GAEzC9pG,EAYF,OAXAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,iBAGP/pG,EAAM,KACRypG,EAAMQ,aAAejqG,EAAM,SAG7B0pG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,4BAA4BC,KAAK6pG,GAErC9pG,EAQF,OAPAypG,EAAQ,IAASR,EAAejpG,EAAM,IAAK,CACzCI,KAAM,MACN2pG,QAAS,mBAGXL,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,iCAAiCC,KAAK6pG,GAE1C9pG,EAYF,OAXAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,eAGP/pG,EAAM,KACRypG,EAAMS,SAAW,KAAK9oG,KAAKpB,EAAM,UAGnC0pG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,qBAAqBC,KAAK6pG,GAE9B9pG,EAAJ,CAME,GALAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,OAGP/pG,EAAM,GAAI,CACZ,IAAIiB,EAAawlB,EAAgBzmB,EAAM,IAEnCiB,EAAWkpG,MACbV,EAAMv9F,IAAMjL,EAAWkpG,KAGrBlpG,EAAWmpG,YACbX,EAAM9yF,UAAYsyF,EAAehoG,EAAWmpG,YAIhDV,EAAOrB,QAAQ,OAAQoB,QAOzB,GAFAzpG,EAAQ,4BAA4BC,KAAK6pG,GAErC9pG,EAAJ,CAME,GALAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,cAGP/pG,EAAM,GAAI,CAGZ,GAFAypG,EAAMxoG,WAAawlB,EAAgBzmB,EAAM,IAErCypG,EAAMxoG,WAAW2e,WAAY,CAC/B,IAAIjgB,EAAQ8pG,EAAMxoG,WAAW2e,WAAWjgB,MAAM,KAC1C0qG,EAAa,GAEb1qG,EAAM,KACR0qG,EAAW5mG,MAAQ+S,SAAS7W,EAAM,GAAI,KAGpCA,EAAM,KACR0qG,EAAW3mG,OAAS8S,SAAS7W,EAAM,GAAI,KAGzC8pG,EAAMxoG,WAAW2e,WAAayqF,EAG5BZ,EAAMxoG,WAAW+c,YACnByrF,EAAMxoG,WAAW+c,UAAYxH,SAASizF,EAAMxoG,WAAW+c,UAAW,KAGhEyrF,EAAMxoG,WAAW,gBACnBwoG,EAAMxoG,WAAW,cAAgB+jB,WAAWykF,EAAMxoG,WAAW,gBAG3DwoG,EAAMxoG,WAAW,gBACnBwoG,EAAMxoG,WAAW,cAAgBuV,SAASizF,EAAMxoG,WAAW,cAAe,KAI9EyoG,EAAOrB,QAAQ,OAAQoB,OArCzB,CA4CA,GAFAzpG,EAAQ,uBAAuBC,KAAK6pG,GAEhC9pG,EAYF,OAXAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,SAGP/pG,EAAM,KACRypG,EAAMxoG,WAAawlB,EAAgBzmB,EAAM,UAG3C0pG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,kBAAkBC,KAAK6pG,GAE3B9pG,EACF0pG,EAAOrB,QAAQ,OAAQ,CACrBjoG,KAAM,MACN2pG,QAAS,iBAQb,GAFA/pG,EAAQ,wBAAwBC,KAAK6pG,GAEjC9pG,EACF0pG,EAAOrB,QAAQ,OAAQ,CACrBjoG,KAAM,MACN2pG,QAAS,sBAHb,CAWA,GAFA/pG,EAAQ,mCAAmCC,KAAK6pG,GAE5C9pG,EAaF,OAZAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,qBAGP/pG,EAAM,KACRypG,EAAMa,eAAiBtqG,EAAM,GAC7BypG,EAAMc,eAAiB,IAAInkF,KAAKpmB,EAAM,UAGxC0pG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,qBAAqBC,KAAK6pG,GAE9B9pG,EAyBF,OAxBAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,OAGP/pG,EAAM,KACRypG,EAAMxoG,WAAawlB,EAAgBzmB,EAAM,IAErCypG,EAAMxoG,WAAWupG,KACuC,OAAtDf,EAAMxoG,WAAWupG,GAAGnqG,UAAU,EAAG,GAAGH,gBACtCupG,EAAMxoG,WAAWupG,GAAKf,EAAMxoG,WAAWupG,GAAGnqG,UAAU,IAGtDopG,EAAMxoG,WAAWupG,GAAKf,EAAMxoG,WAAWupG,GAAGxqG,MAAM,SAChDypG,EAAMxoG,WAAWupG,GAAG,GAAKh0F,SAASizF,EAAMxoG,WAAWupG,GAAG,GAAI,IAC1Df,EAAMxoG,WAAWupG,GAAG,GAAKh0F,SAASizF,EAAMxoG,WAAWupG,GAAG,GAAI,IAC1Df,EAAMxoG,WAAWupG,GAAG,GAAKh0F,SAASizF,EAAMxoG,WAAWupG,GAAG,GAAI,IAC1Df,EAAMxoG,WAAWupG,GAAG,GAAKh0F,SAASizF,EAAMxoG,WAAWupG,GAAG,GAAI,IAC1Df,EAAMxoG,WAAWupG,GAAK,IAAIC,YAAYhB,EAAMxoG,WAAWupG,WAI3Dd,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,uBAAuBC,KAAK6pG,GAEhC9pG,EAcF,OAbAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,SAGP/pG,EAAM,KACRypG,EAAMxoG,WAAawlB,EAAgBzmB,EAAM,IACzCypG,EAAMxoG,WAAW,eAAiB+jB,WAAWykF,EAAMxoG,WAAW,gBAC9DwoG,EAAMxoG,WAAWypG,QAAU,MAAMtpG,KAAKqoG,EAAMxoG,WAAWypG,eAGzDhB,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,+BAA+BC,KAAK6pG,GAExC9pG,EAcF,OAbAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,gBAGP/pG,EAAM,GACRypG,EAAMrtG,KAAO4D,EAAM,GAEnBypG,EAAMrtG,KAAO,QAGfstG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,0BAA0BC,KAAK6pG,GAEnC9pG,EAcF,OAbAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,WAGP/pG,EAAM,GACRypG,EAAMrtG,KAAO4D,EAAM,GAEnBypG,EAAMrtG,KAAO,QAGfstG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,yBAAyBC,KAAK6pG,GAElC9pG,EAcF,OAbAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,UAGP/pG,EAAM,GACRypG,EAAMrtG,KAAO4D,EAAM,GAEnBypG,EAAMrtG,KAAO,QAGfstG,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,qBAAqBC,KAAK6pG,GAE9B9pG,GAASA,EAAM,GAiBjB,OAhBAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,QAEXN,EAAMxoG,WAAawlB,EAAgBzmB,EAAM,IAErCypG,EAAMxoG,WAAW+K,eAAe,sBAClCy9F,EAAMxoG,WAAW,oBAAsBuV,SAASizF,EAAMxoG,WAAW,oBAAqB,KAGpFwoG,EAAMxoG,WAAW+K,eAAe,iCAClCy9F,EAAMxoG,WAAW,+BAAiCwoG,EAAMxoG,WAAW,+BAA+BtB,MAAMqpG,SAG1GU,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,qBAAqBC,KAAK6pG,GAE9B9pG,GAASA,EAAM,GAuBjB,OAtBAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,QAEXN,EAAMxoG,WAAawlB,EAAgBzmB,EAAM,IACzC,CAAC,YAAYJ,SAAQ,SAAU6L,GACzBg+F,EAAMxoG,WAAW+K,eAAeP,KAClCg+F,EAAMxoG,WAAWwK,GAAOuZ,WAAWykF,EAAMxoG,WAAWwK,QAGxD,CAAC,cAAe,OAAO7L,SAAQ,SAAU6L,GACnCg+F,EAAMxoG,WAAW+K,eAAeP,KAClCg+F,EAAMxoG,WAAWwK,GAAO,MAAMrK,KAAKqoG,EAAMxoG,WAAWwK,QAIpDg+F,EAAMxoG,WAAW+K,eAAe,eAClCy9F,EAAMxoG,WAAW0V,UAAYsyF,EAAeQ,EAAMxoG,WAAWmpG,iBAG/DV,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,+BAA+BC,KAAK6pG,GAExC9pG,GAASA,EAAM,GAmBjB,OAlBAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,kBAEXN,EAAMxoG,WAAawlB,EAAgBzmB,EAAM,IACzC,CAAC,iBAAkB,iBAAkB,aAAaJ,SAAQ,SAAU6L,GAC9Dg+F,EAAMxoG,WAAW+K,eAAeP,KAClCg+F,EAAMxoG,WAAWwK,GAAOuZ,WAAWykF,EAAMxoG,WAAWwK,QAGxD,CAAC,sBAAuB,oBAAoB7L,SAAQ,SAAU6L,GACxDg+F,EAAMxoG,WAAW+K,eAAeP,KAClCg+F,EAAMxoG,WAAWwK,GAAO,MAAMrK,KAAKqoG,EAAMxoG,WAAWwK,aAIxDi+F,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,yBAAyBC,KAAK6pG,GAElC9pG,GAASA,EAAM,GAcjB,OAbAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,YAEXN,EAAMxoG,WAAawlB,EAAgBzmB,EAAM,IACzC,CAAC,eAAeJ,SAAQ,SAAU6L,GAC5Bg+F,EAAMxoG,WAAW+K,eAAeP,KAClCg+F,EAAMxoG,WAAWwK,GAAOuZ,WAAWykF,EAAMxoG,WAAWwK,aAIxDi+F,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,6BAA6BC,KAAK6pG,GAEtC9pG,GAASA,EAAM,GAmBjB,OAlBAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,gBAEXN,EAAMxoG,WAAawlB,EAAgBzmB,EAAM,IACzC,CAAC,kBAAmB,oBAAoBJ,SAAQ,SAAU6L,GACxD,GAAIg+F,EAAMxoG,WAAW+K,eAAeP,GAAM,CACxCg+F,EAAMxoG,WAAWwK,GAAO+K,SAASizF,EAAMxoG,WAAWwK,GAAM,IACxD,IAAIk/F,EAAiB,qBAARl/F,EAA6B,SAAW,SACrDg+F,EAAMxoG,WAAW0V,UAAY8yF,EAAMxoG,WAAW0V,WAAa,GAC3D8yF,EAAMxoG,WAAW0V,UAAUg0F,GAAUlB,EAAMxoG,WAAWwK,UAE/Cg+F,EAAMxoG,WAAWwK,YAI5Bi+F,EAAOrB,QAAQ,OAAQoB,GAOzB,GAFAzpG,EAAQ,iCAAiCC,KAAK6pG,GAE1C9pG,GAASA,EAAM,GAcjB,OAbAypG,EAAQ,CACNrpG,KAAM,MACN2pG,QAAS,oBAEXN,EAAMxoG,WAAawlB,EAAgBzmB,EAAM,IACzC,CAAC,WAAY,aAAaJ,SAAQ,SAAU6L,GACtCg+F,EAAMxoG,WAAW+K,eAAeP,KAClCg+F,EAAMxoG,WAAWwK,GAAO+K,SAASizF,EAAMxoG,WAAWwK,GAAM,aAI5Di+F,EAAOrB,QAAQ,OAAQoB,GAMzBC,EAAOrB,QAAQ,OAAQ,CACrBjoG,KAAM,MACNhE,KAAM0tG,EAAQxqG,MAAM,YAlhBpBoqG,EAAOrB,QAAQ,OAAQ,CACrBjoG,KAAM,UACN7B,KAAMurG,EAAQxqG,MAAM,aA5BxBiD,KAAK8lG,QAAQ,OAAQ,CACnBjoG,KAAM,MACN8L,IAAK8vF,KAyjBXgM,EAAO4C,UAAY,SAAmBj1F,GACpC,IAAIk1F,EAAStoG,KAETuoG,EAAan1F,EAAKm1F,WAClBC,EAAap1F,EAAKo1F,WAClBC,EAAar1F,EAAKq1F,WAClB90F,EAAUP,EAAKO,QAEO,oBAAf80F,IACTA,EAAa,SAAoBhP,GAC/B,OAAOA,IAIXz5F,KAAKgnG,cAAc/rG,MAAK,SAAUw+F,GAChC,IAAIh8F,EAAQ8qG,EAAW7qG,KAAK+7F,GAE5B,GAAIh8F,EAQF,OAPA6qG,EAAOxC,QAAQ,OAAQ,CACrBjoG,KAAM,SACNhE,KAAM4uG,EAAWhP,GACjB+O,WAAYA,EACZ70F,QAASA,KAGJ,MAab8xF,EAAOiD,aAAe,SAAsBpvF,GAC1C,IAAIivF,EAAajvF,EAAMivF,WACnBvpG,EAAMsa,EAAMta,IAEZ2pG,EAAQ,SAAelP,GACzB,OAAI8O,EAAW1pG,KAAK46F,GACXz6F,EAAIy6F,GAGNA,GAGTz5F,KAAKinG,WAAWhsG,KAAK0tG,IAGhB5B,EAnpBsB,CAopB7BxB,GAEEqD,EAAY,SAAmB/lF,GACjC,OAAOA,EAAIllB,cAAcnB,QAAQ,UAAU,SAAUgJ,GACnD,OAAOA,EAAE,GAAGkI,kBAIZm7F,EAAgB,SAAuBnqG,GACzC,IAAIvE,EAAS,GAIb,OAHA6M,OAAO0K,KAAKhT,GAAYrB,SAAQ,SAAU6L,GACxC/O,EAAOyuG,EAAU1/F,IAAQxK,EAAWwK,MAE/B/O,GAOL2uG,EAAc,SAAqB9vF,GACrC,IAAI+vF,EAAgB/vF,EAAS+vF,cACzBptF,EAAiB3C,EAAS2C,eAC1BqtF,EAAqBhwF,EAASgwF,mBAElC,GAAKD,EAAL,CAIA,IAAIlkF,EAAM,wBACNokF,EAAK,WACLC,EAAM,eACNC,EAAoBxtF,GAAmC,EAAjBA,EACtCytF,EAAkBJ,GAA2C,EAArBA,EAExCrtF,IAAmBotF,EAAct/F,eAAew/F,KAClDF,EAAcE,GAAME,EACpBnpG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAShzE,EAAM,gDAAkDskF,EAAoB,QAIrFA,GAAqBJ,EAAcE,GAAME,IAC3CnpG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAShzE,EAAM,wBAA0BkkF,EAAcE,GAAM,4BAA8BE,EAAoB,MAEjHJ,EAAcE,GAAME,GAIlBH,IAAuBD,EAAct/F,eAAey/F,KACtDH,EAAcG,GAA4B,EAArBF,EACrBhpG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAShzE,EAAM,yDAA2DkkF,EAAcG,GAAO,QAK/FF,GAAsBD,EAAcG,GAAOE,IAC7CppG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAShzE,EAAM,6BAA+BkkF,EAAcG,GAAO,gCAAkCE,EAAkB,OAEzHL,EAAcG,GAAOE,KA0BrB,EAAsB,SAAU/C,GAGlC,SAASvE,IACP,IAAIyE,EAEJA,EAAQF,EAAQz1F,KAAK5Q,OAASA,KAC9BumG,EAAM8C,WAAa,IAAI,EACvB9C,EAAM+C,YAAc,IAAI,EAExB/C,EAAM8C,WAAWlD,KAAKI,EAAM+C,aAI5B,IAOIC,EAEAh4F,EATAjO,EAAO,IAAuBijG,GAI9BiD,EAAO,GACPC,EAAa,GAMbC,GAAW,EAEXj8F,EAAO,aAEPk8F,EAAqB,CACvB,MAAS,GACT,MAAS,GACT,kBAAmB,GACnB,UAAa,IAIXC,EAAe,gDAEfC,EAAkB,EAEtBtD,EAAMvtF,SAAW,CACf+F,YAAY,EACZ5E,oBAAqB,GACrBnD,SAAU,IAKZ,IAAI8yF,EAAmB,EAEnBC,EAAuB,EAqhB3B,OAnhBAxD,EAAMb,GAAG,OAAO,WAGV+D,EAAW9/F,MAAQ8/F,EAAWxE,QAAUwE,EAAWO,gBAIlDP,EAAWzqG,KAAOuqG,IACrBE,EAAWzqG,IAAMuqG,IAGdE,EAAWvgG,KAAOqI,IACrBk4F,EAAWvgG,IAAMqI,GAGdk4F,EAAW9yF,UAAuC,kBAApBkzF,IACjCJ,EAAW9yF,SAAWkzF,GAGxBtD,EAAMvtF,SAASixF,eAAiBR,MAIlClD,EAAM+C,YAAY5D,GAAG,QAAQ,SAAUwE,GACrC,IAAIC,EACAC,GACJ,CACEvlF,IAAK,YAEF,CACCzqB,QAAS,WACH8vG,EAAM9vG,UACR4F,KAAKgZ,SAAS5e,QAAU8vG,EAAM9vG,UAGlC,cAAe,WACb4F,KAAKgZ,SAAS+F,WAAamrF,EAAMvC,QAE3B,YAAauC,IACjBlqG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,iCAEX73F,KAAKgZ,SAAS+F,YAAa,IAG/B3K,UAAW,WACT,IAAIA,EAAY,GAEZ,WAAY81F,IACdT,EAAWr1F,UAAYA,EACvBA,EAAUxW,OAASssG,EAAMtsG,OAEnB,WAAYssG,IAWhBA,EAAMjkG,OAAS6jG,IAIf,WAAYI,IACdT,EAAWr1F,UAAYA,EACvBA,EAAUnO,OAASikG,EAAMjkG,QAG3B6jG,EAAmB11F,EAAUnO,OAASmO,EAAUxW,QAElDysG,QAAS,WACPrqG,KAAKgZ,SAASZ,SAAU,GAE1BkyF,IAAK,WACG,kBAAmBtqG,KAAKgZ,WAC5BhZ,KAAKgZ,SAASX,cAAgB,EAC9BrY,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,uCAIP,0BAA2B73F,KAAKgZ,WACpChZ,KAAKgZ,SAASW,sBAAwB,EACtC3Z,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,+CAITqS,EAAMx1F,SAAW,IACnB+0F,EAAW/0F,SAAWw1F,EAAMx1F,UAGP,IAAnBw1F,EAAMx1F,WACR+0F,EAAW/0F,SAAW,IACtB1U,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,qDAIb73F,KAAKgZ,SAAShC,SAAWwyF,GAE3BtgG,IAAK,WACH,GAAKghG,EAAMxrG,WAQX,GAAgC,SAA5BwrG,EAAMxrG,WAAW6rG,OAKrB,GAAKL,EAAMxrG,WAAWkpG,IAAtB,CAOA,GAAmC,mCAA/BsC,EAAMxrG,WAAW8rG,UAMnB,OALAxqG,KAAKgZ,SAASiC,kBAAoBjb,KAAKgZ,SAASiC,mBAAqB,QAErEjb,KAAKgZ,SAASiC,kBAAkB,qBAAuB,CACrDvc,WAAYwrG,EAAMxrG,aAKtB,GAAmC,4BAA/BwrG,EAAMxrG,WAAW8rG,UAMnB,OALAxqG,KAAKgZ,SAASiC,kBAAoBjb,KAAKgZ,SAASiC,mBAAqB,QAErEjb,KAAKgZ,SAASiC,kBAAkB,2BAA6B,CAC3DtR,IAAKugG,EAAMxrG,WAAWkpG,MAO1B,GAAIsC,EAAMxrG,WAAW8rG,YAAcZ,EAAc,CAC/C,IAAIa,EAAgB,CAAC,aAAc,iBAAkB,mBAErD,OAAwD,IAApDA,EAAcxhG,QAAQihG,EAAMxrG,WAAW6rG,aACzCvqG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,8CAKmB,oBAA5BqS,EAAMxrG,WAAW6rG,QACnBvqG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,qEAIiC,4BAA1CqS,EAAMxrG,WAAWkpG,IAAI9pG,UAAU,EAAG,SACpCkC,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,0CAKPqS,EAAMxrG,WAAWgsG,OAAoD,OAA3CR,EAAMxrG,WAAWgsG,MAAM5sG,UAAU,EAAG,IASpEkC,KAAKgZ,SAASiC,kBAAoBjb,KAAKgZ,SAASiC,mBAAqB,QACrEjb,KAAKgZ,SAASiC,kBAAkB,sBAAwB,CACtDvc,WAAY,CACVknB,YAAaskF,EAAMxrG,WAAW8rG,UAE9BG,MAAOT,EAAMxrG,WAAWgsG,MAAM5sG,UAAU,IAG1CioB,KAAM,eAAsBmkF,EAAMxrG,WAAWkpG,IAAIxqG,MAAM,KAAK,YAhB5D4C,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,0CAoBVqS,EAAMxrG,WAAW6rG,QACpBvqG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,qCAKbtmF,EAAO,CACL7F,OAAQw+F,EAAMxrG,WAAW6rG,QAAU,UACnC5gG,IAAKugG,EAAMxrG,WAAWkpG,KAGW,qBAAxBsC,EAAMxrG,WAAWupG,KAC1B12F,EAAKq5F,GAAKV,EAAMxrG,WAAWupG,SApF3BjoG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,8CANXtmF,EAAO,UARPvR,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,qDAmGf,iBAAkB,WACXgT,SAASX,EAAM3zF,QAOpBvW,KAAKgZ,SAASX,cAAgB6xF,EAAM3zF,OANlCvW,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,oCAAsCqS,EAAM3zF,UAO3D,yBAA0B,WACnBs0F,SAASX,EAAM3zF,SAOpBvW,KAAKgZ,SAASW,sBAAwBuwF,EAAM3zF,OAC5CszF,EAAkBK,EAAM3zF,QAPtBvW,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,4CAA8CqS,EAAM3zF,UAQnE,gBAAiB,WACV,YAAY1X,KAAKqrG,EAAMxC,cAO5B1nG,KAAKgZ,SAAS0uF,aAAewC,EAAMxC,aANjC1nG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,mCAAqCqS,EAAMtyF,YAO1D5Y,IAAK,WACHuqG,EAAa,GAETW,EAAMvgG,MACR4/F,EAAW5/F,IAAMugG,EAAMvgG,KAGrBugG,EAAM91F,YACRm1F,EAAWn1F,UAAY81F,EAAM91F,WAG3B7C,IACFg4F,EAAWrgG,IAAMqI,IAGrB,aAAc,WACZvR,KAAKgZ,SAASva,UAAY+qG,EAC1BxpG,KAAKgZ,SAAS5a,YAAc4B,KAAKgZ,SAAS5a,aAAeurG,EAEpDO,EAAMxrG,YAON+qG,EAAW/qG,aACd+qG,EAAW/qG,WAAa,IAG1B,IAAS+qG,EAAW/qG,WAAYwrG,EAAMxrG,aAVpCsB,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,0CAWfl4E,MAAO,WAGL,GAFA3f,KAAKgZ,SAAS5a,YAAc4B,KAAKgZ,SAAS5a,aAAeurG,EAEnDO,EAAMxrG,YAAcwrG,EAAMxrG,WAAWosG,MAAQZ,EAAMxrG,WAAW,aAAewrG,EAAMxrG,WAAWqa,KAApG,CAQA,IAAIgyF,EAAiB/qG,KAAKgZ,SAAS5a,YAAY8rG,EAAMxrG,WAAWosG,MAChEC,EAAeb,EAAMxrG,WAAW,aAAeqsG,EAAeb,EAAMxrG,WAAW,cAAgB,GAC/FyrG,EAAaY,EAAeb,EAAMxrG,WAAW,aAE7C0rG,EAAY,CACV5rG,QAAS,OAAOK,KAAKqrG,EAAMxrG,WAAWulB,UAGpCmmF,EAAU5rG,QACZ4rG,EAAU9tF,YAAa,EAEvB8tF,EAAU9tF,WAAa,OAAOzd,KAAKqrG,EAAMxrG,WAAWssG,YAGlDd,EAAMxrG,WAAWusG,WACnBb,EAAUhuF,SAAW8tF,EAAMxrG,WAAWusG,UAGpCf,EAAMxrG,WAAWkpG,MACnBwC,EAAUzgG,IAAMugG,EAAMxrG,WAAWkpG,KAG/BsC,EAAMxrG,WAAW,iBACnB0rG,EAAUptF,WAAaktF,EAAMxrG,WAAW,gBAGtCwrG,EAAMxrG,WAAWwsG,kBACnBd,EAAUe,gBAAkBjB,EAAMxrG,WAAWwsG,iBAG3ChB,EAAMxrG,WAAW0sG,SACnBhB,EAAUiB,OAAS,OAAOxsG,KAAKqrG,EAAMxrG,WAAW0sG,SAIlDjB,EAAWD,EAAMxrG,WAAWqa,MAAQqxF,OA1ClCpqG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,gDA2Cf39E,cAAe,WACb2vF,GAAmB,EACnBJ,EAAWvvF,eAAgB,EAC3Bla,KAAKgZ,SAASmB,oBAAoBlf,KAAKuuG,EAAK5rG,SAE9C,oBAAqB,WACyB,qBAAjCoC,KAAKgZ,SAAS+uF,iBAKvB/nG,KAAKgZ,SAAS+uF,eAAiBmC,EAAMnC,eACrC/nG,KAAKgZ,SAASgvF,eAAiBkC,EAAMlC,gBAGvCyB,EAAW1B,eAAiBmC,EAAMnC,eAClC0B,EAAWzB,eAAiBkC,EAAMlC,gBAEpCsD,eAAgB,YACTT,SAASX,EAAMx1F,WAAaw1F,EAAMx1F,SAAW,EAChD1U,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,qCAAuCqS,EAAMx1F,YAK1D1U,KAAKgZ,SAAS2C,eAAiBuuF,EAAMx1F,SACrCo0F,EAAYl4F,KAAK5Q,KAAMA,KAAKgZ,YAE9BlH,MAAO,WACAo4F,EAAMxrG,aAAc6V,MAAM21F,EAAMxrG,WAAW,gBAOhDsB,KAAKgZ,SAASlH,MAAQ,CACpBy5F,WAAYrB,EAAMxrG,WAAW,eAC7B8sG,QAAStB,EAAMxrG,WAAWypG,SAR1BnoG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,mEAUf,UAAW,WACT4R,EAAWgC,OAASvB,EAAMrwG,MAE5B,eAAgB,WACd4vG,EAAWiC,WAAaxB,EAAMrwG,MAEhC,SAAU,WACR4vG,EAAWkC,MAAQzB,EAAMrwG,MAE3B,KAAQ,WACNmG,KAAKgZ,SAAS4yF,KAAO/C,EAAcqB,EAAMxrG,YACzCsB,KAAK6rG,yBAAyB,cAAe3B,EAAMxrG,WAAY,CAAC,sBAElE,KAAQ,WACN,IAAIyoG,EAASnnG,KAEb0pG,GAAW,EAEX,IAAIoC,EAAe9rG,KAAKgZ,SAAShC,SAASpZ,OACtC0rE,EAAOu/B,EAAcqB,EAAMxrG,YAC/B+qG,EAAWxE,MAAQwE,EAAWxE,OAAS,GACvCwE,EAAWxE,MAAMhqG,KAAKquE,GAElBA,EAAKl1D,YACFk1D,EAAKl1D,UAAU3K,eAAe,YACjC6/D,EAAKl1D,UAAUnO,OAAS8jG,GAG1BA,EAAuBzgC,EAAKl1D,UAAUnO,OAASqjE,EAAKl1D,UAAUxW,QAGhE,IAAImuG,EAAYtC,EAAWxE,MAAMrnG,OAAS,EAC1CoC,KAAK6rG,yBAAyB,gBAAkBE,EAAY,iBAAmBD,EAAc5B,EAAMxrG,WAAY,CAAC,MAAO,aAEnHsB,KAAKgZ,SAASgzF,kBAChBhsG,KAAKgZ,SAASgzF,iBAAiB3uG,SAAQ,SAAU8a,EAAGvd,GAC7Cud,EAAE1O,eAAe,aACpB09F,EAAOrB,QAAQ,OAAQ,CACrBjO,QAAS,4BAA8Bj9F,EAAI,gDAMrD,iBAAkB,WAChB,IAAI0F,EAAQN,KAAKgZ,SAAS+vF,cAAgBF,EAAcqB,EAAMxrG,YAEzD4B,EAAMmJ,eAAe,oBACxBnJ,EAAM2rG,gBAAiB,EACvBjsG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,gEAIbiR,EAAYl4F,KAAK5Q,KAAMA,KAAKgZ,UAExB1Y,EAAM4rG,oBAAsB5rG,EAAMmJ,eAAe,iBACnDzJ,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,qHAIf,eAAgB,WAEd,IAAIiU,EAAe9rG,KAAKgZ,SAAShC,SAASpZ,OACtCuuG,EAAOtD,EAAcqB,EAAMxrG,YAC3B0tG,EAASD,EAAKtuG,MAAsB,SAAdsuG,EAAKtuG,KAC/B4rG,EAAWO,aAAeP,EAAWO,cAAgB,GACrDP,EAAWO,aAAa/uG,KAAKkxG,GAEzBA,EAAK/3F,YACF+3F,EAAK/3F,UAAU3K,eAAe,YAEjC0iG,EAAK/3F,UAAUnO,OAASmmG,EAASrC,EAAuB,EAEpDqC,IACFrC,EAAuBoC,EAAK/3F,UAAUnO,OAASkmG,EAAK/3F,UAAUxW,UAKpE,IAAIqE,EAAQwnG,EAAWO,aAAapsG,OAAS,EAG7C,GAFAoC,KAAK6rG,yBAAyB,wBAA0B5pG,EAAQ,iBAAmB6pG,EAAc5B,EAAMxrG,WAAY,CAAC,OAAQ,QAEvHytG,EAAKtuG,KAMV,IAAK,IAAIjD,EAAI,EAAGA,EAAI6uG,EAAWO,aAAapsG,OAAS,EAAGhD,IAAK,CAC3D,IAAIyxG,EAAY5C,EAAWO,aAAapvG,GAEnCyxG,EAAUxuG,OAIXwuG,EAAUxuG,OAASsuG,EAAKtuG,MAC1BmC,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,wBAA0B51F,EAAQ,iBAAmB6pG,EAAe,sBAAwBK,EAAKtuG,KAAO,qBAAuBjD,OAKhJ,mBAAoB,WAClB,IAAI0xG,EAASzD,EAAcqB,EAAMxrG,YACjCsB,KAAKgZ,SAASgzF,iBAAmBhsG,KAAKgZ,SAASgzF,kBAAoB,GACnEhsG,KAAKgZ,SAASgzF,iBAAiB/wG,KAAKqxG,GACpC,IAAIrqG,EAAQjC,KAAKgZ,SAASgzF,iBAAiBpuG,OAAS,EAChD2uG,EAAW,CAAC,WAAY,OAExB7C,GACF6C,EAAStxG,KAAK,aAGhB+E,KAAK6rG,yBAAyB,4BAA8B5pG,EAAOioG,EAAMxrG,WAAY6tG,IAEvF,WAAY,WACVvsG,KAAKgZ,SAASwzF,QAAU3D,EAAcqB,EAAMxrG,YAC5CsB,KAAK6rG,yBAAyB,kBAAmB3B,EAAMxrG,WAAY,CAAC,gBAEhEsB,KAAKgZ,SAASwzF,QAAQC,aACxBzsG,KAAKgZ,SAASgwF,mBAAqBhpG,KAAKgZ,SAASwzF,QAAQC,YAG3D3D,EAAYl4F,KAAK5Q,KAAMA,KAAKgZ,YAE7BkxF,EAAM1C,UAAY/5F,GAAMmD,KAAKtN,IAElCqG,IAAK,WACH8/F,EAAW9/F,IAAMugG,EAAMvgG,IACvB6/F,EAAKvuG,KAAKwuG,GAENzpG,KAAKgZ,SAAS2C,kBAAoB,aAAc8tF,KAClDzpG,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAAS,uDAEX4R,EAAW/0F,SAAW1U,KAAKgZ,SAAS2C,gBAIlCpK,IACFk4F,EAAWvgG,IAAMqI,GAGnBk4F,EAAW9yF,SAAWkzF,EAElBN,IACFE,EAAWzqG,IAAMuqG,GAInBQ,EAAuB,EAEvBN,EAAa,IAEf53E,QAAS,aAET66E,OAAQ,WAEFxC,EAAMv2F,SACR81F,EAAWiD,OAASjD,EAAWiD,QAAU,GACzCjD,EAAWiD,OAAOxC,EAAM1B,YAAc0B,EAAMrwG,OAE5CmG,KAAKgZ,SAAS0zF,OAAS1sG,KAAKgZ,SAAS0zF,QAAU,GAC/C1sG,KAAKgZ,SAAS0zF,OAAOxC,EAAM1B,YAAc0B,EAAMrwG,SAGlDqwG,EAAMrsG,MAAM+S,KAAKtN,MAGfijG,EAvkBT,IAAezE,EAAQuE,GA0kBvB,IAAIZ,EAAS3D,EAAOr6F,UAiEpB,OA/DAg+F,EAAOoG,yBAA2B,SAAkCxrF,EAAY3hB,EAAY6tG,GAC1F,IAAII,EAAU,GACdJ,EAASlvG,SAAQ,SAAU6L,GACpBxK,EAAW+K,eAAeP,IAC7ByjG,EAAQ1xG,KAAKiO,MAIbyjG,EAAQ/uG,QACVoC,KAAK8lG,QAAQ,OAAQ,CACnBjO,QAASx3E,EAAa,iCAAmCssF,EAAQ9nG,KAAK,SAW5E4gG,EAAOxqG,KAAO,SAAc2xG,GAC1B5sG,KAAKqpG,WAAWpuG,KAAK2xG,IASvBnH,EAAO1zF,IAAM,WAEX/R,KAAKqpG,WAAWpuG,KAAK,MACrB+E,KAAK8lG,QAAQ,QAafL,EAAO4C,UAAY,SAAmBz+F,GACpC5J,KAAKspG,YAAYjB,UAAUz+F,IAW7B67F,EAAOiD,aAAe,SAAsB9+F,GAC1C5J,KAAKspG,YAAYZ,aAAa9+F,IAGzBk4F,EA5oBiB,CA6oBxByD,I,kCCngDF,gZAEIxlF,EAAS,SAAgB8C,EAAKzc,GAChC,IAAIsM,EAAM,GAEV,MAAOtM,IACLsM,GAAOmQ,EAGT,OAAOnQ,GAMEm6F,EAAY,SAAmB36F,GACxC,OAAOA,EAAEpV,SAAS,GAAGc,QAGZkvG,EAAa,SAAoB56F,GAC1C,OAAO6D,KAAKC,KAAK62F,EAAU36F,GAAK,IAEvB66F,EAAW,SAAkBhoG,EAAGqB,EAAKyc,GAK9C,YAJY,IAARA,IACFA,EAAM,MAGA9C,EAAO8C,EAAKzc,GAAOrB,EAAEjI,YAAYC,OAAOqJ,IAEvC4mG,EAAoB,SAA2BxjG,GACxD,MAA2B,aAAvByjG,YAAYC,OACPD,YAAYC,OAAO1jG,GAGrBA,GAAOA,EAAIxP,kBAAkBizG,aAE3BE,EAAe,SAAsB3jG,GAC9C,OAAOwjG,EAAkBxjG,IAEhB4jG,EAAU,SAAiB9kG,GACpC,OAAIA,aAAiBhO,WACZgO,GAGJ5H,MAAMyI,QAAQb,IAAW6kG,EAAa7kG,IAAYA,aAAiB2kG,cAIpE3kG,EADmB,kBAAVA,GAAuC,kBAAVA,GAAsBA,IAAUA,EAC9D,EAEA,CAACA,IAIN,IAAIhO,WAAWgO,GAASA,EAAMtO,QAAUsO,EAAOA,GAASA,EAAMrO,YAAc,EAAGqO,GAASA,EAAMpO,YAAc,KAE1GmzG,EAAc,SAAqB/kG,GAC5CA,EAAQ8kG,EAAQ9kG,GAGhB,IAFA,IAAIua,EAAM,GAEDjoB,EAAI,EAAGA,EAAI0N,EAAM1K,OAAQhD,IAChCioB,GAAOkqF,EAASzkG,EAAM1N,GAAGkC,SAAS,IAAK,EAAG,KAG5C,OAAO+lB,GAEEyqF,EAAiB,SAAwBhlG,GAClDA,EAAQ8kG,EAAQ9kG,GAGhB,IAFA,IAAIua,EAAM,GAEDjoB,EAAI,EAAGA,EAAI0N,EAAM1K,OAAQhD,IAChCioB,GAAOkqF,EAASzkG,EAAM1N,GAAGkC,SAAS,GAAI,EAAG,KAG3C,OAAO+lB,GAEL7O,EAAS,IAAOA,QAAUnX,OAC1B0wG,EAAa,CAACv5F,EAAO,OAAQA,EAAO,SAAUA,EAAO,WAAYA,EAAO,aAAcA,EAAO,eAAgBA,EAAO,iBAAkBA,EAAO,mBAAoBA,EAAO,qBAAsBA,EAAO,wBAiB9Lw5F,GAhBa,WACtB,IAAIhoG,EAAI,IAAIioG,YAAY,CAAC,QACrB1oG,EAAI,IAAIzK,WAAWkL,EAAExL,OAAQwL,EAAEvL,WAAYuL,EAAEtL,YAEpC,MAAT6K,EAAE,IAIFA,EAAE,GARgB,GAgBG,SAAuBuD,EAAOolG,GACvD,IAAIt6F,OAAiB,IAAVs6F,EAAmB,GAAKA,EAC/BC,EAAcv6F,EAAKw6F,OACnBA,OAAyB,IAAhBD,GAAiCA,EAC1CE,EAAUz6F,EAAK61C,GACfA,OAAiB,IAAZ4kD,GAA6BA,EAEtCvlG,EAAQ8kG,EAAQ9kG,GAChB,IAAIgmB,EAAK26B,EAAK,SAAW,cACrBz/C,EAAMlB,EAAMgmB,GAAMhmB,EAAMgmB,GAAM5tB,MAAM+G,UAAU6mB,GAC9C/X,EAAS/M,EAAIoH,KAAKtI,GAAO,SAAUwlG,EAAOC,EAAMnzG,GAClD,IAAIozG,EAAW/kD,EAAKruD,EAAImb,KAAKkE,IAAIrf,EAAI,EAAI0N,EAAM1K,QAC/C,OAAOkwG,EAAQ95F,EAAO+5F,GAAQR,EAAWS,KACxCh6F,EAAO,IAEV,GAAI45F,EAAQ,CACV,IAAIx3F,EAAMm3F,EAAWjlG,EAAM1K,QAAUoW,EAAO,GAAKA,EAAO,GACxDuC,EAASvC,EAAOuC,GAEZA,EAASH,IACXG,GAAUH,EACVG,GAAUH,EACVG,GAAUvC,EAAO,IAIrB,OAAOnX,OAAO0Z,KAEL03F,EAAgB,SAAuB13F,EAAQ23F,GACxD,IAAI50F,OAAmB,IAAX40F,EAAoB,GAAKA,EACjCC,EAAW70F,EAAM2vC,GACjBA,OAAkB,IAAbklD,GAA8BA,GAGjB,kBAAX53F,GAAyC,kBAAXA,GAAyC,kBAAXA,GAAuBA,IAAWA,KACvGA,EAAS,GAGXA,EAASvC,EAAOuC,GAIhB,IAHA,IAAI63F,EAAYtB,EAAWv2F,GACvBjO,EAAQ,IAAIhO,WAAW,IAAI2yG,YAAYmB,IAElCxzG,EAAI,EAAGA,EAAIwzG,EAAWxzG,IAAK,CAClC,IAAIyzG,EAAYplD,EAAKruD,EAAImb,KAAKkE,IAAIrf,EAAI,EAAI0N,EAAM1K,QAChD0K,EAAM+lG,GAAaxxG,OAAO0Z,EAASg3F,EAAW3yG,GAAKoZ,EAAO,MAEtDuC,EAAS,IACXjO,EAAM+lG,GAAat4F,KAAKkE,KAAK3R,EAAM+lG,IACnC/lG,EAAM+lG,IAAoB,IAANzzG,EAAU,EAAI,GAItC,OAAO0N,GAEEgmG,EAAgB,SAAuBhmG,GAChD,IAAKA,EACH,MAAO,GAKTA,EAAQ5H,MAAM+G,UAAU1K,MAAM6T,KAAKtI,GACnC,IAAIimG,EAAS3tG,OAAOqD,aAAa+W,MAAM,KAAMoyF,EAAQ9kG,IAErD,IACE,OAAOy4F,mBAAmByN,OAAOD,IACjC,MAAOvjG,IAIT,OAAOujG,GAEEE,EAAgB,SAAuBF,EAAQG,GAKxD,GAJsB,kBAAXH,GAAuBA,GAAqC,oBAApBA,EAAOzxG,WACxDyxG,EAASA,EAAOzxG,YAGI,kBAAXyxG,EACT,OAAO,IAAIj0G,WAMRo0G,IACHH,EAAS9sG,SAASu/F,mBAAmBuN,KAKvC,IAFA,IAAIz0G,EAAO,IAAIQ,WAAWi0G,EAAO3wG,QAExBhD,EAAI,EAAGA,EAAI2zG,EAAO3wG,OAAQhD,IACjCd,EAAKc,GAAK2zG,EAAOnqG,WAAWxJ,GAG9B,OAAOd,GAEE60G,EAAoB,WAC7B,IAAK,IAAIv9F,EAAOC,UAAUzT,OAAQgxG,EAAU,IAAIluG,MAAM0Q,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAClFq9F,EAAQr9F,GAAQF,UAAUE,GAO5B,GAJAq9F,EAAUA,EAAQ12F,QAAO,SAAUnT,GACjC,OAAOA,IAAMA,EAAE7K,YAAc6K,EAAEnH,SAAwB,kBAANmH,KAG/C6pG,EAAQhxG,QAAU,EAGpB,OAAOwvG,EAAQwB,EAAQ,IAGzB,IAAIC,EAAWD,EAAQp9F,QAAO,SAAUs8F,EAAOgB,EAAKl0G,GAClD,OAAOkzG,GAASgB,EAAI50G,YAAc40G,EAAIlxG,UACrC,GACCmxG,EAAa,IAAIz0G,WAAWu0G,GAC5B5oG,EAAS,EAMb,OALA2oG,EAAQvxG,SAAQ,SAAUyxG,GACxBA,EAAM1B,EAAQ0B,GACdC,EAAW1jF,IAAIyjF,EAAK7oG,GACpBA,GAAU6oG,EAAI50G,cAET60G,GAyBEC,EAAa,SAAoBxpG,EAAGT,EAAGkqG,GAChD,IAAIz1F,OAAmB,IAAXy1F,EAAoB,GAAKA,EACjCC,EAAe11F,EAAMvT,OACrBA,OAA0B,IAAjBipG,EAA0B,EAAIA,EACvCC,EAAa31F,EAAM41F,KACnBA,OAAsB,IAAfD,EAAwB,GAAKA,EAExC3pG,EAAI4nG,EAAQ5nG,GACZT,EAAIqoG,EAAQroG,GAEZ,IAAIupB,EAAKvpB,EAAE5F,MAAQ4F,EAAE5F,MAAQuB,MAAM+G,UAAUtI,MAC7C,OAAO4F,EAAEnH,QAAU4H,EAAE5H,OAASqI,GAAUlB,EAAEnH,QAC1C0wB,EAAG1d,KAAK7L,GAAG,SAAUsqG,EAAOz0G,GAC1B,IAAI00G,EAAQF,EAAKx0G,GAAKw0G,EAAKx0G,GAAK4K,EAAES,EAASrL,GAAK4K,EAAES,EAASrL,GAC3D,OAAOy0G,IAAUC,O,mBCnPrB,SAASC,EAAQC,GAEf,GAAIA,GAAe,kBAAoBA,EAAa,CAClD,IAAIC,EAAaD,EAAYE,OAASF,EAAYD,SAAWC,EAAYjT,SACrEkT,IAAYD,EAAcC,GAIhC,GAAI,kBAAoBD,EAAa,OAAOG,EAAMH,GAGlD,IAAII,EAAShvG,OAAO4uG,GAGhBK,EAAgBC,EAAMF,EAAOjyG,eACjC,GAAIkyG,EAAe,OAAOA,EAGtBA,EAAgBE,EAAQH,EAAOjyG,eACnC,OAAIkyG,IAGkB,IAAlBD,EAAOhyG,OAAqBgyG,EAAOxrG,WAAW,QAAlD,GAaFmrG,EAAQS,WAAa,SAAoB9I,EAAO+I,GAC9C,GAAI/I,GAAS,kBAAoBA,EAAO,CACtC,IAAIqI,EAAUrI,EAAMwI,OAASxI,EAAMqI,SAAWrI,EAAM3K,SACpD,GAAgB,OAAZgT,QAAgC7kG,IAAZ6kG,EAAyB,OAAO,EACxD,GAA0B,kBAAfU,EAAyB,CAElC,IAAIJ,EAAgBC,EAAMG,EAAWtyG,eACrC,GAAIkyG,EAAiB,OAAOA,IAAkBN,EAG1CM,EAAgBE,EAAQE,EAAWtyG,eACvC,GAAIkyG,EAAiB,OAAOA,IAAkBN,OACzC,GAA0B,kBAAfU,EAChB,OAAOA,IAAeV,EAExB,OAAO,IAIX9zG,EAAUD,EAAOC,QAAU8zG,EAQ3B,IAAIO,EAAQr0G,EAAQuR,KAAOvR,EAAQq0G,MAAQ,CACzC,UAAa,EACb,IAAO,EACP,MAAS,GACT,MAAS,GACT,KAAQ,GACR,IAAO,GACP,cAAe,GACf,YAAa,GACb,IAAO,GACP,MAAS,GACT,UAAW,GACX,YAAa,GACb,IAAO,GACP,KAAQ,GACR,KAAQ,GACR,GAAM,GACN,MAAS,GACT,KAAQ,GACR,OAAU,GACV,OAAU,GACV,QAAW,GACX,eAAgB,GAChB,gBAAiB,GACjB,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,cAAe,IACf,cAAe,IACf,gBAAiB,IACjB,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,KAKHC,EAAUt0G,EAAQs0G,QAAU,CAC9B,QAAW,GACX,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAO,GACP,QAAW,GACX,OAAU,GACV,MAAS,GACT,MAAS,GACT,KAAQ,GACR,OAAU,GACV,OAAU,GACV,IAAO,GACP,SAAY,GACZ,KAAQ,GACR,KAAQ,GACR,IAAO,GACP,IAAO,GACP,IAAO;;;;AAQT,IAAKn1G,EAAI,GAAIA,EAAI,IAAKA,IAAKk1G,EAAMlvG,OAAOqD,aAAarJ,IAAMA,EAAI,GAG/D,IAAK,IAAIA,EAAI,GAAIA,EAAI,GAAIA,IAAKk1G,EAAMl1G,EAAI,IAAMA,EAG9C,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKk1G,EAAM,IAAIl1G,GAAKA,EAAI,IAG5C,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKk1G,EAAM,UAAUl1G,GAAKA,EAAI,GAQlD,IAAI+0G,EAAQl0G,EAAQk0G,MAAQl0G,EAAQgsG,MAAQ,GAG5C,IAAK7sG,KAAKk1G,EAAOH,EAAMG,EAAMl1G,IAAMA,EAGnC,IAAK,IAAIs1G,KAASH,EAChBD,EAAMI,GAASH,EAAQG,I,qBC7KzB,IAAIpmF,EAAY,EAAQ,QAAiBA,UAKrCqmF,EAAgB,mJAChBC,EAAW,IAAItJ,OAAO,aAAaqJ,EAAc1+F,OAAO1U,MAAM,GAAG,GAAG,0CACpEszG,EAAiB,IAAIvJ,OAAO,IAAIqJ,EAAc1+F,OAAO2+F,EAAS3+F,OAAO,QAAS0+F,EAAc1+F,OAAO2+F,EAAS3+F,OAAO,QAMnH6+F,EAAQ,EACRC,EAAS,EACTC,EAAa,EACbC,EAAO,EACPC,EAAsB,EACtBC,EAAa,EACbC,EAAc,EACdC,EAAc,EASlB,SAASpjF,EAAWoqE,EAAShqE,GAC5B7tB,KAAK63F,QAAUA,EACf73F,KAAK6tB,QAAUA,EACZ7jB,MAAM8mG,mBAAmB9mG,MAAM8mG,kBAAkB9wG,KAAMytB,GAK3D,SAASC,KAcT,SAAS3iB,EAAM0G,EAAOs/F,EAAiBvhF,EAAUxB,EAAWE,GAC3D,SAAS8iF,EAAkBhkG,GAG1B,GAAIA,EAAO,MAAQ,CAClBA,GAAQ,MACR,IAAIikG,EAAa,OAAUjkG,GAAQ,IAChCkkG,EAAa,OAAiB,KAAPlkG,GAE1B,OAAOpM,OAAOqD,aAAagtG,EAAYC,GAEvC,OAAOtwG,OAAOqD,aAAa+I,GAG7B,SAASmkG,EAAe3rG,GACvB,IAAIqM,EAAIrM,EAAEzI,MAAM,GAAG,GACnB,OAAIiK,OAAOyC,eAAemH,KAAK4e,EAAW3d,GAClC2d,EAAU3d,GACO,MAAhBA,EAAE7N,OAAO,GACVgtG,EAAkB/8F,SAASpC,EAAEkd,OAAO,GAAGvyB,QAAQ,IAAI,SAE1D0xB,EAAa2B,MAAM,oBAAoBrqB,GAChCA,GAGT,SAAS4rG,EAAWr/F,GACnB,GAAGA,EAAID,EAAM,CACZ,IAAIu/F,EAAK5/F,EAAO3T,UAAUgU,EAAMC,GAAKvV,QAAQ,WAAW20G,GACxDtjF,GAASa,EAAS5c,GAClBkc,EAAWuD,WAAW8/E,EAAG,EAAEt/F,EAAID,GAC/BA,EAAQC,GAGV,SAAS2c,EAASrgB,EAAE4pF,GACnB,MAAM5pF,GAAGijG,IAAYrZ,EAAIsZ,EAAY7zG,KAAK+T,IACzC+/F,EAAYvZ,EAAEh2F,MACdqvG,EAAUE,EAAYvZ,EAAE,GAAGr6F,OAC3BiwB,EAAQc,aAGTd,EAAQe,aAAevgB,EAAEmjG,EAAU,EAEpC,IAAIA,EAAY,EACZF,EAAU,EACVC,EAAc,sBACd1jF,EAAUG,EAAWH,QAErB4jF,EAAa,CAAC,CAACC,aAAaX,IAC5BY,EAAW,GACX7/F,EAAQ,EACZ,MAAM,EAAK,CACV,IACC,IAAI8/F,EAAWngG,EAAOxI,QAAQ,IAAI6I,GAClC,GAAG8/F,EAAS,EAAE,CACb,IAAIngG,EAAOsd,OAAOjd,GAAOrU,MAAM,SAAS,CACvC,IAAI4xB,EAAMrB,EAAWqB,IACdrzB,EAAOqzB,EAAIqC,eAAejgB,EAAOsd,OAAOjd,IAC5Cud,EAAID,YAAYpzB,GAChBgyB,EAAWmB,eAAiBnzB,EAEhC,OAKD,OAHG41G,EAAS9/F,GACXs/F,EAAWQ,GAELngG,EAAOzN,OAAO4tG,EAAS,IAC9B,IAAK,IACJ,IAAI7/F,EAAMN,EAAOxI,QAAQ,IAAI2oG,EAAS,GAClCvvF,EAAU5Q,EAAO3T,UAAU8zG,EAAW,EAAG7/F,GAAKvV,QAAQ,eAAgB,IACtEq1G,EAASJ,EAAW5V,MACrB9pF,EAAI,GAEAsQ,EAAU5Q,EAAO3T,UAAU8zG,EAAS,GAAGp1G,QAAQ,UAAU,IACzD0xB,EAAa2B,MAAM,iBAAiBxN,EAAQ,oBAAoBwvF,EAAOxvF,SACvEtQ,EAAM6/F,EAAS,EAAEvvF,EAAQzkB,QACjBykB,EAAQ5kB,MAAM,SACtB4kB,EAAUA,EAAQ7lB,QAAQ,UAAU,IACpC0xB,EAAa2B,MAAM,iBAAiBxN,EAAQ,uBAC5CtQ,EAAM6/F,EAAS,EAAEvvF,EAAQzkB,QAEhC,IAAIk0G,EAAaD,EAAOC,WACpBC,EAAWF,EAAOxvF,SAAWA,EAC7B2vF,EAAoBD,GAAYF,EAAOxvF,SAASwvF,EAAOxvF,QAAQ1kB,eAAiB0kB,EAAQ1kB,cACtF,GAAGq0G,EAAkB,CAE1B,GADMhkF,EAAW6C,WAAWghF,EAAOloG,IAAIkoG,EAAO1hF,UAAU9N,GACrDyvF,EACF,IAAK,IAAI9gF,KAAU8gF,EACd9qG,OAAOS,UAAUgC,eAAemH,KAAKkhG,EAAY9gF,IACpDhD,EAAWiD,iBAAiBD,GAI3B+gF,GACM7jF,EAAawE,WAAW,iBAAiBrQ,EAAQ,2CAA2CwvF,EAAOxvF,cAGvGovF,EAAWx2G,KAAK42G,GAGvB9/F,IACA,MAED,IAAK,IACJ8b,GAASa,EAASkjF,GAClB7/F,EAAMkgG,EAAiBxgG,EAAOmgG,EAAS5jF,GACvC,MACD,IAAK,IACJH,GAASa,EAASkjF,GAClB7/F,EAAMmgG,EAASzgG,EAAOmgG,EAAS5jF,EAAWE,GAC1C,MACD,QACCL,GAASa,EAASkjF,GAClB,IAAIj/F,EAAK,IAAIw/F,EACTT,EAAeD,EAAWA,EAAW7zG,OAAO,GAAG8zG,aAG/CtrG,GADA2L,EAAMqgG,EAAsB3gG,EAAOmgG,EAASj/F,EAAG++F,EAAaP,EAAejjF,GACrEvb,EAAG/U,QASb,IANI+U,EAAG0/F,QAAUC,EAAc7gG,EAAOM,EAAIY,EAAG0P,QAAQsvF,KACpDh/F,EAAG0/F,QAAS,EACR7iF,EAAU8mC,MACbpoC,EAAauE,QAAQ,2BAGpB5E,GAAWznB,EAAI,CAGjB,IAFA,IAAImsG,EAAWC,EAAY3kF,EAAQ,IAE3BjzB,EAAI,EAAEA,EAAEwL,EAAIxL,IAAI,CACvB,IAAI4K,EAAImN,EAAG/X,GACX8zB,EAASlpB,EAAES,QACXT,EAAEqoB,QAAU2kF,EAAY3kF,EAAQ,IAEjCG,EAAWH,QAAU0kF,EAClBtjF,EAActc,EAAGqb,EAAW0jF,IAC9BD,EAAWx2G,KAAK0X,GAEjBqb,EAAWH,QAAUA,OAElBoB,EAActc,EAAGqb,EAAW0jF,IAC9BD,EAAWx2G,KAAK0X,GAIdmX,EAAUL,OAAO9W,EAAGhJ,OAASgJ,EAAG0/F,OACnCtgG,EAAM0gG,EAAwBhhG,EAAOM,EAAIY,EAAG0P,QAAQ8uF,EAAenjF,GAEnEjc,KAGF,MAAM/G,GACN,GAAIA,aAAayiB,EAChB,MAAMziB,EAEPkjB,EAAa2B,MAAM,wBAAwB7kB,GAC3C+G,GAAO,EAELA,EAAID,EACNA,EAAQC,EAGRq/F,EAAWr7F,KAAKK,IAAIw7F,EAAS9/F,GAAO,IAIvC,SAAS0gG,EAAYta,EAAEp0F,GAGtB,OAFAA,EAAE6qB,WAAaupE,EAAEvpE,WACjB7qB,EAAE8qB,aAAespE,EAAEtpE,aACZ9qB,EAOR,SAASsuG,EAAsB3gG,EAAOK,EAAMa,EAAG++F,EAAaP,EAAejjF,GAO1E,SAASwkF,EAAaC,EAAOvrG,EAAO0Q,GAC/BnF,EAAGigG,eAAenpG,eAAekpG,IACpCzkF,EAAawE,WAAW,aAAeigF,EAAQ,cAEhDhgG,EAAGkgG,SACFF,EAKAvrG,EAAM5K,QAAQ,YAAa,KAAKA,QAAQ,WAAY20G,GACpDr5F,GAGF,IAAIg7F,EAEAzkG,IAAMyD,EACN8S,EAAI0rF,EACR,MAAM,EAAK,CACV,IAAIrxG,EAAIwS,EAAOzN,OAAOqK,GACtB,OAAOpP,GACP,IAAK,IACJ,GAAG2lB,IAAM2rF,EACRuC,EAAWrhG,EAAO1U,MAAM+U,EAAMzD,GAC9BuW,EAAI6rF,MACC,IAAG7rF,IAAM4rF,EAId,MAAM,IAAIxmG,MAAM,uCAHhB4a,EAAI6rF,EAKL,MACD,IAAK,IACL,IAAK,IACJ,GAAG7rF,IAAM6rF,GAAQ7rF,IAAM2rF,EACrB,CAOD,GANG3rF,IAAM2rF,IACRriF,EAAauE,QAAQ,kCACrBqgF,EAAWrhG,EAAO1U,MAAM+U,EAAMzD,IAE/ByD,EAAQzD,EAAE,EACVA,EAAIoD,EAAOxI,QAAQhK,EAAE6S,KAClBzD,EAAE,GAMJ,MAAM,IAAIrE,MAAM,2BAA4B/K,EAAE,WAL9CmI,EAAQqK,EAAO1U,MAAM+U,EAAOzD,GAC5BqkG,EAAaI,EAAU1rG,EAAO0K,EAAM,GACpC8S,EAAI+rF,MAKA,IAAG/rF,GAAK8rF,EAQb,MAAM,IAAI1mG,MAAM,kCAPhB5C,EAAQqK,EAAO1U,MAAM+U,EAAOzD,GAC5BqkG,EAAaI,EAAU1rG,EAAO0K,GAC9Boc,EAAauE,QAAQ,cAAcqgF,EAAS,uBAAuB7zG,EAAE,OACrE6S,EAAQzD,EAAE,EACVuW,EAAI+rF,EAKL,MACD,IAAK,IACJ,OAAO/rF,GACP,KAAK0rF,EACJ39F,EAAGogG,WAAWthG,EAAO1U,MAAM+U,EAAMzD,IAClC,KAAKsiG,EACL,KAAKC,EACL,KAAKC,EACJjsF,EAAGisF,EACHl+F,EAAG0/F,QAAS,EACb,KAAK3B,EACL,KAAKH,EACJ,MACA,KAAKC,EACJ79F,EAAG0/F,QAAS,EACb,MAED,QACC,MAAM,IAAIroG,MAAM,qCAEjB,MACD,IAAK,GAKJ,OAJAkkB,EAAa2B,MAAM,2BAChBjL,GAAK0rF,GACP39F,EAAGogG,WAAWthG,EAAO1U,MAAM+U,EAAMzD,IAE3BA,EACR,IAAK,IACJ,OAAOuW,GACP,KAAK0rF,EACJ39F,EAAGogG,WAAWthG,EAAO1U,MAAM+U,EAAMzD,IAClC,KAAKsiG,EACL,KAAKC,EACL,KAAKC,EACJ,MACD,KAAKH,EACL,KAAKH,EACJnpG,EAAQqK,EAAO1U,MAAM+U,EAAMzD,GACJ,MAApBjH,EAAMrK,OAAO,KACf4V,EAAG0/F,QAAU,EACbjrG,EAAQA,EAAMrK,MAAM,GAAG,IAEzB,KAAKyzG,EACD5rF,IAAM4rF,IACRppG,EAAQ0rG,GAENluF,GAAK8rF,GACPxiF,EAAauE,QAAQ,cAAcrrB,EAAM,qBACzCsrG,EAAaI,EAAU1rG,EAAO0K,KAE1BgY,EAAUL,OAAOioF,EAAa,MAAStqG,EAAM3J,MAAM,qCACtDywB,EAAauE,QAAQ,cAAcrrB,EAAM,qBAAqBA,EAAM,eAErEsrG,EAAatrG,EAAOA,EAAO0K,IAE5B,MACD,KAAK2+F,EACJ,MAAM,IAAIzmG,MAAM,4BAGjB,OAAOqE,EAER,IAAK,IACJpP,EAAI,IACL,QACC,GAAGA,GAAI,IACN,OAAO2lB,GACP,KAAK0rF,EACJ39F,EAAGogG,WAAWthG,EAAO1U,MAAM+U,EAAMzD,IACjCuW,EAAIgsF,EACJ,MACD,KAAKL,EACJuC,EAAWrhG,EAAO1U,MAAM+U,EAAMzD,GAC9BuW,EAAI4rF,EACJ,MACD,KAAKE,EACJ,IAAItpG,EAAQqK,EAAO1U,MAAM+U,EAAOzD,GAChC6f,EAAauE,QAAQ,cAAcrrB,EAAM,sBACzCsrG,EAAaI,EAAU1rG,EAAO0K,GAC/B,KAAK6+F,EACJ/rF,EAAIgsF,EACJ,WAWD,OAAOhsF,GAIP,KAAK4rF,EACW79F,EAAG0P,QACbyH,EAAUL,OAAOioF,EAAa,MAASoB,EAASr1G,MAAM,qCAC1DywB,EAAauE,QAAQ,cAAcqgF,EAAS,qBAAqBA,EAAS,gBAE3EJ,EAAaI,EAAUA,EAAUhhG,GACjCA,EAAQzD,EACRuW,EAAI2rF,EACJ,MACD,KAAKI,EACJziF,EAAauE,QAAQ,+BAA+BqgF,EAAS,OAC9D,KAAKlC,EACJhsF,EAAI2rF,EACJz+F,EAAQzD,EACR,MACD,KAAKoiG,EACJ7rF,EAAI8rF,EACJ5+F,EAAQzD,EACR,MACD,KAAKwiG,EACJ,MAAM,IAAI7mG,MAAM,+DAKnBqE,KAMF,SAAS4gB,EAActc,EAAGqb,EAAW0jF,GACpC,IAAIrvF,EAAU1P,EAAG0P,QACbyvF,EAAa,KAEbl3G,EAAI+X,EAAG/U,OACX,MAAMhD,IAAI,CACT,IAAI4K,EAAImN,EAAG/X,GACPw1B,EAAQ5qB,EAAE4qB,MACVhpB,EAAQ5B,EAAE4B,MACV4rG,EAAM5iF,EAAMnnB,QAAQ,KACxB,GAAG+pG,EAAI,EACN,IAAIhiF,EAASxrB,EAAEwrB,OAASZ,EAAMrzB,MAAM,EAAEi2G,GAClC7iF,EAAYC,EAAMrzB,MAAMi2G,EAAI,GAC5BC,EAAsB,UAAXjiF,GAAsBb,OAErCA,EAAYC,EACZY,EAAS,KACTiiF,EAAqB,UAAV7iF,GAAqB,GAGjC5qB,EAAE2qB,UAAYA,GAEE,IAAb8iF,IACe,MAAdnB,IACFA,EAAa,GAEboB,EAAMxB,EAAaA,EAAa,KAGjCA,EAAauB,GAAYnB,EAAWmB,GAAY7rG,EAChD5B,EAAEmE,IAAMmgB,EAAUG,MAClB+D,EAAW+C,mBAAmBkiF,EAAU7rG,IAGtCxM,EAAI+X,EAAG/U,OACX,MAAMhD,IAAI,CACT4K,EAAImN,EAAG/X,GACHo2B,EAASxrB,EAAEwrB,OACZA,IACY,QAAXA,IACFxrB,EAAEmE,IAAMmgB,EAAUE,KACJ,UAAXgH,IACHxrB,EAAEmE,IAAM+nG,EAAa1gF,GAAU,MAM9BgiF,EAAM3wF,EAAQpZ,QAAQ,KACvB+pG,EAAI,GACNhiF,EAASre,EAAGqe,OAAS3O,EAAQtlB,MAAM,EAAEi2G,GACrC7iF,EAAYxd,EAAGwd,UAAY9N,EAAQtlB,MAAMi2G,EAAI,KAE7ChiF,EAAS,KACTb,EAAYxd,EAAGwd,UAAY9N,GAG5B,IAAI8wF,EAAKxgG,EAAGhJ,IAAM+nG,EAAa1gF,GAAU,IAIzC,GAHAhD,EAAWiC,aAAakjF,EAAGhjF,EAAU9N,EAAQ1P,IAG1CA,EAAG0/F,OAaL,OAHA1/F,EAAG++F,aAAeA,EAClB/+F,EAAGm/F,WAAaA,GAET,EAXP,GADA9jF,EAAW6C,WAAWsiF,EAAGhjF,EAAU9N,GAChCyvF,EACF,IAAK9gF,KAAU8gF,EACV9qG,OAAOS,UAAUgC,eAAemH,KAAKkhG,EAAY9gF,IACpDhD,EAAWiD,iBAAiBD,GAWjC,SAASyhF,EAAwBhhG,EAAO2hG,EAAW/wF,EAAQ8uF,EAAenjF,GACzE,GAAG,yBAAyBnvB,KAAKwjB,GAAS,CACzC,IAAIgxF,EAAc5hG,EAAOxI,QAAQ,KAAKoZ,EAAQ,IAAI+wF,GAC9Cp3G,EAAOyV,EAAO3T,UAAUs1G,EAAW,EAAEC,GACzC,GAAG,OAAOx0G,KAAK7C,GACd,MAAG,YAAY6C,KAAKwjB,IAGlB2L,EAAWuD,WAAWv1B,EAAK,EAAEA,EAAK4B,QAE3By1G,IAGRr3G,EAAOA,EAAKQ,QAAQ,WAAW20G,GAC/BnjF,EAAWuD,WAAWv1B,EAAK,EAAEA,EAAK4B,QAC3By1G,GAKV,OAAOD,EAAW,EAEnB,SAASd,EAAc7gG,EAAO2hG,EAAW/wF,EAAQsvF,GAEhD,IAAIvP,EAAMuP,EAAStvF,GASnB,OARU,MAAP+/E,IAEFA,EAAO3wF,EAAOuzF,YAAY,KAAK3iF,EAAQ,KACpC+/E,EAAIgR,IACNhR,EAAM3wF,EAAOuzF,YAAY,KAAK3iF,IAE/BsvF,EAAStvF,GAAU+/E,GAEbA,EAAIgR,EAIZ,SAASF,EAAOzhG,EAAQ4X,GACvB,IAAK,IAAIhjB,KAAKoL,EACTzK,OAAOS,UAAUgC,eAAemH,KAAKa,EAAQpL,KAChDgjB,EAAOhjB,GAAKoL,EAAOpL,IAKtB,SAAS6rG,EAASzgG,EAAOK,EAAMkc,EAAWE,GACzC,IAAIolF,EAAM7hG,EAAOzN,OAAO8N,EAAM,GAC9B,OAAOwhG,GACP,IAAK,IACJ,GAAgC,MAA7B7hG,EAAOzN,OAAO8N,EAAQ,GAAW,CACnC,IAAIC,EAAMN,EAAOxI,QAAQ,SAAM6I,EAAM,GAErC,OAAGC,EAAID,GACNkc,EAAW6D,QAAQpgB,EAAOK,EAAM,EAAEC,EAAID,EAAM,GACrCC,EAAI,IAEXmc,EAAa2B,MAAM,qBACX,GAIT,OAAQ,EAEV,QACC,GAA+B,UAA5Bpe,EAAOsd,OAAOjd,EAAM,EAAE,GAAe,CACnCC,EAAMN,EAAOxI,QAAQ,MAAM6I,EAAM,GAIrC,OAHAkc,EAAWgE,aACXhE,EAAWuD,WAAW9f,EAAOK,EAAM,EAAEC,EAAID,EAAM,GAC/Ckc,EAAWiE,WACJlgB,EAAI,EAIZ,IAAIwhG,EAASn2G,EAAMqU,EAAOK,GACtB1L,EAAMmtG,EAAO31G,OACjB,GAAGwI,EAAI,GAAK,YAAYvH,KAAK00G,EAAO,GAAG,IAAI,CAC1C,IAAI/1G,EAAO+1G,EAAO,GAAG,GACjBC,GAAQ,EACRC,GAAQ,EACTrtG,EAAI,IACH,YAAYvH,KAAK00G,EAAO,GAAG,KAC7BC,EAAQD,EAAO,GAAG,GAClBE,EAAQrtG,EAAI,GAAKmtG,EAAO,GAAG,IACnB,YAAY10G,KAAK00G,EAAO,GAAG,MACnCE,EAAQF,EAAO,GAAG,KAGpB,IAAIG,EAAYH,EAAOntG,EAAI,GAI3B,OAHA4nB,EAAWkE,SAAS10B,EAAMg2G,EAAOC,GACjCzlF,EAAW2lF,SAEJD,EAAUzxG,MAAMyxG,EAAU,GAAG91G,QAGtC,OAAQ,EAKT,SAASq0G,EAAiBxgG,EAAOK,EAAMkc,GACtC,IAAIjc,EAAMN,EAAOxI,QAAQ,KAAK6I,GAC9B,GAAGC,EAAI,CACN,IAAItU,EAAQgU,EAAO3T,UAAUgU,EAAMC,GAAKtU,MAAM,8BAC9C,GAAGA,EAAM,CACEA,EAAM,GAAGG,OAEnB,OADAowB,EAAWkD,sBAAsBzzB,EAAM,GAAIA,EAAM,IAC1CsU,EAAI,EAEX,OAAQ,EAGV,OAAQ,EAGT,SAASogG,IACRnyG,KAAK4yG,eAAiB,GAoCvB,SAASx1G,EAAMqU,EAAOK,GACrB,IAAIrU,EACAqxG,EAAM,GACNj8B,EAAM,6CACVA,EAAI+gC,UAAY9hG,EAChB+gE,EAAIn1E,KAAK+T,GACT,MAAMhU,EAAQo1E,EAAIn1E,KAAK+T,GAEtB,GADAq9F,EAAI7zG,KAAKwC,GACNA,EAAM,GAAG,OAAOqxG,EA9mBrBrhF,EAAWhmB,UAAY,IAAIuC,MAC3ByjB,EAAWhmB,UAAUjK,KAAOiwB,EAAWjwB,KAMvCkwB,EAAUjmB,UAAY,CACrBsD,MAAM,SAAS0G,EAAO6d,EAAaE,GAClC,IAAIxB,EAAahuB,KAAKguB,WACtBA,EAAW8B,gBACXojF,EAAM5jF,EAAcA,EAAe,IACnCvkB,EAAM0G,EAAO6d,EAAaE,EACxBxB,EAAWhuB,KAAKkuB,cAClBF,EAAW4D,gBAsjBbugF,EAAkB1qG,UAAY,CAC7BsrG,WAAW,SAAS1wF,GACnB,IAAIguF,EAAexxG,KAAKwjB,GACvB,MAAM,IAAIrY,MAAM,mBAAmBqY,GAEpCriB,KAAKqiB,QAAUA,GAEhBwwF,SAAS,SAASziF,EAAOhpB,EAAOnB,GAC/B,IAAIoqG,EAAexxG,KAAKuxB,GACvB,MAAM,IAAIpmB,MAAM,qBAAqBomB,GAEtCpwB,KAAK4yG,eAAexiF,GAASpwB,KAAKpC,OAClCoC,KAAKA,KAAKpC,UAAY,CAACwyB,MAAMA,EAAMhpB,MAAMA,EAAMnB,OAAOA,IAEvDrI,OAAO,EACPi2G,aAAa,SAASj5G,GAAG,OAAOoF,KAAKpF,GAAGu1B,WACxCQ,WAAW,SAAS/1B,GAAG,OAAOoF,KAAKpF,GAAGizB,SACtC4C,SAAS,SAAS71B,GAAG,OAAOoF,KAAKpF,GAAGw1B,OACpCE,OAAO,SAAS11B,GAAG,OAAOoF,KAAKpF,GAAG+O,KAClC4mB,SAAS,SAAS31B,GAAG,OAAOoF,KAAKpF,GAAGwM,QA2BrC3L,EAAQiyB,UAAYA,EACpBjyB,EAAQgyB,WAAaA,G,qBCrpBrB,IAAIH,EAAc,EAAQ,QAEtBzE,EAAOyE,EAAYzE,KACnBiB,EAAYwD,EAAYxD,UAO5B,SAASgqF,EAAgBlmF,GACxB,MAAiB,KAAVA,EASR,SAASmmF,EAAuBnmF,GAE/B,OAAOA,EAAQA,EAAMxwB,MAAM,gBAAgB8a,OAAO47F,GAAkB,GAUrE,SAASE,EAAmBrxF,EAASR,GAIpC,OAHKQ,EAAQlZ,eAAe0Y,KAC3BQ,EAAQR,IAAW,GAEbQ,EAQR,SAASsxF,EAAarmF,GACrB,IAAKA,EAAO,MAAO,GACnB,IAAIxb,EAAO2hG,EAAuBnmF,GAClC,OAAO5mB,OAAO0K,KAAKU,EAAKZ,OAAOwiG,EAAmB,KAUnD,SAASE,EAAe9hG,GACvB,OAAO,SAAS+P,GACf,OAAO/P,IAAmC,IAA3BA,EAAKnJ,QAAQkZ,IAI9B,SAASqjB,EAAK2uE,EAAIC,GACjB,IAAI,IAAI/lG,KAAK8lG,EACRntG,OAAOS,UAAUgC,eAAemH,KAAKujG,EAAK9lG,KAC7C+lG,EAAK/lG,GAAK8lG,EAAI9lG,IASjB,SAAS3F,EAASsiB,EAAMqpF,GACvB,IAAIC,EAAKtpF,EAAMvjB,UACf,KAAK6sG,aAAcD,GAAO,CACzB,SAASvwG,KACTA,EAAE2D,UAAY4sG,EAAM5sG,UACpB3D,EAAI,IAAIA,EACR0hC,EAAK8uE,EAAGxwG,GACRknB,EAAMvjB,UAAY6sG,EAAKxwG,EAErBwwG,EAAG3lG,aAAeqc,IACD,mBAATA,GACTpoB,QAAQitB,MAAM,iBAAiB7E,GAEhCspF,EAAG3lG,YAAcqc,GAKnB,IAAIupF,EAAW,GACXC,EAA8BD,EAASC,aAA8B,EACrEC,EAA8BF,EAASE,eAA8B,EACrEC,EAA8BH,EAASG,UAA8B,EACrEC,EAA8BJ,EAASI,mBAA8B,EACrEC,EAA8BL,EAASK,sBAA8B,EACrEC,EAA8BN,EAASM,YAA8B,EACrEC,EAA8BP,EAASO,4BAA8B,EACrEC,EAA8BR,EAASQ,aAA8B,EACrEC,EAA8BT,EAASS,cAA8B,EACrEC,EAA8BV,EAASU,mBAA8B,GACrEC,EAA8BX,EAASW,uBAA8B,GACrEC,EAA8BZ,EAASY,cAA8B,GAGrEC,EAAgB,GAChBC,EAAmB,GAGnBC,GAF8BF,EAAcG,gBAAgCF,EAAiB,GAAG,mBAAoB,GACtFD,EAAcI,oBAAgCH,EAAiB,GAAG,uBAAwB,GAC1FD,EAAcE,uBAAgCD,EAAiB,GAAG,0BAA2B,IAK3HI,GAJ8BL,EAAcM,oBAAgCL,EAAiB,GAAG,iBAAkB,GACpFD,EAAcO,uBAAgCN,EAAiB,GAAG,oBAAqB,GACvFD,EAAcQ,qBAAgCP,EAAiB,GAAG,kBAAmB,GACrFD,EAAcS,6BAAgCR,EAAiB,GAAG,0BAA2B,GAC7FD,EAAcK,eAAgCJ,EAAiB,GAAG,YAAa,IAE7GS,GAD8BV,EAAcW,mBAAgCV,EAAiB,GAAG,gBAAiB,GACnFD,EAAcU,qBAAgCT,EAAiB,IAAI,mBAAoB,KAEzFD,EAAcY,mBAA8BX,EAAiB,IAAI,gBAAiB,IAClFD,EAAca,YAA8BZ,EAAiB,IAAI,eAAgB,IACjFD,EAAcc,0BAA8Bb,EAAiB,IAAI,uBAAwB,IACzFD,EAAce,eAA6Bd,EAAiB,IAAI,oBAAqB,IACrFD,EAAcgB,oBAA6Bf,EAAiB,IAAI,iBAAkB,IAQlH,SAASgB,EAAarpG,EAAM6qF,GAC3B,GAAGA,aAAmB7tF,MACrB,IAAI6lB,EAAQgoE,OAEZhoE,EAAQ7vB,KACRgK,MAAM4G,KAAK5Q,KAAMq1G,EAAiBroG,IAClChN,KAAK63F,QAAUwd,EAAiBroG,GAC7BhD,MAAM8mG,mBAAmB9mG,MAAM8mG,kBAAkB9wG,KAAMq2G,GAI3D,OAFAxmF,EAAM7iB,KAAOA,EACV6qF,IAAS73F,KAAK63F,QAAU73F,KAAK63F,QAAU,KAAOA,GAC1ChoE,EAUR,SAASymF,KA2CT,SAASC,EAAa5wF,EAAK6wF,GAC1Bx2G,KAAKy2G,MAAQ9wF,EACb3lB,KAAK02G,SAAWF,EAChBG,EAAgB32G,MAEjB,SAAS22G,EAAgBvkG,GACxB,IAAIwkG,EAAMxkG,EAAKqkG,MAAMI,MAAQzkG,EAAKqkG,MAAMK,cAAcD,KACtD,GAAGzkG,EAAKykG,MAAQD,EAAI,CACnB,IAAIG,EAAK3kG,EAAKskG,SAAStkG,EAAKqkG,OAE5BO,GAAQ5kG,EAAK,SAAS2kG,EAAGn5G,QACzB4nC,EAAKuxE,EAAG3kG,GACRA,EAAKykG,KAAOD,GAqBd,SAASK,KAGT,SAASC,EAAe9kG,EAAKuT,GAC5B,IAAI/qB,EAAIwX,EAAKxU,OACb,MAAMhD,IACL,GAAGwX,EAAKxX,KAAO+qB,EAAM,OAAO/qB,EAI9B,SAASu8G,EAAcxkG,EAAGP,EAAKglG,EAAQC,GAMtC,GALGA,EACFjlG,EAAK8kG,EAAe9kG,EAAKilG,IAAYD,EAErChlG,EAAKA,EAAKxU,UAAYw5G,EAEpBzkG,EAAG,CACLykG,EAAQE,aAAe3kG,EACvB,IAAI0c,EAAM1c,EAAGmkG,cACVznF,IACFgoF,GAAWE,EAAmBloF,EAAI1c,EAAG0kG,GACrCG,EAAgBnoF,EAAI1c,EAAGykG,KAI1B,SAASK,EAAiB9kG,EAAGP,EAAKoe,GAEjC,IAAI51B,EAAIs8G,EAAe9kG,EAAKoe,GAC5B,KAAG51B,GAAG,GAcL,MAAM,IAAIy7G,EAAaZ,EAAc,IAAIzrG,MAAM2I,EAAG0P,QAAQ,IAAImO,IAb9D,IAAIojF,EAAYxhG,EAAKxU,OAAO,EAC5B,MAAMhD,EAAEg5G,EACPxhG,EAAKxX,GAAKwX,IAAOxX,GAGlB,GADAwX,EAAKxU,OAASg2G,EACXjhG,EAAG,CACL,IAAI0c,EAAM1c,EAAGmkG,cACVznF,IACFkoF,EAAmBloF,EAAI1c,EAAG6d,GAC1BA,EAAK8mF,aAAe,OAsFxB,SAAS33G,KA+FT,SAAS+3G,KAiHT,SAASC,EAAY14G,GACpB,OAAY,KAALA,EAAY,OACN,KAALA,GAAY,SACP,KAALA,GAAY,SACP,KAALA,GAAY,UACZ,KAAKA,EAAEmF,aAAa,IAW7B,SAASwzG,EAAWjyF,EAAK9b,GACxB,GAAGA,EAAS8b,GACX,OAAO,EAER,GAAGA,EAAOA,EAAK67E,WACd,GACC,GAAGoW,EAAWjyF,EAAK9b,GAAW,OAAO,QACzB8b,EAAKA,EAAKkyF,aAMzB,SAASC,IACR93G,KAAK82G,cAAgB92G,KAGtB,SAASw3G,EAAgBnoF,EAAI1c,EAAGykG,GAC/B/nF,GAAOA,EAAIwnF,OACX,IAAI1D,EAAKiE,EAAQlnF,aACdijF,IAAOrpF,EAAUG,QAEnBtX,EAAGolG,OAAOX,EAAQpmF,OAAOomF,EAAQjnF,UAAU,IAAMinF,EAAQhwG,OAI3D,SAASmwG,EAAmBloF,EAAI1c,EAAGykG,EAAQY,GAC1C3oF,GAAOA,EAAIwnF,OACX,IAAI1D,EAAKiE,EAAQlnF,aACdijF,IAAOrpF,EAAUG,cAEZtX,EAAGolG,OAAOX,EAAQpmF,OAAOomF,EAAQjnF,UAAU,IAgBpD,SAAS8nF,EAAgB5oF,EAAK1c,EAAIulG,GACjC,GAAG7oF,GAAOA,EAAIwnF,KAAK,CAClBxnF,EAAIwnF,OAEJ,IAAIsB,EAAKxlG,EAAGyP,WACZ,GAAI81F,EACHC,EAAGA,EAAGv6G,UAAYs6G,MACZ,CACN,IAAIE,EAAQzlG,EAAG6uF,WACX5mG,EAAI,EACR,MAAOw9G,EACND,EAAGv9G,KAAOw9G,EACVA,EAAQA,EAAMP,YAEfM,EAAGv6G,OAAShD,SACLu9G,EAAGA,EAAGv6G,UAiBhB,SAASy6G,EAAcvnF,EAAYsnF,GAClC,IAAIE,EAAWF,EAAMG,gBACjBjF,EAAO8E,EAAMP,YAejB,OAdIS,EACHA,EAAST,YAAcvE,EAEvBxiF,EAAW0wE,WAAa8R,EAErBA,EACHA,EAAKiF,gBAAkBD,EAEvBxnF,EAAW0nF,UAAYF,EAExBF,EAAMtnF,WAAa,KACnBsnF,EAAMG,gBAAkB,KACxBH,EAAMP,YAAc,KACpBI,EAAennF,EAAWgmF,cAAehmF,GAClCsnF,EAQR,SAASK,EAAuB9yF,GAC/B,OACCA,IACCA,EAAK+yF,WAAahB,EAAK1C,eAAiBrvF,EAAK+yF,WAAahB,EAAKxC,wBAA0BvvF,EAAK+yF,WAAahB,EAAKlD,cASnH,SAASmE,EAAsBhzF,GAC9B,OACCA,IACCizF,EAAcjzF,IACdkzF,EAAWlzF,IACXmzF,EAAcnzF,IACdA,EAAK+yF,WAAahB,EAAKxC,wBACvBvvF,EAAK+yF,WAAahB,EAAK3C,cACvBpvF,EAAK+yF,WAAahB,EAAK5C,6BAS1B,SAASgE,EAAcnzF,GACtB,OAAOA,GAAQA,EAAK+yF,WAAahB,EAAKzC,mBAQvC,SAAS2D,EAAcjzF,GACtB,OAAOA,GAAQA,EAAK+yF,WAAahB,EAAKlD,aAOvC,SAASqE,EAAWlzF,GACnB,OAAOA,GAAQA,EAAK+yF,WAAahB,EAAKhD,UAavC,SAASqE,EAA2B1pF,EAAK+oF,GACxC,IAAIY,EAAmB3pF,EAAIjN,YAAc,GACzC,GAAIyG,EAAKmwF,EAAkBJ,IAAkBE,EAAcV,GAC1D,OAAO,EAER,IAAIa,EAAcpwF,EAAKmwF,EAAkBF,GACzC,QAASV,GAASa,GAAeD,EAAiB/vG,QAAQgwG,GAAeD,EAAiB/vG,QAAQmvG,IAanG,SAASc,GAA6B7pF,EAAK+oF,GAC1C,IAAIY,EAAmB3pF,EAAIjN,YAAc,GAEzC,SAAS+2F,EAA8BxzF,GACtC,OAAOizF,EAAcjzF,IAASA,IAASyyF,EAGxC,GAAIvvF,EAAKmwF,EAAkBG,GAC1B,OAAO,EAER,IAAIF,EAAcpwF,EAAKmwF,EAAkBF,GACzC,QAASV,GAASa,GAAeD,EAAiB/vG,QAAQgwG,GAAeD,EAAiB/vG,QAAQmvG,IAgBnG,SAASgB,GAA+BC,EAAQ1zF,EAAMyyF,GAErD,IAAKK,EAAuBY,GAC3B,MAAM,IAAIhD,EAAaf,EAAuB,+BAAiC+D,EAAOX,UAKvF,GAAIN,GAASA,EAAMtnF,aAAeuoF,EACjC,MAAM,IAAIhD,EAAaZ,EAAe,uBAEvC,IAEEkD,EAAsBhzF,IAKtBmzF,EAAcnzF,IAAS0zF,EAAOX,WAAahB,EAAK1C,cAEjD,MAAM,IAAIqB,EACTf,EACA,wBAA0B3vF,EAAK+yF,SAAW,yBAA2BW,EAAOX,UAkB/E,SAASY,GAAqCD,EAAQ1zF,EAAMyyF,GAC3D,IAAIY,EAAmBK,EAAOj3F,YAAc,GACxCm3F,EAAiB5zF,EAAKvD,YAAc,GAGxC,GAAIuD,EAAK+yF,WAAahB,EAAKxC,uBAAwB,CAClD,IAAIsE,EAAoBD,EAAerhG,OAAO0gG,GAE9C,GAAIY,EAAkB57G,OAAS,GAAKirB,EAAK0wF,EAAgBV,GACxD,MAAM,IAAIxC,EAAaf,EAAuB,6CAI/C,GAAiC,IAA7BkE,EAAkB57G,SAAiBm7G,EAA2BM,EAAQjB,GACzE,MAAM,IAAI/B,EAAaf,EAAuB,0DAIhD,GAAIsD,EAAcjzF,KAGZozF,EAA2BM,EAAQjB,GACvC,MAAM,IAAI/B,EAAaf,EAAuB,wDAIhD,GAAIwD,EAAcnzF,GAAO,CAExB,GAAIkD,EAAKmwF,EAAkBF,GAC1B,MAAM,IAAIzC,EAAaf,EAAuB,+BAE/C,IAAImE,EAAqB5wF,EAAKmwF,EAAkBJ,GAEhD,GAAIR,GAASY,EAAiB/vG,QAAQwwG,GAAsBT,EAAiB/vG,QAAQmvG,GACpF,MAAM,IAAI/B,EAAaf,EAAuB,kDAG/C,IAAK8C,GAASqB,EACb,MAAM,IAAIpD,EAAaf,EAAuB,yDAkBjD,SAASoE,GAAuCL,EAAQ1zF,EAAMyyF,GAC7D,IAAIY,EAAmBK,EAAOj3F,YAAc,GACxCm3F,EAAiB5zF,EAAKvD,YAAc,GAGxC,GAAIuD,EAAK+yF,WAAahB,EAAKxC,uBAAwB,CAClD,IAAIsE,EAAoBD,EAAerhG,OAAO0gG,GAE9C,GAAIY,EAAkB57G,OAAS,GAAKirB,EAAK0wF,EAAgBV,GACxD,MAAM,IAAIxC,EAAaf,EAAuB,6CAG/C,GAAiC,IAA7BkE,EAAkB57G,SAAiBs7G,GAA6BG,EAAQjB,GAC3E,MAAM,IAAI/B,EAAaf,EAAuB,0DAIhD,GAAIsD,EAAcjzF,KAEZuzF,GAA6BG,EAAQjB,GACzC,MAAM,IAAI/B,EAAaf,EAAuB,wDAIhD,GAAIwD,EAAcnzF,GAAO,CACxB,SAASg0F,EAA8Bh0F,GACtC,OAAOmzF,EAAcnzF,IAASA,IAASyyF,EAIxC,GAAIvvF,EAAKmwF,EAAkBW,GAC1B,MAAM,IAAItD,EAAaf,EAAuB,+BAE/C,IAAImE,EAAqB5wF,EAAKmwF,EAAkBJ,GAEhD,GAAIR,GAASY,EAAiB/vG,QAAQwwG,GAAsBT,EAAiB/vG,QAAQmvG,GACpF,MAAM,IAAI/B,EAAaf,EAAuB,mDAejD,SAASsE,GAAcP,EAAQ1zF,EAAMyyF,EAAOyB,GAE3CT,GAA+BC,EAAQ1zF,EAAMyyF,GAIzCiB,EAAOX,WAAahB,EAAK1C,gBAC3B6E,GAAwBP,IAAsCD,EAAQ1zF,EAAMyyF,GAG9E,IAAIpyG,EAAK2f,EAAKmL,WAId,GAHG9qB,GACFA,EAAGy7F,YAAY97E,GAEbA,EAAK+yF,WAAaxD,EAAuB,CAC3C,IAAI4E,EAAWn0F,EAAK67E,WACpB,GAAgB,MAAZsY,EACH,OAAOn0F,EAER,IAAIo0F,EAAUp0F,EAAK6yF,eAEnBsB,EAAWC,EAAUp0F,EAEtB,IAAIumD,EAAMksC,EAAQA,EAAMG,gBAAkBc,EAAOb,UAEjDsB,EAASvB,gBAAkBrsC,EAC3B6tC,EAAQlC,YAAcO,EAGnBlsC,EACFA,EAAI2rC,YAAciC,EAElBT,EAAO7X,WAAasY,EAET,MAAT1B,EACFiB,EAAOb,UAAYuB,EAEnB3B,EAAMG,gBAAkBwB,EAEzB,GACCD,EAAShpF,WAAauoF,QAChBS,IAAaC,IAAYD,EAAUA,EAASjC,cAMnD,OALAI,EAAeoB,EAAOvC,eAAeuC,EAAQA,GAEzC1zF,EAAK+yF,UAAYxD,IACpBvvF,EAAK67E,WAAa77E,EAAK6yF,UAAY,MAE7B7yF,EAcR,SAASq0F,GAAoBlpF,EAAYonF,GAcxC,OAbIA,EAASpnF,YACZonF,EAASpnF,WAAW2wE,YAAYyW,GAEjCA,EAASpnF,WAAaA,EACtBonF,EAASK,gBAAkBznF,EAAW0nF,UACtCN,EAASL,YAAc,KACnBK,EAASK,gBACZL,EAASK,gBAAgBV,YAAcK,EAEvCpnF,EAAW0wE,WAAa0W,EAEzBpnF,EAAW0nF,UAAYN,EACvBD,EAAennF,EAAWgmF,cAAehmF,EAAYonF,GAC9CA,EAsNR,SAASlnE,KACRhxC,KAAK+3G,OAAS,GA6Ff,SAASkC,MAMT,SAASC,MA+BT,SAASC,MAmBT,SAASC,MAQT,SAASC,MAST,SAASC,MAKT,SAASC,MAKT,SAASC,MAKT,SAASC,MAKT,SAASC,MAOT,SAASC,MAIT,SAAS/6G,MAKT,SAASg7G,GAAsBC,EAAOC,GACrC,IAAIhM,EAAM,GACNiM,EAA2B,GAAjB/6G,KAAK04G,UAAiB14G,KAAKuN,iBAAmBvN,KACxDgxB,EAAS+pF,EAAQ/pF,OACjBrnB,EAAMoxG,EAAQ7qF,aAElB,GAAGvmB,GAAiB,MAAVqnB,EAAe,CAEpBA,EAAS+pF,EAAQC,aAAarxG,GAClC,GAAa,MAAVqnB,EAEF,IAAIiqF,EAAkB,CACtB,CAACC,UAAUvxG,EAAIqnB,OAAO,OAOxB,OAFAmqF,GAAkBn7G,KAAK8uG,EAAI+L,EAAOC,EAAWG,GAEtCnM,EAAIjqG,KAAK,IAGjB,SAASu2G,GAAoBz1F,EAAM8D,EAAQwxF,GAC1C,IAAIjqF,EAASrL,EAAKqL,QAAU,GACxBrnB,EAAMgc,EAAKuK,aAQf,IAAKvmB,EACJ,OAAO,EAER,GAAe,QAAXqnB,GAAoBrnB,IAAQmgB,EAAUE,KAAOrgB,IAAQmgB,EAAUG,MAClE,OAAO,EAGR,IAAIrvB,EAAIqgH,EAAkBr9G,OAC1B,MAAOhD,IAAK,CACX,IAAIu4G,EAAK8H,EAAkBrgH,GAE3B,GAAIu4G,EAAGniF,SAAWA,EACjB,OAAOmiF,EAAG+H,YAAcvxG,EAG1B,OAAO,EAeR,SAAS0xG,GAAuBvM,EAAKwM,EAAel0G,GACnD0nG,EAAI7zG,KAAK,IAAKqgH,EAAe,KAAMl0G,EAAM5K,QAAQ,gBAAiBm7G,GAAc,KAGjF,SAASwD,GAAkBx1F,EAAKmpF,EAAIrlF,EAAOqxF,EAAWG,GAKrD,GAJKA,IACJA,EAAoB,IAGlBH,EAAW,CAEb,GADAn1F,EAAOm1F,EAAWn1F,IACfA,EAMF,OALA,GAAkB,iBAARA,EAET,YADAmpF,EAAI7zG,KAAK0qB,GASZ,OAAOA,EAAK+yF,UACZ,KAAKlE,EACJ,IAAIl0G,EAAQqlB,EAAKjnB,WACb0H,EAAM9F,EAAM1C,OACZw6G,EAAQzyF,EAAK67E,WACbh0F,EAAWmY,EAAKtD,QAEpBoH,EAASK,EAAUL,OAAO9D,EAAKuK,eAAiBzG,EAEhD,IAAI8xF,EAAmB/tG,EACvB,IAAKic,IAAW9D,EAAKqL,QAAUrL,EAAKuK,aAAc,CAGjD,IAFA,IAAIsrF,EAEKC,EAAK,EAAGA,EAAKn7G,EAAM1C,OAAQ69G,IACnC,GAA4B,UAAxBn7G,EAAM0oB,KAAKyyF,GAAIj+G,KAAkB,CACpCg+G,EAAYl7G,EAAM0oB,KAAKyyF,GAAIr0G,MAC3B,MAGF,IAAKo0G,EAEJ,IAAK,IAAIE,EAAMT,EAAkBr9G,OAAS,EAAG89G,GAAO,EAAGA,IAAO,CAC7D,IAAIR,EAAYD,EAAkBS,GAClC,GAAyB,KAArBR,EAAUlqF,QAAiBkqF,EAAUA,YAAcv1F,EAAKuK,aAAc,CACzEsrF,EAAYN,EAAUA,UACtB,OAIH,GAAIM,IAAc71F,EAAKuK,aACtB,IAASwrF,EAAMT,EAAkBr9G,OAAS,EAAG89G,GAAO,EAAGA,IAAO,CACzDR,EAAYD,EAAkBS,GAClC,GAAIR,EAAUA,YAAcv1F,EAAKuK,aAAc,CAC1CgrF,EAAUlqF,SACbuqF,EAAmBL,EAAUlqF,OAAS,IAAMxjB,GAE7C,QAMJshG,EAAI7zG,KAAK,IAAKsgH,GAEd,IAAI,IAAI3gH,EAAE,EAAEA,EAAEwL,EAAIxL,IAAI,CAErB,IAAI41B,EAAOlwB,EAAM0oB,KAAKpuB,GACH,SAAf41B,EAAKQ,OACRiqF,EAAkBhgH,KAAK,CAAE+1B,OAAQR,EAAKL,UAAW+qF,UAAW1qF,EAAKppB,QACxC,SAAjBopB,EAAKhjB,UACbytG,EAAkBhgH,KAAK,CAAE+1B,OAAQ,GAAIkqF,UAAW1qF,EAAKppB,QAIvD,IAAQxM,EAAE,EAAEA,EAAEwL,EAAIxL,IAAI,CACjB41B,EAAOlwB,EAAM0oB,KAAKpuB,GACtB,GAAIwgH,GAAoB5qF,EAAK/G,EAAQwxF,GAAoB,CACxD,IAAIjqF,EAASR,EAAKQ,QAAQ,GACtBrnB,EAAM6mB,EAAKN,aACfmrF,GAAuBvM,EAAK99E,EAAS,SAAWA,EAAS,QAASrnB,GAClEsxG,EAAkBhgH,KAAK,CAAE+1B,OAAQA,EAAQkqF,UAAUvxG,IAEpDwxG,GAAkB3qF,EAAKs+E,EAAIrlF,EAAOqxF,EAAWG,GAI9C,GAAIztG,IAAa+tG,GAAoBH,GAAoBz1F,EAAM8D,EAAQwxF,GAAoB,CACtFjqF,EAASrL,EAAKqL,QAAQ,GACtBrnB,EAAMgc,EAAKuK,aACfmrF,GAAuBvM,EAAK99E,EAAS,SAAWA,EAAS,QAASrnB,GAClEsxG,EAAkBhgH,KAAK,CAAE+1B,OAAQA,EAAQkqF,UAAUvxG,IAGpD,GAAGyuG,GAAS3uF,IAAW,mCAAmC5qB,KAAK2O,GAAU,CAGxE,GAFAshG,EAAI7zG,KAAK,KAENwuB,GAAU,YAAY5qB,KAAK2O,GAC7B,MAAM4qG,EACFA,EAAMv+G,KACRi1G,EAAI7zG,KAAKm9G,EAAMv+G,MAEfshH,GAAkB/C,EAAOtJ,EAAKrlF,EAAQqxF,EAAYG,EAAkBl+G,SAErEq7G,EAAQA,EAAMP,iBAIf,MAAMO,EACL+C,GAAkB/C,EAAOtJ,EAAKrlF,EAAQqxF,EAAYG,EAAkBl+G,SACpEq7G,EAAQA,EAAMP,YAGhB/I,EAAI7zG,KAAK,KAAKsgH,EAAiB,UAE/BzM,EAAI7zG,KAAK,MAIV,OACD,KAAK+5G,EACL,KAAKE,EACAkD,EAAQzyF,EAAK67E,WACjB,MAAM4W,EACL+C,GAAkB/C,EAAOtJ,EAAKrlF,EAAQqxF,EAAYG,EAAkBl+G,SACpEq7G,EAAQA,EAAMP,YAEf,OACD,KAAKpD,EACJ,OAAO4G,GAAuBvM,EAAKnpF,EAAKnoB,KAAMmoB,EAAKve,OACpD,KAAKstG,EAiBJ,OAAO5F,EAAI7zG,KAAK0qB,EAAK9rB,KACnB2C,QAAQ,SAASm7G,IAEpB,KAAKhD,EACJ,OAAO7F,EAAI7zG,KAAM,YAAY0qB,EAAK9rB,KAAK,OACxC,KAAKk7G,EACJ,OAAOjG,EAAI7zG,KAAM,UAAO0qB,EAAK9rB,KAAK,UACnC,KAAKo7G,EACJ,IAAIzB,EAAQ7tF,EAAKwM,SACbshF,EAAQ9tF,EAAKkJ,SAEjB,GADAigF,EAAI7zG,KAAK,aAAa0qB,EAAKnoB,MACxBg2G,EACF1E,EAAI7zG,KAAK,WAAYu4G,GACjBC,GAAgB,KAAPA,GACZ3E,EAAI7zG,KAAK,IAAKw4G,GAEf3E,EAAI7zG,KAAK,UACJ,GAAGw4G,GAAgB,KAAPA,EACjB3E,EAAI7zG,KAAK,WAAYw4G,EAAO,SACxB,CACJ,IAAI5zB,EAAMl6D,EAAKg2F,eACZ97B,GACFivB,EAAI7zG,KAAK,KAAK4kF,EAAI,KAEnBivB,EAAI7zG,KAAK,KAEV,OACD,KAAK65G,EACJ,OAAOhG,EAAI7zG,KAAM,KAAK0qB,EAAK0D,OAAO,IAAI1D,EAAK9rB,KAAK,MACjD,KAAK+6G,EACJ,OAAO9F,EAAI7zG,KAAM,IAAI0qB,EAAKnY,SAAS,KAGpC,QACCshG,EAAI7zG,KAAK,KAAK0qB,EAAKnY,WAGrB,SAASouG,GAAWvsF,EAAI1J,EAAKk2F,GAC5B,IAAIC,EACJ,OAAQn2F,EAAK+yF,UACb,KAAKlE,EACJsH,EAAQn2F,EAAKo2F,WAAU,GACvBD,EAAMhF,cAAgBznF,EAMvB,KAAK6lF,EACJ,MACD,KAAKT,EACJoH,GAAO,EACP,MAqBD,GALIC,IACHA,EAAQn2F,EAAKo2F,WAAU,IAExBD,EAAMhF,cAAgBznF,EACtBysF,EAAMhrF,WAAa,KAChB+qF,EAAK,CACP,IAAIzD,EAAQzyF,EAAK67E,WACjB,MAAM4W,EACL0D,EAAM1sF,YAAYwsF,GAAWvsF,EAAI+oF,EAAMyD,IACvCzD,EAAQA,EAAMP,YAGhB,OAAOiE,EAKR,SAASC,GAAU1sF,EAAI1J,EAAKk2F,GAC3B,IAAIC,EAAQ,IAAIn2F,EAAKhX,YACrB,IAAK,IAAItI,KAAKsf,EACb,GAAI3e,OAAOS,UAAUgC,eAAemH,KAAK+U,EAAMtf,GAAI,CAClD,IAAIc,EAAIwe,EAAKtf,GACG,iBAALc,GACNA,GAAK20G,EAAMz1G,KACdy1G,EAAMz1G,GAAKc,GASf,OAJGwe,EAAKvD,aACP05F,EAAM15F,WAAa,IAAIk0F,GAExBwF,EAAMhF,cAAgBznF,EACdysF,EAAMpD,UACd,KAAKlE,EACJ,IAAIl0G,EAAQqlB,EAAKjnB,WACbs9G,EAASF,EAAMp9G,WAAa,IAAIu4G,EAChC7wG,EAAM9F,EAAM1C,OAChBo+G,EAAOC,cAAgBH,EACvB,IAAI,IAAIlhH,EAAE,EAAEA,EAAEwL,EAAIxL,IACjBkhH,EAAMlrF,iBAAiBmrF,GAAU1sF,EAAI/uB,EAAM0oB,KAAKpuB,IAAG,IAEpD,MACD,KAAK65G,EACJoH,GAAO,EAER,GAAGA,EAAK,CACP,IAAIzD,EAAQzyF,EAAK67E,WACjB,MAAM4W,EACL0D,EAAM1sF,YAAY2sF,GAAU1sF,EAAI+oF,EAAMyD,IACtCzD,EAAQA,EAAMP,YAGhB,OAAOiE,EAGR,SAAS9E,GAAQ9tF,EAAOhgB,EAAI9B,GAC3B8hB,EAAOhgB,GAAO9B,EAhlDfivG,EAAa5uG,UAAYuC,MAAMvC,UAC/B+9B,EAAK4vE,EAAciB,GASnBC,EAAS7uG,UAAY,CAKpB7J,OAAO,EASPorB,KAAM,SAAS/mB,GACd,OAAOjC,KAAKiC,IAAU,MAEvBnF,SAAS,SAAS2sB,EAAOqxF,GACxB,IAAI,IAAIhM,EAAM,GAAIl0G,EAAI,EAAEA,EAAEoF,KAAKpC,OAAOhD,IACrCugH,GAAkBn7G,KAAKpF,GAAGk0G,EAAIrlF,EAAOqxF,GAEtC,OAAOhM,EAAIjqG,KAAK,KAOjBqT,OAAQ,SAAU4Q,GACjB,OAAOpoB,MAAM+G,UAAUyQ,OAAOtH,KAAK5Q,KAAM8oB,IAO1C7f,QAAS,SAAU+f,GAClB,OAAOtoB,MAAM+G,UAAUwB,QAAQ2H,KAAK5Q,KAAMgpB,KAmB5CutF,EAAa9uG,UAAUuhB,KAAO,SAASpuB,GAEtC,OADA+7G,EAAgB32G,MACTA,KAAKpF,IAGb8N,EAAS6tG,EAAaD,GA0DtBW,EAAaxvG,UAAY,CACxB7J,OAAO,EACPorB,KAAKstF,EAAS7uG,UAAUuhB,KACxBkzF,aAAc,SAAShzG,GAKtB,IAAItO,EAAIoF,KAAKpC,OACb,MAAMhD,IAAI,CACT,IAAI41B,EAAOxwB,KAAKpF,GAEhB,GAAG41B,EAAKhjB,UAAYtE,EACnB,OAAOsnB,IAIV2rF,aAAc,SAAS3rF,GACtB,IAAI7d,EAAK6d,EAAK8mF,aACd,GAAG3kG,GAAMA,GAAI3S,KAAKi8G,cACjB,MAAM,IAAI5F,EAAaP,GAExB,IAAIuB,EAAUr3G,KAAKk8G,aAAa1rF,EAAKhjB,UAErC,OADA2pG,EAAcn3G,KAAKi8G,cAAcj8G,KAAKwwB,EAAK6mF,GACpCA,GAGR+E,eAAgB,SAAS5rF,GACxB,IAA4B6mF,EAAxB1kG,EAAK6d,EAAK8mF,aACd,GAAG3kG,GAAMA,GAAI3S,KAAKi8G,cACjB,MAAM,IAAI5F,EAAaP,GAIxB,OAFAuB,EAAUr3G,KAAKq8G,eAAe7rF,EAAKN,aAAaM,EAAKL,WACrDgnF,EAAcn3G,KAAKi8G,cAAcj8G,KAAKwwB,EAAK6mF,GACpCA,GAIRiF,gBAAiB,SAASpzG,GACzB,IAAIsnB,EAAOxwB,KAAKk8G,aAAahzG,GAE7B,OADAuuG,EAAiBz3G,KAAKi8G,cAAcj8G,KAAKwwB,GAClCA,GAMR+rF,kBAAkB,SAASrsF,EAAaC,GACvC,IAAIK,EAAOxwB,KAAKq8G,eAAensF,EAAaC,GAE5C,OADAsnF,EAAiBz3G,KAAKi8G,cAAcj8G,KAAKwwB,GAClCA,GAER6rF,eAAgB,SAASnsF,EAAcC,GACtC,IAAIv1B,EAAIoF,KAAKpC,OACb,MAAMhD,IAAI,CACT,IAAI+qB,EAAO3lB,KAAKpF,GAChB,GAAG+qB,EAAKwK,WAAaA,GAAaxK,EAAKuK,cAAgBA,EACtD,OAAOvK,EAGT,OAAO,OAsBThmB,EAAkB8H,UAAY,CAgB7B+0G,WAAY,SAASC,EAASriH,GAC5B,OAAO,GAwBT21B,eAAgB,SAASG,EAAeorF,EAAe9oF,GACtD,IAAInD,EAAM,IAAIyoF,EAOd,GANAzoF,EAAIgD,eAAiBryB,KACrBqvB,EAAIjN,WAAa,IAAIk0F,EACrBjnF,EAAImD,QAAUA,GAAW,KACrBA,GACHnD,EAAID,YAAYoD,GAEb8oF,EAAc,CACjB,IAAI9X,EAAOn0E,EAAIgB,gBAAgBH,EAAcorF,GAC7CjsF,EAAID,YAAYo0E,GAEjB,OAAOn0E,GAuBRiD,mBAAoB,SAASgpF,EAAenpF,EAAUtD,GACrD,IAAIlJ,EAAO,IAAI20F,GAMf,OALA30F,EAAKnoB,KAAO89G,EACZ31F,EAAKnY,SAAW8tG,EAChB31F,EAAKwM,SAAWA,GAAY,GAC5BxM,EAAKkJ,SAAWA,GAAY,GAErBlJ,IAYT+xF,EAAKjwG,UAAY,CAChB+5F,WAAa,KACbgX,UAAY,KACZD,gBAAkB,KAClBV,YAAc,KACdn5G,WAAa,KACboyB,WAAa,KACb1O,WAAa,KACb00F,cAAgB,KAChB9vF,UAAY,KACZkJ,aAAe,KACfc,OAAS,KACTb,UAAY,KAEZusF,aAAa,SAASxE,EAAUyE,GAC/B,OAAO/C,GAAc55G,KAAKk4G,EAASyE,IAEpCC,aAAa,SAAS1E,EAAU2E,GAC/BjD,GAAc55G,KAAMk4G,EAAS2E,EAAUnD,IACpCmD,GACF78G,KAAKyhG,YAAYob,IAGnBpb,YAAY,SAASob,GACpB,OAAOxE,EAAar4G,KAAK68G,IAE1BztF,YAAY,SAAS8oF,GACpB,OAAOl4G,KAAK08G,aAAaxE,EAAS,OAEnC4E,cAAc,WACb,OAA0B,MAAnB98G,KAAKwhG,YAEbua,UAAU,SAASF,GAClB,OAAOE,GAAU/7G,KAAK82G,eAAe92G,KAAKA,KAAK67G,IAGhDjsF,UAAU,WACT,IAAIwoF,EAAQp4G,KAAKwhG,WACjB,MAAM4W,EAAM,CACX,IAAI9E,EAAO8E,EAAMP,YACdvE,GAAQA,EAAKoF,UAAYhE,GAAa0D,EAAMM,UAAYhE,GAC1D10G,KAAKyhG,YAAY6R,GACjB8E,EAAM2E,WAAWzJ,EAAKz5G,QAEtBu+G,EAAMxoF,YACNwoF,EAAQ9E,KAKX0J,YAAY,SAASP,EAASriH,GAC7B,OAAO4F,KAAK82G,cAAczkF,eAAemqF,WAAWC,EAAQriH,IAG1D6iH,cAAc,WACb,OAAOj9G,KAAKtB,WAAWd,OAAO,GAgB/Bo9G,aAAa,SAAS9qF,GACrB,IAAIvd,EAAK3S,KACT,MAAM2S,EAAG,CACR,IAAI3T,EAAM2T,EAAGolG,OAEb,GAAG/4G,EACF,IAAI,IAAIqH,KAAKrH,EACd,GAAIgI,OAAOS,UAAUgC,eAAemH,KAAK5R,EAAKqH,IAAMrH,EAAIqH,KAAO6pB,EAC9D,OAAO7pB,EAIRsM,EAAKA,EAAG+lG,UAAYjE,EAAe9hG,EAAGmkG,cAAgBnkG,EAAGme,WAE1D,OAAO,MAGRosF,mBAAmB,SAASlsF,GAC3B,IAAIre,EAAK3S,KACT,MAAM2S,EAAG,CACR,IAAI3T,EAAM2T,EAAGolG,OAEb,GAAG/4G,GACCgI,OAAOS,UAAUgC,eAAemH,KAAK5R,EAAKgyB,GAC5C,OAAOhyB,EAAIgyB,GAGbre,EAAKA,EAAG+lG,UAAYjE,EAAe9hG,EAAGmkG,cAAgBnkG,EAAGme,WAE1D,OAAO,MAGRqsF,mBAAmB,SAASjtF,GAC3B,IAAIc,EAAShxB,KAAKg7G,aAAa9qF,GAC/B,OAAiB,MAAVc,IAcZwU,EAAK+uE,EAASmD,GACdlyE,EAAK+uE,EAASmD,EAAKjwG,WAybnBqwG,EAASrwG,UAAY,CAEpB+F,SAAY,YACZkrG,SAAY1D,EAOZxiF,QAAW,KACXjlB,gBAAmB,KACnBspG,KAAO,EAEP6F,aAAgB,SAASxE,EAAUyE,GAClC,GAAGzE,EAASQ,UAAYxD,EAAuB,CAC9C,IAAIkD,EAAQF,EAAS1W,WACrB,MAAM4W,EAAM,CACX,IAAI9E,EAAO8E,EAAMP,YACjB73G,KAAK08G,aAAatE,EAAMuE,GACxBvE,EAAQ9E,EAET,OAAO4E,EAQR,OANA0B,GAAc55G,KAAMk4G,EAAUyE,GAC9BzE,EAASpB,cAAgB92G,KACI,OAAzBA,KAAKuN,iBAA4B2qG,EAASQ,WAAalE,IAC1Dx0G,KAAKuN,gBAAkB2qG,GAGjBA,GAERzW,YAAe,SAASob,GAIvB,OAHG78G,KAAKuN,iBAAmBsvG,IAC1B78G,KAAKuN,gBAAkB,MAEjB8qG,EAAar4G,KAAK68G,IAE1BD,aAAc,SAAU1E,EAAU2E,GAEjCjD,GAAc55G,KAAMk4G,EAAU2E,EAAUnD,IACxCxB,EAASpB,cAAgB92G,KACrB68G,GACH78G,KAAKyhG,YAAYob,GAEdjE,EAAcV,KACjBl4G,KAAKuN,gBAAkB2qG,IAIzB0D,WAAa,SAASwB,EAAavB,GAClC,OAAOD,GAAW57G,KAAKo9G,EAAavB,IAGrCwB,eAAiB,SAASxiG,GACzB,IAAIyiG,EAAM,KASV,OARA1F,EAAW53G,KAAKuN,iBAAgB,SAASoY,GACxC,GAAGA,EAAK+yF,UAAYlE,GAChB7uF,EAAK43F,aAAa,OAAS1iG,EAE7B,OADAyiG,EAAM33F,GACC,KAIH23F,GAoBRE,uBAAwB,SAASC,GAChC,IAAIC,EAAgBzJ,EAAawJ,GACjC,OAAO,IAAIlH,EAAav2G,MAAM,SAAS4hB,GACtC,IAAIm1F,EAAK,GAoBT,OAnBI2G,EAAc9/G,OAAS,GAC1Bg6G,EAAWh2F,EAAKrU,iBAAiB,SAASoY,GACzC,GAAGA,IAAS/D,GAAQ+D,EAAK+yF,WAAalE,EAAc,CACnD,IAAImJ,EAAiBh4F,EAAK43F,aAAa,SAEvC,GAAII,EAAgB,CAEnB,IAAIC,EAAUH,IAAeE,EAC7B,IAAKC,EAAS,CACb,IAAIC,EAAoB5J,EAAa0J,GACrCC,EAAUF,EAAcv+G,MAAM+0G,EAAc2J,IAE1CD,GACF7G,EAAG97G,KAAK0qB,QAMNoxF,MAKTzc,cAAgB,SAASj4E,GACxB,IAAIsD,EAAO,IAAIqrB,GACfrrB,EAAKmxF,cAAgB92G,KACrB2lB,EAAKnY,SAAW6U,EAChBsD,EAAKtD,QAAUA,EACfsD,EAAKwK,UAAY9N,EACjBsD,EAAKvD,WAAa,IAAIk0F,EACtB,IAAIh2G,EAAQqlB,EAAKjnB,WAAa,IAAIu4G,EAElC,OADA32G,EAAM27G,cAAgBt2F,EACfA,GAERm4F,uBAAyB,WACxB,IAAIn4F,EAAO,IAAI+0F,GAGf,OAFA/0F,EAAKmxF,cAAgB92G,KACrB2lB,EAAKvD,WAAa,IAAIk0F,EACf3wF,GAER+L,eAAiB,SAAS73B,GACzB,IAAI8rB,EAAO,IAAIw0F,GAGf,OAFAx0F,EAAKmxF,cAAgB92G,KACrB2lB,EAAKo3F,WAAWljH,GACT8rB,GAERoM,cAAgB,SAASl4B,GACxB,IAAI8rB,EAAO,IAAIy0F,GAGf,OAFAz0F,EAAKmxF,cAAgB92G,KACrB2lB,EAAKo3F,WAAWljH,GACT8rB,GAER8L,mBAAqB,SAAS53B,GAC7B,IAAI8rB,EAAO,IAAI00F,GAGf,OAFA10F,EAAKmxF,cAAgB92G,KACrB2lB,EAAKo3F,WAAWljH,GACT8rB,GAERyL,4BAA8B,SAAS/H,EAAOxvB,GAC7C,IAAI8rB,EAAO,IAAIg1F,GAIf,OAHAh1F,EAAKmxF,cAAgB92G,KACrB2lB,EAAKtD,QAAUsD,EAAKnY,SAAWmY,EAAK0D,OAASA,EAC7C1D,EAAKqB,UAAYrB,EAAK9rB,KAAOA,EACtB8rB,GAERo4F,gBAAkB,SAASvgH,GAC1B,IAAImoB,EAAO,IAAIs0F,GAMf,OALAt0F,EAAKmxF,cAAgB92G,KACrB2lB,EAAKnoB,KAAOA,EACZmoB,EAAKnY,SAAWhQ,EAChBmoB,EAAKwK,UAAY3yB,EACjBmoB,EAAKq4F,WAAY,EACVr4F,GAERs4F,sBAAwB,SAASzgH,GAChC,IAAImoB,EAAO,IAAI80F,GAGf,OAFA90F,EAAKmxF,cAAgB92G,KACrB2lB,EAAKnY,SAAWhQ,EACTmoB,GAGR0K,gBAAkB,SAASH,EAAaorF,GACvC,IAAI31F,EAAO,IAAIqrB,GACXktE,EAAK5C,EAAcl+G,MAAM,KACzBkD,EAAQqlB,EAAKjnB,WAAa,IAAIu4G,EAclC,OAbAtxF,EAAKvD,WAAa,IAAIk0F,EACtB3wF,EAAKmxF,cAAgB92G,KACrB2lB,EAAKnY,SAAW8tG,EAChB31F,EAAKtD,QAAUi5F,EACf31F,EAAKuK,aAAeA,EACJ,GAAbguF,EAAGtgH,QACL+nB,EAAKqL,OAASktF,EAAG,GACjBv4F,EAAKwK,UAAY+tF,EAAG,IAGpBv4F,EAAKwK,UAAYmrF,EAElBh7G,EAAM27G,cAAgBt2F,EACfA,GAGR+K,kBAAoB,SAASR,EAAaorF,GACzC,IAAI31F,EAAO,IAAIs0F,GACXiE,EAAK5C,EAAcl+G,MAAM,KAa7B,OAZAuoB,EAAKmxF,cAAgB92G,KACrB2lB,EAAKnY,SAAW8tG,EAChB31F,EAAKnoB,KAAO89G,EACZ31F,EAAKuK,aAAeA,EACpBvK,EAAKq4F,WAAY,EACD,GAAbE,EAAGtgH,QACL+nB,EAAKqL,OAASktF,EAAG,GACjBv4F,EAAKwK,UAAY+tF,EAAG,IAGpBv4F,EAAKwK,UAAYmrF,EAEX31F,IAGTjd,EAASovG,EAASJ,GAMlB1mE,GAAQvpC,UAAY,CACnBixG,SAAWlE,EACX2J,aAAe,SAAS3gH,GACvB,OAAoC,MAA7BwC,KAAKo+G,iBAAiB5gH,IAE9B+/G,aAAe,SAAS//G,GACvB,IAAIgzB,EAAOxwB,KAAKo+G,iBAAiB5gH,GACjC,OAAOgzB,GAAQA,EAAKppB,OAAS,IAE9Bg3G,iBAAmB,SAAS5gH,GAC3B,OAAOwC,KAAKtB,WAAWw9G,aAAa1+G,IAErC6gH,aAAe,SAAS7gH,EAAM4J,GAC7B,IAAIopB,EAAOxwB,KAAK82G,cAAciH,gBAAgBvgH,GAC9CgzB,EAAKppB,MAAQopB,EAAKxJ,UAAY,GAAK5f,EACnCpH,KAAK4wB,iBAAiBJ,IAEvB8tF,gBAAkB,SAAS9gH,GAC1B,IAAIgzB,EAAOxwB,KAAKo+G,iBAAiB5gH,GACjCgzB,GAAQxwB,KAAKu+G,oBAAoB/tF,IAIlCpB,YAAY,SAAS8oF,GACpB,OAAGA,EAASQ,WAAaxD,EACjBl1G,KAAK08G,aAAaxE,EAAS,MAE3B8B,GAAmBh6G,KAAKk4G,IAGjCtnF,iBAAmB,SAASwmF,GAC3B,OAAOp3G,KAAKtB,WAAWy9G,aAAa/E,IAErCoH,mBAAqB,SAASpH,GAC7B,OAAOp3G,KAAKtB,WAAW09G,eAAehF,IAEvCmH,oBAAsB,SAASlH,GAE9B,OAAOr3G,KAAKtB,WAAW49G,gBAAgBjF,EAAQ7pG,WAGhDixG,kBAAoB,SAASvuF,EAAcC,GAC1C,IAAIuuF,EAAM1+G,KAAK2+G,mBAAmBzuF,EAAcC,GAChDuuF,GAAO1+G,KAAKu+G,oBAAoBG,IAGjCE,eAAiB,SAAS1uF,EAAcC,GACvC,OAAyD,MAAlDnwB,KAAK2+G,mBAAmBzuF,EAAcC,IAE9C0uF,eAAiB,SAAS3uF,EAAcC,GACvC,IAAIK,EAAOxwB,KAAK2+G,mBAAmBzuF,EAAcC,GACjD,OAAOK,GAAQA,EAAKppB,OAAS,IAE9B03G,eAAiB,SAAS5uF,EAAcorF,EAAel0G,GACtD,IAAIopB,EAAOxwB,KAAK82G,cAAcpmF,kBAAkBR,EAAcorF,GAC9D9qF,EAAKppB,MAAQopB,EAAKxJ,UAAY,GAAK5f,EACnCpH,KAAK4wB,iBAAiBJ,IAEvBmuF,mBAAqB,SAASzuF,EAAcC,GAC3C,OAAOnwB,KAAKtB,WAAW29G,eAAensF,EAAcC,IAGrD3H,qBAAuB,SAASnG,GAC/B,OAAO,IAAIk0F,EAAav2G,MAAK,SAAS4hB,GACrC,IAAIm1F,EAAK,GAMT,OALAa,EAAWh2F,GAAK,SAAS+D,GACrBA,IAAS/D,GAAQ+D,EAAK+yF,UAAYlE,GAA6B,MAAZnyF,GAAmBsD,EAAKtD,SAAWA,GACxF00F,EAAG97G,KAAK0qB,MAGHoxF,MAGTgI,uBAAyB,SAAS7uF,EAAcC,GAC/C,OAAO,IAAIomF,EAAav2G,MAAK,SAAS4hB,GACrC,IAAIm1F,EAAK,GAMT,OALAa,EAAWh2F,GAAK,SAAS+D,GACrBA,IAAS/D,GAAQ+D,EAAK+yF,WAAalE,GAAkC,MAAjBtkF,GAAwBvK,EAAKuK,eAAiBA,GAAgC,MAAdC,GAAqBxK,EAAKwK,WAAaA,GAC7J4mF,EAAG97G,KAAK0qB,MAGHoxF,OAKVe,EAASrwG,UAAU+gB,qBAAuBwoB,GAAQvpC,UAAU+gB,qBAC5DsvF,EAASrwG,UAAUs3G,uBAAyB/tE,GAAQvpC,UAAUs3G,uBAG9Dr2G,EAASsoC,GAAQ0mE,GAGjBuC,GAAKxyG,UAAUixG,SAAWjE,EAC1B/rG,EAASuxG,GAAKvC,GAKdwC,GAAczyG,UAAY,CACzB5N,KAAO,GACPmlH,cAAgB,SAAS/4G,EAAQga,GAChC,OAAOjgB,KAAKnG,KAAKiE,UAAUmI,EAAQA,EAAOga,IAE3C88F,WAAY,SAAS/gH,GACpBA,EAAOgE,KAAKnG,KAAKmC,EACjBgE,KAAKgnB,UAAYhnB,KAAKnG,KAAOmC,EAC7BgE,KAAKpC,OAAS5B,EAAK4B,QAEpBqhH,WAAY,SAASh5G,EAAOjK,GAC3BgE,KAAKk/G,YAAYj5G,EAAO,EAAEjK,IAG3BozB,YAAY,SAAS8oF,GACpB,MAAM,IAAIluG,MAAMqrG,EAAiBC,KAElC6J,WAAY,SAASl5G,EAAQga,GAC5BjgB,KAAKk/G,YAAYj5G,EAAOga,EAAM,KAE/Bi/F,YAAa,SAASj5G,EAAQga,EAAOjkB,GACpC,IAAI8V,EAAQ9R,KAAKnG,KAAKiE,UAAU,EAAEmI,GAC9B8L,EAAM/R,KAAKnG,KAAKiE,UAAUmI,EAAOga,GACrCjkB,EAAO8V,EAAQ9V,EAAO+V,EACtB/R,KAAKgnB,UAAYhnB,KAAKnG,KAAOmC,EAC7BgE,KAAKpC,OAAS5B,EAAK4B,SAGrB8K,EAASwxG,GAAcxC,GAGvByC,GAAK1yG,UAAY,CAChB+F,SAAW,QACXkrG,SAAWhE,EACX0K,UAAY,SAASn5G,GACpB,IAAIjK,EAAOgE,KAAKnG,KACZwlH,EAAUrjH,EAAK8B,UAAUmI,GAC7BjK,EAAOA,EAAK8B,UAAU,EAAGmI,GACzBjG,KAAKnG,KAAOmG,KAAKgnB,UAAYhrB,EAC7BgE,KAAKpC,OAAS5B,EAAK4B,OACnB,IAAI0hH,EAAUt/G,KAAK82G,cAAcplF,eAAe2tF,GAIhD,OAHGr/G,KAAK8wB,YACP9wB,KAAK8wB,WAAW4rF,aAAa4C,EAASt/G,KAAK63G,aAErCyH,IAGT52G,EAASyxG,GAAKD,IAGdE,GAAQ3yG,UAAY,CACnB+F,SAAW,WACXkrG,SAAW3D,GAEZrsG,EAAS0xG,GAAQF,IAIjBG,GAAa5yG,UAAY,CACxB+F,SAAW,iBACXkrG,SAAW/D,GAEZjsG,EAAS2xG,GAAaH,IAKtBI,GAAa7yG,UAAUixG,SAAWzD,EAClCvsG,EAAS4xG,GAAa5C,GAItB6C,GAAS9yG,UAAUixG,SAAWvD,EAC9BzsG,EAAS6xG,GAAS7C,GAIlB8C,GAAO/yG,UAAUixG,SAAW7D,EAC5BnsG,EAAS8xG,GAAO9C,GAIhB+C,GAAgBhzG,UAAUixG,SAAW9D,EACrClsG,EAAS+xG,GAAgB/C,GAIzBgD,GAAiBjzG,UAAU+F,SAAW,qBACtCktG,GAAiBjzG,UAAUixG,SAAWxD,EACtCxsG,EAASgyG,GAAiBhD,GAK1BiD,GAAsBlzG,UAAUixG,SAAW5D,EAC3CpsG,EAASiyG,GAAsBjD,GAE/B93G,GAAc6H,UAAU0zG,kBAAoB,SAASx1F,EAAKk1F,EAAOC,GAChE,OAAOF,GAAsBhqG,KAAK+U,EAAKk1F,EAAOC,IAE/CpD,EAAKjwG,UAAU3K,SAAW89G,GAmV1B,IACC,GAAG5zG,OAAOC,eAAe,CAiCxB,SAASs4G,GAAe55F,GACvB,OAAOA,EAAK+yF,UACZ,KAAKlE,EACL,KAAKU,EACJ,IAAIpG,EAAM,GACVnpF,EAAOA,EAAK67E,WACZ,MAAM77E,EACc,IAAhBA,EAAK+yF,UAAiC,IAAjB/yF,EAAK+yF,UAC5B5J,EAAI7zG,KAAKskH,GAAe55F,IAEzBA,EAAOA,EAAKkyF,YAEb,OAAO/I,EAAIjqG,KAAK,IACjB,QACC,OAAO8gB,EAAKqB,WA9CdhgB,OAAOC,eAAesvG,EAAa9uG,UAAU,SAAS,CACrD2jB,IAAI,WAEH,OADAurF,EAAgB32G,MACTA,KAAKw/G,YAIdx4G,OAAOC,eAAeywG,EAAKjwG,UAAU,cAAc,CAClD2jB,IAAI,WACH,OAAOm0F,GAAev/G,OAGvBqrB,IAAI,SAASxxB,GACZ,OAAOmG,KAAK04G,UACZ,KAAKlE,EACL,KAAKU,EACJ,MAAMl1G,KAAKwhG,WACVxhG,KAAKyhG,YAAYzhG,KAAKwhG,aAEpB3nG,GAAQ+G,OAAO/G,KACjBmG,KAAKovB,YAAYpvB,KAAK82G,cAAcplF,eAAe73B,IAEpD,MAED,QACCmG,KAAKnG,KAAOA,EACZmG,KAAKoH,MAAQvN,EACbmG,KAAKgnB,UAAYntB,MAuBpBm9G,GAAU,SAAS9tF,EAAOhgB,EAAI9B,GAE7B8hB,EAAO,KAAKhgB,GAAO9B,IAGrB,MAAM4D,KAINvP,EAAQ6+G,aAAeA,GACvB7+G,EAAQ46G,aAAeA,EACvB56G,EAAQkE,kBAAoBA,EAC5BlE,EAAQu1C,QAAUA,GAClBv1C,EAAQi8G,KAAOA,EACfj8G,EAAQ66G,SAAWA,EACnB76G,EAAQmE,cAAgBA,I,mBCxyDzB,IAAI6/G,EAAa1pG,KAAK2pG,IAAI,EAAG,IAEzB/lH,EAAY,SAASgmH,GACvB,IACIv4G,EADAw4G,EAAK,IAAI7lH,SAAS4lH,EAAM3lH,OAAQ2lH,EAAM1lH,WAAY0lH,EAAMzlH,YAG5D,OAAI0lH,EAAGC,cACLz4G,EAAQw4G,EAAGC,aAAa,GAEpBz4G,EAAQvK,OAAOsX,iBACVtX,OAAOuK,GAGTA,GAGDw4G,EAAGllH,UAAU,GAAK+kH,EAAcG,EAAGllH,UAAU,IAGvDc,EAAOC,QAAU,CACf9B,UAAWA,EACX8lH,WAAYA,I,+BCrBd,IAAI5xG,EAAiBS,EAAQ,QAC7B,SAASwxG,EAAUtxG,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI6a,UAAU,sDAEtB9a,EAAS/G,UAAYT,OAAO0H,OAAOD,GAAcA,EAAWhH,UAAW,CACrEkH,YAAa,CACXvH,MAAOoH,EACPlH,UAAU,EACVC,cAAc,KAGlBP,OAAOC,eAAeuH,EAAU,YAAa,CAC3ClH,UAAU,IAERmH,GAAYZ,EAAeW,EAAUC,GAE3CjT,EAAOC,QAAUqkH,EAAWtkH,EAAOC,QAAQwS,YAAa,EAAMzS,EAAOC,QAAQ,WAAaD,EAAOC,S,sBCjBjG,gBAIIskH,EAJJ,2BACsB,qBAAXx8G,OAAyBA,OAAS,GACzCy8G,EAAS,EAAQ,GAIG,qBAAbxoB,SACPuoB,EAAQvoB,UAERuoB,EAAQE,EAAS,6BAEZF,IACDA,EAAQE,EAAS,6BAA+BD,IAIxDxkH,EAAOC,QAAUskH,I,yDChBjB,YAuJA,IAvJA,IAqJIG,EArJJ,+XAmCIC,EAAY,SAQZC,EAAS,GAcTC,EAAQ,SAAexiH,EAAMywB,GAO/B,OANA8xF,EAAOviH,GAAQuiH,EAAOviH,IAAS,GAE3BywB,IACF8xF,EAAOviH,GAAQuiH,EAAOviH,GAAM8T,OAAO2c,IAG9B8xF,EAAOviH,IAaZyiH,EAAO,SAAcziH,EAAMywB,GAC7B+xF,EAAMxiH,EAAMywB,IAgBViyF,EAAa,SAAoB1iH,EAAMywB,GACzC,IAAIrsB,EAAQo+G,EAAMxiH,GAAMoL,QAAQqlB,GAEhC,QAAIrsB,IAAU,KAIdm+G,EAAOviH,GAAQuiH,EAAOviH,GAAMd,QAC5BqjH,EAAOviH,GAAMgoG,OAAO5jG,EAAO,IACpB,IAaLu+G,EAAW,SAAkB3iH,EAAMywB,GACrC+xF,EAAMxiH,EAAM,GAAG8T,OAAO2c,GAAItvB,KAAI,SAAUyhH,GACtC,IAAIC,EAAU,SAASA,IAErB,OADAH,EAAW1iH,EAAM6iH,GACVD,EAASzlG,WAAM,EAAQ3J,YAGhC,OAAOqvG,OAiBPC,EAAgB,CAClBC,UAAU,GAGRC,EAAS,CAAC,CAAC,oBAAqB,iBAAkB,oBAAqB,oBAAqB,mBAAoB,kBAAmB,cACvI,CAAC,0BAA2B,uBAAwB,0BAA2B,0BAA2B,yBAA0B,wBAAyB,uBAC7J,CAAC,uBAAwB,sBAAuB,uBAAwB,uBAAwB,sBAAuB,qBAAsB,oBAC7I,CAAC,sBAAuB,mBAAoB,sBAAuB,sBAAuB,qBAAsB,oBAAqB,mBACjIC,EAAUD,EAAO,GAGZjmH,EAAI,EAAGA,EAAIimH,EAAOjjH,OAAQhD,IAEjC,GAAIimH,EAAOjmH,GAAG,KAAM,IAAU,CAC5BslH,EAAaW,EAAOjmH,GACpB,MAKJ,GAAIslH,EAAY,CACd,IAAK,IAAIja,EAAK,EAAGA,EAAKia,EAAWtiH,OAAQqoG,IACvC0a,EAAcG,EAAQ7a,IAAOia,EAAWja,GAG1C0a,EAAcC,SAAWV,EAAW,KAAOY,EAAQ,GAQrD,IAAIC,EAAU,GAYVC,EAAmB,SAA0BxjH,EAAMqF,GACrD,OAAO,SAAUhF,EAAMojH,EAAOluF,GAC5B,IAAImuF,EAAMr+G,EAAIs+G,OAAOF,GACjBG,EAAY,IAAIta,OAAO,KAAOoa,EAAM,MAUxC,GARa,QAATrjH,GAEFk1B,EAAK3Y,QAAQvc,EAAK6P,cAAgB,KAIpCqlB,EAAK3Y,QAAQ5c,EAAO,KAEhBujH,EAAS,CACXA,EAAQ9lH,KAAK,GAAG0W,OAAOohB,IAEvB,IAAI8yE,EAASkb,EAAQnjH,OAAS,IAC9BmjH,EAAQlb,OAAO,EAAGA,EAAS,EAAIA,EAAS,GAK1C,GAAK,IAASjjG,QAAd,CAOA,IAAI0rB,EAAK,IAAS1rB,QAAQ/E,GAErBywB,GAAe,UAATzwB,IAGTywB,EAAK,IAAS1rB,QAAQy+G,MAAQ,IAASz+G,QAAQC,KAK5CyrB,GAAO4yF,GAAQE,EAAUviH,KAAKhB,IAInCywB,EAAG5tB,MAAMyI,QAAQ4pB,GAAQ,QAAU,QAAQ,IAASnwB,QAASmwB,MAIjE,SAASuuF,EAAe9jH,GAEtB,IAEI+jH,EAFAN,EAAQ,OAyBRp+G,EAAM,WACR,IAAK,IAAIuO,EAAOC,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAM0Q,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/EwhB,EAAKxhB,GAAQF,UAAUE,GAGzBgwG,EAAU,MAAON,EAAOluF,IA0L1B,OAtLAwuF,EAAYP,EAAiBxjH,EAAMqF,GAenCA,EAAI2+G,aAAe,SAAUC,GAC3B,OAAOH,EAAe9jH,EAAO,KAAOikH,IAuBtC5+G,EAAIs+G,OAAS,CACXO,IAAK,uBACL9b,IAAK,GACL+b,MAAO,uBACPN,KAAM,iBACNn0F,KAAM,aACN2C,MAAO,QACP5L,QAASg9F,GAeXp+G,EAAIo+G,MAAQ,SAAUC,GACpB,GAAmB,kBAARA,EAAkB,CAC3B,IAAKr+G,EAAIs+G,OAAO13G,eAAey3G,GAC7B,MAAM,IAAIl3G,MAAM,IAAOk3G,EAAM,8BAG/BD,EAAQC,EAGV,OAAOD,GAaTp+G,EAAIk+G,QAAU,WACZ,OAAOA,EAAU,GAAGpvG,OAAOovG,GAAW,IAaxCl+G,EAAIk+G,QAAQ7oG,OAAS,SAAU0pG,GAC7B,OAAQb,GAAW,IAAI7oG,QAAO,SAAU2pG,GAEtC,OAAO,IAAI/a,OAAO,KAAO8a,EAAQ,MAAM/iH,KAAKgjH,EAAY,QAS5Dh/G,EAAIk+G,QAAQe,MAAQ,WACdf,IACFA,EAAQnjH,OAAS,IAQrBiF,EAAIk+G,QAAQgB,QAAU,WACJ,OAAZhB,IACFA,EAAQnjH,OAAS,EACjBmjH,EAAU,OAQdl+G,EAAIk+G,QAAQiB,OAAS,WACH,OAAZjB,IACFA,EAAU,KAWdl+G,EAAIgtB,MAAQ,WACV,IAAK,IAAIoyF,EAAQ5wG,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAMuhH,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFnvF,EAAKmvF,GAAS7wG,UAAU6wG,GAG1B,OAAOX,EAAU,QAASN,EAAOluF,IAUnClwB,EAAIqqB,KAAO,WACT,IAAK,IAAIi1F,EAAQ9wG,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAMyhH,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFrvF,EAAKqvF,GAAS/wG,UAAU+wG,GAG1B,OAAOb,EAAU,OAAQN,EAAOluF,IAWlClwB,EAAI8+G,MAAQ,WACV,IAAK,IAAIU,EAAQhxG,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAM2hH,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFvvF,EAAKuvF,GAASjxG,UAAUixG,GAG1B,OAAOf,EAAU,QAASN,EAAOluF,IAG5BlwB,EAOT,IAAI0/G,EAAQjB,EAAe,WACvBE,EAAee,EAAMf,aAgCrB1kH,GAAWkK,OAAOS,UAAU3K,SAc5B4U,GAAO,SAAcwX,GACvB,OAAOhY,GAASgY,GAAUliB,OAAO0K,KAAKwX,GAAU,IAalD,SAASs5F,GAAKt5F,EAAQoF,GACpB5c,GAAKwX,GAAQ7rB,SAAQ,SAAU6L,GAC7B,OAAOolB,EAAGpF,EAAOhgB,GAAMA,MAqB3B,SAASsI,GAAO0X,EAAQoF,EAAIm0F,GAK1B,YAJgB,IAAZA,IACFA,EAAU,GAGL/wG,GAAKwX,GAAQ1X,QAAO,SAAUkxG,EAAOx5G,GAC1C,OAAOolB,EAAGo0F,EAAOx5F,EAAOhgB,GAAMA,KAC7Bu5G,GAUL,SAASr5F,GAAOC,GACd,IAAK,IAAIjY,EAAOC,UAAUzT,OAAQ+kH,EAAU,IAAIjiH,MAAM0Q,EAAO,EAAIA,EAAO,EAAI,GAAIG,EAAO,EAAGA,EAAOH,EAAMG,IACrGoxG,EAAQpxG,EAAO,GAAKF,UAAUE,GAGhC,OAAIvK,OAAOoiB,OACF,IAASpO,WAAM,EAAQ,CAACqO,GAAQ1X,OAAOgxG,KAGhDA,EAAQtlH,SAAQ,SAAUoU,GACnBA,GAIL+wG,GAAK/wG,GAAQ,SAAUrK,EAAO8B,GAC5BmgB,EAAOngB,GAAO9B,QAGXiiB,GAaT,SAASnY,GAAS9J,GAChB,QAASA,GAA0B,kBAAVA,EAU3B,SAASw7G,GAAQx7G,GACf,OAAO8J,GAAS9J,IAAmC,oBAAzBtK,GAAS8T,KAAKxJ,IAAgCA,EAAMuH,cAAgB3H,OAwBhG,SAAS67G,GAAclwG,EAAI+6D,GACzB,IAAK/6D,IAAO+6D,EACV,MAAO,GAGT,GAAyC,oBAA9B,IAASo1C,iBAAiC,CACnD,IAAIC,EAEJ,IACEA,EAAqB,IAASD,iBAAiBnwG,GAC/C,MAAO3H,GACP,MAAO,GAGT,OAAO+3G,EAAqBA,EAAmBC,iBAAiBt1C,IAASq1C,EAAmBr1C,GAAQ,GAGtG,MAAO,GAOT,IAAIu1C,GAAa,IAASC,WAAa,IAASA,UAAUC,WAAa,GACnEC,GAAmB,yBAAyB1lH,KAAKulH,IACjDI,GAAqBD,GAAmB3gG,WAAW2gG,GAAiBvnB,OAAS,KAS7EynB,GAAU,QAAQzkH,KAAKokH,IASvBM,GAAc,WAChB,IAAI9lH,EAAQwlH,GAAWxlH,MAAM,cAE7B,OAAIA,GAASA,EAAM,GACVA,EAAM,GAGR,KAPS,GAiBd+lH,GAAa,WAAW3kH,KAAKokH,IAS7BQ,GAAkB,WAGpB,IAAIhmH,EAAQwlH,GAAWxlH,MAAM,0CAE7B,IAAKA,EACH,OAAO,KAGT,IAAIimH,EAAQjmH,EAAM,IAAMglB,WAAWhlB,EAAM,IACrCkmH,EAAQlmH,EAAM,IAAMglB,WAAWhlB,EAAM,IAEzC,OAAIimH,GAASC,EACJlhG,WAAWhlB,EAAM,GAAK,IAAMA,EAAM,IAChCimH,GAIJ,KAlBa,GA4BlBE,GAAoBJ,IAAcC,GAAkB,GAAKJ,GAAqB,IAS9EQ,GAAa,WAAWhlH,KAAKokH,IAS7Ba,GAAU,OAAOjlH,KAAKokH,IAYtBc,IAAaD,KAAY,UAAUjlH,KAAKokH,KAAe,SAASpkH,KAAKokH,KASrEe,GAAiB,WACnB,IAAIvmH,EAAQwlH,GAAWxlH,MAAM,yBAE7B,OAAIA,GAASA,EAAM,GACVglB,WAAWhlB,EAAM,IAGnB,KAPY,GAiBjBwmH,GAAa,WACf,IAAI9pH,EAAS,kBAAkBuD,KAAKulH,IAChC7oH,EAAUD,GAAUsoB,WAAWtoB,EAAO,IAO1C,OALKC,GAAW,gBAAgByE,KAAKokH,KAAe,UAAUpkH,KAAKokH,MAEjE7oH,EAAU,IAGLA,EATQ,GAmBb8pH,GAAY,UAAUrlH,KAAKokH,MAAgBc,KAAcP,KAAeM,GASxEK,GAAa,WAAWtlH,KAAKokH,IAS7BmB,GAAgBtjH,QAAQujH,OAAa,iBAAkB,KAAY,IAASnB,UAAUoB,gBAAkB,IAASC,eAAiB,IAAS/sB,oBAAoB,IAAS+sB,gBASxKC,GAAU,QAAQ3lH,KAAKokH,KAAeiB,IAAaE,KAAkB,UAAUvlH,KAAKokH,IAYpFwB,GAAY,UAAU5lH,KAAKokH,MAAgBuB,GAS3CE,GAASD,IAAaD,IAAWlB,GASjCqB,IAAiBT,IAAaQ,MAAYX,GAE1Ca,GAAuB59G,OAAOiiB,OAAO,CACvCjb,UAAW,KACXs1G,QAASA,GACTC,YAAaA,GACbC,WAAYA,GACZC,gBAAiBA,GACjBG,kBAAmBA,GACnBC,WAAYA,GACZC,QAASA,GACTC,UAAWA,GACXC,eAAgBA,GAChBC,WAAYA,GACZC,UAAWA,GACXC,WAAYA,GACZC,cAAeA,GACfI,QAASA,GACTC,UAAWA,GACXC,OAAQA,GACRC,cAAeA,KAmBjB,SAASE,GAAiBhiG,GAMxB,MAAsB,kBAARA,GAAoB/hB,QAAQ+hB,EAAItlB,QAehD,SAASunH,GAAkBjiG,GAEzB,GAAIA,EAAI5Z,QAAQ,MAAQ,EACtB,MAAM,IAAIe,MAAM,2CAgBpB,SAAS+6G,GAAY3oB,GACnB,OAAO,IAAI0K,OAAO,UAAY1K,EAAY,WAU5C,SAASioB,KAEP,OAAO,MAAa,IAAS7sB,SAY/B,SAASwtB,GAAK59G,GACZ,OAAO8J,GAAS9J,IAA6B,IAAnBA,EAAMsxG,SAUlC,SAASuM,KAGP,IACE,OAAO,IAAS5L,SAAW,IAAS/1G,KACpC,MAAO4O,GACP,OAAO,GAcX,SAASgzG,GAAcx5G,GACrB,OAAO,SAAUy5G,EAAUC,GACzB,IAAKP,GAAiBM,GACpB,OAAO,IAASz5G,GAAQ,MAGtBm5G,GAAiBO,KACnBA,EAAU,IAASC,cAAcD,IAGnC,IAAIE,EAAMN,GAAKI,GAAWA,EAAU,IACpC,OAAOE,EAAI55G,IAAW45G,EAAI55G,GAAQy5G,IAuBtC,SAASI,GAASljG,EAASnJ,EAAYxa,EAAY8mH,QACjC,IAAZnjG,IACFA,EAAU,YAGO,IAAfnJ,IACFA,EAAa,SAGI,IAAfxa,IACFA,EAAa,IAGf,IAAIiU,EAAK,IAAS2nF,cAAcj4E,GAwBhC,OAvBArb,OAAOy+G,oBAAoBvsG,GAAY7b,SAAQ,SAAU6+F,GACvD,IAAI11E,EAAMtN,EAAWgjF,IAIc,IAA/BA,EAASjzF,QAAQ,UAAgC,SAAbizF,GAAoC,SAAbA,GAC7DqmB,EAAMr1F,KAAK,4KAAyLgvE,EAAW,OAAS11E,EAAM,KAC9N7T,EAAG0rG,aAAaniB,EAAU11E,IAEJ,gBAAb01E,EACT35E,GAAY5P,EAAI6T,GACP7T,EAAGupF,KAAc11E,GAAoB,aAAb01E,IACjCvpF,EAAGupF,GAAY11E,MAGnBxf,OAAOy+G,oBAAoB/mH,GAAYrB,SAAQ,SAAUy1G,GACvDngG,EAAG0rG,aAAavL,EAAUp0G,EAAWo0G,OAGnC0S,GACFE,GAAc/yG,EAAI6yG,GAGb7yG,EAeT,SAAS4P,GAAY5P,EAAI3W,GAOvB,MAN8B,qBAAnB2W,EAAG4P,YACZ5P,EAAGmqF,UAAY9gG,EAEf2W,EAAG4P,YAAcvmB,EAGZ2W,EAYT,SAASgzG,GAAUvN,EAAOiB,GACpBA,EAAO7X,WACT6X,EAAOqD,aAAatE,EAAOiB,EAAO7X,YAElC6X,EAAOjqF,YAAYgpF,GAmBvB,SAASwN,GAASzjG,EAAS0jG,GAGzB,OAFAf,GAAkBe,GAEd1jG,EAAQ2jG,UACH3jG,EAAQ2jG,UAAUC,SAASF,GAG7Bd,GAAYc,GAAchnH,KAAKsjB,EAAQi6E,WAehD,SAAS4pB,GAAS7jG,EAAS8jG,GAQzB,OAPI9jG,EAAQ2jG,UACV3jG,EAAQ2jG,UAAUI,IAAID,GAEZL,GAASzjG,EAAS8jG,KAC5B9jG,EAAQi6E,WAAaj6E,EAAQi6E,UAAY,IAAM6pB,GAAY1oH,QAGtD4kB,EAeT,SAASgkG,GAAYhkG,EAASikG,GAE5B,OAAKjkG,GAKDA,EAAQ2jG,UACV3jG,EAAQ2jG,UAAU9N,OAAOoO,IAEzBtB,GAAkBsB,GAClBjkG,EAAQi6E,UAAYj6E,EAAQi6E,UAAUh/F,MAAM,OAAO8a,QAAO,SAAUjZ,GAClE,OAAOA,IAAMmnH,KACZvhH,KAAK,MAGHsd,IAbLogG,EAAMr1F,KAAK,6DACJ,MA+CX,SAASm5F,GAAYlkG,EAASmkG,EAAex9F,GAI3C,IAAIqC,EAAMy6F,GAASzjG,EAASmkG,GAY5B,GAVyB,oBAAdx9F,IACTA,EAAYA,EAAU3G,EAASmkG,IAGR,mBAAdx9F,IACTA,GAAaqC,GAKXrC,IAAcqC,EAUlB,OANIrC,EACFk9F,GAAS7jG,EAASmkG,GAElBH,GAAYhkG,EAASmkG,GAGhBnkG,EAYT,SAASokG,GAAc5zG,EAAIjU,GACzBsI,OAAOy+G,oBAAoB/mH,GAAYrB,SAAQ,SAAUy1G,GACvD,IAAI0T,EAAY9nH,EAAWo0G,GAET,OAAd0T,GAA2C,qBAAdA,IAA2C,IAAdA,EAC5D7zG,EAAG2rG,gBAAgBxL,GAEnBngG,EAAG0rG,aAAavL,GAAwB,IAAd0T,EAAqB,GAAKA,MAkB1D,SAASC,GAAc5hG,GACrB,IAAIrb,EAAM,GAINk9G,EAAgB,kEAEpB,GAAI7hG,GAAOA,EAAInmB,YAAcmmB,EAAInmB,WAAWd,OAAS,EAGnD,IAFA,IAAI0C,EAAQukB,EAAInmB,WAEP9D,EAAI0F,EAAM1C,OAAS,EAAGhD,GAAK,EAAGA,IAAK,CAC1C,IAAIk4G,EAAWxyG,EAAM1F,GAAG4C,KACpBmpH,EAAUrmH,EAAM1F,GAAGwM,MAGM,mBAAlByd,EAAIiuF,KAA4E,IAAjD4T,EAAcz9G,QAAQ,IAAM6pG,EAAW,OAI/E6T,EAAsB,OAAZA,GAGZn9G,EAAIspG,GAAY6T,EAIpB,OAAOn9G,EAeT,SAAS+zG,GAAa5qG,EAAIi0G,GACxB,OAAOj0G,EAAG4qG,aAAaqJ,GAezB,SAASvI,GAAa1rG,EAAIi0G,EAAWx/G,GACnCuL,EAAG0rG,aAAauI,EAAWx/G,GAY7B,SAASk3G,GAAgB3rG,EAAIi0G,GAC3Bj0G,EAAG2rG,gBAAgBsI,GAMrB,SAASC,KACP,IAAS18G,KAAK28G,QAEd,IAASC,cAAgB,WACvB,OAAO,GAOX,SAASC,KACP,IAASD,cAAgB,WACvB,OAAO,GAuBX,SAASjoB,GAAsBnsF,GAC7B,GAAIA,GAAMA,EAAGmsF,uBAAyBnsF,EAAGme,WAAY,CACnD,IAAI6hD,EAAOhgE,EAAGmsF,wBACV3kG,EAAS,GAeb,MAdA,CAAC,SAAU,SAAU,OAAQ,QAAS,MAAO,SAASkD,SAAQ,SAAUwU,QACtDnH,IAAZioE,EAAK9gE,KACP1X,EAAO0X,GAAK8gE,EAAK9gE,OAIhB1X,EAAOgH,SACVhH,EAAOgH,OAASshB,WAAWogG,GAAclwG,EAAI,YAG1CxY,EAAO+G,QACV/G,EAAO+G,MAAQuhB,WAAWogG,GAAclwG,EAAI,WAGvCxY,GA6BX,SAAS8sH,GAAat0G,GACpB,IAAKA,GAAMA,IAAOA,EAAGu0G,aACnB,MAAO,CACLttB,KAAM,EACNhT,IAAK,EACL1lF,MAAO,EACPC,OAAQ,GAIZ,IAAID,EAAQyR,EAAG+rF,YACXv9F,EAASwR,EAAG8rF,aACZ7E,EAAO,EACPhT,EAAM,EAEV,MAAOj0E,EAAGu0G,cAAgBv0G,IAAO,IAASguG,EAAcwG,mBACtDvtB,GAAQjnF,EAAGy0G,WACXxgC,GAAOj0E,EAAGgsF,UACVhsF,EAAKA,EAAGu0G,aAGV,MAAO,CACLttB,KAAMA,EACNhT,IAAKA,EACL1lF,MAAOA,EACPC,OAAQA,GA+BZ,SAASkmH,GAAmB10G,EAAIu0F,GAC9B,IAAIogB,EAAa,CACfp1G,EAAG,EACHC,EAAG,GAGL,GAAIuyG,GAAQ,CACV,IAAI17F,EAAOrW,EAEX,MAAOqW,GAAwC,SAAhCA,EAAKxb,SAAS7P,cAA0B,CACrD,IAAI4pH,EAAY1E,GAAc75F,EAAM,aAEpC,GAAI,UAAUnqB,KAAK0oH,GAAY,CAC7B,IAAI31G,EAAS21G,EAAUxqH,MAAM,GAAI,GAAGK,MAAM,OAAO4B,IAAInC,QACrDyqH,EAAWp1G,GAAKN,EAAO,GACvB01G,EAAWn1G,GAAKP,EAAO,QAClB,GAAI,YAAY/S,KAAK0oH,GAAY,CACtC,IAAIrhG,EAAUqhG,EAAUxqH,MAAM,GAAI,GAAGK,MAAM,OAAO4B,IAAInC,QAEtDyqH,EAAWp1G,GAAKgU,EAAQ,IACxBohG,EAAWn1G,GAAK+T,EAAQ,IAG1B8C,EAAOA,EAAK8H,YAIhB,IAAIpC,EAAW,GACX84F,EAAYP,GAAa/f,EAAM79E,QAC/Bi1E,EAAM2oB,GAAat0G,GACnB80G,EAAOnpB,EAAIp9F,MACX07B,EAAO0hE,EAAIn9F,OACXumH,EAAUxgB,EAAMwgB,SAAWppB,EAAI1X,IAAM4gC,EAAU5gC,KAC/C+gC,EAAUzgB,EAAMygB,SAAWrpB,EAAI1E,KAAO4tB,EAAU5tB,MAcpD,OAZIsN,EAAM0gB,iBACRD,EAAUzgB,EAAM0gB,eAAe,GAAGC,MAAQvpB,EAAI1E,KAC9C8tB,EAAUxgB,EAAM0gB,eAAe,GAAGE,MAAQxpB,EAAI1X,IAE1C89B,KACFiD,GAAWL,EAAWp1G,EACtBw1G,GAAWJ,EAAWn1G,IAI1Buc,EAASvc,EAAI,EAAI4D,KAAKK,IAAI,EAAGL,KAAKM,IAAI,EAAGqxG,EAAU9qF,IACnDlO,EAASxc,EAAI6D,KAAKK,IAAI,EAAGL,KAAKM,IAAI,EAAGsxG,EAAUF,IACxC/4F,EAYT,SAASmqF,GAAWzxG,GAClB,OAAO8J,GAAS9J,IAA6B,IAAnBA,EAAMsxG,SAYlC,SAASqP,GAAQp1G,GACf,MAAOA,EAAG6uF,WACR7uF,EAAG8uF,YAAY9uF,EAAG6uF,YAGpB,OAAO7uF,EAmCT,SAASq1G,GAAiBxC,GASxB,MANuB,oBAAZA,IACTA,EAAUA,MAKJ9kH,MAAMyI,QAAQq8G,GAAWA,EAAU,CAACA,IAAUxmH,KAAI,SAAUoI,GAOlE,MAJqB,oBAAVA,IACTA,EAAQA,KAGN49G,GAAK59G,IAAUyxG,GAAWzxG,GACrBA,EAGY,kBAAVA,GAAsB,KAAKvI,KAAKuI,GAClC,IAASsqB,eAAetqB,QADjC,KAGC8Q,QAAO,SAAU9Q,GAClB,OAAOA,KAgBX,SAASs+G,GAAc/yG,EAAI6yG,GAIzB,OAHAwC,GAAiBxC,GAASnoH,SAAQ,SAAUsoB,GAC1C,OAAOhT,EAAGyc,YAAYzJ,MAEjBhT,EAgBT,SAASs1G,GAAct1G,EAAI6yG,GACzB,OAAOE,GAAcqC,GAAQp1G,GAAK6yG,GAYpC,SAAS0C,GAAkBhhB,GAIzB,YAAqBx8F,IAAjBw8F,EAAMihB,aAA0Cz9G,IAAlBw8F,EAAMkhB,UAcnB,IAAjBlhB,EAAMihB,aAAkCz9G,IAAlBw8F,EAAMkhB,UAQb,YAAflhB,EAAMrpG,MAAuC,IAAjBqpG,EAAMihB,QAAkC,IAAlBjhB,EAAMkhB,SAIvC,IAAjBlhB,EAAMihB,QAAkC,IAAlBjhB,EAAMkhB,UA2BlC,IA6DIC,GA7DAC,GAAIpD,GAAc,iBAoBlBqD,GAAKrD,GAAc,oBAEnBsD,GAAmBxhH,OAAOiiB,OAAO,CACnCjb,UAAW,KACXq2G,OAAQA,GACRW,KAAMA,GACNC,UAAWA,GACXM,SAAUA,GACVhjG,YAAaA,GACbojG,UAAWA,GACXC,SAAUA,GACVI,SAAUA,GACVG,YAAaA,GACbE,YAAaA,GACbE,cAAeA,GACfE,cAAeA,GACflJ,aAAcA,GACdc,aAAcA,GACdC,gBAAiBA,GACjBuI,mBAAoBA,GACpBG,qBAAsBA,GACtBloB,sBAAuBA,GACvBmoB,aAAcA,GACdI,mBAAoBA,GACpBxO,WAAYA,GACZkP,QAASA,GACTC,iBAAkBA,GAClBtC,cAAeA,GACfuC,cAAeA,GACfC,kBAAmBA,GACnBI,EAAGA,GACHC,GAAIA,KASFE,IAAgB,EAMhBC,GAAY,WACd,IAAoC,IAAhCL,GAAUz+G,QAAQ8+G,UAAtB,CAIA,IAAIC,EAAOjoH,MAAM+G,UAAU1K,MAAM6T,KAAK,IAAS4X,qBAAqB,UAChEogG,EAASloH,MAAM+G,UAAU1K,MAAM6T,KAAK,IAAS4X,qBAAqB,UAClEqgG,EAAOnoH,MAAM+G,UAAU1K,MAAM6T,KAAK,IAAS4X,qBAAqB,aAChEsgG,EAAWH,EAAKh3G,OAAOi3G,EAAQC,GAEnC,GAAIC,GAAYA,EAASlrH,OAAS,EAChC,IAAK,IAAIhD,EAAI,EAAGoQ,EAAI89G,EAASlrH,OAAQhD,EAAIoQ,EAAGpQ,IAAK,CAC/C,IAAImuH,EAAUD,EAASluH,GAEvB,IAAImuH,IAAWA,EAAQxL,aAYhB,CACLyL,GAAiB,GACjB,MAZA,QAAuBt+G,IAAnBq+G,EAAQjnH,OAAsB,CAChC,IAAI8H,EAAUm/G,EAAQxL,aAAa,cAGnB,OAAZ3zG,GAEFy+G,GAAUU,SAURN,IACVO,GAAiB,KAerB,SAASA,GAAiBC,EAAMC,GAEzB7E,OAID6E,IACFb,GAAYa,GAGd,IAAS3+G,WAAWm+G,GAAWO,IASjC,SAASE,KACPV,IAAgB,EAChB,IAASW,oBAAoB,OAAQD,IAGnC9E,OAC0B,aAAxB,IAAS/5G,WACX6+G,KAUA,IAASE,iBAAiB,OAAQF,KAkBtC,IAwDIG,GAxDAC,GAAqB,SAA4BntB,GACnD,IAAIh8F,EAAQ,IAASk6F,cAAc,SAEnC,OADAl6F,EAAMg8F,UAAYA,EACXh8F,GAYLopH,GAAiB,SAAwB72G,EAAI6yG,GAC3C7yG,EAAG82G,WACL92G,EAAG82G,WAAWC,QAAUlE,EAExB7yG,EAAG4P,YAAcijG,GAcjBmE,GAAe,EAOfC,GAAQD,GAQZ,SAASE,KACP,OAAOD,KASJ,IAASE,UACZR,GAA2B,WACzB,SAASA,IACPtpH,KAAK+pH,MAAQ,QAAUh0G,KAAKG,MAAM,IAAS8zG,aAAe,IAASA,YAAYr0G,OAASkO,KAAKlO,OAC7F3V,KAAKnG,KAAO,GAGd,IAAI4rG,EAAS6jB,EAAY7hH,UAwCzB,OAtCAg+F,EAAOp6E,IAAM,SAAaniB,EAAK9B,GAC7B,IAAI6iH,EAAS/gH,EAAIlJ,KAAK+pH,QAAUF,KAOhC,OALK3gH,EAAIlJ,KAAK+pH,SACZ7gH,EAAIlJ,KAAK+pH,OAASE,GAGpBjqH,KAAKnG,KAAKowH,GAAU7iH,EACbpH,MAGTylG,EAAOr6E,IAAM,SAAaliB,GACxB,IAAI+gH,EAAS/gH,EAAIlJ,KAAK+pH,OAEtB,GAAIE,EACF,OAAOjqH,KAAKnG,KAAKowH,GAKnB1H,EAAM,mCAAoCr5G,IAI5Cu8F,EAAOt6E,IAAM,SAAajiB,GACxB,IAAI+gH,EAAS/gH,EAAIlJ,KAAK+pH,OACtB,OAAOE,KAAUjqH,KAAKnG,MAGxB4rG,EAAO,UAAY,SAAiBv8F,GAClC,IAAI+gH,EAAS/gH,EAAIlJ,KAAK+pH,OAElBE,WACKjqH,KAAKnG,KAAKowH,UACV/gH,EAAIlJ,KAAK+pH,SAIbT,EA9CkB,IA6D7B,IAyMIY,GAzMAC,GAAU,IAASL,QAAU,IAAIA,QAAY,IAAIR,GAqBrD,SAASc,GAAeC,EAAMxsH,GAC5B,GAAKssH,GAAQh/F,IAAIk/F,GAAjB,CAIA,IAAIxwH,EAAOswH,GAAQ/+F,IAAIi/F,GAEY,IAA/BxwH,EAAKywH,SAASzsH,GAAMD,gBACf/D,EAAKywH,SAASzsH,GAIjBwsH,EAAKjB,oBACPiB,EAAKjB,oBAAoBvrH,EAAMhE,EAAK0wH,YAAY,GACvCF,EAAKG,aACdH,EAAKG,YAAY,KAAO3sH,EAAMhE,EAAK0wH,aAKnCvjH,OAAOy+G,oBAAoB5rH,EAAKywH,UAAU1sH,QAAU,WAC/C/D,EAAKywH,gBACLzwH,EAAK0wH,kBACL1wH,EAAK4wH,UAIkC,IAA5CzjH,OAAOy+G,oBAAoB5rH,GAAM+D,QACnCusH,GAAQ,UAAUE,IAoBtB,SAASK,GAAsBp8F,EAAI+7F,EAAMM,EAAO9gH,GAC9C8gH,EAAMttH,SAAQ,SAAUQ,GAEtBywB,EAAG+7F,EAAMxsH,EAAMgM,MAcnB,SAAS+gH,GAAS1jB,GAChB,GAAIA,EAAM2jB,OACR,OAAO3jB,EAGT,SAAS4jB,IACP,OAAO,EAGT,SAASC,IACP,OAAO,EAQT,IAAK7jB,IAAUA,EAAM8jB,uBAAyB9jB,EAAM+jB,8BAA+B,CACjF,IAAIvM,EAAMxX,GAAS,IAASA,MAO5B,IAAK,IAAIh+F,KANTg+F,EAAQ,GAMQwX,EAKF,WAARx1G,GAA4B,WAARA,GAA4B,gBAARA,GAAiC,oBAARA,GAAqC,oBAARA,GAAqC,SAARA,IAG/G,gBAARA,GAAyBw1G,EAAIwM,iBACjChkB,EAAMh+F,GAAOw1G,EAAIx1G,KAmDvB,GA7CKg+F,EAAM79E,SACT69E,EAAM79E,OAAS69E,EAAMikB,YAAc,KAIhCjkB,EAAMkkB,gBACTlkB,EAAMkkB,cAAgBlkB,EAAMmkB,cAAgBnkB,EAAM79E,OAAS69E,EAAMokB,UAAYpkB,EAAMmkB,aAIrFnkB,EAAMgkB,eAAiB,WACjBxM,EAAIwM,gBACNxM,EAAIwM,iBAGNhkB,EAAMqkB,aAAc,EACpB7M,EAAI6M,aAAc,EAClBrkB,EAAMskB,kBAAmB,GAG3BtkB,EAAMskB,kBAAmB,EAEzBtkB,EAAMukB,gBAAkB,WAClB/M,EAAI+M,iBACN/M,EAAI+M,kBAGNvkB,EAAMwkB,cAAe,EACrBhN,EAAIgN,cAAe,EACnBxkB,EAAM8jB,qBAAuBF,GAG/B5jB,EAAM8jB,qBAAuBD,EAE7B7jB,EAAMykB,yBAA2B,WAC3BjN,EAAIiN,0BACNjN,EAAIiN,2BAGNzkB,EAAM+jB,8BAAgCH,EACtC5jB,EAAMukB,mBAGRvkB,EAAM+jB,8BAAgCF,EAEhB,OAAlB7jB,EAAM0kB,cAAsClhH,IAAlBw8F,EAAM0kB,QAAuB,CACzD,IAAIv8F,EAAM,IAAS9hB,gBACfpD,EAAO,IAASA,KACpB+8F,EAAM2gB,MAAQ3gB,EAAM0kB,SAAWv8F,GAAOA,EAAIw8F,YAAc1hH,GAAQA,EAAK0hH,YAAc,IAAMx8F,GAAOA,EAAIy8F,YAAc3hH,GAAQA,EAAK2hH,YAAc,GAC7I5kB,EAAM4gB,MAAQ5gB,EAAM6kB,SAAW18F,GAAOA,EAAI28F,WAAa7hH,GAAQA,EAAK6hH,WAAa,IAAM38F,GAAOA,EAAI48F,WAAa9hH,GAAQA,EAAK8hH,WAAa,GAI3I/kB,EAAMwI,MAAQxI,EAAM3K,UAAY2K,EAAMqI,QAGjB,OAAjBrI,EAAMihB,aAAoCz9G,IAAjBw8F,EAAMihB,SAKjCjhB,EAAMihB,OAAwB,EAAfjhB,EAAMihB,OAAa,EAAmB,EAAfjhB,EAAMihB,OAAa,EAAmB,EAAfjhB,EAAMihB,OAAa,EAAI,GAOxF,OAFAjhB,EAAM2jB,QAAS,EAER3jB,EAQT,IAAIglB,GAAkB,WACpB,GAAgC,mBAArBhC,GAAgC,CACzCA,IAAmB,EAEnB,IACE,IAAI7jG,EAAOrf,OAAOC,eAAe,GAAI,UAAW,CAC9CmkB,IAAK,WACH8+F,IAAmB,KAGvB,IAASb,iBAAiB,OAAQ,KAAMhjG,GACxC,IAAS+iG,oBAAoB,OAAQ,KAAM/iG,GAC3C,MAAOrb,KAIX,OAAOk/G,IAOLiC,GAAgB,CAAC,aAAc,aAiBnC,SAASzmB,GAAG2kB,EAAMxsH,EAAMywB,GACtB,GAAI5tB,MAAMyI,QAAQtL,GAChB,OAAO6sH,GAAsBhlB,GAAI2kB,EAAMxsH,EAAMywB,GAG1C67F,GAAQh/F,IAAIk/F,IACfF,GAAQ9+F,IAAIg/F,EAAM,IAGpB,IAAIxwH,EAAOswH,GAAQ/+F,IAAIi/F,GA8CvB,GA5CKxwH,EAAKywH,WACRzwH,EAAKywH,SAAW,IAGbzwH,EAAKywH,SAASzsH,KACjBhE,EAAKywH,SAASzsH,GAAQ,IAGnBywB,EAAG89F,OACN99F,EAAG89F,KAAOvC,MAGZhwH,EAAKywH,SAASzsH,GAAM5C,KAAKqzB,GAEpBz0B,EAAK0wH,aACR1wH,EAAK4wH,UAAW,EAEhB5wH,EAAK0wH,WAAa,SAAUrjB,EAAOmlB,GACjC,IAAIxyH,EAAK4wH,SAAT,CAIAvjB,EAAQ0jB,GAAS1jB,GACjB,IAAIojB,EAAWzwH,EAAKywH,SAASpjB,EAAMrpG,MAEnC,GAAIysH,EAIF,IAFA,IAAIgC,EAAehC,EAASvtH,MAAM,GAEzBk7F,EAAI,EAAG5xF,EAAIimH,EAAa1uH,OAAQq6F,EAAI5xF,EAAG4xF,IAAK,CACnD,GAAIiP,EAAM+jB,gCACR,MAEA,IACEqB,EAAar0B,GAAGrnF,KAAKy5G,EAAMnjB,EAAOmlB,GAClC,MAAOrhH,GACPu3G,EAAM1yF,MAAM7kB,QAQW,IAA/BnR,EAAKywH,SAASzsH,GAAMD,OACtB,GAAIysH,EAAKhB,iBAAkB,CACzB,IAAIz/G,GAAU,EAEVsiH,MAAqBC,GAAcljH,QAAQpL,IAAS,IACtD+L,EAAU,CACR2iH,SAAS,IAIblC,EAAKhB,iBAAiBxrH,EAAMhE,EAAK0wH,WAAY3gH,QACpCygH,EAAKmC,aACdnC,EAAKmC,YAAY,KAAO3uH,EAAMhE,EAAK0wH,YAkBzC,SAAS3kB,GAAIykB,EAAMxsH,EAAMywB,GAEvB,GAAK67F,GAAQh/F,IAAIk/F,GAAjB,CAIA,IAAIxwH,EAAOswH,GAAQ/+F,IAAIi/F,GAEvB,GAAKxwH,EAAKywH,SAAV,CAIA,GAAI5pH,MAAMyI,QAAQtL,GAChB,OAAO6sH,GAAsB9kB,GAAKykB,EAAMxsH,EAAMywB,GAIhD,IAAIm+F,EAAa,SAAoB95G,EAAI7O,GACvCjK,EAAKywH,SAASxmH,GAAK,GAEnBsmH,GAAez3G,EAAI7O,IAIrB,QAAa4G,IAAT7M,EAAJ,CAUA,IAAIysH,EAAWzwH,EAAKywH,SAASzsH,GAE7B,GAAKysH,EAKL,GAAKh8F,EAAL,CAMA,GAAIA,EAAG89F,KACL,IAAK,IAAI/lH,EAAI,EAAGA,EAAIikH,EAAS1sH,OAAQyI,IAC/BikH,EAASjkH,GAAG+lH,OAAS99F,EAAG89F,MAC1B9B,EAASzkB,OAAOx/F,IAAK,GAK3B+jH,GAAeC,EAAMxsH,QAbnB4uH,EAAWpC,EAAMxsH,QAjBjB,IAAK,IAAIiG,KAAKjK,EAAKywH,SACbtjH,OAAOS,UAAUgC,eAAemH,KAAK/W,EAAKywH,UAAY,GAAIxmH,IAC5D2oH,EAAWpC,EAAMvmH,KA+CzB,SAASgiG,GAAQukB,EAAMnjB,EAAOmlB,GAI5B,IAAIK,EAAWvC,GAAQh/F,IAAIk/F,GAAQF,GAAQ/+F,IAAIi/F,GAAQ,GACnDhR,EAASgR,EAAKv5F,YAAcu5F,EAAKvT,cAsBrC,GAlBqB,kBAAV5P,EACTA,EAAQ,CACNrpG,KAAMqpG,EACN79E,OAAQghG,GAEAnjB,EAAM79E,SAChB69E,EAAM79E,OAASghG,GAIjBnjB,EAAQ0jB,GAAS1jB,GAEbwlB,EAASnC,YACXmC,EAASnC,WAAW35G,KAAKy5G,EAAMnjB,EAAOmlB,GAKpChT,IAAWnS,EAAM8jB,yBAA4C,IAAlB9jB,EAAMylB,QACnD7mB,GAAQl1F,KAAK,KAAMyoG,EAAQnS,EAAOmlB,QAC7B,IAAKhT,IAAWnS,EAAMskB,kBAAoBtkB,EAAM79E,QAAU69E,EAAM79E,OAAO69E,EAAMrpG,MAAO,CACpFssH,GAAQh/F,IAAI+7E,EAAM79E,SACrB8gG,GAAQ9+F,IAAI67E,EAAM79E,OAAQ,IAG5B,IAAIujG,EAAazC,GAAQ/+F,IAAI87E,EAAM79E,QAE/B69E,EAAM79E,OAAO69E,EAAMrpG,QAErB+uH,EAAWnC,UAAW,EAEkB,oBAA7BvjB,EAAM79E,OAAO69E,EAAMrpG,OAC5BqpG,EAAM79E,OAAO69E,EAAMrpG,QAIrB+uH,EAAWnC,UAAW,GAK1B,OAAQvjB,EAAMskB,iBAehB,SAASqB,GAAIxC,EAAMxsH,EAAMywB,GACvB,GAAI5tB,MAAMyI,QAAQtL,GAChB,OAAO6sH,GAAsBmC,GAAKxC,EAAMxsH,EAAMywB,GAGhD,IAAIw+F,EAAO,SAASA,IAClBlnB,GAAIykB,EAAMxsH,EAAMivH,GAChBx+F,EAAGtT,MAAMhb,KAAMqR,YAIjBy7G,EAAKV,KAAO99F,EAAG89F,KAAO99F,EAAG89F,MAAQvC,KACjCnkB,GAAG2kB,EAAMxsH,EAAMivH,GAgBjB,SAASC,GAAI1C,EAAMxsH,EAAMywB,GACvB,IAAIw+F,EAAO,SAASA,IAClBlnB,GAAIykB,EAAMxsH,EAAMivH,GAChBx+F,EAAGtT,MAAMhb,KAAMqR,YAIjBy7G,EAAKV,KAAO99F,EAAG89F,KAAO99F,EAAG89F,MAAQvC,KAEjCnkB,GAAG2kB,EAAMxsH,EAAMivH,GAGjB,IA4UIE,GA5UAC,GAAsBjmH,OAAOiiB,OAAO,CACtCjb,UAAW,KACX48G,SAAUA,GACVllB,GAAIA,GACJE,IAAKA,GACLE,QAASA,GACT+mB,IAAKA,GACLE,IAAKA,KAOHG,GAA0B,GAsB1Bn/G,GAAO,SAAcq3G,EAAS92F,EAAI6+F,GAE/B7+F,EAAG89F,OACN99F,EAAG89F,KAAOvC,MAIZ,IAAIuD,EAAQ9+F,EAAGvgB,KAAKq3G,GAQpB,OADAgI,EAAMhB,KAAOe,EAAMA,EAAM,IAAM7+F,EAAG89F,KAAO99F,EAAG89F,KACrCgB,GAgBLC,GAAW,SAAkB/+F,EAAI26F,GACnC,IAAIqE,EAAO,IAAStD,YAAYr0G,MAE5B43G,EAAY,WACd,IAAI53G,EAAM,IAASq0G,YAAYr0G,MAE3BA,EAAM23G,GAAQrE,IAChB36F,EAAGtT,WAAM,EAAQ3J,WACjBi8G,EAAO33G,IAIX,OAAO43G,GA6BLC,GAAW,SAAkBV,EAAM7D,EAAMwE,EAAWrI,GAKtD,IAAIt4G,OAJY,IAAZs4G,IACFA,EAAU,KAKZ,IAAIsI,EAAS,WACXtI,EAAQj6G,aAAa2B,GACrBA,EAAU,MAKR6gH,EAAY,WACd,IAAIrqH,EAAOtD,KACP+yB,EAAO1hB,UAEPu8G,EAAS,WACX9gH,EAAU,KACV8gH,EAAS,KAEJH,GACHX,EAAK9xG,MAAM1X,EAAMyvB,KAIhBjmB,GAAW2gH,GACdX,EAAK9xG,MAAM1X,EAAMyvB,GAGnBqyF,EAAQj6G,aAAa2B,GACrBA,EAAUs4G,EAAQ76G,WAAWqjH,EAAQ3E,IAMvC,OADA0E,EAAUD,OAASA,EACZC,GAeLE,GAAgB,aAgCpBA,GAAcpmH,UAAUqmH,eAAiB,GAYzCD,GAAcpmH,UAAUi+F,GAAK,SAAU7nG,EAAMywB,GAG3C,IAAIy/F,EAAM/tH,KAAKqpH,iBAEfrpH,KAAKqpH,iBAAmB,aAExB3jB,GAAG1lG,KAAMnC,EAAMywB,GACftuB,KAAKqpH,iBAAmB0E,GAW1BF,GAAcpmH,UAAU4hH,iBAAmBwE,GAAcpmH,UAAUi+F,GAanEmoB,GAAcpmH,UAAUm+F,IAAM,SAAU/nG,EAAMywB,GAC5Cs3E,GAAI5lG,KAAMnC,EAAMywB,IAWlBu/F,GAAcpmH,UAAU2hH,oBAAsByE,GAAcpmH,UAAUm+F,IAatEioB,GAAcpmH,UAAUolH,IAAM,SAAUhvH,EAAMywB,GAG5C,IAAIy/F,EAAM/tH,KAAKqpH,iBAEfrpH,KAAKqpH,iBAAmB,aAExBwD,GAAI7sH,KAAMnC,EAAMywB,GAChBtuB,KAAKqpH,iBAAmB0E,GAG1BF,GAAcpmH,UAAUslH,IAAM,SAAUlvH,EAAMywB,GAG5C,IAAIy/F,EAAM/tH,KAAKqpH,iBAEfrpH,KAAKqpH,iBAAmB,aAExB0D,GAAI/sH,KAAMnC,EAAMywB,GAChBtuB,KAAKqpH,iBAAmB0E,GAoB1BF,GAAcpmH,UAAUq+F,QAAU,SAAUoB,GAC1C,IAAIrpG,EAAOqpG,EAAMrpG,MAAQqpG,EAMJ,kBAAVA,IACTA,EAAQ,CACNrpG,KAAMA,IAIVqpG,EAAQ0jB,GAAS1jB,GAEblnG,KAAK8tH,eAAejwH,IAASmC,KAAK,KAAOnC,IAC3CmC,KAAK,KAAOnC,GAAMqpG,GAGpBpB,GAAQ9lG,KAAMknG,IAWhB2mB,GAAcpmH,UAAUumH,cAAgBH,GAAcpmH,UAAUq+F,QAGhE+nB,GAAcpmH,UAAUwmH,aAAe,SAAU/mB,GAC/C,IAAIX,EAAQvmG,KAGPgtH,KACHA,GAAY,IAAI9hG,KAGlB,IAAIrtB,EAAOqpG,EAAMrpG,MAAQqpG,EACrBloG,EAAMguH,GAAU5hG,IAAIprB,MAEnBhB,IACHA,EAAM,IAAIksB,IACV8hG,GAAU3hG,IAAIrrB,KAAMhB,IAGtB,IAAIkvH,EAAalvH,EAAIosB,IAAIvtB,GACzBmB,EAAI,UAAUnB,GACd,IAASsN,aAAa+iH,GACtB,IAAIphH,EAAU,IAASvC,YAAW,WAChCvL,EAAI,UAAUnB,GAEG,IAAbmB,EAAIuZ,OACNvZ,EAAM,KACNguH,GAAU,UAAUzmB,IAGtBA,EAAMT,QAAQoB,KACb,GACHloG,EAAIqsB,IAAIxtB,EAAMiP,IAQhB,IAAIqhH,GAAU,SAAiB3kH,GAC7B,MAAwB,oBAAbA,EAAIhM,KACNgM,EAAIhM,OAGW,kBAAbgM,EAAIhM,KACNgM,EAAIhM,KAGTgM,EAAI4kH,MACC5kH,EAAI4kH,MAGT5kH,EAAImF,aAAenF,EAAImF,YAAYnR,KAC9BgM,EAAImF,YAAYnR,YAGXgM,GAaZ6kH,GAAY,SAAmBnlG,GACjC,OAAOA,aAAkB2kG,MAAmB3kG,EAAOolG,aAAe,CAAC,KAAM,MAAO,MAAO,WAAWnvH,OAAM,SAAU0S,GAChH,MAA4B,oBAAdqX,EAAOrX,OAarB08G,GAAqB,SAA4BllG,EAAQxf,GACvDwkH,GAAUhlG,GACZxf,KAEKwf,EAAOmlG,mBACVnlG,EAAOmlG,iBAAmB,IAG5BnlG,EAAOmlG,iBAAiBvzH,KAAK4O,KAe7B4kH,GAAmB,SAA0B5wH,GAC/C,MAEkB,kBAATA,GAAqB,KAAKgB,KAAKhB,IAAS6C,MAAMyI,QAAQtL,MAAWA,EAAKD,QAqB7E8wH,GAAiB,SAAwBrlG,EAAQ7f,EAAKmlH,GACxD,IAAKtlG,IAAWA,EAAO7b,WAAa6gH,GAAUhlG,GAC5C,MAAM,IAAIrf,MAAM,sBAAwBmkH,GAAQ3kH,GAAO,IAAMmlH,EAAS,4CAqBtEC,GAAoB,SAA2B/wH,EAAM2L,EAAKmlH,GAC5D,IAAKF,GAAiB5wH,GACpB,MAAM,IAAImM,MAAM,0BAA4BmkH,GAAQ3kH,GAAO,IAAMmlH,EAAS,2CAqB1EE,GAAmB,SAA0BlpB,EAAUn8F,EAAKmlH,GAC9D,GAAwB,oBAAbhpB,EACT,MAAM,IAAI37F,MAAM,wBAA0BmkH,GAAQ3kH,GAAO,IAAMmlH,EAAS,0BAuBxEG,GAAsB,SAA6BxrH,EAAMyvB,EAAM47F,GAGjE,IACItlG,EACAxrB,EACA8nG,EAHAopB,EAAkBh8F,EAAKn1B,OAAS,GAAKm1B,EAAK,KAAOzvB,GAAQyvB,EAAK,KAAOzvB,EAAKgrH,YAyB9E,OApBIS,GACF1lG,EAAS/lB,EAAKgrH,YAGVv7F,EAAKn1B,QAAU,GACjBm1B,EAAKi8F,QAGPnxH,EAAOk1B,EAAK,GACZ4yE,EAAW5yE,EAAK,KAEhB1J,EAAS0J,EAAK,GACdl1B,EAAOk1B,EAAK,GACZ4yE,EAAW5yE,EAAK,IAGlB27F,GAAerlG,EAAQ/lB,EAAMqrH,GAC7BC,GAAkB/wH,EAAMyF,EAAMqrH,GAC9BE,GAAiBlpB,EAAUriG,EAAMqrH,GACjChpB,EAAW53F,GAAKzK,EAAMqiG,GACf,CACLopB,gBAAiBA,EACjB1lG,OAAQA,EACRxrB,KAAMA,EACN8nG,SAAUA,IAsBVspB,GAAS,SAAgB5lG,EAAQ3d,EAAQ7N,EAAM8nG,GACjD+oB,GAAerlG,EAAQA,EAAQ3d,GAE3B2d,EAAO7b,SACTy/G,GAAOvhH,GAAQ2d,EAAQxrB,EAAM8nG,GAE7Bt8E,EAAO3d,GAAQ7N,EAAM8nG,IAWrBupB,GAAe,CAwBjBxpB,GAAI,WAGF,IAFA,IAAIa,EAAQvmG,KAEHoR,EAAOC,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAM0Q,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/EwhB,EAAKxhB,GAAQF,UAAUE,GAGzB,IAAI49G,EAAuBL,GAAoB9uH,KAAM+yB,EAAM,MACvDg8F,EAAkBI,EAAqBJ,gBACvC1lG,EAAS8lG,EAAqB9lG,OAC9BxrB,EAAOsxH,EAAqBtxH,KAC5B8nG,EAAWwpB,EAAqBxpB,SAIpC,GAFAspB,GAAO5lG,EAAQ,KAAMxrB,EAAM8nG,IAEtBopB,EAAiB,CAEpB,IAAIK,EAA0B,WAC5B,OAAO7oB,EAAMX,IAAIv8E,EAAQxrB,EAAM8nG,IAKjCypB,EAAwBhD,KAAOzmB,EAASymB,KAIxC,IAAIiD,EAA+B,WACjC,OAAO9oB,EAAMX,IAAI,UAAWwpB,IAK9BC,EAA6BjD,KAAOzmB,EAASymB,KAC7C6C,GAAOjvH,KAAM,KAAM,UAAWovH,GAC9BH,GAAO5lG,EAAQ,KAAM,UAAWgmG,KA2BpCxC,IAAK,WAGH,IAFA,IAAI1lB,EAASnnG,KAEJiiH,EAAQ5wG,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAMuhH,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFnvF,EAAKmvF,GAAS7wG,UAAU6wG,GAG1B,IAAIoN,EAAwBR,GAAoB9uH,KAAM+yB,EAAM,OACxDg8F,EAAkBO,EAAsBP,gBACxC1lG,EAASimG,EAAsBjmG,OAC/BxrB,EAAOyxH,EAAsBzxH,KAC7B8nG,EAAW2pB,EAAsB3pB,SAGrC,GAAIopB,EACFE,GAAO5lG,EAAQ,MAAOxrB,EAAM8nG,OACvB,CAKL,IAAI+a,EAAU,SAASA,IACrBvZ,EAAOvB,IAAIv8E,EAAQxrB,EAAM6iH,GAEzB,IAAK,IAAIyB,EAAQ9wG,UAAUzT,OAAQ2xH,EAAQ,IAAI7uH,MAAMyhH,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACrFmN,EAAMnN,GAAS/wG,UAAU+wG,GAG3Bzc,EAAS3qF,MAAM,KAAMu0G,IAKvB7O,EAAQ0L,KAAOzmB,EAASymB,KACxB6C,GAAO5lG,EAAQ,MAAOxrB,EAAM6iH,KA4BhCqM,IAAK,WAGH,IAFA,IAAIzkB,EAAStoG,KAEJqiH,EAAQhxG,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAM2hH,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFvvF,EAAKuvF,GAASjxG,UAAUixG,GAG1B,IAAIkN,EAAwBV,GAAoB9uH,KAAM+yB,EAAM,OACxDg8F,EAAkBS,EAAsBT,gBACxC1lG,EAASmmG,EAAsBnmG,OAC/BxrB,EAAO2xH,EAAsB3xH,KAC7B8nG,EAAW6pB,EAAsB7pB,SAGrC,GAAIopB,EACFE,GAAO5lG,EAAQ,MAAOxrB,EAAM8nG,OACvB,CACL,IAAI+a,EAAU,SAASA,IACrBpY,EAAO1C,IAAIv8E,EAAQxrB,EAAM6iH,GAEzB,IAAK,IAAI+O,EAAQp+G,UAAUzT,OAAQ2xH,EAAQ,IAAI7uH,MAAM+uH,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACrFH,EAAMG,GAASr+G,UAAUq+G,GAG3B/pB,EAAS3qF,MAAM,KAAMu0G,IAKvB7O,EAAQ0L,KAAOzmB,EAASymB,KACxB6C,GAAO5lG,EAAQ,MAAOxrB,EAAM6iH,KAuBhC9a,IAAK,SAAe+pB,EAAcC,EAAgBjqB,GAEhD,IAAKgqB,GAAgBlB,GAAiBkB,GACpC/pB,GAAI5lG,KAAKsuH,YAAaqB,EAAcC,OAC/B,CACL,IAAIvmG,EAASsmG,EACT9xH,EAAO+xH,EAEXlB,GAAerlG,EAAQrpB,KAAM,OAC7B4uH,GAAkB/wH,EAAMmC,KAAM,OAC9B6uH,GAAiBlpB,EAAU3lG,KAAM,OAEjC2lG,EAAW53F,GAAK/N,KAAM2lG,GAGtB3lG,KAAK4lG,IAAI,UAAWD,GAEhBt8E,EAAO7b,UACTo4F,GAAIv8E,EAAQxrB,EAAM8nG,GAClBC,GAAIv8E,EAAQ,UAAWs8E,IACd0oB,GAAUhlG,KACnBA,EAAOu8E,IAAI/nG,EAAM8nG,GACjBt8E,EAAOu8E,IAAI,UAAWD,MAiB5BG,QAAS,SAAmBoB,EAAOmlB,GACjCqC,GAAe1uH,KAAKsuH,YAAatuH,KAAM,WACvC,IAAInC,EAAOqpG,GAA0B,kBAAVA,EAAqBA,EAAMrpG,KAAOqpG,EAE7D,IAAKunB,GAAiB5wH,GAAO,CAC3B,IAAIgyB,EAAQ,0BAA4Bs+F,GAAQnuH,MAApC,6FAEZ,IAAIknG,EAGF,MAAM,IAAIl9F,MAAM6lB,IAFf7vB,KAAK6C,KAAO0/G,GAAO1yF,MAAMA,GAM9B,OAAOi2E,GAAQ9lG,KAAKsuH,YAAapnB,EAAOmlB,KAqB5C,SAASwD,GAAQxmG,EAAQzf,QACP,IAAZA,IACFA,EAAU,IAGZ,IAAI+d,EAAW/d,EACXkmH,EAAcnoG,EAASmoG,YAE3B,GAAIA,EAAa,CACf,IAAKzmG,EAAOymG,GAAatiH,SACvB,MAAM,IAAIxD,MAAM,oBAAuB8lH,EAAc,mCAGvDzmG,EAAOilG,YAAcjlG,EAAOymG,QAE5BzmG,EAAOilG,YAAc/I,GAAS,OAAQ,CACpCnpB,UAAW,kBAwBf,OApBAhzE,GAAOC,EAAQ6lG,IAEX7lG,EAAOmlG,kBACTnlG,EAAOmlG,iBAAiBnxH,SAAQ,SAAUwM,GACxCA,OAKJwf,EAAOq8E,GAAG,WAAW,WACnBr8E,EAAOu8E,MACP,CAACv8E,EAAQA,EAAO0mG,IAAK1mG,EAAOilG,aAAajxH,SAAQ,SAAUmpB,GACrDA,GAAO2jG,GAAQh/F,IAAI3E,IACrB2jG,GAAQ,UAAU3jG,MAGtB,IAASjc,YAAW,WAClB8e,EAAOilG,YAAc,OACpB,MAEEjlG,EAcT,IAAI2mG,GAAgB,CAOlBhuB,MAAO,GAePiuB,SAAU,SAAkBC,GAC1B,IAOIC,EAPA5pB,EAAQvmG,KA0CZ,MAvC4B,oBAAjBkwH,IACTA,EAAeA,KAIjB1N,GAAK0N,GAAc,SAAU9oH,EAAO8B,GAG9Bq9F,EAAMvE,MAAM94F,KAAS9B,IACvB+oH,EAAUA,GAAW,GACrBA,EAAQjnH,GAAO,CACbvC,KAAM4/F,EAAMvE,MAAM94F,GAClBknH,GAAIhpH,IAIRm/F,EAAMvE,MAAM94F,GAAO9B,KAKjB+oH,GAAW9B,GAAUruH,OAYvBA,KAAK8lG,QAAQ,CACXqqB,QAASA,EACTtyH,KAAM,iBAIHsyH,IAsBX,SAASE,GAAShnG,EAAQinG,GAUxB,OATAlnG,GAAOC,EAAQ2mG,IAGf3mG,EAAO24E,MAAQ54E,GAAO,GAAIC,EAAO24E,MAAOsuB,GAEC,oBAA9BjnG,EAAOknG,oBAAqClC,GAAUhlG,IAC/DA,EAAOq8E,GAAG,eAAgBr8E,EAAOknG,oBAG5BlnG,EAiBT,IAAI1rB,GAAc,SAAqB4wG,GACrC,MAAsB,kBAAXA,EACFA,EAGFA,EAAO/xG,QAAQ,KAAK,SAAUg0H,GACnC,OAAOA,EAAE7yH,kBAaT8yH,GAAgB,SAAqBliB,GACvC,MAAsB,kBAAXA,EACFA,EAGFA,EAAO/xG,QAAQ,KAAK,SAAUg0H,GACnC,OAAOA,EAAE9iH,kBAgBTgjH,GAAkB,SAAyBC,EAAMC,GACnD,OAAOH,GAAcE,KAAUF,GAAcG,IAyB/C,SAASC,KAGP,IAFA,IAAI12H,EAAS,GAEJiX,EAAOC,UAAUzT,OAAQ+kH,EAAU,IAAIjiH,MAAM0Q,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAClFoxG,EAAQpxG,GAAQF,UAAUE,GAqB5B,OAlBAoxG,EAAQtlH,SAAQ,SAAUoU,GACnBA,GAIL+wG,GAAK/wG,GAAQ,SAAUrK,EAAO8B,GACvB05G,GAAQx7G,IAKRw7G,GAAQzoH,EAAO+O,MAClB/O,EAAO+O,GAAO,IAGhB/O,EAAO+O,GAAO2nH,GAAe12H,EAAO+O,GAAM9B,IARxCjN,EAAO+O,GAAO9B,QAWbjN,EAGT,IAAI22H,GAAuB,WACzB,SAASA,IACP9wH,KAAK+wH,KAAO,GAGd,IAAItrB,EAASqrB,EAAQrpH,UAuBrB,OArBAg+F,EAAOt6E,IAAM,SAAajiB,GACxB,OAAOA,KAAOlJ,KAAK+wH,MAGrBtrB,EAAO,UAAY,SAAiBv8F,GAClC,IAAIiiB,EAAMnrB,KAAKmrB,IAAIjiB,GAEnB,cADOlJ,KAAK+wH,KAAK7nH,GACViiB,GAGTs6E,EAAOp6E,IAAM,SAAaniB,EAAK9B,GAE7B,OADApH,KAAK+wH,KAAK7nH,GAAO9B,EACVpH,MAGTylG,EAAOpoG,QAAU,SAAiBwM,EAAUmnH,GAC1C,IAAK,IAAI9nH,KAAOlJ,KAAK+wH,KACnBlnH,EAAS+G,KAAKogH,EAAShxH,KAAK+wH,KAAK7nH,GAAMA,EAAKlJ,OAIzC8wH,EA5BkB,GA+BvBG,GAAQ,IAAS/lG,IAAM,IAASA,IAAM4lG,GAEtCI,GAAuB,WACzB,SAASA,IACPlxH,KAAKmxH,KAAO,GAGd,IAAI1rB,EAASyrB,EAAQzpH,UAuBrB,OArBAg+F,EAAOt6E,IAAM,SAAajiB,GACxB,OAAOA,KAAOlJ,KAAKmxH,MAGrB1rB,EAAO,UAAY,SAAiBv8F,GAClC,IAAIiiB,EAAMnrB,KAAKmrB,IAAIjiB,GAEnB,cADOlJ,KAAKmxH,KAAKjoH,GACViiB,GAGTs6E,EAAOygB,IAAM,SAAah9G,GAExB,OADAlJ,KAAKmxH,KAAKjoH,GAAO,EACVlJ,MAGTylG,EAAOpoG,QAAU,SAAiBwM,EAAUmnH,GAC1C,IAAK,IAAI9nH,KAAOlJ,KAAKmxH,KACnBtnH,EAAS+G,KAAKogH,EAAS9nH,EAAKA,EAAKlJ,OAI9BkxH,EA5BkB,GA+BvBE,GAAQ,IAASC,IAAM,IAASA,IAAMH,GAgBtCI,GAA2B,WA6B7B,SAASC,EAAUzvH,EAAQ8H,EAAS4nH,GAClC,IAAIjrB,EAAQvmG,KAmBZ,IAhBK8B,GAAU9B,KAAKoC,KAClBpC,KAAKyxH,QAAU3vH,EAAS9B,KAExBA,KAAKyxH,QAAU3vH,EAGjB9B,KAAK0xH,aAAc,EAEnB1xH,KAAK2xH,iBAAmB,KAExB3xH,KAAK4xH,SAAWf,GAAe,GAAI7wH,KAAK4xH,UAExChoH,EAAU5J,KAAK4xH,SAAWf,GAAe7wH,KAAK4xH,SAAUhoH,GAExD5J,KAAK6xH,IAAMjoH,EAAQiR,IAAMjR,EAAQ+I,IAAM/I,EAAQ+I,GAAGkI,IAE7C7a,KAAK6xH,IAAK,CAEb,IAAIh3G,EAAK/Y,GAAUA,EAAO+Y,IAAM/Y,EAAO+Y,MAAQ,YAC/C7a,KAAK6xH,IAAMh3G,EAAK,cAAgBgvG,KAGlC7pH,KAAKouH,MAAQxkH,EAAQpM,MAAQ,KAEzBoM,EAAQ+I,GACV3S,KAAK+vH,IAAMnmH,EAAQ+I,IACW,IAArB/I,EAAQ27G,WACjBvlH,KAAK+vH,IAAM/vH,KAAKulH,YAGd37G,EAAQwyF,WAAap8F,KAAK+vH,KAC5BnmH,EAAQwyF,UAAUh/F,MAAM,KAAKC,SAAQ,SAAU4B,GAC7C,OAAOsnG,EAAMyf,SAAS/mH,OAKF,IAApB2K,EAAQimH,UAEVA,GAAQ7vH,KAAM,CACZ8vH,YAAa9vH,KAAK+vH,IAAM,MAAQ,OAElC/vH,KAAK8xH,qBAAuB9xH,KAAK8xH,qBAAqB/jH,KAAK/N,MAC3DA,KAAK0lG,GAAG1lG,KAAKyxH,QAAS,iBAAkBzxH,KAAK8xH,uBAG/CzB,GAASrwH,KAAMA,KAAK2O,YAAY2hH,cAChCtwH,KAAK+xH,UAAY,GACjB/xH,KAAKgyH,YAAc,GACnBhyH,KAAKiyH,gBAAkB,GACvBjyH,KAAKkyH,eAAiB,IAAId,GAC1BpxH,KAAKmyH,gBAAkB,IAAIf,GAC3BpxH,KAAKoyH,QAAU,IAAIhB,GACnBpxH,KAAKqyH,WAAa,IAAIpB,GACtBjxH,KAAKsyH,0BAA2B,GAEH,IAAzB1oH,EAAQ2oH,cACVvyH,KAAKuyH,eAKPvyH,KAAKwxH,MAAMA,IAEyB,IAAhC5nH,EAAQ4oH,qBACVxyH,KAAKyyH,sBAaT,IAAIhtB,EAAS8rB,EAAU9pH,UAwmDvB,OAtmDAg+F,EAAOS,QAAU,SAAiBt8F,GAMhC,QALgB,IAAZA,IACFA,EAAU,KAIR5J,KAAK0xH,YAAT,CAyBA,GArBI1xH,KAAK0yH,cACP1yH,KAAK0yH,YAAY90H,OAAS,GAc5BoC,KAAK8lG,QAAQ,CACXjoG,KAAM,UACN8uH,SAAS,IAEX3sH,KAAK0xH,aAAc,EAEf1xH,KAAK+xH,UACP,IAAK,IAAIn3H,EAAIoF,KAAK+xH,UAAUn0H,OAAS,EAAGhD,GAAK,EAAGA,IAC1CoF,KAAK+xH,UAAUn3H,GAAGsrG,SACpBlmG,KAAK+xH,UAAUn3H,GAAGsrG,UAMxBlmG,KAAK+xH,UAAY,KACjB/xH,KAAKgyH,YAAc,KACnBhyH,KAAKiyH,gBAAkB,KACvBjyH,KAAK2xH,iBAAmB,KAEpB3xH,KAAK+vH,MAEH/vH,KAAK+vH,IAAIj/F,aACPlnB,EAAQ+oH,UACV3yH,KAAK+vH,IAAIj/F,WAAW8rF,aAAahzG,EAAQ+oH,UAAW3yH,KAAK+vH,KAEzD/vH,KAAK+vH,IAAIj/F,WAAW2wE,YAAYzhG,KAAK+vH,MAIzC/vH,KAAK+vH,IAAM,MAIb/vH,KAAKyxH,QAAU,OAUjBhsB,EAAOmtB,WAAa,WAClB,OAAO9xH,QAAQd,KAAK0xH,cAUtBjsB,EAAO3jG,OAAS,WACd,OAAO9B,KAAKyxH,SAedhsB,EAAO77F,QAAU,SAAiBJ,GAChC,OAAKA,GAILxJ,KAAK4xH,SAAWf,GAAe7wH,KAAK4xH,SAAUpoH,GACvCxJ,KAAK4xH,UAJH5xH,KAAK4xH,UAchBnsB,EAAO9yF,GAAK,WACV,OAAO3S,KAAK+vH,KAmBdtqB,EAAO8f,SAAW,SAAoBljG,EAASnJ,EAAYxa,GACzD,OAAO6mH,GAASljG,EAASnJ,EAAYxa,IA0CvC+mG,EAAOotB,SAAW,SAAkBtkB,EAAQukB,EAAQC,QAC7B,IAAjBA,IACFA,EAAexkB,GAGjB,IAAIvhG,EAAOhN,KAAKyxH,QAAQr1G,UAAYpc,KAAKyxH,QAAQr1G,WAC7C42G,EAAYhzH,KAAKyxH,QAAQuB,WAAahzH,KAAKyxH,QAAQuB,YACnD52G,EAAW42G,GAAaA,EAAUhmH,GAClCimH,EAAcjmH,GAAQA,EAAK5P,MAAM,KAAK,GACtC81H,EAAcF,GAAaA,EAAUC,GACrCE,EAAkBJ,EAqBtB,OAnBI32G,GAAYA,EAASmyF,GACvB4kB,EAAkB/2G,EAASmyF,GAClB2kB,GAAeA,EAAY3kB,KACpC4kB,EAAkBD,EAAY3kB,IAG5BukB,IACFK,EAAkBA,EAAgB32H,QAAQ,cAAc,SAAUiB,EAAOwE,GACvE,IAAImF,EAAQ0rH,EAAO7wH,EAAQ,GACvB4+F,EAAMz5F,EAMV,MAJqB,qBAAVA,IACTy5F,EAAMpjG,GAGDojG,MAIJsyB,GAST1tB,EAAOqsB,qBAAuB,aAU9BrsB,EAAO2tB,UAAY,WACjB,OAAOpzH,KAAKqzH,YAAcrzH,KAAK+vH,KAUjCtqB,EAAO5qF,GAAK,WACV,OAAO7a,KAAK6xH,KAWdpsB,EAAOjoG,KAAO,WACZ,OAAOwC,KAAKouH,OAUd3oB,EAAO6tB,SAAW,WAChB,OAAOtzH,KAAK+xH,WAadtsB,EAAO8tB,aAAe,SAAsB14G,GAC1C,OAAO7a,KAAKgyH,YAAYn3G,IAa1B4qF,EAAO+tB,SAAW,SAAkBh2H,GAClC,GAAKA,EAIL,OAAOwC,KAAKiyH,gBAAgBz0H,IAkB9BioG,EAAOguB,cAAgB,WACrB,IAAK,IAAIriH,EAAOC,UAAUzT,OAAQ+xG,EAAQ,IAAIjvG,MAAM0Q,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAChFo+F,EAAMp+F,GAAQF,UAAUE,GAI1Bo+F,EAAQA,EAAMn+F,QAAO,SAAUkB,EAAKrM,GAClC,OAAOqM,EAAIf,OAAOtL,KACjB,IAGH,IAFA,IAAIqtH,EAAe1zH,KAEVpF,EAAI,EAAGA,EAAI+0G,EAAM/xG,OAAQhD,IAGhC,GAFA84H,EAAeA,EAAaF,SAAS7jB,EAAM/0G,KAEtC84H,IAAiBA,EAAaF,SACjC,OAIJ,OAAOE,GAsBTjuB,EAAOkuB,SAAW,SAAkBvb,EAAOxuG,EAAS3H,GASlD,IAAIkB,EACAywH,EAEJ,QAXgB,IAAZhqH,IACFA,EAAU,SAGE,IAAV3H,IACFA,EAAQjC,KAAK+xH,UAAUn0H,QAMJ,kBAAVw6G,EAAoB,CAC7Bwb,EAAgBnD,GAAcrY,GAC9B,IAAIyb,EAAqBjqH,EAAQkqH,gBAAkBF,EAEnDhqH,EAAQpM,KAAOo2H,EAGf,IAAIG,EAAiBxC,EAAUyC,aAAaH,GAE5C,IAAKE,EACH,MAAM,IAAI/pH,MAAM,aAAe6pH,EAAqB,mBAOtD,GAA8B,oBAAnBE,EACT,OAAO,KAGT5wH,EAAY,IAAI4wH,EAAe/zH,KAAKyxH,SAAWzxH,KAAM4J,QAErDzG,EAAYi1G,EAyBd,GAtBIj1G,EAAUwuH,kBACZxuH,EAAUwuH,iBAAiBlwB,YAAYt+F,GAGzCnD,KAAK+xH,UAAUlsB,OAAO5jG,EAAO,EAAGkB,GAChCA,EAAUwuH,iBAAmB3xH,KAED,oBAAjBmD,EAAU0X,KACnB7a,KAAKgyH,YAAY7uH,EAAU0X,MAAQ1X,GAKrCywH,EAAgBA,GAAiBzwH,EAAU3F,MAAQizH,GAActtH,EAAU3F,QAEvEo2H,IACF5zH,KAAKiyH,gBAAgB2B,GAAiBzwH,EACtCnD,KAAKiyH,gBAAgBt0H,GAAYi2H,IAAkBzwH,GAKzB,oBAAjBA,EAAUwP,IAAqBxP,EAAUwP,KAAM,CAExD,IAAIooG,EAAU,KAEV/6G,KAAK+xH,UAAU9vH,EAAQ,KAErBjC,KAAK+xH,UAAU9vH,EAAQ,GAAG8tH,IAC5BhV,EAAU/6G,KAAK+xH,UAAU9vH,EAAQ,GAAG8tH,IAC3B/K,GAAKhlH,KAAK+xH,UAAU9vH,EAAQ,MACrC84G,EAAU/6G,KAAK+xH,UAAU9vH,EAAQ,KAIrCjC,KAAKozH,YAAY1W,aAAav5G,EAAUwP,KAAMooG,GAIhD,OAAO53G,GAWTsiG,EAAOhE,YAAc,SAAqBt+F,GAKxC,GAJyB,kBAAdA,IACTA,EAAYnD,KAAKwzH,SAASrwH,IAGvBA,GAAcnD,KAAK+xH,UAAxB,CAMA,IAFA,IAAIkC,GAAa,EAERr5H,EAAIoF,KAAK+xH,UAAUn0H,OAAS,EAAGhD,GAAK,EAAGA,IAC9C,GAAIoF,KAAK+xH,UAAUn3H,KAAOuI,EAAW,CACnC8wH,GAAa,EACbj0H,KAAK+xH,UAAUlsB,OAAOjrG,EAAG,GACzB,MAIJ,GAAKq5H,EAAL,CAIA9wH,EAAUwuH,iBAAmB,KAC7B3xH,KAAKgyH,YAAY7uH,EAAU0X,MAAQ,KACnC7a,KAAKiyH,gBAAgBxB,GAActtH,EAAU3F,SAAW,KACxDwC,KAAKiyH,gBAAgBt0H,GAAYwF,EAAU3F,SAAW,KACtD,IAAI02H,EAAS/wH,EAAUwP,KAEnBuhH,GAAUA,EAAOpjG,aAAe9wB,KAAKozH,aACvCpzH,KAAKozH,YAAY3xB,YAAYt+F,EAAUwP,SAQ3C8yF,EAAO8sB,aAAe,WACpB,IAAIprB,EAASnnG,KAETszH,EAAWtzH,KAAK4xH,SAAS0B,SAE7B,GAAIA,EAAU,CAEZ,IAwCIa,EAxCAC,EAAgBp0H,KAAK4xH,SAErByC,EAAY,SAAmBjc,GACjC,IAAI56G,EAAO46G,EAAM56G,KACb6oB,EAAO+xF,EAAM/xF,KAUjB,QAN4B3b,IAAxB0pH,EAAc52H,KAChB6oB,EAAO+tG,EAAc52H,KAKV,IAAT6oB,EAAJ,EAMa,IAATA,IACFA,EAAO,IAMTA,EAAKiuG,cAAgBntB,EAAOyqB,SAAS0C,cAKrC,IAAIpc,EAAW/Q,EAAOwsB,SAASn2H,EAAM6oB,GAEjC6xF,IACF/Q,EAAO3pG,GAAQ06G,KAMfqc,EAAOhD,EAAUyC,aAAa,QAGhCG,EADEzzH,MAAMyI,QAAQmqH,GACEA,EAEAtsH,OAAO0K,KAAK4hH,GAGhCa,EAECxiH,OAAO3K,OAAO0K,KAAK1R,KAAK4xH,UAAU15G,QAAO,SAAUkgG,GAClD,OAAQ+b,EAAgBK,MAAK,SAAUC,GACrC,MAAsB,kBAAXA,EACFrc,IAAUqc,EAGZrc,IAAUqc,EAAOj3H,YAExBwB,KAAI,SAAUo5G,GAChB,IAAI56G,EACA6oB,EAUJ,MARqB,kBAAV+xF,GACT56G,EAAO46G,EACP/xF,EAAOitG,EAAS91H,IAAS2pG,EAAOyqB,SAASp0H,IAAS,KAElDA,EAAO46G,EAAM56G,KACb6oB,EAAO+xF,GAGF,CACL56G,KAAMA,EACN6oB,KAAMA,MAEPnO,QAAO,SAAUkgG,GAIlB,IAAIn5G,EAAIsyH,EAAUyC,aAAa5b,EAAM/xF,KAAKytG,gBAAkBrD,GAAcrY,EAAM56G,OAChF,OAAOyB,IAAMs1H,EAAKG,OAAOz1H,MACxB5B,QAAQg3H,KAaf5uB,EAAOkvB,cAAgB,WAGrB,MAAO,IAYTlvB,EAAO+rB,MAAQ,SAAeljG,EAAIriB,GAKhC,QAJa,IAATA,IACFA,GAAO,GAGJqiB,EAIL,OAAKtuB,KAAK40H,cAMN3oH,EACFqiB,EAAG1d,KAAK5Q,MAGRA,KAAKuK,WAAW+jB,EAAI,KATpBtuB,KAAK0yH,YAAc1yH,KAAK0yH,aAAe,QACvC1yH,KAAK0yH,YAAYz3H,KAAKqzB,KAkB1Bm3E,EAAOovB,aAAe,WACpB70H,KAAK40H,UAAW,EAEhB50H,KAAKuK,YAAW,WACd,IAAIuqH,EAAa90H,KAAK0yH,YAEtB1yH,KAAK0yH,YAAc,GAEfoC,GAAcA,EAAWl3H,OAAS,GACpCk3H,EAAWz3H,SAAQ,SAAUixB,GAC3BA,EAAG1d,KAAK5Q,QACPA,MAWLA,KAAK8lG,QAAQ,WACZ,IAsBLL,EAAO6iB,EAAI,SAAanD,EAAUC,GAChC,OAAOkD,GAAEnD,EAAUC,GAAWplH,KAAKozH,cAsBrC3tB,EAAO8iB,GAAK,SAAcpD,EAAUC,GAClC,OAAOmD,GAAGpD,EAAUC,GAAWplH,KAAKozH,cActC3tB,EAAOmgB,SAAW,SAAoBC,GACpC,OAAOD,GAAS5lH,KAAK+vH,IAAKlK,IAU5BpgB,EAAOugB,SAAW,SAAoBC,GACpCD,GAAShmH,KAAK+vH,IAAK9J,IAUrBxgB,EAAO0gB,YAAc,SAAuBC,GAC1CD,GAAYnmH,KAAK+vH,IAAK3J,IAexB3gB,EAAO4gB,YAAc,SAAuBC,EAAex9F,GACzDu9F,GAAYrmH,KAAK+vH,IAAKzJ,EAAex9F,IAQvC28E,EAAOsvB,KAAO,WACZ/0H,KAAKmmH,YAAY,eAQnB1gB,EAAOuvB,KAAO,WACZh1H,KAAKgmH,SAAS,eAUhBvgB,EAAOwvB,YAAc,WACnBj1H,KAAKgmH,SAAS,qBAUhBvgB,EAAOyvB,cAAgB,WACrBl1H,KAAKmmH,YAAY,qBAmBnB1gB,EAAO8X,aAAe,SAAwBqJ,GAC5C,OAAOrJ,GAAav9G,KAAK+vH,IAAKnJ,IAehCnhB,EAAO4Y,aAAe,SAAwBuI,EAAWx/G,GACvDi3G,GAAar+G,KAAK+vH,IAAKnJ,EAAWx/G,IAYpCq+F,EAAO6Y,gBAAkB,SAA2BsI,GAClDtI,GAAgBt+G,KAAK+vH,IAAKnJ,IAkB5BnhB,EAAOvkG,MAAQ,SAAe4hE,EAAKqyD,GACjC,OAAOn1H,KAAKo1H,UAAU,QAAStyD,EAAKqyD,IAkBtC1vB,EAAOtkG,OAAS,SAAgB2hE,EAAKqyD,GACnC,OAAOn1H,KAAKo1H,UAAU,SAAUtyD,EAAKqyD,IAavC1vB,EAAO4vB,WAAa,SAAoBn0H,EAAOC,GAE7CnB,KAAKkB,MAAMA,GAAO,GAClBlB,KAAKmB,OAAOA,IAgCdskG,EAAO2vB,UAAY,SAAmBE,EAAexyD,EAAKqyD,GACxD,QAAYzqH,IAARo4D,EA0BF,OAxBY,OAARA,GAAgBA,IAAQA,IAC1BA,EAAM,IAIyB,KAA5B,GAAKA,GAAK75D,QAAQ,OAA6C,KAA7B,GAAK65D,GAAK75D,QAAQ,MACvDjJ,KAAK+vH,IAAI3vH,MAAMk1H,GAAiBxyD,EAEhC9iE,KAAK+vH,IAAI3vH,MAAMk1H,GADE,SAARxyD,EACuB,GAEAA,EAAM,UAInCqyD,GAOHn1H,KAAK8lG,QAAQ,oBAQjB,IAAK9lG,KAAK+vH,IACR,OAAO,EAIT,IAAIvpG,EAAMxmB,KAAK+vH,IAAI3vH,MAAMk1H,GACrBC,EAAU/uG,EAAIvd,QAAQ,MAE1B,OAAiB,IAAbssH,EAEKthH,SAASuS,EAAIzpB,MAAM,EAAGw4H,GAAU,IAMlCthH,SAASjU,KAAK+vH,IAAI,SAAWU,GAAc6E,IAAiB,KAgBrE7vB,EAAO+vB,iBAAmB,SAA0BF,GAClD,IAAIG,EAAwB,EAE5B,GAAsB,UAAlBH,GAA+C,WAAlBA,EAC/B,MAAM,IAAItrH,MAAM,uDASlB,GANAyrH,EAAwB5S,GAAc7iH,KAAK+vH,IAAKuF,GAEhDG,EAAwBhzG,WAAWgzG,GAIL,IAA1BA,GAA+BlhH,MAAMkhH,GAAwB,CAC/D,IAAIC,EAAO,SAAWjF,GAAc6E,GACpCG,EAAwBz1H,KAAK+vH,IAAI2F,GAGnC,OAAOD,GA0BThwB,EAAOkwB,kBAAoB,WACzB,MAAO,CACLz0H,MAAOlB,KAAKw1H,iBAAiB,SAC7Br0H,OAAQnB,KAAKw1H,iBAAiB,YAalC/vB,EAAOmwB,aAAe,WACpB,OAAO51H,KAAKw1H,iBAAiB,UAY/B/vB,EAAOowB,cAAgB,WACrB,OAAO71H,KAAKw1H,iBAAiB,WAO/B/vB,EAAOqhB,MAAQ,WACb9mH,KAAK+vH,IAAIjJ,SAOXrhB,EAAOqwB,KAAO,WACZ91H,KAAK+vH,IAAI+F,QAWXrwB,EAAOswB,cAAgB,SAAuB7uB,GACxClnG,KAAKyxH,UAGF,IAAQzhB,WAAW9I,EAAO,QAC7BA,EAAMukB,kBAGRzrH,KAAKyxH,QAAQsE,cAAc7uB,KAc/BzB,EAAOuwB,eAAiB,SAAwB9uB,GAC9ClnG,KAAK+1H,cAAc7uB,IAiBrBzB,EAAOwwB,cAAgB,WAErB,IAQIC,EARAC,EAAa,EACbC,EAAa,KAIbC,EAAuB,GAEvBC,EAAqB,IAEzBt2H,KAAK0lG,GAAG,cAAc,SAAUwB,GAED,IAAzBA,EAAMqvB,QAAQ34H,SAEhBw4H,EAAa,CACXvO,MAAO3gB,EAAMqvB,QAAQ,GAAG1O,MACxBC,MAAO5gB,EAAMqvB,QAAQ,GAAGzO,OAG1BqO,EAAa,IAASnM,YAAYr0G,MAElCugH,GAAa,MAGjBl2H,KAAK0lG,GAAG,aAAa,SAAUwB,GAE7B,GAAIA,EAAMqvB,QAAQ34H,OAAS,EACzBs4H,GAAa,OACR,GAAIE,EAAY,CAGrB,IAAII,EAAQtvB,EAAMqvB,QAAQ,GAAG1O,MAAQuO,EAAWvO,MAC5C4O,EAAQvvB,EAAMqvB,QAAQ,GAAGzO,MAAQsO,EAAWtO,MAC5C4O,EAAgB3gH,KAAK4gH,KAAKH,EAAQA,EAAQC,EAAQA,GAElDC,EAAgBL,IAClBH,GAAa,OAKnB,IAAIU,EAAQ,WACVV,GAAa,GAIfl2H,KAAK0lG,GAAG,aAAckxB,GACtB52H,KAAK0lG,GAAG,cAAekxB,GAGvB52H,KAAK0lG,GAAG,YAAY,SAAUwB,GAG5B,GAFAkvB,EAAa,MAEM,IAAfF,EAAqB,CAEvB,IAAIW,EAAY,IAAS7M,YAAYr0G,MAAQwgH,EAEzCU,EAAYP,IAEdpvB,EAAMgkB,iBAQNlrH,KAAK8lG,QAAQ,aAgCrBL,EAAOgtB,oBAAsB,WAE3B,GAAKzyH,KAAK8B,UAAa9B,KAAK8B,SAASg1H,mBAArC,CAKA,IACIC,EADAzqB,EAASv+F,GAAK/N,KAAK8B,SAAU9B,KAAK8B,SAASg1H,oBAE/C92H,KAAK0lG,GAAG,cAAc,WACpB4G,IAIAtsG,KAAKg3H,cAAcD,GAEnBA,EAAe/2H,KAAKi3H,YAAY3qB,EAAQ,QAG1C,IAAI4qB,EAAW,SAAkBhwB,GAC/BoF,IAEAtsG,KAAKg3H,cAAcD,IAGrB/2H,KAAK0lG,GAAG,YAAa4G,GACrBtsG,KAAK0lG,GAAG,WAAYwxB,GACpBl3H,KAAK0lG,GAAG,cAAewxB,KAqCzBzxB,EAAOl7F,WAAa,SAAoB+jB,EAAIxhB,GAC1C,IAIIqqH,EAJA7uB,EAAStoG,KAeb,OAVAsuB,EAAKvgB,GAAK/N,KAAMsuB,GAChBtuB,KAAKo3H,wBACLD,EAAY,IAAS5sH,YAAW,WAC1B+9F,EAAO4pB,eAAe/mG,IAAIgsG,IAC5B7uB,EAAO4pB,eAAe,UAAUiF,GAGlC7oG,MACCxhB,GACH9M,KAAKkyH,eAAehM,IAAIiR,GACjBA,GAmBT1xB,EAAOt6F,aAAe,SAAsBgsH,GAM1C,OALIn3H,KAAKkyH,eAAe/mG,IAAIgsG,KAC1Bn3H,KAAKkyH,eAAe,UAAUiF,GAC9B,IAAShsH,aAAagsH,IAGjBA,GAwBT1xB,EAAOwxB,YAAc,SAAqB3oG,EAAI+oG,GAC5C/oG,EAAKvgB,GAAK/N,KAAMsuB,GAChBtuB,KAAKo3H,wBACL,IAAIE,EAAa,IAASL,YAAY3oG,EAAI+oG,GAE1C,OADAr3H,KAAKmyH,gBAAgBjM,IAAIoR,GAClBA,GAmBT7xB,EAAOuxB,cAAgB,SAAuBM,GAM5C,OALIt3H,KAAKmyH,gBAAgBhnG,IAAImsG,KAC3Bt3H,KAAKmyH,gBAAgB,UAAUmF,GAC/B,IAASN,cAAcM,IAGlBA,GA6BT7xB,EAAO8xB,sBAAwB,SAA+BjpG,GAC5D,IAUIzT,EAVA28G,EAASx3H,KAGb,OAAKA,KAAKy3H,cAIVz3H,KAAKo3H,wBAIL9oG,EAAKvgB,GAAK/N,KAAMsuB,GAChBzT,EAAK,IAAS08G,uBAAsB,WAC9BC,EAAOpF,QAAQjnG,IAAItQ,IACrB28G,EAAOpF,QAAQ,UAAUv3G,GAG3ByT,OAEFtuB,KAAKoyH,QAAQlM,IAAIrrG,GACVA,GAhBE7a,KAAKuK,WAAW+jB,EAAI,IAAO,KAgCtCm3E,EAAOiyB,2BAA6B,SAAoCl6H,EAAM8wB,GAC5E,IAAIqpG,EAAS33H,KAEb,IAAIA,KAAKqyH,WAAWlnG,IAAI3tB,GAAxB,CAIAwC,KAAKo3H,wBACL9oG,EAAKvgB,GAAK/N,KAAMsuB,GAChB,IAAIzT,EAAK7a,KAAKu3H,uBAAsB,WAClCjpG,IAEIqpG,EAAOtF,WAAWlnG,IAAI3tB,IACxBm6H,EAAOtF,WAAW,UAAU70H,MAIhC,OADAwC,KAAKqyH,WAAWhnG,IAAI7tB,EAAMqd,GACnBrd,IAUTioG,EAAOmyB,0BAA4B,SAAmCp6H,GAC/DwC,KAAKqyH,WAAWlnG,IAAI3tB,KAIzBwC,KAAK63H,qBAAqB73H,KAAKqyH,WAAWjnG,IAAI5tB,IAC9CwC,KAAKqyH,WAAW,UAAU70H,KAoB5BioG,EAAOoyB,qBAAuB,SAA8Bh9G,GAE1D,OAAK7a,KAAKy3H,cAINz3H,KAAKoyH,QAAQjnG,IAAItQ,KACnB7a,KAAKoyH,QAAQ,UAAUv3G,GACvB,IAASg9G,qBAAqBh9G,IAGzBA,GARE7a,KAAKmL,aAAa0P,IAsB7B4qF,EAAO2xB,sBAAwB,WAC7B,IAAIU,EAAS93H,KAETA,KAAKsyH,2BAITtyH,KAAKsyH,0BAA2B,EAChCtyH,KAAK6sH,IAAI,WAAW,WAClB,CAAC,CAAC,aAAc,6BAA8B,CAAC,UAAW,wBAAyB,CAAC,iBAAkB,gBAAiB,CAAC,kBAAmB,kBAAkBxvH,SAAQ,SAAU+V,GAC7K,IAAI2kH,EAAS3kH,EAAK,GACd4kH,EAAa5kH,EAAK,GAKtB0kH,EAAOC,GAAQ16H,SAAQ,SAAUmpB,EAAKtd,GACpC,OAAO4uH,EAAOE,GAAY9uH,SAG9B4uH,EAAOxF,0BAA2B,OAwBtCf,EAAU0G,kBAAoB,SAA2Bz6H,EAAM06H,GAC7D,GAAoB,kBAAT16H,IAAsBA,EAC/B,MAAM,IAAIwM,MAAM,4BAA+BxM,EAAO,kCAGxD,IAMM26H,EANF5D,EAAOhD,EAAUyC,aAAa,QAE9BU,EAASH,GAAQA,EAAKG,OAAOwD,GAC7BE,EAAS7G,IAAc2G,GAAuB3G,EAAU9pH,UAAU4wH,cAAcH,EAAoBzwH,WAExG,GAAIitH,IAAW0D,EASb,MALED,EADEzD,EACO,qDAEA,+BAGL,IAAI1qH,MAAM,uBAA0BxM,EAAO,MAAS26H,EAAS,KAGrE36H,EAAOizH,GAAcjzH,GAEhB+zH,EAAU+G,cACb/G,EAAU+G,YAAc,IAG1B,IAAIC,EAAShH,EAAUyC,aAAa,UAEpC,GAAa,WAATx2H,GAAqB+6H,GAAUA,EAAOC,QAAS,CACjD,IAAIA,EAAUD,EAAOC,QACjBC,EAAczxH,OAAO0K,KAAK8mH,GAK9B,GAAIA,GAAWC,EAAY76H,OAAS,GAAK66H,EAAYz5H,KAAI,SAAU05H,GACjE,OAAOF,EAAQE,MACdv5H,MAAM2B,SACP,MAAM,IAAIkJ,MAAM,oEAMpB,OAFAunH,EAAU+G,YAAY96H,GAAQ06H,EAC9B3G,EAAU+G,YAAY36H,GAAYH,IAAS06H,EACpCA,GAaT3G,EAAUyC,aAAe,SAAsBx2H,GAC7C,GAAKA,GAAS+zH,EAAU+G,YAIxB,OAAO/G,EAAU+G,YAAY96H,IAGxB+zH,EAvtDsB,GA2xD/B,SAASoH,GAAWhK,EAAQ1sH,EAAO22H,GACjC,GAAqB,kBAAV32H,GAAsBA,EAAQ,GAAKA,EAAQ22H,EACpD,MAAM,IAAI5uH,MAAM,sBAAwB2kH,EAAS,0CAA4C1sH,EAAQ,wCAA0C22H,EAAW,MA6B9J,SAASC,GAASlK,EAAQmK,EAAYhlH,EAAQilH,GAE5C,OADAJ,GAAWhK,EAAQoK,EAAYjlH,EAAOlW,OAAS,GACxCkW,EAAOilH,GAAYD,GAW5B,SAASE,GAAoBllH,GAC3B,IAAImlH,EA0BJ,OAvBEA,OADavuH,IAAXoJ,GAA0C,IAAlBA,EAAOlW,OACjB,CACdA,OAAQ,EACRkU,MAAO,WACL,MAAM,IAAI9H,MAAM,oCAElB+H,IAAK,WACH,MAAM,IAAI/H,MAAM,qCAIJ,CACdpM,OAAQkW,EAAOlW,OACfkU,MAAO+mH,GAAS9qH,KAAK,KAAM,QAAS,EAAG+F,GACvC/B,IAAK8mH,GAAS9qH,KAAK,KAAM,MAAO,EAAG+F,IAInC,IAASolH,QAAU,IAASA,OAAO5vH,WACrC2vH,EAAc,IAASC,OAAO5vH,UAAY,WACxC,OAAQwK,GAAU,IAAIlC,WAInBqnH,EAgBT,SAASE,GAAiBrnH,EAAOC,GAC/B,OAAIrR,MAAMyI,QAAQ2I,GACTknH,GAAoBlnH,QACRpH,IAAVoH,QAA+BpH,IAARqH,EACzBinH,KAGFA,GAAoB,CAAC,CAAClnH,EAAOC,KAoBtC,SAASqnH,GAAgBC,EAAU3kH,GACjC,IACI5C,EACAC,EAFAunH,EAAmB,EAIvB,IAAK5kH,EACH,OAAO,EAGJ2kH,GAAaA,EAASz7H,SACzBy7H,EAAWF,GAAiB,EAAG,IAGjC,IAAK,IAAIv+H,EAAI,EAAGA,EAAIy+H,EAASz7H,OAAQhD,IACnCkX,EAAQunH,EAASvnH,MAAMlX,GACvBmX,EAAMsnH,EAAStnH,IAAInX,GAEfmX,EAAM2C,IACR3C,EAAM2C,GAGR4kH,GAAoBvnH,EAAMD,EAG5B,OAAOwnH,EAAmB5kH,EAwB5B,SAAS6kH,GAAWnyH,GAGlB,GAAIA,aAAiBmyH,GACnB,OAAOnyH,EAGY,kBAAVA,EACTpH,KAAKgN,KAAO5F,EACc,kBAAVA,EAEhBpH,KAAK63F,QAAUzwF,EACN8J,GAAS9J,KAGQ,kBAAfA,EAAM4F,OACfhN,KAAKgN,KAAO5F,EAAM4F,MAGpBoc,GAAOppB,KAAMoH,IAGVpH,KAAK63F,UACR73F,KAAK63F,QAAU0hC,GAAWC,gBAAgBx5H,KAAKgN,OAAS,IAjP5DskH,GAAY7pH,UAAUgwH,aAAyD,oBAAnC,IAASF,uBAAiF,oBAAlC,IAASM,qBAC7GvG,GAAY2G,kBAAkB,YAAa3G,IA0P3CiI,GAAW9xH,UAAUuF,KAAO,EAQ5BusH,GAAW9xH,UAAUowF,QAAU,GAW/B0hC,GAAW9xH,UAAU+D,OAAS,KAe9B+tH,GAAWE,WAAa,CAAC,mBAAoB,oBAAqB,oBAAqB,mBAAoB,8BAA+B,uBAQ1IF,GAAWC,gBAAkB,CAC3BE,EAAG,iCACHC,EAAG,8DACHC,EAAG,8HACHC,EAAG,qHACHC,EAAG,qEAIL,IAAK,IAAIC,GAAS,EAAGA,GAASR,GAAWE,WAAW77H,OAAQm8H,KAC1DR,GAAWA,GAAWE,WAAWM,KAAWA,GAE5CR,GAAW9xH,UAAU8xH,GAAWE,WAAWM,KAAWA,GAYxD,SAASC,GAAU5yH,GACjB,YAAiBsD,IAAVtD,GAAiC,OAAVA,GAAwC,oBAAfA,EAAM1E,KAY/D,SAASu3H,GAAe7yH,GAClB4yH,GAAU5yH,IACZA,EAAM1E,KAAK,MAAM,SAAUsI,OAsB/B,IAAIkvH,GAAe,SAAsBl9B,GACvC,IAAI6D,EAAM,CAAC,OAAQ,QAAS,WAAY,KAAM,kCAAmC,OAAQ,OAAOrvF,QAAO,SAAUkB,EAAKg7D,EAAM9yE,GAK1H,OAJIoiG,EAAMtvB,KACRh7D,EAAIg7D,GAAQsvB,EAAMtvB,IAGbh7D,IACN,CACD4uF,KAAMtE,EAAMsE,MAAQ5gG,MAAM+G,UAAUzI,IAAI4R,KAAKosF,EAAMsE,MAAM,SAAU7I,GACjE,MAAO,CACL3sE,UAAW2sE,EAAI3sE,UACfC,QAAS0sE,EAAI1sE,QACb/vB,KAAMy8F,EAAIz8F,KACV6e,GAAI49E,EAAI59E,SAId,OAAOgmF,GAgBLs5B,GAAmB,SAA0BC,GAC/C,IAAIC,EAAWD,EAAK7R,GAAG,SACnB+R,EAAY55H,MAAM+G,UAAUzI,IAAI4R,KAAKypH,GAAU,SAAUv2H,GAC3D,OAAOA,EAAEk5F,SAEPu9B,EAAS75H,MAAM+G,UAAUzI,IAAI4R,KAAKypH,GAAU,SAAUG,GACxD,IAAItuH,EAAOguH,GAAaM,EAAQx9B,OAMhC,OAJIw9B,EAAQrmB,MACVjoG,EAAKioG,IAAMqmB,EAAQrmB,KAGdjoG,KAET,OAAOquH,EAAO5oH,OAAOjR,MAAM+G,UAAUyQ,OAAOtH,KAAKwpH,EAAKK,cAAc,SAAUz9B,GAC5E,OAAqC,IAA9Bs9B,EAAUrxH,QAAQ+zF,MACxBh+F,IAAIk7H,MAeLQ,GAAmB,SAA0BxuH,EAAMkuH,GAUrD,OATAluH,EAAK7O,SAAQ,SAAU2/F,GACrB,IAAI29B,EAAaP,EAAKQ,mBAAmB59B,GAAOA,OAE3CA,EAAMmX,KAAOnX,EAAMsE,MACtBtE,EAAMsE,KAAKjkG,SAAQ,SAAUo7F,GAC3B,OAAOkiC,EAAWE,OAAOpiC,SAIxB2hC,EAAKK,cAGVK,GAAqB,CACvBX,iBAAkBA,GAClBO,iBAAkBA,GAClBR,aAAcA,IAGZa,GAAmB,mBAWnBC,GAA2B,SAAUC,GAuCvC,SAASD,EAAYl5H,EAAQ8H,GAC3B,IAAI28F,EAoCJ,OAlCAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAElDumG,EAAM20B,eAAiB,SAAUlwH,GAC/B,OAAOu7F,EAAMwvB,cAAc/qH,IAG7Bu7F,EAAM40B,OAAS,SAAUnwH,GACvB,OAAOu7F,EAAM60B,MAAMpwH,IAGrBu7F,EAAM80B,QAAU90B,EAAM+0B,eAAiB/0B,EAAMg1B,gBAAiB,EAE9Dh1B,EAAMi1B,WAAWj1B,EAAMqrB,SAAS6J,aAEhCl1B,EAAMif,QAAQjf,EAAMqrB,SAASpM,SAK7Bjf,EAAM8sB,WAAa9N,GAAS,MAAO,CACjCnpB,UAAW2+B,GAAmB,YAC7B,CACD5+G,KAAM,aAERoqF,EAAMm1B,QAAUnW,GAAS,IAAK,CAC5BnpB,UAAW2+B,GAAmB,gCAC9BlgH,GAAI0rF,EAAM5zF,KAAK4qG,aAAa,sBAE9Bh7F,GAAYgkF,EAAMm1B,QAASn1B,EAAMo1B,eAEjCp1B,EAAMwpB,IAAI3gG,YAAYm3E,EAAMm1B,SAE5Bn1B,EAAMwpB,IAAI3gG,YAAYm3E,EAAM8sB,YAErB9sB,EA3ET,IAAey0B,EAAaC,GAqF5B,IAAIx1B,EAASu1B,EAAYvzH,UAoazB,OAlaAg+F,EAAO8f,SAAW,WAChB,OAAO0V,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAWp8F,KAAK20H,gBAChBiH,UAAW,GACV,CACD,mBAAoB57H,KAAK6a,KAAO,eAChC,cAAe,OACf,aAAc7a,KAAKoZ,QACnB,KAAQ,YAIZqsF,EAAOS,QAAU,WACflmG,KAAKqzH,WAAa,KAClBrzH,KAAK07H,QAAU,KACf17H,KAAK67H,oBAAsB,KAE3BZ,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAUpCylG,EAAOkvB,cAAgB,WACrB,OAAOoG,GAAmB,eAAiBE,EAAWxzH,UAAUktH,cAAc/jH,KAAK5Q,OAUrFylG,EAAOrsF,MAAQ,WACb,OAAOpZ,KAAK6yH,SAAS7yH,KAAK4xH,SAASx4G,OAAS,iBAW9CqsF,EAAOk2B,YAAc,WACnB,IAAIG,EAAO97H,KAAK4xH,SAAS+J,aAAe37H,KAAK6yH,SAAS,2BAMtD,OAJI7yH,KAAKw7H,cACPM,GAAQ,IAAM97H,KAAK6yH,SAAS,wFAGvBiJ,GAUTr2B,EAAO/4F,KAAO,WACZ,IAAK1M,KAAKq7H,QAAS,CACjB,IAAIv5H,EAAS9B,KAAK8B,SAQlB9B,KAAK8lG,QAAQ,mBACb9lG,KAAKq7H,SAAU,GAGXr7H,KAAK4xH,SAASmK,aAAe/7H,KAAKs7H,iBAAmBt7H,KAAKu7H,iBAC5Dv7H,KAAKg8H,OAKPh8H,KAAKi8H,aAAen6H,EAAOo6H,SAEvBl8H,KAAK4xH,SAASuK,aAAen8H,KAAKi8H,aACpCn6H,EAAOO,QAGTrC,KAAK0lG,GAAG,UAAW1lG,KAAKk7H,gBAExBl7H,KAAKo8H,aAAet6H,EAAOu6H,WAC3Bv6H,EAAOu6H,UAAS,GAChBr8H,KAAK+0H,OACL/0H,KAAKs8H,oBACLt8H,KAAK2S,KAAK0rG,aAAa,cAAe,SAQtCr+G,KAAK8lG,QAAQ,aACb9lG,KAAKs7H,gBAAiB,IAc1B71B,EAAO82B,OAAS,SAAgBn1H,GAK9B,MAJqB,mBAAVA,GACTpH,KAAKoH,EAAQ,OAAS,WAGjBpH,KAAKq7H,SAWd51B,EAAO21B,MAAQ,WACb,GAAKp7H,KAAKq7H,QAAV,CAIA,IAAIv5H,EAAS9B,KAAK8B,SAQlB9B,KAAK8lG,QAAQ,oBACb9lG,KAAKq7H,SAAU,EAEXr7H,KAAKi8H,aAAej8H,KAAK4xH,SAASuK,aACpCr6H,EAAOM,OAGTpC,KAAK4lG,IAAI,UAAW5lG,KAAKk7H,gBAErBl7H,KAAKo8H,cACPt6H,EAAOu6H,UAAS,GAGlBr8H,KAAKg1H,OACLh1H,KAAK2S,KAAK0rG,aAAa,cAAe,QAQtCr+G,KAAK8lG,QAAQ,cACb9lG,KAAKw8H,mBAEDx8H,KAAK4xH,SAAS6K,WAChBz8H,KAAKkmG,YAcTT,EAAO+1B,UAAY,SAAmBp0H,GACpC,GAAqB,mBAAVA,EAAqB,CAC9B,IAAIo0H,EAAYx7H,KAAK08H,aAAet1H,EAChCg0H,EAAQp7H,KAAKwzH,SAAS,eAE1B,GAAIgI,IAAcJ,EAAO,CAGvB,IAAIuB,EAAO38H,KAAKqzH,WAChBrzH,KAAKqzH,WAAarzH,KAAK+vH,IACvBqL,EAAQp7H,KAAK2zH,SAAS,cAAe,CACnCiJ,YAAa,uBAEf58H,KAAKqzH,WAAasJ,EAClB38H,KAAK0lG,GAAG01B,EAAO,QAASp7H,KAAKm7H,SAI1BK,GAAaJ,IAChBp7H,KAAK4lG,IAAIw1B,EAAO,QAASp7H,KAAKm7H,QAC9Bn7H,KAAKyhG,YAAY25B,GACjBA,EAAMl1B,WAIV,OAAOlmG,KAAK08H,YAQdj3B,EAAOu2B,KAAO,WACZh8H,KAAK68H,SAAS78H,KAAKwlH,YAcrB/f,EAAOo3B,SAAW,SAAkBrX,GAClC,IAAI4N,EAAYpzH,KAAKozH,YACjB0J,EAAW1J,EAAUtiG,WACrBisG,EAAgB3J,EAAUvb,YAQ9B73G,KAAK8lG,QAAQ,mBACb9lG,KAAKu7H,gBAAiB,EAGtBuB,EAASr7B,YAAY2xB,GACrBpzH,KAAKuxC,QACL02E,GAAcmL,EAAW5N,GAQzBxlH,KAAK8lG,QAAQ,aAETi3B,EACFD,EAASpgB,aAAa0W,EAAW2J,GAEjCD,EAAS1tG,YAAYgkG,GAIvB,IAAI4J,EAAch9H,KAAKwzH,SAAS,eAE5BwJ,GACFF,EAAS1tG,YAAY4tG,EAAYjN,MAWrCtqB,EAAOl0D,MAAQ,WAObvxC,KAAK8lG,QAAQ,oBACbiiB,GAAQ/nH,KAAKozH,aAQbpzH,KAAK8lG,QAAQ,eAmBfL,EAAO+f,QAAU,SAAiBp+G,GAKhC,MAJqB,qBAAVA,IACTpH,KAAKi9H,SAAW71H,GAGXpH,KAAKi9H,UASdx3B,EAAO62B,kBAAoB,WACzB,IAAIY,EAAW,IAASC,cACpBC,EAAWp9H,KAAKyxH,QAAQ1B,IAC5B/vH,KAAK67H,oBAAsB,MAEvBuB,EAASrX,SAASmX,IAAaE,IAAaF,KAC9Cl9H,KAAK67H,oBAAsBqB,EAC3Bl9H,KAAK8mH,UAUTrhB,EAAO+2B,iBAAmB,WACpBx8H,KAAK67H,sBACP77H,KAAK67H,oBAAoB/U,QACzB9mH,KAAK67H,oBAAsB,OAU/Bp2B,EAAOswB,cAAgB,SAAuB7uB,GAI5C,GAFAA,EAAMukB,kBAEF,IAAQzb,WAAW9I,EAAO,WAAalnG,KAAKw7H,YAG9C,OAFAt0B,EAAMgkB,sBACNlrH,KAAKo7H,QAKP,GAAK,IAAQprB,WAAW9I,EAAO,OAA/B,CAQA,IAJA,IAEIm2B,EAFAC,EAAet9H,KAAKu9H,gBACpBL,EAAWl9H,KAAK+vH,IAAI1K,cAAc,UAG7BzqH,EAAI,EAAGA,EAAI0iI,EAAa1/H,OAAQhD,IACvC,GAAIsiI,IAAaI,EAAa1iI,GAAI,CAChCyiI,EAAaziI,EACb,MAIA,IAASuiI,gBAAkBn9H,KAAK+vH,MAClCsN,EAAa,GAGXn2B,EAAMs2B,UAA2B,IAAfH,GACpBC,EAAaA,EAAa1/H,OAAS,GAAGkpH,QACtC5f,EAAMgkB,kBACIhkB,EAAMs2B,UAAYH,IAAeC,EAAa1/H,OAAS,IACjE0/H,EAAa,GAAGxW,QAChB5f,EAAMgkB,oBAUVzlB,EAAO83B,cAAgB,WACrB,IAAIE,EAAcz9H,KAAK+vH,IAAI2N,iBAAiB,KAC5C,OAAOh9H,MAAM+G,UAAUyQ,OAAOtH,KAAK6sH,GAAa,SAAUrlB,GACxD,OAAQA,aAAiB,IAASulB,mBAAqBvlB,aAAiB,IAASwlB,kBAAoBxlB,EAAM+F,aAAa,UAAY/F,aAAiB,IAASylB,kBAAoBzlB,aAAiB,IAAS0lB,mBAAqB1lB,aAAiB,IAAS2lB,qBAAuB3lB,aAAiB,IAAS4lB,qBAAuB5lB,EAAM+F,aAAa,aAAe/F,aAAiB,IAAS6lB,mBAAqB7lB,aAAiB,IAAS8lB,mBAAqB9lB,aAAiB,IAAS+lB,kBAAoB/lB,EAAM+F,aAAa,cAAmD,IAApC/F,EAAMmF,aAAa,aAAsBnF,EAAM+F,aAAa,uBAI5kB6c,EA1fsB,CA2f7B1J,IASF0J,GAAYvzH,UAAUmqH,SAAW,CAC/BuK,aAAa,EACbM,WAAW,GAEbnL,GAAY2G,kBAAkB,cAAe+C,IAS7C,IAAIoD,GAAyB,SAAUC,GAWrC,SAASD,EAAU7D,GACjB,IAAIh0B,OAEW,IAAXg0B,IACFA,EAAS,IAGXh0B,EAAQ83B,EAAaztH,KAAK5Q,OAASA,KACnCumG,EAAM+3B,QAAU,GAQhBt3H,OAAOC,eAAe,IAAuBs/F,GAAQ,SAAU,CAC7Dn7E,IAAK,WACH,OAAOprB,KAAKs+H,QAAQ1gI,UAIxB,IAAK,IAAIhD,EAAI,EAAGA,EAAI2/H,EAAO38H,OAAQhD,IACjC2rG,EAAMg4B,SAAShE,EAAO3/H,IAGxB,OAAO2rG,EApCT,IAAe63B,EAAWC,GAgD1B,IAAI54B,EAAS24B,EAAU32H,UA6HvB,OA3HAg+F,EAAO84B,SAAW,SAAkBvhC,GAClC,IAAImK,EAASnnG,KAETiC,EAAQjC,KAAKs+H,QAAQ1gI,OAEnB,GAAKqE,KAASjC,MAClBgH,OAAOC,eAAejH,KAAMiC,EAAO,CACjCmpB,IAAK,WACH,OAAOprB,KAAKs+H,QAAQr8H,OAMW,IAAjCjC,KAAKs+H,QAAQr1H,QAAQ+zF,KACvBh9F,KAAKs+H,QAAQrjI,KAAK+hG,GAUlBh9F,KAAK8lG,QAAQ,CACX9I,MAAOA,EACPn/F,KAAM,WACNwrB,OAAQrpB,QAaZg9F,EAAMwhC,aAAe,WACnBr3B,EAAOrB,QAAQ,CACb9I,MAAOA,EACPn/F,KAAM,cACNwrB,OAAQ89E,KAIRknB,GAAUrxB,IACZA,EAAMqsB,iBAAiB,cAAersB,EAAMwhC,eAahD/4B,EAAOg5B,YAAc,SAAqBC,GAGxC,IAFA,IAAI1hC,EAEKpiG,EAAI,EAAGmJ,EAAI/D,KAAKpC,OAAQhD,EAAImJ,EAAGnJ,IACtC,GAAIoF,KAAKpF,KAAO8jI,EAAQ,CACtB1hC,EAAQh9F,KAAKpF,GAEToiG,EAAM4I,KACR5I,EAAM4I,MAGR5lG,KAAKs+H,QAAQz4B,OAAOjrG,EAAG,GACvB,MAICoiG,GAaLh9F,KAAK8lG,QAAQ,CACX9I,MAAOA,EACPn/F,KAAM,cACNwrB,OAAQrpB,QAaZylG,EAAOk5B,aAAe,SAAsB9jH,GAG1C,IAFA,IAAI1gB,EAAS,KAEJS,EAAI,EAAGmJ,EAAI/D,KAAKpC,OAAQhD,EAAImJ,EAAGnJ,IAAK,CAC3C,IAAIoiG,EAAQh9F,KAAKpF,GAEjB,GAAIoiG,EAAMniF,KAAOA,EAAI,CACnB1gB,EAAS6iG,EACT,OAIJ,OAAO7iG,GAGFikI,EA9KoB,CA+K3BvQ,IAuBF,IAAK,IAAI3mB,MAPTk3B,GAAU32H,UAAUqmH,eAAiB,CACnC8Q,OAAQ,SACRC,SAAU,WACVC,YAAa,cACbC,YAAa,eAGGX,GAAU32H,UAAUqmH,eACpCsQ,GAAU32H,UAAU,KAAOy/F,IAAS,KAgBtC,IAAI83B,GAAkB,SAAuB5sH,EAAM4qF,GACjD,IAAK,IAAIpiG,EAAI,EAAGA,EAAIwX,EAAKxU,OAAQhD,IAC1BoM,OAAO0K,KAAKU,EAAKxX,IAAIgD,QAAUo/F,EAAMniF,KAAOzI,EAAKxX,GAAGigB,KAKzDzI,EAAKxX,GAAGqkI,SAAU,IAWlBC,GAA8B,SAAUC,GAS1C,SAASD,EAAe3E,GACtB,IAAIh0B,OAEW,IAAXg0B,IACFA,EAAS,IAKX,IAAK,IAAI3/H,EAAI2/H,EAAO38H,OAAS,EAAGhD,GAAK,EAAGA,IACtC,GAAI2/H,EAAO3/H,GAAGqkI,QAAS,CACrBD,GAAgBzE,EAAQA,EAAO3/H,IAC/B,MAMJ,OAFA2rG,EAAQ44B,EAAWvuH,KAAK5Q,KAAMu6H,IAAWv6H,KACzCumG,EAAM64B,WAAY,EACX74B,EA1BT,IAAe24B,EAAgBC,GAsC/B,IAAI15B,EAASy5B,EAAez3H,UAgD5B,OA9CAg+F,EAAO84B,SAAW,SAAkBvhC,GAClC,IAAImK,EAASnnG,KAETg9F,EAAMiiC,SACRD,GAAgBh/H,KAAMg9F,GAGxBmiC,EAAW13H,UAAU82H,SAAS3tH,KAAK5Q,KAAMg9F,GAGpCA,EAAMqsB,mBAIXrsB,EAAMqiC,eAAiB,WAIjBl4B,EAAOi4B,YAIXj4B,EAAOi4B,WAAY,EACnBJ,GAAgB73B,EAAQnK,GACxBmK,EAAOi4B,WAAY,EAEnBj4B,EAAOrB,QAAQ,YAQjB9I,EAAMqsB,iBAAiB,gBAAiBrsB,EAAMqiC,kBAGhD55B,EAAOg5B,YAAc,SAAqBC,GACxCS,EAAW13H,UAAUg3H,YAAY7tH,KAAK5Q,KAAM0+H,GAExCA,EAAOtV,qBAAuBsV,EAAOW,iBACvCX,EAAOtV,oBAAoB,gBAAiBsV,EAAOW,gBACnDX,EAAOW,eAAiB,OAIrBH,EAvFyB,CAwFhCd,IAcEkB,GAAgB,SAAuBltH,EAAM4qF,GAC/C,IAAK,IAAIpiG,EAAI,EAAGA,EAAIwX,EAAKxU,OAAQhD,IAC1BoM,OAAO0K,KAAKU,EAAKxX,IAAIgD,QAAUo/F,EAAMniF,KAAOzI,EAAKxX,GAAGigB,KAKzDzI,EAAKxX,GAAG2kI,UAAW,IAWnBC,GAA8B,SAAUL,GAS1C,SAASK,EAAejF,GACtB,IAAIh0B,OAEW,IAAXg0B,IACFA,EAAS,IAKX,IAAK,IAAI3/H,EAAI2/H,EAAO38H,OAAS,EAAGhD,GAAK,EAAGA,IACtC,GAAI2/H,EAAO3/H,GAAG2kI,SAAU,CACtBD,GAAc/E,EAAQA,EAAO3/H,IAC7B,MAuBJ,OAnBA2rG,EAAQ44B,EAAWvuH,KAAK5Q,KAAMu6H,IAAWv6H,KACzCumG,EAAM64B,WAAY,EAMlBp4H,OAAOC,eAAe,IAAuBs/F,GAAQ,gBAAiB,CACpEn7E,IAAK,WACH,IAAK,IAAI66E,EAAK,EAAGA,EAAKjmG,KAAKpC,OAAQqoG,IACjC,GAAIjmG,KAAKimG,GAAIs5B,SACX,OAAOt5B,EAIX,OAAQ,GAEV56E,IAAK,eAEAk7E,EA3CT,IAAei5B,EAAgBL,GAuD/B,IAAI15B,EAAS+5B,EAAe/3H,UA6C5B,OA3CAg+F,EAAO84B,SAAW,SAAkBvhC,GAClC,IAAImK,EAASnnG,KAETg9F,EAAMuiC,UACRD,GAAct/H,KAAMg9F,GAGtBmiC,EAAW13H,UAAU82H,SAAS3tH,KAAK5Q,KAAMg9F,GAGpCA,EAAMqsB,mBAIXrsB,EAAMyiC,gBAAkB,WAClBt4B,EAAOi4B,YAIXj4B,EAAOi4B,WAAY,EACnBE,GAAcn4B,EAAQnK,GACtBmK,EAAOi4B,WAAY,EAEnBj4B,EAAOrB,QAAQ,YAQjB9I,EAAMqsB,iBAAiB,iBAAkBrsB,EAAMyiC,mBAGjDh6B,EAAOg5B,YAAc,SAAqBC,GACxCS,EAAW13H,UAAUg3H,YAAY7tH,KAAK5Q,KAAM0+H,GAExCA,EAAOtV,qBAAuBsV,EAAOe,kBACvCf,EAAOtV,oBAAoB,iBAAkBsV,EAAOe,iBACpDf,EAAOe,gBAAkB,OAItBD,EArGyB,CAsGhCpB,IASEsB,GAA6B,SAAUP,GAGzC,SAASO,IACP,OAAOP,EAAWnkH,MAAMhb,KAAMqR,YAAcrR,KAH9C,IAAe0/H,EAAeP,GAM9B,IAAI15B,EAASi6B,EAAcj4H,UAuD3B,OA7CAg+F,EAAO84B,SAAW,SAAkBvhC,GAClC,IAAIuJ,EAAQvmG,KAEZm/H,EAAW13H,UAAU82H,SAAS3tH,KAAK5Q,KAAMg9F,GAEpCh9F,KAAK2/H,eACR3/H,KAAK2/H,aAAe,WAClB,OAAOp5B,EAAM0nB,aAAa,YAIzBjuH,KAAK4/H,gCACR5/H,KAAK6/H,+BAAiC,WACpC,OAAOt5B,EAAMT,QAAQ,4BASzB9I,EAAMqsB,iBAAiB,aAAcrpH,KAAK2/H,cAC1C,IAAIG,EAA2B,CAAC,WAAY,aAEU,IAAlDA,EAAyB72H,QAAQ+zF,EAAM+iC,OACzC/iC,EAAMqsB,iBAAiB,aAAcrpH,KAAK6/H,iCAI9Cp6B,EAAOg5B,YAAc,SAAqBC,GACxCS,EAAW13H,UAAUg3H,YAAY7tH,KAAK5Q,KAAM0+H,GAGxCA,EAAOtV,sBACLppH,KAAK2/H,cACPjB,EAAOtV,oBAAoB,aAAcppH,KAAK2/H,cAG5C3/H,KAAKggI,yBACPtB,EAAOtV,oBAAoB,aAAcppH,KAAK6/H,kCAK7CH,EA9DwB,CA+D/BtB,IASE6B,GAAoC,WAOtC,SAASA,EAAqBC,QACN,IAAlBA,IACFA,EAAgB,IAGlBlgI,KAAKmgI,eAAiB,GAQtBn5H,OAAOC,eAAejH,KAAM,SAAU,CACpCorB,IAAK,WACH,OAAOprB,KAAKmgI,eAAeviI,UAI/B,IAAK,IAAIhD,EAAI,EAAGgD,EAASsiI,EAActiI,OAAQhD,EAAIgD,EAAQhD,IACzDoF,KAAKogI,iBAAiBF,EAActlI,IAaxC,IAAI6qG,EAASw6B,EAAqBx4H,UAuElC,OArEAg+F,EAAO26B,iBAAmB,SAA0BC,GAClD,IAAIp+H,EAAQjC,KAAKmgI,eAAeviI,OAE1B,GAAKqE,KAASjC,MAClBgH,OAAOC,eAAejH,KAAMiC,EAAO,CACjCmpB,IAAK,WACH,OAAOprB,KAAKmgI,eAAel+H,OAMkB,IAA/CjC,KAAKmgI,eAAel3H,QAAQo3H,IAC9BrgI,KAAKmgI,eAAellI,KAAKolI,IAiB7B56B,EAAO66B,wBAA0B,SAAiCtjC,GAGhE,IAFA,IAAIujC,EAEK3lI,EAAI,EAAGgD,EAASoC,KAAKmgI,eAAeviI,OAAQhD,EAAIgD,EAAQhD,IAC/D,GAAIoiG,IAAUh9F,KAAKmgI,eAAevlI,GAAGoiG,MAAO,CAC1CujC,EAAgBvgI,KAAKmgI,eAAevlI,GACpC,MAIJ,OAAO2lI,GAYT96B,EAAO+6B,oBAAsB,SAA6BH,GACxD,IAAK,IAAIzlI,EAAI,EAAGgD,EAASoC,KAAKmgI,eAAeviI,OAAQhD,EAAIgD,EAAQhD,IAC/D,GAAIylI,IAAiBrgI,KAAKmgI,eAAevlI,GAAI,CACvCoF,KAAKmgI,eAAevlI,GAAGoiG,OAAqD,oBAArCh9F,KAAKmgI,eAAevlI,GAAGoiG,MAAM4I,KACtE5lG,KAAKmgI,eAAevlI,GAAGoiG,MAAM4I,MAGW,oBAA/B5lG,KAAKmgI,eAAevlI,GAAGgrG,KAChC5lG,KAAKmgI,eAAevlI,GAAGgrG,MAGzB5lG,KAAKmgI,eAAet6B,OAAOjrG,EAAG,GAC9B,QAKCqlI,EA/G+B,GA6IpCQ,GAAgC,WAOlC,SAASA,EAAiBn/B,GACxBm/B,EAAiBh5H,UAAUi5H,SAAS9vH,KAAK5Q,KAAMshG,GAQ/Ct6F,OAAOC,eAAejH,KAAM,SAAU,CACpCorB,IAAK,WACH,OAAOprB,KAAK2gI,WAelB,IAAIl7B,EAASg7B,EAAiBh5H,UAqD9B,OAnDAg+F,EAAOi7B,SAAW,SAAkBp/B,GAClC,IAAIs/B,EAAY5gI,KAAKpC,QAAU,EAC3BhD,EAAI,EACJmJ,EAAIu9F,EAAK1jG,OACboC,KAAK6gI,MAAQv/B,EACbthG,KAAK2gI,QAAUr/B,EAAK1jG,OAEpB,IAAIkjI,EAAa,SAAoB7+H,GAC7B,GAAKA,KAASjC,MAClBgH,OAAOC,eAAejH,KAAM,GAAKiC,EAAO,CACtCmpB,IAAK,WACH,OAAOprB,KAAK6gI,MAAM5+H,OAM1B,GAAI2+H,EAAY78H,EAGd,IAFAnJ,EAAIgmI,EAEGhmI,EAAImJ,EAAGnJ,IACZkmI,EAAWlwH,KAAK5Q,KAAMpF,IAe5B6qG,EAAOs7B,WAAa,SAAoBlmH,GAGtC,IAFA,IAAI1gB,EAAS,KAEJS,EAAI,EAAGmJ,EAAI/D,KAAKpC,OAAQhD,EAAImJ,EAAGnJ,IAAK,CAC3C,IAAI69F,EAAMz4F,KAAKpF,GAEf,GAAI69F,EAAI59E,KAAOA,EAAI,CACjB1gB,EAASs+F,EACT,OAIJ,OAAOt+F,GAGFsmI,EAtF2B,GAoGhCO,GAAiB,CACnBC,YAAa,cACbniH,SAAU,WACVoiH,KAAM,OACNC,KAAM,OACNC,UAAW,YACXC,WAAY,cAUVC,GAAiB,CACnB,YAAe,cACf,aAAgB,eAChB,KAAQ,OACR,YAAa,YACb,YAAe,cACf,WAAc,cAUZC,GAAgB,CAClBH,UAAW,YACXtiH,SAAU,WACV0iH,aAAc,eACdC,SAAU,WACVC,SAAU,YAURC,GAAgB,CAClBlX,SAAU,WACVmX,OAAQ,SACRC,QAAS,WAcPC,GAAqB,SAAUzD,GAuBjC,SAASyD,EAAMl4H,GACb,IAAI28F,OAEY,IAAZ38F,IACFA,EAAU,IAGZ28F,EAAQ83B,EAAaztH,KAAK5Q,OAASA,KACnC,IAAI+hI,EAAa,CACflnH,GAAIjR,EAAQiR,IAAM,aAAegvG,KACjCkW,KAAMn2H,EAAQm2H,MAAQ,GACtB3jH,SAAUxS,EAAQwS,UAAY,IAE5BhD,EAAQxP,EAAQwP,OAAS,GA6BzB4oH,EAAQ,SAAe94H,GACzBlC,OAAOC,eAAe,IAAuBs/F,GAAQr9F,EAAK,CACxDkiB,IAAK,WACH,OAAO22G,EAAW74H,IAEpBmiB,IAAK,gBAIT,IAAK,IAAIniB,KAAO64H,EACdC,EAAM94H,GAgCR,OApBAlC,OAAOC,eAAe,IAAuBs/F,GAAQ,QAAS,CAC5Dn7E,IAAK,WACH,OAAOhS,GAETiS,IAAK,SAAa42G,GACZA,IAAa7oH,IACfA,EAAQ6oH,EAURjiI,KAAK8lG,QAAQ,mBAIZS,EAGT,OA7GA,IAAeu7B,EAAOzD,GA6GfyD,EA9GgB,CA+GvBjU,IA0CEqU,GAAW,SAAkBv2H,GAE/B,IAAIlL,EAAQ,CAAC,WAAY,WAAY,OAAQ,WAAY,SAAU,OAAQ,QAEvE+E,EAAI,IAAS80F,cAAc,KAC/B90F,EAAEyJ,KAAOtD,EAMT,IAFA,IAAI5N,EAAU,GAELnD,EAAI,EAAGA,EAAI6F,EAAM7C,OAAQhD,IAChCmD,EAAQ0C,EAAM7F,IAAM4K,EAAE/E,EAAM7F,IAuB9B,MAlByB,UAArBmD,EAAQyR,WACVzR,EAAQokI,KAAOpkI,EAAQokI,KAAK3lI,QAAQ,OAAQ,KAGrB,WAArBuB,EAAQyR,WACVzR,EAAQokI,KAAOpkI,EAAQokI,KAAK3lI,QAAQ,QAAS,KAG1CuB,EAAQyR,WACXzR,EAAQyR,SAAW,IAASR,SAASQ,UAKlCzR,EAAQokI,OACXpkI,EAAQokI,KAAO,IAASnzH,SAASmzH,MAG5BpkI,GAeLqkI,GAAiB,SAAwBz2H,GAE3C,IAAKA,EAAIlO,MAAM,gBAAiB,CAG9B,IAAI+H,EAAI,IAAS80F,cAAc,KAC/B90F,EAAEyJ,KAAOtD,EACTA,EAAMnG,EAAEyJ,KAGV,OAAOtD,GAeL02H,GAAmB,SAA0Bl+B,GAC/C,GAAoB,kBAATA,EAAmB,CAC5B,IAAIm+B,EAAc,yEACd59B,EAAY49B,EAAY5kI,KAAKymG,GAEjC,GAAIO,EACF,OAAOA,EAAU7I,MAAMl+F,cAI3B,MAAO,IAsBL4kI,GAAgB,SAAuB52H,EAAK62H,QAC/B,IAAXA,IACFA,EAAS,IAASxzH,UAGpB,IAAIyzH,EAAUP,GAASv2H,GAEnB+2H,EAAmC,MAArBD,EAAQjzH,SAAmBgzH,EAAOhzH,SAAWizH,EAAQjzH,SAGnEmzH,EAAcD,EAAcD,EAAQN,OAASK,EAAOhzH,SAAWgzH,EAAOL,KAC1E,OAAOQ,GAGLC,GAAmB57H,OAAOiiB,OAAO,CACnCjb,UAAW,KACXk0H,SAAUA,GACVE,eAAgBA,GAChBC,iBAAkBA,GAClBE,cAAeA,KAebM,GAAY,SAAmBC,EAAY9lC,GAC7C,IAAI10E,EAAS,IAAI,IAAS3gB,OAAOm6F,OAAO,IAAU,IAASp6F,MAAO,IAASC,OAAOm5F,iBAC9EluF,EAAS,GAEb0V,EAAO+6E,MAAQ,SAAU5K,GACvBuE,EAAM69B,OAAOpiC,IAGfnwE,EAAO45E,eAAiB,SAAUryE,GAChCjd,EAAO3X,KAAK40B,IAGdvH,EAAOi7E,QAAU,WACfvG,EAAM8I,QAAQ,CACZjoG,KAAM,aACNwrB,OAAQ2zE,KAIZ10E,EAAOvd,MAAM+3H,GAETlwH,EAAOhV,OAAS,IACd,IAASgF,SAAW,IAASA,QAAQmgI,gBACvC,IAASngI,QAAQmgI,eAAe,iCAAmC/lC,EAAMmX,KAG3EvhG,EAAOvV,SAAQ,SAAUwyB,GACvB,OAAO0yF,EAAM1yF,MAAMA,MAGjB,IAASjtB,SAAW,IAASA,QAAQogI,UACvC,IAASpgI,QAAQogI,YAIrB16G,EAAOg7E,SAeL2/B,GAAY,SAAmB9uB,EAAKnX,GACtC,IAAI32E,EAAO,CACT1c,IAAKwqG,GAEHwuB,EAAcJ,GAAcpuB,GAE5BwuB,IACFt8G,EAAKva,KAAO62H,GAGd,IAAI91H,EAAgD,oBAA9BmwF,EAAMkmC,MAAMP,cAE9B91H,IACFwZ,EAAKxZ,gBAAkBA,GAGzB,IAAIwZ,EAAMtY,GAAK/N,MAAM,SAAU8C,EAAKoH,EAAUqgB,GAC5C,GAAIznB,EACF,OAAOy/G,EAAM1yF,MAAM/sB,EAAKoH,GAG1B8yF,EAAMmmC,SAAU,EAGe,oBAApB,IAASx7H,OACdq1F,EAAMkmC,OAGRlmC,EAAMkmC,MAAMnW,IAAI,CAAC,cAAe,eAAe,SAAU7lB,GACvD,GAAmB,eAAfA,EAAMrpG,KAKV,OAAOglI,GAAUt4G,EAAcyyE,GAJ7BulB,EAAM1yF,MAAM,oDAAsDmtE,EAAMmX,QAQ9E0uB,GAAUt4G,EAAcyyE,QAY1BomC,GAAyB,SAAUC,GAqCrC,SAASD,EAAUx5H,GACjB,IAAI28F,EAMJ,QAJgB,IAAZ38F,IACFA,EAAU,KAGPA,EAAQwwH,KACX,MAAM,IAAIpwH,MAAM,4BAGlB,IAAIivF,EAAW43B,GAAejnH,EAAS,CACrCm2H,KAAMwB,GAAc33H,EAAQm2H,OAAS,YACrC3jH,SAAUxS,EAAQwS,UAAYxS,EAAQ05H,SAAW,KAE/ClmC,EAAOukC,GAAc1oC,EAASmE,OAAS,WACvCmmC,EAAWtqC,EAAS,WAEF,aAAlBA,EAAS8mC,MAAyC,aAAlB9mC,EAAS8mC,OAC3C3iC,EAAO,UAGTmJ,EAAQ88B,EAAOzyH,KAAK5Q,KAAMi5F,IAAaj5F,KACvCumG,EAAM28B,MAAQjqC,EAASmhC,KACvB7zB,EAAMs6B,MAAQ,GACdt6B,EAAMi9B,YAAc,GACpBj9B,EAAMk9B,UAA6C,IAAlCl9B,EAAM28B,MAAMQ,kBAC7B,IAAIpiC,EAAO,IAAIm/B,GAAiBl6B,EAAMs6B,OAClC8C,EAAa,IAAIlD,GAAiBl6B,EAAMi9B,aACxCI,GAAU,EACdr9B,EAAMs9B,kBAAoB91H,GAAK,IAAuBw4F,IAAQ,SAAUW,QACxD,IAAVA,IACFA,EAAQ,IAGNlnG,KAAKkjI,MAAMtQ,eAIV5yH,KAAKkjI,MAAMtO,UAYhB50H,KAAK2jI,WAAa3jI,KAAK2jI,WAEnBC,IACF5jI,KAAK8lG,QAAQ,aACb89B,GAAU,GAGO,eAAf18B,EAAMrpG,OACRmC,KAAK8jI,KAAO9jI,KAAKkjI,MAAMa,0BAA0B/jI,KAAK6jI,qBAnBnC,eAAf38B,EAAMrpG,OACRmC,KAAK8jI,KAAO9jI,KAAKkjI,MAAMa,0BAA0B/jI,KAAK6jI,wBAsB5D,IAAIG,EAAiB,WACnBz9B,EAAM09B,gBA+JR,OA5JA19B,EAAM28B,MAAMrW,IAAI,UAAWmX,GAEd,aAAT5mC,GACFmJ,EAAM29B,gBAGRl9H,OAAO+lB,iBAAiB,IAAuBw5E,GAAQ,CAUrD,QAAW,CACTn7E,IAAK,WACH,OAAOm4G,GAETl4G,IAAK,cAYP+xE,KAAM,CACJhyE,IAAK,WACH,OAAOgyE,GAET/xE,IAAK,SAAa84G,GACXxC,GAAcwC,IAIf/mC,IAAS+mC,IAIb/mC,EAAO+mC,EAEFnkI,KAAKyjI,UAAqB,aAATrmC,GAA4C,IAArBp9F,KAAKshG,KAAK1jG,QAErDqlI,GAAUjjI,KAAKm0G,IAAKn0G,MAGtBA,KAAKikI,eAEQ,aAAT7mC,GACFp9F,KAAKkkI,gBAaPlkI,KAAK8lG,QAAQ,iBAUjBxE,KAAM,CACJl2E,IAAK,WACH,OAAKprB,KAAKmjI,QAIH7hC,EAHE,MAKXj2E,IAAK,cASPs4G,WAAY,CACVv4G,IAAK,WACH,IAAKprB,KAAKmjI,QACR,OAAO,KAIT,GAAyB,IAArBnjI,KAAKshG,KAAK1jG,OACZ,OAAO+lI,EAMT,IAHA,IAAIS,EAAKpkI,KAAKkjI,MAAMmB,cAChBC,EAAS,GAEJ1pI,EAAI,EAAGmJ,EAAI/D,KAAKshG,KAAK1jG,OAAQhD,EAAImJ,EAAGnJ,IAAK,CAChD,IAAI69F,EAAMz4F,KAAKshG,KAAK1mG,IAEhB69F,EAAI3sE,WAAas4G,GAAM3rC,EAAI1sE,SAAWq4G,GAE/B3rC,EAAI3sE,YAAc2sE,EAAI1sE,SAAW0sE,EAAI3sE,WAAas4G,GAAM3rC,EAAI3sE,UAAY,IAAOs4G,IADxFE,EAAOrpI,KAAKw9F,GAQhB,GAFAmrC,GAAU,EAENU,EAAO1mI,SAAWoC,KAAKwjI,YAAY5lI,OACrCgmI,GAAU,OAEV,IAAK,IAAI39B,EAAK,EAAGA,EAAKq+B,EAAO1mI,OAAQqoG,KACW,IAA1CjmG,KAAKwjI,YAAYv6H,QAAQq7H,EAAOr+B,MAClC29B,GAAU,GAOhB,OAFA5jI,KAAKwjI,YAAcc,EACnBX,EAAWjD,SAAS1gI,KAAKwjI,aAClBG,GAGTt4G,IAAK,gBAIL4tE,EAASkb,KACX5N,EAAM4N,IAAMlb,EAASkb,IAEhB5N,EAAMk9B,WAGTl9B,EAAM48B,SAAU,IAGd58B,EAAMk9B,UAA8B,cAAlBxqC,EAAS8mC,MAA0C,aAAlB9mC,EAAS8mC,OAC9DkD,GAAU18B,EAAM4N,IAAK,IAAuB5N,KAG9CA,EAAM48B,SAAU,EAGX58B,EAnQT,IAAe68B,EAAWC,GAsQ1B,IAAI59B,EAAS29B,EAAU37H,UA2EvB,OAzEAg+F,EAAOy+B,cAAgB,WAErBlkI,KAAK8jI,KAAO9jI,KAAKkjI,MAAMa,0BAA0B/jI,KAAK6jI,mBAEtD7jI,KAAKkjI,MAAMx9B,GAAG,aAAc1lG,KAAK6jI,oBAGnCp+B,EAAOw+B,aAAe,WAChBjkI,KAAK8jI,OACP9jI,KAAKkjI,MAAMqB,yBAAyBvkI,KAAK8jI,MACzC9jI,KAAK8jI,UAAOp5H,GAGd1K,KAAKkjI,MAAMt9B,IAAI,aAAc5lG,KAAK6jI,oBAUpCp+B,EAAOo1B,OAAS,SAAgB2J,GAC9B,IAAI/rC,EAAM+rC,EAEV,GAAI,IAAS98H,SAAW88H,aAAuB,IAAS98H,MAAME,QAAS,CAGrE,IAAK,IAAI8lE,KAFT+qB,EAAM,IAAI,IAAS/wF,MAAME,OAAO48H,EAAY14G,UAAW04G,EAAYz4G,QAASy4G,EAAYxoI,MAEvEwoI,EACT92D,KAAQ+qB,IACZA,EAAI/qB,GAAQ82D,EAAY92D,IAK5B+qB,EAAI59E,GAAK2pH,EAAY3pH,GACrB49E,EAAIgsC,aAAeD,EAKrB,IAFA,IAAIjK,EAASv6H,KAAKkjI,MAAMzI,aAEf7/H,EAAI,EAAGA,EAAI2/H,EAAO38H,OAAQhD,IAC7B2/H,EAAO3/H,KAAOoF,MAChBu6H,EAAO3/H,GAAG8pI,UAAUjsC,GAIxBz4F,KAAK6gI,MAAM5lI,KAAKw9F,GAChBz4F,KAAKshG,KAAKo/B,SAAS1gI,KAAK6gI,QAU1Bp7B,EAAOi/B,UAAY,SAAmBC,GACpC,IAAI/pI,EAAIoF,KAAK6gI,MAAMjjI,OAEnB,MAAOhD,IAAK,CACV,IAAI69F,EAAMz4F,KAAK6gI,MAAMjmI,GAErB,GAAI69F,IAAQksC,GAAclsC,EAAIgsC,cAAgBhsC,EAAIgsC,eAAiBE,EAAY,CAC7E3kI,KAAK6gI,MAAMh7B,OAAOjrG,EAAG,GACrBoF,KAAKshG,KAAKo/B,SAAS1gI,KAAK6gI,OACxB,SAKCuC,EAlVoB,CAmV3BtB,IAMFsB,GAAU37H,UAAUqmH,eAAiB,CACnC8W,UAAW,aAWb,IAAIC,GAA0B,SAAUxB,GAyBtC,SAASwB,EAAWj7H,GAClB,IAAI28F,OAEY,IAAZ38F,IACFA,EAAU,IAGZ,IAAIqvF,EAAW43B,GAAejnH,EAAS,CACrCm2H,KAAMuB,GAAe13H,EAAQm2H,OAAS,KAExCx5B,EAAQ88B,EAAOzyH,KAAK5Q,KAAMi5F,IAAaj5F,KACvC,IAAIi/H,GAAU,EA4Cd,OAjCAj4H,OAAOC,eAAe,IAAuBs/F,GAAQ,UAAW,CAC9Dn7E,IAAK,WACH,OAAO6zG,GAET5zG,IAAK,SAAay5G,GAEU,mBAAfA,GAA4BA,IAAe7F,IAItDA,EAAU6F,EAYV9kI,KAAK8lG,QAAQ,qBAMb7M,EAASgmC,UACX14B,EAAM04B,QAAUhmC,EAASgmC,SAG3B14B,EAAM48B,SAAU,EACT58B,EAGT,OAlFA,IAAes+B,EAAYxB,GAkFpBwB,EAnFqB,CAoF5B/C,IASEiD,GAA0B,SAAU1B,GAwBtC,SAAS0B,EAAWn7H,GAClB,IAAI28F,OAEY,IAAZ38F,IACFA,EAAU,IAGZ,IAAIqvF,EAAW43B,GAAejnH,EAAS,CACrCm2H,KAAMiB,GAAep3H,EAAQm2H,OAAS,KAExCx5B,EAAQ88B,EAAOzyH,KAAK5Q,KAAMi5F,IAAaj5F,KACvC,IAAIu/H,GAAW,EA2Cf,OAhCAv4H,OAAOC,eAAe,IAAuBs/F,GAAQ,WAAY,CAC/Dn7E,IAAK,WACH,OAAOm0G,GAETl0G,IAAK,SAAa25G,GAEW,mBAAhBA,GAA6BA,IAAgBzF,IAIxDA,EAAWyF,EAYXhlI,KAAK8lG,QAAQ,sBAMb7M,EAASsmC,WACXh5B,EAAMg5B,SAAWtmC,EAASsmC,UAGrBh5B,EAGT,OAhFA,IAAew+B,EAAY1B,GAgFpB0B,EAjFqB,CAkF5BjD,IAQEmD,GAAO,EACPC,GAAU,EACVC,GAAS,EACTC,GAAQ,EAQRC,GAAgC,SAAUhH,GAqC5C,SAASgH,EAAiBz7H,GACxB,IAAI28F,EAOAj8F,OALY,IAAZV,IACFA,EAAU,IAGZ28F,EAAQ83B,EAAaztH,KAAK5Q,OAASA,KAEnC,IAAIg9F,EAAQ,IAAIomC,GAAUx5H,GA8C1B,OA7CA28F,EAAMw5B,KAAO/iC,EAAM+iC,KACnBx5B,EAAM4N,IAAMnX,EAAMmX,IAClB5N,EAAM+8B,QAAUtmC,EAAM5gF,SACtBmqF,EAAMntF,MAAQ4jF,EAAM5jF,MACpBmtF,EAAM,WAAavJ,EAAM,WACzBh2F,OAAO+lB,iBAAiB,IAAuBw5E,GAAQ,CAOrDj8F,WAAY,CACV8gB,IAAK,WACH,OAAO9gB,IAWX0yF,MAAO,CACL5xE,IAAK,WACH,OAAO4xE,MAIb1yF,EAAa26H,GAMbjoC,EAAMqsB,iBAAiB,cAAc,WACnC/+G,EAAa66H,GAEb5+B,EAAMT,QAAQ,CACZjoG,KAAM,OACNwrB,OAAQ,IAAuBk9E,QAG5BA,EAGT,OA9FA,IAAe8+B,EAAkBhH,GA8F1BgH,EA/F2B,CAgGlCxX,IAEFwX,GAAiB59H,UAAUqmH,eAAiB,CAC1CwX,KAAM,QAERD,GAAiBJ,KAAOA,GACxBI,GAAiBH,QAAUA,GAC3BG,GAAiBF,OAASA,GAC1BE,GAAiBD,MAAQA,GAOzB,IAAIG,GAAS,CACXxpI,MAAO,CACLypI,UAAWtG,GACXuG,WAAYZ,GACZa,YAAa,SAEf5pI,MAAO,CACL0pI,UAAWhG,GACXiG,WAAYV,GACZW,YAAa,SAEf1pI,KAAM,CACJwpI,UAAW9F,GACX+F,WAAYrC,GACZsC,YAAa,SAGjB1+H,OAAO0K,KAAK6zH,IAAQloI,SAAQ,SAAUQ,GACpC0nI,GAAO1nI,GAAM8nI,WAAa9nI,EAAO,SACjC0nI,GAAO1nI,GAAM+nI,YAAc/nI,EAAO,aAEpC,IAAIgoI,GAAS,CACXC,WAAY,CACVN,UAAW9F,GACX+F,WAAYrC,GACZsC,YAAa,aACbC,WAAY,mBACZC,YAAa,qBAEfG,aAAc,CACZP,UAAWvF,GACXwF,WAAYJ,GACZK,YAAa,qBACbC,WAAY,qBACZC,YAAa,wBAIbI,GAAM,IAAS,GAAIT,GAAQM,IA6C/B,SAASI,GAAkB3iI,EAAMy8H,EAAM3mH,EAAOgD,EAAUxS,QACtC,IAAZA,IACFA,EAAU,IAGZ,IAAI2wH,EAASj3H,EAAKm3H,aAClB7wH,EAAQm2H,KAAOA,EAEX3mH,IACFxP,EAAQwP,MAAQA,GAGdgD,IACFxS,EAAQwS,SAAWA,GAGrBxS,EAAQwwH,KAAO92H,EACf,IAAI05F,EAAQ,IAAIgpC,GAAIhqI,KAAKypI,WAAW77H,GAEpC,OADA2wH,EAAOgE,SAASvhC,GACTA,EA9DT6oC,GAAOl2B,MAAQ3oG,OAAO0K,KAAKm0H,IAC3BN,GAAO51B,MAAQ3oG,OAAO0K,KAAK6zH,IAC3BS,GAAIr2B,MAAQ,GAAGh+F,OAAOk0H,GAAOl2B,OAAOh+F,OAAO4zH,GAAO51B,OAsElD,IAAI4kB,GAAoB,SAAU0G,GAYhC,SAAS1G,EAAK3qH,EAAS4nH,GACrB,IAAIjrB,EA+FJ,YA7FgB,IAAZ38F,IACFA,EAAU,SAGE,IAAV4nH,IACFA,EAAQ,cAKV5nH,EAAQ4oH,qBAAsB,EAC9BjsB,EAAQ00B,EAAWrqH,KAAK5Q,KAAM,KAAM4J,EAAS4nH,IAAUxxH,KAEvDumG,EAAM2/B,kBAAoB,SAAUl7H,GAClC,OAAOu7F,EAAM4/B,iBAAiBn7H,IAGhCu7F,EAAM6/B,eAAiB,SAAUp7H,GAC/B,OAAOu7F,EAAM8/B,cAAcr7H,IAG7Bu7F,EAAM+/B,kBAAoB,SAAUt7H,GAClC,OAAOu7F,EAAMggC,iBAAiBv7H,IAGhCu7F,EAAMigC,yBAA2B,SAAUx7H,GACzC,OAAOu7F,EAAMkgC,wBAAwBz7H,IAGvCu7F,EAAMmgC,sBAAwB,SAAU17H,GACtC,OAAOu7F,EAAMogC,qBAAqB37H,IAGpCu7F,EAAMqgC,eAAiB,IAAIvV,IAG3B9qB,EAAMsgC,aAAc,EAEpBtgC,EAAMb,GAAG,WAAW,WAClB1lG,KAAK6mI,aAAc,KAGrBtgC,EAAMb,GAAG,aAAa,WACpB1lG,KAAK6mI,aAAc,KAGrBb,GAAIr2B,MAAMtyG,SAAQ,SAAUG,GAC1B,IAAIiD,EAAQulI,GAAIxoI,GAEZoM,GAAWA,EAAQnJ,EAAMklI,cAC3Bp/B,EAAM9lG,EAAMmlI,aAAeh8H,EAAQnJ,EAAMklI,gBAIxCp/B,EAAMugC,wBACTvgC,EAAMwgC,mBAIHxgC,EAAMygC,0BACTzgC,EAAM0gC,sBAGR,CAAC,OAAQ,QAAS,SAAS5pI,SAAQ,SAAU2/F,IACE,IAAzCpzF,EAAQ,SAAWozF,EAAQ,YAC7BuJ,EAAM,iBAAmBvJ,EAAQ,WAAY,OAIlB,IAA3BpzF,EAAQs9H,iBAAyD,IAA7Bt9H,EAAQu9H,iBAC9C5gC,EAAM6gC,0BAA2B,GACG,IAA3Bx9H,EAAQs9H,iBAAwD,IAA7Bt9H,EAAQu9H,mBACpD5gC,EAAM6gC,0BAA2B,GAG9B7gC,EAAM6gC,0BACT7gC,EAAM8gC,oBAGR9gC,EAAMm9B,mBAAkD,IAA9B95H,EAAQ85H,kBAClCn9B,EAAM+gC,sBAAwB,IAAItB,GAAIhqI,KAAKwpI,UAE3Cj/B,EAAMghC,qBAGD39H,EAAQ49H,wBACXjhC,EAAM0vB,gBAGJ1vB,EAAM53F,cACR43F,EAAM6nB,MAAQ7nB,EAAM53F,YAAYnR,MAAQ,gBAGnC+oG,EA3GT,IAAeguB,EAAM0G,GAsHrB,IAAIx1B,EAAS8uB,EAAK9sH,UAg9BlB,OA98BAg+F,EAAOgiC,iBAAmB,SAA0BtzB,GAClD,IAAIhN,EAASnnG,KAERA,KAAK40H,UAGR50H,KAAK6sH,IAAI,SAAS,WAChB,OAAO1lB,EAAO58F,YAAW,WACvB,OAAO48F,EAAOsgC,iBAAiBtzB,KAC9B,MAaPn0G,KAAK8lG,QAAQ,CACXqO,IAAKA,EACLt2G,KAAM,eAaV4nG,EAAOshC,iBAAmB,WACxB/mI,KAAK0lG,GAAG,iBAAkB1lG,KAAKkmI,mBAC/BlmI,KAAK0nI,gBAAiB,EAEtB1nI,KAAK6sH,IAAI,QAAS7sH,KAAKomI,iBAQzB3gC,EAAOkiC,kBAAoB,WACzB3nI,KAAK0nI,gBAAiB,EACtB1nI,KAAK4nI,uBACL5nI,KAAK4lG,IAAI,iBAAkB5lG,KAAKkmI,oBAiBlCzgC,EAAO4gC,cAAgB,SAAuBn/B,GAC5ClnG,KAAK4nI,uBACL5nI,KAAK6nI,iBAAmB7nI,KAAKi3H,YAAYlpH,GAAK/N,MAAM,WAElD,IAAI8nI,EAAqB9nI,KAAKo5H,kBAE1Bp5H,KAAK+nI,mBAAqBD,GAO5B9nI,KAAK8lG,QAAQ,YAGf9lG,KAAK+nI,iBAAmBD,EAEG,IAAvBA,GACF9nI,KAAK4nI,0BAEL,MAaNniC,EAAO0gC,iBAAmB,SAA0Bj/B,GAClDlnG,KAAKgoI,UAAYhoI,KAAK0U,YAUxB+wF,EAAO4zB,SAAW,WAChB,OAAOF,GAAiB,EAAG,IAY7B1zB,EAAO2zB,gBAAkB,WACvB,OAAOA,GAAgBp5H,KAAKq5H,WAAYr5H,KAAKgoI,YAU/CviC,EAAOmiC,qBAAuB,WAC5B5nI,KAAKg3H,cAAch3H,KAAK6nI,mBAS1BpiC,EAAOwhC,oBAAsB,WAC3BjnI,KAAKioI,mBAAoB,EACzBjoI,KAAK0lG,GAAG,OAAQ1lG,KAAKsmI,mBACrBtmI,KAAK0lG,GAAG,QAAS1lG,KAAKwmI,2BAQxB/gC,EAAOyiC,qBAAuB,WAC5BloI,KAAKioI,mBAAoB,EACzBjoI,KAAKymI,0BACLzmI,KAAK4lG,IAAI,OAAQ5lG,KAAKsmI,mBACtBtmI,KAAK4lG,IAAI,QAAS5lG,KAAKwmI,2BAWzB/gC,EAAO8gC,iBAAmB,WACpBvmI,KAAKmoI,qBACPnoI,KAAKymI,0BAGPzmI,KAAKmoI,oBAAsBnoI,KAAKi3H,aAAY,WAO1Cj3H,KAAK8lG,QAAQ,CACXjoG,KAAM,aACNwrB,OAAQrpB,KACRooI,mBAAmB,MAEpB,MAUL3iC,EAAOghC,wBAA0B,WAC/BzmI,KAAKg3H,cAAch3H,KAAKmoI,qBAGxBnoI,KAAK8lG,QAAQ,CACXjoG,KAAM,aACNwrB,OAAQrpB,KACRooI,mBAAmB,KAWvB3iC,EAAOS,QAAU,WAEflmG,KAAKqoI,YAAY9C,GAAO51B,OAEpB3vG,KAAK0nI,gBACP1nI,KAAK2nI,oBAGH3nI,KAAKioI,mBACPjoI,KAAKkoI,uBAGPjN,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAcpCylG,EAAO4iC,YAAc,SAAqB1d,GACxC,IAAIriB,EAAStoG,KAEb2qH,EAAQ,GAAGh5G,OAAOg5G,GAElBA,EAAMttH,SAAQ,SAAUQ,GACtB,IAAIuU,EAAOk2F,EAAOzqG,EAAO,aAAe,GACpCjD,EAAIwX,EAAKxU,OAEb,MAAOhD,IAAK,CACV,IAAIoiG,EAAQ5qF,EAAKxX,GAEJ,SAATiD,GACFyqG,EAAOggC,sBAAsBtrC,GAG/B5qF,EAAKqsH,YAAYzhC,QAUvByI,EAAO8iC,sBAAwB,WAC7B,IAAIn2H,EAAOpS,KAAKsnI,uBAAyB,GACrC1sI,EAAIwX,EAAKxU,OAEb,MAAOhD,IAAK,CACV,IAAIoiG,EAAQ5qF,EAAKxX,GACjBoF,KAAKsoI,sBAAsBtrC,KAU/ByI,EAAO+iC,MAAQ,aAUf/iC,EAAOk9B,YAAc,aAWrBl9B,EAAOgjC,eAAiB,aAYxBhjC,EAAO51E,MAAQ,SAAe/sB,GAM5B,YALY4H,IAAR5H,IACF9C,KAAK0oI,OAAS,IAAInP,GAAWz2H,GAC7B9C,KAAK8lG,QAAQ,UAGR9lG,KAAK0oI,QAcdjjC,EAAOkjC,OAAS,WACd,OAAI3oI,KAAK6mI,YACA1N,GAAiB,EAAG,GAGtBA,MAWT1zB,EAAOrjG,KAAO,aAUdqjG,EAAOmjC,aAAe,aAUtBnjC,EAAOojC,UAAY,aASnBpjC,EAAOqjC,eAAiB,WAElB9oI,KAAKioI,mBAOPjoI,KAAK8lG,QAAQ,CACXjoG,KAAM,aACNwrB,OAAQrpB,KACRooI,mBAAmB,KAgBzB3iC,EAAO8hC,mBAAqB,WAC1B,IAAI/P,EAASx3H,KAsBbulI,GAAO51B,MAAMtyG,SAAQ,SAAUG,GAC7B,IAAIiD,EAAQ8kI,GAAO/nI,GAEfurI,EAAmB,WACrBvR,EAAO1xB,QAAQtoG,EAAO,gBAGpB+8H,EAAS/C,EAAO/2H,EAAMklI,cAE1BpL,EAAOlR,iBAAiB,cAAe0f,GACvCxO,EAAOlR,iBAAiB,WAAY0f,GAEpCvR,EAAO9xB,GAAG,WAAW,WACnB60B,EAAOnR,oBAAoB,cAAe2f,GAC1CxO,EAAOnR,oBAAoB,WAAY2f,UAY7CtjC,EAAOujC,iBAAmB,WACxB,IAAIrR,EAAS33H,KAEb,IAAI,IAAS2H,OAOb,GAAI,IAASwC,KAAK47G,SAAS/lH,KAAK2S,MAAO,CAIrC,IAAK3S,KAAK4xH,SAAS,WAAahP,GAAQ,MAAQ57G,OAAO0K,KAAK,KAAK9T,OAAS,EAExE,YADAoC,KAAK8lG,QAAQ,eAMf,IAAImjC,EAAS,IAAS3uC,cAAc,UACpC2uC,EAAO90B,IAAMn0G,KAAK4xH,SAAS,WAAa,iDAExCqX,EAAO58H,OAAS,WAOdsrH,EAAO7xB,QAAQ,gBAGjBmjC,EAAO38H,QAAU,WAOfqrH,EAAO7xB,QAAQ,eAGjB9lG,KAAK0lG,GAAG,WAAW,WACjBujC,EAAO58H,OAAS,KAChB48H,EAAO38H,QAAU,QAInB,IAAS3E,QAAS,EAClB3H,KAAK2S,KAAKme,WAAW1B,YAAY65G,QAEjCjpI,KAAKwxH,MAAMxxH,KAAKgpI,mBASpBvjC,EAAO4hC,kBAAoB,WACzB,IAAIvP,EAAS93H,KAETu6H,EAASv6H,KAAKy6H,aACdyO,EAAelpI,KAAKmpI,mBAEpBC,EAAiB,SAAwBp+H,GAC3C,OAAOuvH,EAAOgE,SAASvzH,EAAEgyF,QAGvBqsC,EAAoB,SAA2Br+H,GACjD,OAAOuvH,EAAOkE,YAAYzzH,EAAEgyF,QAG9BksC,EAAaxjC,GAAG,WAAY0jC,GAC5BF,EAAaxjC,GAAG,cAAe2jC,GAC/BrpI,KAAKgpI,mBAEL,IAAIM,EAAgB,WAClB,OAAOxR,EAAOhyB,QAAQ,oBAGpByjC,EAAoB,WACtBD,IAEA,IAAK,IAAI1uI,EAAI,EAAGA,EAAI2/H,EAAO38H,OAAQhD,IAAK,CACtC,IAAIoiG,EAAQu9B,EAAO3/H,GACnBoiG,EAAMosB,oBAAoB,YAAakgB,GAEpB,YAAftsC,EAAMI,MACRJ,EAAMqsB,iBAAiB,YAAaigB,KAK1CC,IACAhP,EAAOlR,iBAAiB,SAAUkgB,GAClChP,EAAOlR,iBAAiB,WAAYkgB,GACpChP,EAAOlR,iBAAiB,cAAekgB,GACvCvpI,KAAK0lG,GAAG,WAAW,WACjBwjC,EAAatjC,IAAI,WAAYwjC,GAC7BF,EAAatjC,IAAI,cAAeyjC,GAChC9O,EAAOnR,oBAAoB,SAAUmgB,GACrChP,EAAOnR,oBAAoB,WAAYmgB,GACvChP,EAAOnR,oBAAoB,cAAemgB,GAE1C,IAAK,IAAI3uI,EAAI,EAAGA,EAAI2/H,EAAO38H,OAAQhD,IAAK,CACtC,IAAIoiG,EAAQu9B,EAAO3/H,GACnBoiG,EAAMosB,oBAAoB,YAAakgB,QAqB7C7jC,EAAO+jC,aAAe,SAAsBzJ,EAAM3mH,EAAOgD,GACvD,IAAK2jH,EACH,MAAM,IAAI/1H,MAAM,mDAGlB,OAAOi8H,GAAkBjmI,KAAM+/H,EAAM3mH,EAAOgD,IAyB9CqpF,EAAOgkC,sBAAwB,SAA+B7/H,GAC5D,IAAIozF,EAAQ6zB,GAAejnH,EAAS,CAClCwwH,KAAMp6H,OAER,OAAO,IAAI6lI,GAAOE,aAAaN,WAAWzoC,IAwB5CyI,EAAOm1B,mBAAqB,SAA4BhxH,EAAS8/H,GAC/D,IAAIC,EAAS3pI,UAEG,IAAZ4J,IACFA,EAAU,IAGZ,IAAIggI,EAAmB5pI,KAAKypI,sBAAsB7/H,GAmBlD,OAjBsB,IAAlB8/H,IAA4C,IAAlBA,IAE5BnnB,EAAMr1F,KAAK,oKACXw8G,GAAgB,GAIlB1pI,KAAK6pI,qBAAqBzJ,iBAAiBwJ,GAC3C5pI,KAAKmpI,mBAAmB5K,SAASqL,EAAiB5sC,QAE5B,IAAlB0sC,GAEF1pI,KAAKwxH,OAAM,WACT,OAAOmY,EAAOrC,sBAAsB/I,SAASqL,EAAiB5sC,UAI3D4sC,GAUTnkC,EAAO6iC,sBAAwB,SAA+BtrC,GAC5D,IAAIqjC,EAAergI,KAAK6pI,qBAAqBvJ,wBAAwBtjC,GAErEh9F,KAAK6pI,qBAAqBrJ,oBAAoBH,GAC9CrgI,KAAKmpI,mBAAmB1K,YAAYzhC,GACpCh9F,KAAKsnI,sBAAsB7I,YAAYzhC,IAezCyI,EAAOqkC,wBAA0B,WAC/B,MAAO,IAkBTrkC,EAAOskC,wBAA0B,WAC/B,IAAIC,EAAehqI,KAAK4xH,SAASqY,SAAW,IAASA,QAErD,GAAID,EACF,OAAOA,EAAaE,UAWxBzkC,EAAO0kC,wBAA0B,WAC/B,OAAO,GAST1kC,EAAO2kC,2BAA6B,aASpC3kC,EAAOs+B,0BAA4B,SAAmCsG,GACpE,IAAIC,EAAStqI,KAET6a,EAAKgvG,KAeT,OAbK7pH,KAAK40H,UAAY50H,KAAKk8H,UACzBl8H,KAAK4mI,eAAe1gB,IAAIrrG,GACxB7a,KAAK6sH,IAAI,WAAW,WACdyd,EAAO1D,eAAez7G,IAAItQ,KAC5ByvH,EAAO1D,eAAe,UAAU/rH,GAEhCwvH,SAIJrqI,KAAK03H,2BAA2B78G,EAAIwvH,GAG/BxvH,GAST4qF,EAAO8+B,yBAA2B,SAAkC1pH,GAC9D7a,KAAK4mI,eAAez7G,IAAItQ,GAC1B7a,KAAK4mI,eAAe,UAAU/rH,GAE9B7a,KAAK43H,0BAA0B/8G,IAUnC4qF,EAAO8kC,UAAY,aAQnB9kC,EAAO+kC,YAAc,aAQrB/kC,EAAOglC,eAAiB,aAWxBhlC,EAAOilC,0BAA4B,aAWnCjlC,EAAOklC,0BAA4B,aAmBnCllC,EAAOmlC,YAAc,WACnB,MAAO,IAcTrW,EAAKqW,YAAc,WACjB,MAAO,IAaTrW,EAAKsW,cAAgB,SAAuBC,EAAQlhI,GAClD,OAAO2qH,EAAKqW,YAAYE,EAAOjtI,OAgBjC02H,EAAKG,OAAS,SAAgBvxH,GAC5B,OAAOA,EAAUsE,qBAAqB8sH,GAAQpxH,aAAqBoxH,GAAQpxH,IAAcoxH,GAa3FA,EAAKwW,aAAe,SAAsBvtI,EAAM48H,GAK9C,GAJK7F,EAAKyW,SACRzW,EAAKyW,OAAS,KAGXzW,EAAKG,OAAO0F,GACf,MAAM,IAAIpwH,MAAM,QAAUxM,EAAO,mBAGnC,IAAK+2H,EAAKqW,YACR,MAAM,IAAI5gI,MAAM,uDAGlB,IAAKuqH,EAAKsW,cACR,MAAM,IAAI7gI,MAAM,yDAYlB,OATAxM,EAAOizH,GAAcjzH,GACrB+2H,EAAKyW,OAAOxtI,GAAQ48H,EACpB7F,EAAKyW,OAAOrtI,GAAYH,IAAS48H,EAEpB,SAAT58H,GAEF+2H,EAAK0W,kBAAkBhwI,KAAKuC,GAGvB48H,GAaT7F,EAAK2W,QAAU,SAAiB1tI,GAC9B,GAAKA,EAIL,OAAI+2H,EAAKyW,QAAUzW,EAAKyW,OAAOxtI,GACtB+2H,EAAKyW,OAAOxtI,IAGrBA,EAAOizH,GAAcjzH,GAEjB,KAAY,IAAS2tI,SAAW,IAASA,QAAQ3tI,IACnD+kH,EAAMr1F,KAAK,OAAS1vB,EAAO,6GACpB,IAAS2tI,QAAQ3tI,SAF1B,IAMK+2H,EAvkCe,CAwkCtBjD,IAqCF0U,GAAIr2B,MAAMtyG,SAAQ,SAAUG,GAC1B,IAAIiD,EAAQulI,GAAIxoI,GAEhB+2H,GAAK9sH,UAAUhH,EAAMklI,YAAc,WAEjC,OADA3lI,KAAKS,EAAMmlI,aAAe5lI,KAAKS,EAAMmlI,cAAgB,IAAInlI,EAAM+kI,UACxDxlI,KAAKS,EAAMmlI,iBAkCtBrR,GAAK9sH,UAAU2jI,uBAAwB,EAQvC7W,GAAK9sH,UAAU4jI,qBAAsB,EASrC9W,GAAK9sH,UAAU6jI,0BAA2B,EAW1C/W,GAAK9sH,UAAU8jI,sBAAuB,EAUtChX,GAAK9sH,UAAUq/H,wBAAyB,EAYxCvS,GAAK9sH,UAAU+jI,mBAAoB,EAUnCjX,GAAK9sH,UAAUu/H,0BAA2B,EAS1CzS,GAAK9sH,UAAU2/H,0BAA2B,EAQ1C7S,GAAK9sH,UAAUgkI,4BAA6B,EAc5ClX,GAAKmX,mBAAqB,SAAUC,GAUlCA,EAAMC,sBAAwB,SAAUC,EAAS5pI,GAC/C,IAAIqoH,EAAWqhB,EAAMG,eAEhBxhB,IACHA,EAAWqhB,EAAMG,eAAiB,SAGtBphI,IAAVzI,IAEFA,EAAQqoH,EAAS1sH,QAGnB0sH,EAASzkB,OAAO5jG,EAAO,EAAG4pI,IAc5BF,EAAMf,YAAc,SAAU/sI,GAI5B,IAHA,IACIkuI,EADAzhB,EAAWqhB,EAAMG,gBAAkB,GAG9BlxI,EAAI,EAAGA,EAAI0vH,EAAS1sH,OAAQhD,IAGnC,GAFAmxI,EAAMzhB,EAAS1vH,GAAGgwI,YAAY/sI,GAE1BkuI,EACF,OAAOA,EAIX,MAAO,IAmBTJ,EAAMK,oBAAsB,SAAUv6H,EAAQ7H,GAI5C,IAHA,IACImiI,EADAzhB,EAAWqhB,EAAMG,gBAAkB,GAG9BlxI,EAAI,EAAGA,EAAI0vH,EAAS1sH,OAAQhD,IAGnC,GAFAmxI,EAAMzhB,EAAS1vH,GAAGqxI,gBAAgBx6H,EAAQ7H,GAEtCmiI,EACF,OAAOzhB,EAAS1vH,GAIpB,OAAO,MAgBT+wI,EAAMd,cAAgB,SAAUC,EAAQlhI,GACtC,IAAIsiI,EAAKP,EAAMK,oBAAoBlB,EAAQlhI,GAE3C,OAAIsiI,EACKA,EAAGD,gBAAgBnB,EAAQlhI,GAG7B,IAQT,IAAIuiI,EAAa,CAAC,WAAY,UAAW,YAezCA,EAAW9uI,SAAQ,SAAUsxH,GAC3B,IAAIyd,EAAapsI,KAAK2uH,GAEI,oBAAfyd,IAIXpsI,KAAK2uH,GAAU,WACb,OAAI3uH,KAAKqsI,gBAAkBrsI,KAAKqsI,eAAe1d,GACtC3uH,KAAKqsI,eAAe1d,GAAQ3zG,MAAMhb,KAAKqsI,eAAgBh7H,WAGzD+6H,EAAWpxH,MAAMhb,KAAMqR,eAE/Bs6H,EAAMlkI,WAUTkkI,EAAMlkI,UAAU6kI,UAAY,SAAU76H,GACpC,IAAIy6H,EAAKP,EAAMK,oBAAoBv6H,EAAQzR,KAAK4xH,UAE3Csa,IAGCP,EAAMY,oBACRL,EAAKP,EAAMY,oBAEXhqB,EAAM1yF,MAAM,oDAKhB7vB,KAAK2mI,uBACL3mI,KAAK4lG,IAAI,UAAW5lG,KAAK0mI,uBAErBwF,IAAOP,EAAMY,sBACfvsI,KAAKwsI,eAAiB/6H,GAGxBzR,KAAKqsI,eAAiBH,EAAGO,aAAah7H,EAAQzR,KAAMA,KAAK4xH,UACzD5xH,KAAK6sH,IAAI,UAAW7sH,KAAK0mI,wBAS3BiF,EAAMlkI,UAAUk/H,qBAAuB,WAIjC3mI,KAAKwsI,iBACPxsI,KAAKqoI,YAAY,CAAC,QAAS,UAC3BroI,KAAKwsI,eAAiB,MAIxBxsI,KAAKuoI,wBAEDvoI,KAAKqsI,iBACHrsI,KAAKqsI,eAAenmC,SACtBlmG,KAAKqsI,eAAenmC,UAGtBlmG,KAAKqsI,eAAiB,QAO5B/a,GAAY2G,kBAAkB,OAAQ1D,IACtCA,GAAKwW,aAAa,OAAQxW,IAO1BA,GAAK0W,kBAAoB,GAMzB,IAAIyB,GAAc,GACdC,GAAsB,GACtBC,GAAa,GAmCjB,SAASC,GAAIhvI,EAAMivI,GACjBJ,GAAY7uI,GAAQ6uI,GAAY7uI,IAAS,GACzC6uI,GAAY7uI,GAAM5C,KAAK6xI,GAiBzB,SAASR,GAAUxqI,EAAQqyG,EAAKb,GAC9BxxG,EAAOyI,YAAW,WAChB,OAAOwiI,GAAgB54B,EAAKu4B,GAAYv4B,EAAIt2G,MAAOy1G,EAAMxxG,KACxD,GAYL,SAASkrI,GAAQF,EAAY1S,GAC3B0S,EAAWzvI,SAAQ,SAAU4vI,GAC3B,OAAOA,EAAGD,SAAWC,EAAGD,QAAQ5S,MAoBpC,SAAShvG,GAAI0hH,EAAY1S,EAAM1uH,GAC7B,OAAOohI,EAAWI,YAAYC,GAAmBzhI,GAAS0uH,EAAK1uH,MAsBjE,SAAS2f,GAAIyhH,EAAY1S,EAAM1uH,EAAQ0hI,GACrC,OAAOhT,EAAK1uH,GAAQohI,EAAWt7H,OAAO27H,GAAmBzhI,GAAS0hI,IA0BpE,SAASC,GAAQP,EAAY1S,EAAM1uH,EAAQ0hI,QAC7B,IAARA,IACFA,EAAM,MAGR,IAAIE,EAAa,OAAS7c,GAAc/kH,GACpC6hI,EAAkBT,EAAWt7H,OAAO27H,GAAmBG,GAAaF,GACpEI,EAAaD,IAAoBX,GAGjCrhB,EAAciiB,EAAa,KAAOpT,EAAK1uH,GAAQ6hI,GAEnD,OADAE,GAAaX,EAAYphI,EAAQ6/G,EAAaiiB,GACvCjiB,EAQT,IAAImiB,GAAiB,CACnBrU,SAAU,EACVgL,YAAa,EACb3vH,SAAU,EACVi5H,MAAO,EACPhF,OAAQ,EACRzM,OAAQ,EACR0R,SAAU,EACVC,OAAQ,EACRC,MAAO,GAQLC,GAAiB,CACnBjF,eAAgB,EAChBkF,SAAU,EACVC,UAAW,GAQTC,GAAmB,CACrB9rI,KAAM,EACNC,MAAO,GAGT,SAAS8qI,GAAmBzhI,GAC1B,OAAO,SAAUtE,EAAO6lI,GAEtB,OAAI7lI,IAAUwlI,GACLA,GAGLK,EAAGvhI,GACEuhI,EAAGvhI,GAAQtE,GAGbA,GAIX,SAASqmI,GAAaU,EAAKziI,EAAQtE,EAAOomI,GACxC,IAAK,IAAI5yI,EAAIuzI,EAAIvwI,OAAS,EAAGhD,GAAK,EAAGA,IAAK,CACxC,IAAIqyI,EAAKkB,EAAIvzI,GAETqyI,EAAGvhI,IACLuhI,EAAGvhI,GAAQ8hI,EAAYpmI,IAY7B,SAASgnI,GAAoBtsI,GAC3B6qI,GAAoB7qI,EAAO+Y,MAAQ,KAUrC,SAASwzH,GAAmBvsI,EAAQwsI,GAClC,IAAIH,EAAMxB,GAAoB7qI,EAAO+Y,MACjCoyH,EAAK,KAET,QAAYviI,IAARyjI,GAA6B,OAARA,EAGvB,OAFAlB,EAAKqB,EAAUxsI,GACf6qI,GAAoB7qI,EAAO+Y,MAAQ,CAAC,CAACyzH,EAAWrB,IACzCA,EAGT,IAAK,IAAIryI,EAAI,EAAGA,EAAIuzI,EAAIvwI,OAAQhD,IAAK,CACnC,IAAI2zI,EAASJ,EAAIvzI,GACb4zI,EAAMD,EAAO,GACbE,EAAMF,EAAO,GAEbC,IAAQF,IAIZrB,EAAKwB,GAQP,OALW,OAAPxB,IACFA,EAAKqB,EAAUxsI,GACfqsI,EAAIlzI,KAAK,CAACqzI,EAAWrB,KAGhBA,EAGT,SAASF,GAAgB54B,EAAK24B,EAAYx5B,EAAMxxG,EAAQ4Q,EAAKg8H,QAC/C,IAARv6B,IACFA,EAAM,SAGW,IAAf24B,IACFA,EAAa,SAGH,IAARp6H,IACFA,EAAM,SAGQ,IAAZg8H,IACFA,GAAU,GAGZ,IAAIC,EAAc7B,EACdwB,EAAYK,EAAY,GACxBC,EAASD,EAAY5xI,MAAM,GAG/B,GAAyB,kBAAduxI,EACTvB,GAAgB54B,EAAKu4B,GAAY4B,GAAYh7B,EAAMxxG,EAAQ4Q,EAAKg8H,QAE3D,GAAIJ,EAAW,CACpB,IAAIrB,EAAKoB,GAAmBvsI,EAAQwsI,GAEpC,IAAKrB,EAAGX,UAEN,OADA55H,EAAIzX,KAAKgyI,GACFF,GAAgB54B,EAAKy6B,EAAQt7B,EAAMxxG,EAAQ4Q,EAAKg8H,GAGzDzB,EAAGX,UAAUljH,GAAO,GAAI+qF,IAAM,SAAUrxG,EAAK+rI,GAG3C,GAAI/rI,EACF,OAAOiqI,GAAgB54B,EAAKy6B,EAAQt7B,EAAMxxG,EAAQ4Q,EAAKg8H,GAIzDh8H,EAAIzX,KAAKgyI,GAGTF,GAAgB8B,EAAM16B,EAAIt2G,OAASgxI,EAAKhxI,KAAO+wI,EAASlC,GAAYmC,EAAKhxI,MAAOy1G,EAAMxxG,EAAQ4Q,EAAKg8H,WAE5FE,EAAOhxI,OAChBmvI,GAAgB54B,EAAKy6B,EAAQt7B,EAAMxxG,EAAQ4Q,EAAKg8H,GACvCA,EACTp7B,EAAKa,EAAKzhG,GAEVq6H,GAAgB54B,EAAKu4B,GAAY,KAAMp5B,EAAMxxG,EAAQ4Q,GAAK,GAY9D,IAAIo8H,GAAgB,CAClBC,KAAM,YACNC,IAAK,YACLrzI,IAAK,YACLszI,IAAK,YACLC,IAAK,YACLC,IAAK,mBACLC,IAAK,YACLC,IAAK,aACLC,IAAK,YACLC,IAAK,cACLC,KAAM,aACNC,IAAK,YACLC,IAAK,YACLC,KAAM,wBACNjoH,IAAK,uBACLkoH,IAAK,aACLC,KAAM,aACNC,IAAK,YACLC,IAAK,YACLC,IAAK,gBACLC,KAAM,cAYJC,GAAc,SAAqB/7B,QACzB,IAARA,IACFA,EAAM,IAGR,IAAIg8B,EAAM9N,GAAiBluB,GACvBi8B,EAAWtB,GAAcqB,EAAIxyI,eACjC,OAAOyyI,GAAY,IAgBjBC,GAAe,SAAsBvuI,EAAQqyG,GAC/C,IAAKA,EACH,MAAO,GAIT,GAAIryG,EAAOwuI,OAAO7+H,OAAO0iG,MAAQA,GAAOryG,EAAOwuI,OAAO7+H,OAAO5T,KAC3D,OAAOiE,EAAOwuI,OAAO7+H,OAAO5T,KAI9B,IAAI0yI,EAAkBzuI,EAAOwuI,OAAO3tB,QAAQzqG,QAAO,SAAU0M,GAC3D,OAAOA,EAAEuvF,MAAQA,KAGnB,GAAIo8B,EAAgB3yI,OAClB,OAAO2yI,EAAgB,GAAG1yI,KAM5B,IAFA,IAAI8kH,EAAU7gH,EAAOymH,GAAG,UAEf3tH,EAAI,EAAGA,EAAI+nH,EAAQ/kH,OAAQhD,IAAK,CACvC,IAAIgqB,EAAI+9F,EAAQ/nH,GAEhB,GAAIgqB,EAAE/mB,MAAQ+mB,EAAEuvF,KAAOvvF,EAAEuvF,MAAQA,EAC/B,OAAOvvF,EAAE/mB,KAKb,OAAOqyI,GAAY/7B,IAoBjBq8B,GAAe,SAASA,EAAar8B,GAEvC,GAAIzzG,MAAMyI,QAAQgrG,GAAM,CACtB,IAAIs8B,EAAS,GACbt8B,EAAI92G,SAAQ,SAAUqzI,GACpBA,EAASF,EAAaE,GAElBhwI,MAAMyI,QAAQunI,GAChBD,EAASA,EAAO9+H,OAAO++H,GACdx/H,GAASw/H,IAClBD,EAAOx1I,KAAKy1I,MAGhBv8B,EAAMs8B,OAGNt8B,EAFwB,kBAARA,GAAoBA,EAAI52G,OAElC,CAACozI,GAAU,CACfx8B,IAAKA,KAEEjjG,GAASijG,IAA2B,kBAAZA,EAAIA,KAAoBA,EAAIA,KAAOA,EAAIA,IAAI52G,OAEtE,CAACozI,GAAUx8B,IAGX,GAGR,OAAOA,GAYT,SAASw8B,GAAUx8B,GACjB,IAAKA,EAAIt2G,KAAM,CACb,IAAIuyI,EAAWF,GAAY/7B,EAAIA,KAE3Bi8B,IACFj8B,EAAIt2G,KAAOuyI,GAIf,OAAOj8B,EAUT,IAAIy8B,GAA2B,SAAU3V,GAevC,SAAS2V,EAAY9uI,EAAQ8H,EAAS4nH,GACpC,IAAIjrB,EAGAqrB,EAAWf,GAAe,CAC5BtL,UAAU,GACT37G,GAIH,GAHA28F,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8vH,EAAUJ,IAAUxxH,KAGrD4J,EAAQ0qH,cAAc3R,SAAoD,IAAzC/4G,EAAQ0qH,cAAc3R,QAAQ/kH,OAqBlEkE,EAAOqyG,IAAIvqG,EAAQ0qH,cAAc3R,cApBjC,IAAK,IAAI/nH,EAAI,EAAGi2I,EAAIjnI,EAAQ0qH,cAAcwc,UAAWl2I,EAAIi2I,EAAEjzI,OAAQhD,IAAK,CACtE,IAAIm2I,EAAWtgB,GAAcogB,EAAEj2I,IAC3Bw/H,EAAO7F,GAAK2W,QAAQ6F,GAQxB,GALKA,IACH3W,EAAO9I,GAAY0C,aAAa+c,IAI9B3W,GAAQA,EAAKpd,cAAe,CAC9Bl7G,EAAOkvI,UAAUD,GACjB,OAWN,OAAOxqC,EAGT,OAnDA,IAAeqqC,EAAa3V,GAmDrB2V,EApDsB,CAqD7Btf,IAEFA,GAAY2G,kBAAkB,cAAe2Y,IAS7C,IAAIK,GAAkC,SAAUhW,GAsB9C,SAASgW,EAAmBnvI,EAAQ8H,GAClC,IAAI28F,EA4BJ,OA1BAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE9CumG,EAAMqrB,SAASgL,aACjBr2B,EAAMq2B,YAAYr2B,EAAMqrB,SAASgL,aAGnCr2B,EAAM2qC,iBAAmB,SAAUlmI,GACjC,OAAOu7F,EAAM4qC,gBAAgBnmI,IAG/Bu7F,EAAM6qC,gBAAkB,SAAUpmI,GAChC,OAAOu7F,EAAM8qC,eAAermI,IAG9Bu7F,EAAM+qC,aAAe,SAAUtmI,GAC7B,OAAOu7F,EAAMgrC,YAAYvmI,IAG3Bu7F,EAAM20B,eAAiB,SAAUlwH,GAC/B,OAAOu7F,EAAMwvB,cAAc/qH,IAG7Bu7F,EAAM0vB,gBAEN1vB,EAAMyb,SAECzb,EAlDT,IAAe0qC,EAAoBhW,GAqEnC,IAAIx1B,EAASwrC,EAAmBxpI,UA+MhC,OA7MAg+F,EAAO8f,SAAW,SAAoB1gG,EAAKpkB,EAAO/B,QACpC,IAARmmB,IACFA,EAAM,YAGM,IAAVpkB,IACFA,EAAQ,SAGS,IAAf/B,IACFA,EAAa,IAGf+B,EAAQ2oB,GAAO,CACbgzE,UAAWp8F,KAAK20H,gBAChBiH,SAAU,GACTn7H,GAES,WAARokB,GACF09F,EAAM1yF,MAAM,yDAA2DhL,EAAM,4CAI/EnmB,EAAa0qB,GAAO,CAClBjN,KAAM,UACLzd,GACHsB,KAAKwxI,UAAY/wI,EAAMm7H,SACvB,IAAIjpH,EAAK4yG,GAAS1gG,EAAKpkB,EAAO/B,GAO9B,OANAiU,EAAGyc,YAAYm2F,GAAS,OAAQ,CAC9BnpB,UAAW,wBACV,CACD,eAAe,KAEjBp8F,KAAKyxI,oBAAoB9+H,GAClBA,GAGT8yF,EAAOS,QAAU,WAEflmG,KAAK0xI,eAAiB,KAEtBzW,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAapCylG,EAAOgsC,oBAAsB,SAA6B9+H,GAaxD,OAZA3S,KAAK0xI,eAAiBnsB,GAAS,OAAQ,CACrCnpB,UAAW,oBACV,CAED,YAAa,WAGXzpF,GACFA,EAAGyc,YAAYpvB,KAAK0xI,gBAGtB1xI,KAAK48H,YAAY58H,KAAK2xI,aAAch/H,GAC7B3S,KAAK0xI,gBAgBdjsC,EAAOm3B,YAAc,SAAqB5gI,EAAM2W,GAK9C,QAJW,IAAPA,IACFA,EAAK3S,KAAK2S,WAGCjI,IAAT1O,EACF,OAAOgE,KAAK2xI,cAAgB,YAG9B,IAAIC,EAAgB5xI,KAAK6yH,SAAS72H,GAClCgE,KAAK2xI,aAAe31I,EACpBumB,GAAYviB,KAAK0xI,eAAgBE,GAE5B5xI,KAAK6xI,gBAAmB7xI,KAAKyxH,QAAQG,SAASkgB,qBAEjDn/H,EAAG0rG,aAAa,QAASuzB,IAW7BnsC,EAAOkvB,cAAgB,WACrB,MAAO,0BAA4BsG,EAAWxzH,UAAUktH,cAAc/jH,KAAK5Q,OAO7EylG,EAAOuc,OAAS,WACThiH,KAAK+xI,WACR/xI,KAAK+xI,UAAW,EAChB/xI,KAAKmmH,YAAY,gBACjBnmH,KAAK+vH,IAAI1R,aAAa,gBAAiB,SAET,qBAAnBr+G,KAAKwxI,WACdxxI,KAAK+vH,IAAI1R,aAAa,WAAYr+G,KAAKwxI,WAGzCxxI,KAAK0lG,GAAG,CAAC,MAAO,SAAU1lG,KAAKsxI,cAC/BtxI,KAAK0lG,GAAG,UAAW1lG,KAAKk7H,kBAQ5Bz1B,EAAOsc,QAAU,WACf/hH,KAAK+xI,UAAW,EAChB/xI,KAAKgmH,SAAS,gBACdhmH,KAAK+vH,IAAI1R,aAAa,gBAAiB,QAET,qBAAnBr+G,KAAKwxI,WACdxxI,KAAK+vH,IAAIzR,gBAAgB,YAG3Bt+G,KAAK4lG,IAAI,YAAa5lG,KAAKkxI,kBAC3BlxI,KAAK4lG,IAAI,WAAY5lG,KAAKoxI,iBAC1BpxI,KAAK4lG,IAAI,CAAC,MAAO,SAAU5lG,KAAKsxI,cAChCtxI,KAAK4lG,IAAI,UAAW5lG,KAAKk7H,iBAS3Bz1B,EAAOqsB,qBAAuB,WAC5B9xH,KAAK48H,YAAY58H,KAAK2xI,eAexBlsC,EAAO8rC,YAAc,SAAqBrqC,GACpClnG,KAAK4xH,SAASogB,cAChBhyI,KAAK4xH,SAASogB,aAAaphI,KAAK5Q,KAAMqR,YAgB1Co0F,EAAOswB,cAAgB,SAAuB7uB,GAIxC,IAAQ8I,WAAW9I,EAAO,UAAY,IAAQ8I,WAAW9I,EAAO,UAClEA,EAAMgkB,iBACNhkB,EAAMukB,kBACNzrH,KAAK8lG,QAAQ,UAGbm1B,EAAWxzH,UAAUsuH,cAAcnlH,KAAK5Q,KAAMknG,IAI3C+pC,EArR6B,CAsRpC3f,IAEFA,GAAY2G,kBAAkB,qBAAsBgZ,IAQpD,IAAIgB,GAA2B,SAAUC,GAYvC,SAASD,EAAYnwI,EAAQ8H,GAC3B,IAAI28F,EAWJ,OATAA,EAAQ2rC,EAAoBthI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE3DumG,EAAM4rC,SAEN5rC,EAAM6rC,QAAU,SAAUpnI,GACxB,OAAOu7F,EAAM4rC,OAAOnnI,IAGtBlJ,EAAO4jG,GAAG,eAAgBa,EAAM6rC,SACzB7rC,EAvBT,IAAe0rC,EAAaC,GA8B5B,IAAIzsC,EAASwsC,EAAYxqI,UAiGzB,OA/FAg+F,EAAOS,QAAU,WACflmG,KAAK8B,SAAS8jG,IAAI,eAAgB5lG,KAAKoyI,SAEvCF,EAAoBzqI,UAAUy+F,QAAQt1F,KAAK5Q,OAU7CylG,EAAO8f,SAAW,WAChB,IAAI5yG,EAAK4yG,GAAS,MAAO,CACvBnpB,UAAW,aAEXw/B,UAAW,IAEb,OAAOjpH,GAYT8yF,EAAO0sC,OAAS,SAAgBjrC,GAC9B,IAAIv7F,EAAM3L,KAAK8B,SAASuwI,SACxBryI,KAAKsyI,OAAO3mI,GAGRA,EACF3L,KAAK+0H,OAEL/0H,KAAKg1H,QAWTvvB,EAAO6sC,OAAS,SAAgB3mI,GAC9B,IAAI4mI,EAAkB,GAGlB5mI,IACF4mI,EAAkB,QAAW5mI,EAAM,MAGrC3L,KAAK+vH,IAAI3vH,MAAMmyI,gBAAkBA,GAenC9sC,EAAO8rC,YAAc,SAAqBrqC,GAExC,GAAKlnG,KAAKyxH,QAAQ4K,WAAlB,CAIA,IAAImW,EAAoBxyI,KAAKyxH,QAAQghB,YAAY,QAAUzyI,KAAKyxH,QAAQihB,IAAIC,UAAY3yI,KAAKyxH,QAAQihB,IAAIC,SAAS/0I,OAAS,GAEvHoC,KAAKyxH,QAAQ2I,MAAK,KAGnBnW,IAAcH,KAAY0uB,GAC3BxyI,KAAKyxH,QAAQ2I,MAAK,GAAMtT,QAGtB9mH,KAAKyxH,QAAQyK,SACfjC,GAAej6H,KAAKyxH,QAAQrvH,QAE5BpC,KAAKyxH,QAAQpvH,UAIV4vI,EAhIsB,CAiI7BhB,IAEF3f,GAAY2G,kBAAkB,cAAega,IAE7C,IAAIW,GAAW,OACXC,GAAY,OACZC,GAAU,CACZC,UAAW,YACXC,UAAW,aACXC,MAAO,QACPC,mBAAoB,6CACpBC,eAAgB,2BAChBC,sBAAuB,aACvBC,kBAAmB,QACnBC,OAAQ,mCACRrK,OAAQ,8BACRsK,UAAW,0DAeb,SAASC,GAAe/1C,EAAOg2C,GAC7B,IAAIC,EAEJ,GAAqB,IAAjBj2C,EAAM7/F,OAER81I,EAAMj2C,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,OAC9D,IAAqB,IAAjBA,EAAM7/F,OAIf,MAAM,IAAIoM,MAAM,gCAAkCyzF,EAAQ,gDAF1Di2C,EAAMj2C,EAAM1gG,MAAM,GAKpB,MAAO,QAAUkX,SAASy/H,EAAI32I,MAAM,EAAG,GAAI,IAAM,IAAMkX,SAASy/H,EAAI32I,MAAM,EAAG,GAAI,IAAM,IAAMkX,SAASy/H,EAAI32I,MAAM,EAAG,GAAI,IAAM,IAAM02I,EAAU,IAkB/I,SAASE,GAAehhI,EAAIvS,EAAOs1H,GACjC,IACE/iH,EAAGvS,MAAMA,GAASs1H,EAClB,MAAO1qH,GAEP,QAUJ,IAAI4oI,GAAgC,SAAU3Y,GAe5C,SAAS2Y,EAAiB9xI,EAAQ8H,EAAS4nH,GACzC,IAAIjrB,EAEJA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,EAAS4nH,IAAUxxH,KAEzD,IAAI6zI,EAAuB,SAA8B7oI,GACvD,OAAOu7F,EAAM+iC,cAAct+H,IAkC7B,OA/BAlJ,EAAO4jG,GAAG,aAAa,SAAU16F,GAC/B,OAAOu7F,EAAMutC,cAAc9oI,MAE7BlJ,EAAO4jG,GAAG,kBAAmBmuC,GAC7B/xI,EAAO4jG,GAAG,kBAAkB,SAAU16F,GACpC,OAAOu7F,EAAMwtC,eAAe/oI,MAM9BlJ,EAAO0vH,MAAMzjH,GAAK,IAAuBw4F,IAAQ,WAC/C,GAAIzkG,EAAOohI,OAASphI,EAAOohI,MAAMkE,yBAC/BpnI,KAAKg1H,WADP,CAKAlzH,EAAO4jG,GAAG,mBAAoBmuC,GAC9B/xI,EAAO4jG,GAAG,eAAgBmuC,GAC1B,IAASxqB,iBAAiB,oBAAqBwqB,GAC/C/xI,EAAO4jG,GAAG,WAAW,WACnB,OAAO,IAAS0jB,oBAAoB,oBAAqByqB,MAI3D,IAFA,IAAItZ,EAASv6H,KAAK4xH,SAAS0C,cAAciG,QAAU,GAE1C3/H,EAAI,EAAGA,EAAI2/H,EAAO38H,OAAQhD,IACjCoF,KAAKyxH,QAAQmJ,mBAAmBL,EAAO3/H,IAAI,GAG7CoF,KAAK+zI,sBAEAxtC,EAtDT,IAAeqtC,EAAkB3Y,GAmEjC,IAAIx1B,EAASmuC,EAAiBnsI,UA0R9B,OAxRAg+F,EAAOsuC,eAAiB,WAWtB,IAVA,IAMIC,EACAC,EACAC,EARAC,EAAQ,CACVr1H,SAAU,EACVsiH,UAAW,GAETjkC,EAAYn9F,KAAKyxH,QAAQgJ,aACzB2Z,EAAWp0I,KAAKyxH,QAAQ6e,OAAO+D,iBAK1Bz5I,EAAI,EAAGA,EAAIuiG,EAAUv/F,OAAQhD,IAAK,CACzC,IAAIoiG,EAAQG,EAAUviG,GAElBw5I,GAAYA,EAASnV,SAAWmV,EAASh4H,UAAYg4H,EAASh4H,WAAa4gF,EAAM5gF,UAAY4gF,EAAM+iC,QAAQoU,EAEzGn3C,EAAM+iC,OAASqU,EAASrU,KAC1BmU,EAAiBl3C,EACPk3C,IACVA,EAAiBl3C,GAGVo3C,IAAaA,EAASnV,SAC/BiV,EAAiB,KACjBF,EAAY,KACZC,EAAgB,MACPj3C,EAAM,aACI,iBAAfA,EAAM+iC,MAA4BiU,EAE3Bh3C,EAAM+iC,QAAQoU,IAAUF,IACjCA,EAAgBj3C,GAFhBg3C,EAAYh3C,GAWdk3C,EACFA,EAAe92C,KAAO,UACb62C,EACTA,EAAc72C,KAAO,UACZ42C,IACTA,EAAU52C,KAAO,YAarBqI,EAAOquC,cAAgB,WACjB9zI,KAAKyxH,QAAQyR,OAASljI,KAAKyxH,QAAQyR,MAAMkE,yBAC3CpnI,KAAKg1H,OAELh1H,KAAK+0H,QAWTtvB,EAAO8f,SAAW,WAChB,OAAO0V,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAW,0BACV,CACD,UAAa,MACb,YAAa,MACb,cAAe,UAQnBqJ,EAAO6uC,aAAe,WACW,oBAApB,IAAS3sI,QAClB,IAASA,OAAO05F,YAAY,IAAU,GAAIrhG,KAAK+vH,MAYnDtqB,EAAO6jC,cAAgB,WACrB,IAAI/O,EAASv6H,KAAKyxH,QAAQgJ,aACtB8Z,EAA6Bv0I,KAAK4xH,SAAS2iB,2BAG/C,GAFAv0I,KAAKs0I,eAEDC,EAAJ,CAGE,IAFA,IAAIC,EAAgB,GAEXvuC,EAAK,EAAGA,EAAKs0B,EAAO38H,SAAUqoG,EAAI,CACzC,IAAIjJ,EAAQu9B,EAAOt0B,GAEA,YAAfjJ,EAAMI,MAIVo3C,EAAcv5I,KAAK+hG,GAGrBh9F,KAAKy0I,eAAeD,OAbtB,CAoBA,IAAIE,EAAoB,KACpBC,EAAyB,KACzB/5I,EAAI2/H,EAAO38H,OAEf,MAAOhD,IAAK,CACV,IAAIg6I,EAASra,EAAO3/H,GAEA,YAAhBg6I,EAAOx3C,OACW,iBAAhBw3C,EAAO7U,KACT2U,EAAoBE,EAEpBD,EAAyBC,GAK3BD,GACqC,QAAnC30I,KAAKu9G,aAAa,cACpBv9G,KAAKq+G,aAAa,YAAa,OAGjCr+G,KAAKy0I,eAAeE,IACXD,IAC8B,cAAnC10I,KAAKu9G,aAAa,cACpBv9G,KAAKq+G,aAAa,YAAa,aAGjCr+G,KAAKy0I,eAAeC,MAWxBjvC,EAAOovC,mBAAqB,SAA4B73C,GACtD,IAAI83C,EAAY90I,KAAKyxH,QAAQsjB,kBAAkBC,YAC3C1zC,EAAOtE,EAAM2mC,WACb/oI,EAAI0mG,EAAK1jG,OAEb,MAAOhD,IAAK,CACV,IAAI69F,EAAM6I,EAAK1mG,GAEf,GAAK69F,EAAL,CAIA,IAAIiE,EAASjE,EAAItrE,aAsCjB,GApCI2nH,EAAUr3C,QACZf,EAAO8E,WAAWphG,MAAMq9F,MAAQq3C,EAAUr3C,OAGxCq3C,EAAUG,aACZtB,GAAej3C,EAAO8E,WAAY,QAASgyC,GAAesB,EAAUr3C,OAAS,OAAQq3C,EAAUG,cAG7FH,EAAUp3C,kBACZhB,EAAO8E,WAAWphG,MAAMs9F,gBAAkBo3C,EAAUp3C,iBAGlDo3C,EAAUI,mBACZvB,GAAej3C,EAAO8E,WAAY,kBAAmBgyC,GAAesB,EAAUp3C,iBAAmB,OAAQo3C,EAAUI,oBAGjHJ,EAAUK,cACRL,EAAUM,cACZzB,GAAej3C,EAAQ,kBAAmB82C,GAAesB,EAAUK,YAAaL,EAAUM,gBAE1F14C,EAAOt8F,MAAMs9F,gBAAkBo3C,EAAUK,aAIzCL,EAAUO,YACgB,eAAxBP,EAAUO,UACZ34C,EAAO8E,WAAWphG,MAAMk1I,WAAa,eAAiB1C,GAAW,iBAAmBA,GAAW,iBAAmBA,GACjF,WAAxBkC,EAAUO,UACnB34C,EAAO8E,WAAWphG,MAAMk1I,WAAa,WAAa1C,GAAW,aAAeA,GAAW,aAAeA,GACrE,cAAxBkC,EAAUO,UACnB34C,EAAO8E,WAAWphG,MAAMk1I,WAAa,WAAazC,GAAY,WAAaA,GAAY,eAAiBD,GAAW,YAAcA,GAChG,YAAxBkC,EAAUO,YACnB34C,EAAO8E,WAAWphG,MAAMk1I,WAAa,WAAa1C,GAAW,aAAeA,GAAW,aAAeA,GAAW,aAAeA,KAIhIkC,EAAUS,aAAyC,IAA1BT,EAAUS,YAAmB,CACxD,IAAI1zC,EAAW,IAASp/E,WAAWi6E,EAAOt8F,MAAMyhG,UAChDnF,EAAOt8F,MAAMyhG,SAAWA,EAAWizC,EAAUS,YAAc,KAC3D74C,EAAOt8F,MAAMe,OAAS,OACtBu7F,EAAOt8F,MAAMwmF,IAAM,OAGjBkuD,EAAUU,YAAuC,YAAzBV,EAAUU,aACP,eAAzBV,EAAUU,WACZ94C,EAAO8E,WAAWphG,MAAMq1I,YAAc,aAEtC/4C,EAAO8E,WAAWphG,MAAMo1I,WAAa1C,GAAQgC,EAAUU,gBAa/D/vC,EAAOgvC,eAAiB,SAAwBla,GAK9C,GAJK75H,MAAMyI,QAAQoxH,KACjBA,EAAS,CAACA,IAGmB,oBAApB,IAAS5yH,SAAyB4yH,EAAOp7H,OAAM,SAAU69F,GAClE,OAAQA,EAAM2mC,cADhB,CAQA,IAFA,IAAIriC,EAAO,GAEF1mG,EAAI,EAAGA,EAAI2/H,EAAO38H,SAAUhD,EAGnC,IAFA,IAAIoiG,EAAQu9B,EAAO3/H,GAEVi2I,EAAI,EAAGA,EAAI7zC,EAAM2mC,WAAW/lI,SAAUizI,EAC7CvvC,EAAKrmG,KAAK+hG,EAAM2mC,WAAWkN,IAK/B,IAASlpI,OAAO05F,YAAY,IAAUC,EAAMthG,KAAK+vH,KAEjD,IAAK,IAAI2lB,EAAM,EAAGA,EAAMnb,EAAO38H,SAAU83I,EAAK,CAG5C,IAFA,IAAIC,EAAUpb,EAAOmb,GAEZE,EAAK,EAAGA,EAAKD,EAAQhS,WAAW/lI,SAAUg4I,EAAI,CACrD,IAAIC,EAAQF,EAAQhS,WAAWiS,GAAIzoH,aACnC64F,GAAS6vB,EAAO,sBAChB7vB,GAAS6vB,EAAO,uBAAyBF,EAAQv5H,SAAWu5H,EAAQv5H,SAAWs5H,IAE3EC,EAAQv5H,UACViiG,GAAaw3B,EAAO,OAAQF,EAAQv5H,UAIpCpc,KAAKyxH,QAAQsjB,mBACf/0I,KAAK60I,mBAAmBc,MAKvB/B,EA9V2B,CA+VlCtiB,IAEFA,GAAY2G,kBAAkB,mBAAoB2b,IAQlD,IAAIkC,GAA8B,SAAU7a,GAG1C,SAAS6a,IACP,OAAO7a,EAAWjgH,MAAMhb,KAAMqR,YAAcrR,KAH9C,IAAe81I,EAAgB7a,GAM/B,IAAIx1B,EAASqwC,EAAeruI,UAyB5B,OAjBAg+F,EAAO8f,SAAW,WAChB,IAAIwwB,EAAU/1I,KAAKyxH,QAAQskB,UACvBC,EAAah2I,KAAK6yH,SAASkjB,EAAU,eAAiB,gBACtDnZ,EAAcrX,GAAS,OAAQ,CACjCnpB,UAAW,mBACX75E,YAAaviB,KAAK6yH,SAAS,kBAAmB,CAACmjB,MAG7CrjI,EAAKsoH,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACvDo8F,UAAW,sBACXzwE,IAAK,QAIP,OADAhZ,EAAGyc,YAAYwtG,GACRjqH,GAGFmjI,EAhCyB,CAiChCxkB,IAEFA,GAAY2G,kBAAkB,iBAAkB6d,IAQhD,IAAIG,GAAsB,SAAU/D,GAGlC,SAAS+D,IACP,OAAO/D,EAAoBl3H,MAAMhb,KAAMqR,YAAcrR,KAHvD,IAAei2I,EAAQ/D,GAMvB,IAAIzsC,EAASwwC,EAAOxuI,UA2HpB,OAzGAg+F,EAAO8f,SAAW,SAAoB1gG,EAAKpkB,EAAO/B,QAClC,IAAV+B,IACFA,EAAQ,SAGS,IAAf/B,IACFA,EAAa,IAGfmmB,EAAM,SACNpkB,EAAQ2oB,GAAO,CACbgzE,UAAWp8F,KAAK20H,iBACfl0H,GAEH/B,EAAa0qB,GAAO,CAElBvrB,KAAM,UACLa,GAEH,IAAIiU,EAAK4yG,GAAS1gG,EAAKpkB,EAAO/B,GAQ9B,OANAiU,EAAGyc,YAAYm2F,GAAS,OAAQ,CAC9BnpB,UAAW,wBACV,CACD,eAAe,KAEjBp8F,KAAKyxI,oBAAoB9+H,GAClBA,GAoBT8yF,EAAOkuB,SAAW,SAAkBvb,EAAOxuG,QACzB,IAAZA,IACFA,EAAU,IAGZ,IAAIwyF,EAAYp8F,KAAK2O,YAAYnR,KAGjC,OAFA+kH,EAAMr1F,KAAK,+DAAiEkvE,EAAY,yDAEjFk1B,GAAY7pH,UAAUksH,SAAS/iH,KAAK5Q,KAAMo4G,EAAOxuG,IAQ1D67F,EAAOuc,OAAS,WACdkwB,EAAoBzqI,UAAUu6G,OAAOpxG,KAAK5Q,MAE1CA,KAAK+vH,IAAIzR,gBAAgB,aAQ3B7Y,EAAOsc,QAAU,WACfmwB,EAAoBzqI,UAAUs6G,QAAQnxG,KAAK5Q,MAE3CA,KAAK+vH,IAAI1R,aAAa,WAAY,aAapC5Y,EAAOswB,cAAgB,SAAuB7uB,GAMxC,IAAQ8I,WAAW9I,EAAO,UAAY,IAAQ8I,WAAW9I,EAAO,SAClEA,EAAMukB,kBAKRymB,EAAoBzqI,UAAUsuH,cAAcnlH,KAAK5Q,KAAMknG,IAGlD+uC,EAlIiB,CAmIxBhF,IAEF3f,GAAY2G,kBAAkB,SAAUge,IASxC,IAAIC,GAA6B,SAAUC,GAGzC,SAASD,EAAcp0I,EAAQ8H,GAC7B,IAAI28F,EASJ,OAPAA,EAAQ4vC,EAAQvlI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAC/CumG,EAAM6vC,YAAa,EAEnB7vC,EAAMb,GAAG,aAAa,SAAU16F,GAC9B,OAAOu7F,EAAM8vC,gBAAgBrrI,MAGxBu7F,EAZT,IAAe2vC,EAAeC,GAsB9B,IAAI1wC,EAASywC,EAAczuI,UAgE3B,OA9DAg+F,EAAOkvB,cAAgB,WACrB,MAAO,uBAeTlvB,EAAO8rC,YAAc,SAAqBrqC,GACxC,IAAIovC,EAAct2I,KAAKyxH,QAAQrvH,OAE/B,GAAIpC,KAAKo2I,YAAclvC,EAAM0kB,SAAW1kB,EAAM6kB,QAAS,CACrD,IAAIymB,EAAoBxyI,KAAKyxH,QAAQghB,YAAY,QAAUzyI,KAAKyxH,QAAQihB,IAAIC,UAAY3yI,KAAKyxH,QAAQihB,IAAIC,SAAS/0I,OAAS,EAU3H,OATAq8H,GAAeqc,SAEXt2I,KAAKyxH,QAAQ2I,MAAK,KAGnBnW,IAAcH,KAAY0uB,GAC3BxyI,KAAKyxH,QAAQ2I,MAAK,GAAMtT,SAM5B,IAAIujB,EAAKrqI,KAAKyxH,QAAQ+B,SAAS,cAC3B+iB,EAAalM,GAAMA,EAAG7W,SAAS,cAEnC,GAAK+iB,EAAL,CAKA,IAAIC,EAAY,WACd,OAAOD,EAAWzvB,SAGhBkT,GAAUsc,GACZA,EAAY5zI,KAAK8zI,GAAW,eAE5Bx2I,KAAKuK,WAAWisI,EAAW,QAX3Bx2I,KAAKyxH,QAAQ2I,MAAK,GAAMtT,SAe5BrhB,EAAOswB,cAAgB,SAAuB7uB,GAC5ClnG,KAAKo2I,YAAa,EAElBD,EAAQ1uI,UAAUsuH,cAAcnlH,KAAK5Q,KAAMknG,IAG7CzB,EAAO4wC,gBAAkB,SAAyBnvC,GAChDlnG,KAAKo2I,YAAa,GAGbF,EAvFwB,CAwF/BD,IASFC,GAAczuI,UAAUkqI,aAAe,aACvCrgB,GAAY2G,kBAAkB,gBAAiBie,IAS/C,IAAIO,GAA2B,SAAUN,GAYvC,SAASM,EAAY30I,EAAQ8H,GAC3B,IAAI28F,EAMJ,OAJAA,EAAQ4vC,EAAQvlI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE/CumG,EAAMq2B,YAAYhzH,GAAWA,EAAQgzH,aAAer2B,EAAMssB,SAAS,UAE5DtsB,EAlBT,IAAekwC,EAAaN,GA4B5B,IAAI1wC,EAASgxC,EAAYhvI,UA6DzB,OA3DAg+F,EAAOkvB,cAAgB,WACrB,MAAO,oBAAsBwhB,EAAQ1uI,UAAUktH,cAAc/jH,KAAK5Q,OAiBpEylG,EAAO8rC,YAAc,SAAqBrqC,GAWxClnG,KAAK8lG,QAAQ,CACXjoG,KAAM,QACN8uH,SAAS,KAgBblnB,EAAOswB,cAAgB,SAAuB7uB,GAExC,IAAQ8I,WAAW9I,EAAO,QAC5BA,EAAMgkB,iBACNhkB,EAAMukB,kBACNzrH,KAAK8lG,QAAQ,UAGbqwC,EAAQ1uI,UAAUsuH,cAAcnlH,KAAK5Q,KAAMknG,IAIxCuvC,EA1FsB,CA2F7BR,IAEF3kB,GAAY2G,kBAAkB,cAAewe,IAQ7C,IAAIC,GAA0B,SAAUP,GAYtC,SAASO,EAAW50I,EAAQ8H,GAC1B,IAAI28F,EAwBJ,YAtBgB,IAAZ38F,IACFA,EAAU,IAGZ28F,EAAQ4vC,EAAQvlI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE/C4J,EAAQ+sI,YAA4BjsI,IAAnBd,EAAQ+sI,QAAwB/sI,EAAQ+sI,OAEzDpwC,EAAMb,GAAG5jG,EAAQ,QAAQ,SAAUkJ,GACjC,OAAOu7F,EAAMqwC,WAAW5rI,MAG1Bu7F,EAAMb,GAAG5jG,EAAQ,SAAS,SAAUkJ,GAClC,OAAOu7F,EAAMswC,YAAY7rI,MAGvBpB,EAAQ+sI,QACVpwC,EAAMb,GAAG5jG,EAAQ,SAAS,SAAUkJ,GAClC,OAAOu7F,EAAMuwC,YAAY9rI,MAItBu7F,EApCT,IAAemwC,EAAYP,GA8C3B,IAAI1wC,EAASixC,EAAWjvI,UAqGxB,OAnGAg+F,EAAOkvB,cAAgB,WACrB,MAAO,oBAAsBwhB,EAAQ1uI,UAAUktH,cAAc/jH,KAAK5Q,OAepEylG,EAAO8rC,YAAc,SAAqBrqC,GACpClnG,KAAKyxH,QAAQyK,SACfjC,GAAej6H,KAAKyxH,QAAQrvH,QAE5BpC,KAAKyxH,QAAQpvH,SAcjBojG,EAAOsxC,aAAe,SAAsB7vC,GAC1ClnG,KAAKmmH,YAAY,aAEbnmH,KAAKyxH,QAAQyK,SACfl8H,KAAK62I,YAAY3vC,GAEjBlnG,KAAK42I,WAAW1vC,IAapBzB,EAAOmxC,WAAa,SAAoB1vC,GACtClnG,KAAKmmH,YAAY,aACjBnmH,KAAKmmH,YAAY,cACjBnmH,KAAKgmH,SAAS,eAEdhmH,KAAK48H,YAAY,UAYnBn3B,EAAOoxC,YAAc,SAAqB3vC,GACxClnG,KAAKmmH,YAAY,eACjBnmH,KAAKgmH,SAAS,cAEdhmH,KAAK48H,YAAY,SAYnBn3B,EAAOqxC,YAAc,SAAqB5vC,GACxC,IAAIC,EAASnnG,KAEbA,KAAKmmH,YAAY,eACjBnmH,KAAKgmH,SAAS,aAEdhmH,KAAK48H,YAAY,UAEjB58H,KAAK6sH,IAAI7sH,KAAKyxH,QAAS,UAAU,SAAUzmH,GACzC,OAAOm8F,EAAO4vC,aAAa/rI,OAIxB0rI,EApJqB,CAqJ5BT,IASFS,GAAWjvI,UAAUkqI,aAAe,OACpCrgB,GAAY2G,kBAAkB,aAAcye,IAsB5C,IAAIM,GAAwB,SAA+B/mI,EAASgnI,GAClEhnI,EAAUA,EAAU,EAAI,EAAIA,EAC5B,IAAI2U,EAAI7O,KAAKG,MAAMjG,EAAU,IACzBgoF,EAAIliF,KAAKG,MAAMjG,EAAU,GAAK,IAC9B+nF,EAAIjiF,KAAKG,MAAMjG,EAAU,MACzBinI,EAAKnhI,KAAKG,MAAM+gI,EAAQ,GAAK,IAC7BE,EAAKphI,KAAKG,MAAM+gI,EAAQ,MAe5B,OAbI1iI,MAAMtE,IAAYA,IAAYyF,OAGhCsiF,EAAIC,EAAIrzE,EAAI,KAIdozE,EAAIA,EAAI,GAAKm/C,EAAK,EAAIn/C,EAAI,IAAM,GAGhCC,IAAMD,GAAKk/C,GAAM,KAAOj/C,EAAI,GAAK,IAAMA,EAAIA,GAAK,IAEhDrzE,EAAIA,EAAI,GAAK,IAAMA,EAAIA,EAChBozE,EAAIC,EAAIrzE,GAIbyN,GAAiB2kH,GAUrB,SAASI,GAAcC,GACrBhlH,GAAiBglH,EAMnB,SAASC,KACPjlH,GAAiB2kH,GAsBnB,SAASO,GAAWtnI,EAASgnI,GAK3B,YAJc,IAAVA,IACFA,EAAQhnI,GAGHoiB,GAAepiB,EAASgnI,GASjC,IAAIO,GAA2B,SAAUvc,GAYvC,SAASuc,EAAY11I,EAAQ8H,GAC3B,IAAI28F,EAUJ,OARAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAElDumG,EAAMb,GAAG5jG,EAAQ,CAAC,aAAc,UAAU,SAAUkJ,GAClD,OAAOu7F,EAAMkxC,cAAczsI,MAG7Bu7F,EAAMmxC,kBAECnxC,EAtBT,IAAeixC,EAAavc,GAgC5B,IAAIx1B,EAAS+xC,EAAY/vI,UAkGzB,OAhGAg+F,EAAO8f,SAAW,WAChB,IAAInpB,EAAYp8F,KAAK20H,gBAEjBhiH,EAAKsoH,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACvDo8F,UAAWA,EAAY,kCAGrBu7C,EAAOpyB,GAAS,OAAQ,CAC1BnpB,UAAW,mBACX75E,YAAaviB,KAAK6yH,SAAS7yH,KAAK43I,YAAc,KAC7C,CACDz7H,KAAM,iBAeR,OAbAxJ,EAAGyc,YAAYuoH,GACf33I,KAAKqzH,WAAa9N,GAAS,OAAQ,CACjCnpB,UAAWA,EAAY,YACtB,CAED,YAAa,MAKb,KAAQ,iBAEVzpF,EAAGyc,YAAYpvB,KAAKqzH,YACb1gH,GAGT8yF,EAAOS,QAAU,WACflmG,KAAKqzH,WAAa,KAClBrzH,KAAK63I,UAAY,KAEjB5c,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAWpCylG,EAAOiyC,gBAAkB,SAAyB9gI,GAChD,IAAIuwF,EAASnnG,UAEA,IAAT4W,IACFA,EAAO,GAGTA,EAAO2gI,GAAW3gI,GAEd5W,KAAK83I,iBAAmBlhI,IAI5B5W,KAAK83I,eAAiBlhI,EACtB5W,KAAK03H,2BAA2B,+BAA+B,WAC7D,GAAKvwB,EAAOksB,WAAZ,CAIA,IAAI0kB,EAAU5wC,EAAO0wC,UAEjBE,GAAW5wC,EAAOksB,WAAW7xB,aAAeu2C,IAC9CA,EAAU,KACVx1B,EAAMr1F,KAAK,uJAGbi6E,EAAO0wC,UAAY,IAASnmH,eAAey1E,EAAO2wC,gBAE7C3wC,EAAO0wC,YAIRE,EACF5wC,EAAOksB,WAAWzW,aAAazV,EAAO0wC,UAAWE,GAEjD5wC,EAAOksB,WAAWjkG,YAAY+3E,EAAO0wC,kBAe3CpyC,EAAOgyC,cAAgB,SAAuBvwC,KAEvCswC,EAnIsB,CAoI7BlmB,IASFkmB,GAAY/vI,UAAUmwI,WAAa,OAUnCJ,GAAY/vI,UAAUkqI,aAAe,OACrCrgB,GAAY2G,kBAAkB,cAAeuf,IAQ7C,IAAIQ,GAAkC,SAAUC,GAG9C,SAASD,IACP,OAAOC,EAAaj9H,MAAMhb,KAAMqR,YAAcrR,KAHhD,IAAeg4I,EAAoBC,GAMnC,IAAIxyC,EAASuyC,EAAmBvwI,UAkChC,OA1BAg+F,EAAOkvB,cAAgB,WACrB,MAAO,oBAYTlvB,EAAOgyC,cAAgB,SAAuBvwC,GAE5C,IAAItwF,EAGFA,EADE5W,KAAKyxH,QAAQqc,QACR9tI,KAAKyxH,QAAQ/8G,WAEb1U,KAAKyxH,QAAQoX,YAAc7oI,KAAKyxH,QAAQymB,WAAW7T,YAAcrkI,KAAKyxH,QAAQ4S,cAGvFrkI,KAAK03I,gBAAgB9gI,IAGhBohI,EAzC6B,CA0CpCR,IASFQ,GAAmBvwI,UAAUmwI,WAAa,eAU1CI,GAAmBvwI,UAAUkqI,aAAe,eAC5CrgB,GAAY2G,kBAAkB,qBAAsB+f,IAQpD,IAAIG,GAA+B,SAAUF,GAY3C,SAASE,EAAgBr2I,EAAQ8H,GAC/B,IAAI28F,EAEJA,EAAQ0xC,EAAarnI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAEpD,IAAIy3I,EAAgB,SAAuBzsI,GACzC,OAAOu7F,EAAMkxC,cAAczsI,IAkB7B,OAZAu7F,EAAMb,GAAG5jG,EAAQ,iBAAkB21I,GAKnClxC,EAAMb,GAAG5jG,EAAQ,YAAa21I,GAK9BlxC,EAAMb,GAAG5jG,EAAQ,iBAAkB21I,GAE5BlxC,EAnCT,IAAe4xC,EAAiBF,GA6ChC,IAAIxyC,EAAS0yC,EAAgB1wI,UAuB7B,OArBAg+F,EAAOkvB,cAAgB,WACrB,MAAO,gBAeTlvB,EAAOgyC,cAAgB,SAAuBvwC,GAC5C,IAAIxyF,EAAW1U,KAAKyxH,QAAQ/8G,WAC5B1U,KAAK03I,gBAAgBhjI,IAGhByjI,EArE0B,CAsEjCX,IASFW,GAAgB1wI,UAAUmwI,WAAa,WAUvCO,GAAgB1wI,UAAUkqI,aAAe,WACzCrgB,GAAY2G,kBAAkB,kBAAmBkgB,IASjD,IAAIC,GAA2B,SAAUnd,GAGvC,SAASmd,IACP,OAAOnd,EAAWjgH,MAAMhb,KAAMqR,YAAcrR,KAH9C,IAAeo4I,EAAand,GAM5B,IAAIx1B,EAAS2yC,EAAY3wI,UA6BzB,OArBAg+F,EAAO8f,SAAW,WAChB,IAAI5yG,EAAKsoH,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACvDo8F,UAAW,qCACV,CAID,eAAe,IAGbpxD,EAAMiwF,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,OAE/C23I,EAAO1c,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,OAAQ,CAC1DuiB,YAAa,MAKf,OAFAyoB,EAAI5b,YAAYuoH,GAChBhlI,EAAGyc,YAAY4b,GACRr4B,GAGFylI,EApCsB,CAqC7B9mB,IAEFA,GAAY2G,kBAAkB,cAAemgB,IAQ7C,IAAIC,GAAoC,SAAUJ,GAYhD,SAASI,EAAqBv2I,EAAQ8H,GACpC,IAAI28F,EAQJ,OANAA,EAAQ0xC,EAAarnI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAEpDumG,EAAMb,GAAG5jG,EAAQ,kBAAkB,SAAUkJ,GAC3C,OAAOu7F,EAAMkxC,cAAczsI,MAGtBu7F,EApBT,IAAe8xC,EAAsBJ,GA8BrC,IAAIxyC,EAAS4yC,EAAqB5wI,UAsDlC,OApDAg+F,EAAOkvB,cAAgB,WACrB,MAAO,sBAUTlvB,EAAO8f,SAAW,WAChB,IAAI5yG,EAAKslI,EAAaxwI,UAAU89G,SAAS30G,KAAK5Q,MAQ9C,OANsC,IAAlCA,KAAK4xH,SAAS0mB,iBAChB3lI,EAAG+pG,aAAa6I,GAAS,OAAQ,GAAI,CACnC,eAAe,GACd,KAAMvlH,KAAKqzH,YAGT1gH,GAaT8yF,EAAOgyC,cAAgB,SAAuBvwC,GAK5C,IAAItwF,EAJmC,kBAA5B5W,KAAKyxH,QAAQ/8G,aAQtBkC,EADE5W,KAAKyxH,QAAQqc,QACR,EACE9tI,KAAKyxH,QAAQ8mB,qBACfv4I,KAAKyxH,QAAQ8mB,uBAEbv4I,KAAKyxH,QAAQ+mB,gBAGtBx4I,KAAK03I,gBAAgB9gI,KAGhByhI,EArF+B,CAsFtCb,IASFa,GAAqB5wI,UAAUmwI,WAAa,iBAU5CS,GAAqB5wI,UAAUkqI,aAAe,iBAC9CrgB,GAAY2G,kBAAkB,uBAAwBogB,IAQtD,IAAII,GAA2B,SAAUxd,GAYvC,SAASwd,EAAY32I,EAAQ8H,GAC3B,IAAI28F,EAUJ,OARAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAElDumG,EAAMmyC,gBAENnyC,EAAMb,GAAGa,EAAMzkG,SAAU,kBAAkB,SAAUkJ,GACnD,OAAOu7F,EAAMmyC,cAAc1tI,MAGtBu7F,EAtBT,IAAekyC,EAAaxd,GAgC5B,IAAIx1B,EAASgzC,EAAYhxI,UA6CzB,OA3CAg+F,EAAO8f,SAAW,WAChB,IAAI5yG,EAAKsoH,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACvDo8F,UAAW,iCAcb,OAXAp8F,KAAKqzH,WAAa9N,GAAS,MAAO,CAChCnpB,UAAW,oBACV,CACD,YAAa,QAEfp8F,KAAKqzH,WAAWjkG,YAAYm2F,GAAS,OAAQ,CAC3CnpB,UAAW,mBACX75E,YAAaviB,KAAK6yH,SAAS,eAAiB,OAE9C7yH,KAAKqzH,WAAWjkG,YAAY,IAASsC,eAAe1xB,KAAK6yH,SAAS,UAClElgH,EAAGyc,YAAYpvB,KAAKqzH,YACb1gH,GAGT8yF,EAAOS,QAAU,WACflmG,KAAKqzH,WAAa,KAElB4H,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAapCylG,EAAOizC,cAAgB,SAAuBxxC,GACxClnG,KAAK8B,SAAS4S,aAAegB,IAC/B1V,KAAK+0H,OAEL/0H,KAAKg1H,QAIFyjB,EA9EsB,CA+E7BnnB,IAEFA,GAAY2G,kBAAkB,cAAewgB,IAQ7C,IAAIE,GAA0B,SAAUxC,GAYtC,SAASwC,EAAW72I,EAAQ8H,GAC1B,IAAI28F,EAcJ,OAZAA,EAAQ4vC,EAAQvlI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE/CumG,EAAMqyC,uBAEFryC,EAAMkrB,QAAQonB,cAChBtyC,EAAMuyC,6BAA+B,SAAU9tI,GAC7C,OAAOu7F,EAAMqyC,qBAAqB5tI,IAGpCu7F,EAAMb,GAAGa,EAAMkrB,QAAQonB,YAAa,iBAAkBtyC,EAAMuyC,+BAGvDvyC,EA1BT,IAAeoyC,EAAYxC,GAoC3B,IAAI1wC,EAASkzC,EAAWlxI,UA2DxB,OAzDAg+F,EAAO8f,SAAW,WAChB,IAAI5yG,EAAKwjI,EAAQ1uI,UAAU89G,SAAS30G,KAAK5Q,KAAM,SAAU,CACvDo8F,UAAW,yCAUb,OAPAp8F,KAAK+4I,QAAUxzB,GAAS,OAAQ,CAC9BnpB,UAAW,wBACX75E,YAAaviB,KAAK6yH,SAAS,SAC1B,CACD,cAAe,SAEjBlgH,EAAGyc,YAAYpvB,KAAK+4I,SACbpmI,GAQT8yF,EAAOmzC,qBAAuB,YAEvB54I,KAAKyxH,QAAQonB,aAAe74I,KAAKyxH,QAAQonB,YAAYG,cACxDh5I,KAAKq+G,aAAa,iBAAiB,GACnCr+G,KAAKgmH,SAAS,oBACdhmH,KAAK48H,YAAY,0CAEjB58H,KAAKq+G,aAAa,iBAAiB,GACnCr+G,KAAKmmH,YAAY,oBACjBnmH,KAAK48H,YAAY,yCAUrBn3B,EAAO8rC,YAAc,WACnBvxI,KAAKyxH,QAAQonB,YAAYI,kBAO3BxzC,EAAOS,QAAU,WACXlmG,KAAKyxH,QAAQonB,aACf74I,KAAK4lG,IAAI5lG,KAAKyxH,QAAQonB,YAAa,iBAAkB74I,KAAK84I,8BAG5D94I,KAAK+4I,QAAU,KAEf5C,EAAQ1uI,UAAUy+F,QAAQt1F,KAAK5Q,OAG1B24I,EAhGqB,CAiG5B1C,IAEF0C,GAAWlxI,UAAUkqI,aAAe,uCACpCrgB,GAAY2G,kBAAkB,aAAc0gB,IAgB5C,IAAIO,GAAQ,SAAe3iI,EAAQF,EAAKD,GAEtC,OADAG,EAAS1Z,OAAO0Z,GACTR,KAAKM,IAAID,EAAKL,KAAKK,IAAIC,EAAK9B,MAAMgC,GAAUF,EAAME,KAUvD4iI,GAAsB,SAAUle,GAYlC,SAASke,EAAOr3I,EAAQ8H,GACtB,IAAI28F,EAmCJ,OAjCAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAElDumG,EAAM6yC,iBAAmB,SAAUpuI,GACjC,OAAOu7F,EAAM8vC,gBAAgBrrI,IAG/Bu7F,EAAM8yC,eAAiB,SAAUruI,GAC/B,OAAOu7F,EAAM+yC,cAActuI,IAG7Bu7F,EAAM20B,eAAiB,SAAUlwH,GAC/B,OAAOu7F,EAAMwvB,cAAc/qH,IAG7Bu7F,EAAM+qC,aAAe,SAAUtmI,GAC7B,OAAOu7F,EAAMgrC,YAAYvmI,IAG3Bu7F,EAAMgzC,iBAAmB,SAAUvuI,GACjC,OAAOu7F,EAAMizC,gBAAgBxuI,IAG/Bu7F,EAAM6rC,QAAU,SAAUpnI,GACxB,OAAOu7F,EAAM4rC,OAAOnnI,IAItBu7F,EAAMkzC,IAAMlzC,EAAMitB,SAASjtB,EAAMqrB,SAAS8nB,SAE1CnzC,EAAM/M,WAAW+M,EAAMqrB,SAASp4B,UAEhC+M,EAAMyb,SAECzb,EA/CT,IAAe4yC,EAAQle,GAyDvB,IAAIx1B,EAAS0zC,EAAO1xI,UAuUpB,OArUAg+F,EAAOw5B,QAAU,WACf,OAAOj/H,KAAK+xI,UAOdtsC,EAAOuc,OAAS,WACVhiH,KAAKi/H,YAITj/H,KAAK0lG,GAAG,YAAa1lG,KAAKo5I,kBAC1Bp5I,KAAK0lG,GAAG,aAAc1lG,KAAKo5I,kBAC3Bp5I,KAAK0lG,GAAG,UAAW1lG,KAAKk7H,gBACxBl7H,KAAK0lG,GAAG,QAAS1lG,KAAKsxI,cAEtBtxI,KAAK0lG,GAAG1lG,KAAKyxH,QAAS,kBAAmBzxH,KAAKmyI,QAE1CnyI,KAAK25I,aACP35I,KAAK0lG,GAAG1lG,KAAKyxH,QAASzxH,KAAK25I,YAAa35I,KAAKmyI,QAG/CnyI,KAAKmmH,YAAY,YACjBnmH,KAAKq+G,aAAa,WAAY,GAC9Br+G,KAAK+xI,UAAW,IAOlBtsC,EAAOsc,QAAU,WACf,GAAK/hH,KAAKi/H,UAAV,CAIA,IAAI5vG,EAAMrvB,KAAKy5I,IAAI1pB,IAAIjZ,cACvB92G,KAAK4lG,IAAI,YAAa5lG,KAAKo5I,kBAC3Bp5I,KAAK4lG,IAAI,aAAc5lG,KAAKo5I,kBAC5Bp5I,KAAK4lG,IAAI,UAAW5lG,KAAKk7H,gBACzBl7H,KAAK4lG,IAAI,QAAS5lG,KAAKsxI,cACvBtxI,KAAK4lG,IAAI5lG,KAAKyxH,QAAS,kBAAmBzxH,KAAKoyI,SAC/CpyI,KAAK4lG,IAAIv2E,EAAK,YAAarvB,KAAKu5I,kBAChCv5I,KAAK4lG,IAAIv2E,EAAK,UAAWrvB,KAAKq5I,gBAC9Br5I,KAAK4lG,IAAIv2E,EAAK,YAAarvB,KAAKu5I,kBAChCv5I,KAAK4lG,IAAIv2E,EAAK,WAAYrvB,KAAKq5I,gBAC/Br5I,KAAKs+G,gBAAgB,YACrBt+G,KAAKgmH,SAAS,YAEVhmH,KAAK25I,aACP35I,KAAK4lG,IAAI5lG,KAAKyxH,QAASzxH,KAAK25I,YAAa35I,KAAKmyI,QAGhDnyI,KAAK+xI,UAAW,IAmBlBtsC,EAAO8f,SAAW,SAAkB1nH,EAAM4C,EAAO/B,GAqB/C,YApBc,IAAV+B,IACFA,EAAQ,SAGS,IAAf/B,IACFA,EAAa,IAIf+B,EAAM27F,UAAY37F,EAAM27F,UAAY,cACpC37F,EAAQ2oB,GAAO,CACbwyG,SAAU,GACTn7H,GACH/B,EAAa0qB,GAAO,CAClB,KAAQ,SACR,gBAAiB,EACjB,gBAAiB,EACjB,gBAAiB,IACjB,SAAY,GACX1qB,GACIu8H,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAMnC,EAAM4C,EAAO/B,IAc/D+mG,EAAO4wC,gBAAkB,SAAyBnvC,GAChD,IAAI73E,EAAMrvB,KAAKy5I,IAAI1pB,IAAIjZ,cAEJ,cAAf5P,EAAMrpG,MACRqpG,EAAMgkB,iBAOW,eAAfhkB,EAAMrpG,MAA0BkmH,IAClC7c,EAAMgkB,iBAGRrE,KACA7mH,KAAKgmH,SAAS,eAQdhmH,KAAK8lG,QAAQ,gBACb9lG,KAAK0lG,GAAGr2E,EAAK,YAAarvB,KAAKu5I,kBAC/Bv5I,KAAK0lG,GAAGr2E,EAAK,UAAWrvB,KAAKq5I,gBAC7Br5I,KAAK0lG,GAAGr2E,EAAK,YAAarvB,KAAKu5I,kBAC/Bv5I,KAAK0lG,GAAGr2E,EAAK,WAAYrvB,KAAKq5I,gBAC9Br5I,KAAKw5I,gBAAgBtyC,GAAO,IAkB9BzB,EAAO+zC,gBAAkB,SAAyBtyC,KAalDzB,EAAO6zC,cAAgB,WACrB,IAAIjqH,EAAMrvB,KAAKy5I,IAAI1pB,IAAIjZ,cACvBkQ,KACAhnH,KAAKmmH,YAAY,eAQjBnmH,KAAK8lG,QAAQ,kBACb9lG,KAAK4lG,IAAIv2E,EAAK,YAAarvB,KAAKu5I,kBAChCv5I,KAAK4lG,IAAIv2E,EAAK,UAAWrvB,KAAKq5I,gBAC9Br5I,KAAK4lG,IAAIv2E,EAAK,YAAarvB,KAAKu5I,kBAChCv5I,KAAK4lG,IAAIv2E,EAAK,WAAYrvB,KAAKq5I,gBAC/Br5I,KAAKmyI,UAWP1sC,EAAO0sC,OAAS,WACd,IAAIhrC,EAASnnG,KAMb,GAAKA,KAAK+vH,KAAQ/vH,KAAKy5I,IAAvB,CAMA,IAAIG,EAAW55I,KAAK65I,cAEpB,OAAID,IAAa55I,KAAK85I,YAItB95I,KAAK85I,UAAYF,EACjB55I,KAAK03H,2BAA2B,iBAAiB,WAE/C,IAAIqiB,EAAU5yC,EAAO3N,WAAa,SAAW,QAE7C2N,EAAOsyC,IAAI9mI,KAAKvS,MAAM25I,IAAuB,IAAXH,GAAgBI,QAAQ,GAAK,QARxDJ,IAqBXn0C,EAAOo0C,YAAc,WACnB,OAAOh9I,OAAOq8I,GAAMl5I,KAAKi6I,aAAc,EAAG,GAAGD,QAAQ,KAevDv0C,EAAOy0C,kBAAoB,SAA2BhzC,GACpD,IAAIx4E,EAAW24F,GAAmBrnH,KAAK+vH,IAAK7oB,GAE5C,OAAIlnG,KAAKw5F,WACA9qE,EAASvc,EAGXuc,EAASxc,GAclBuzF,EAAOswB,cAAgB,SAAuB7uB,GAExC,IAAQ8I,WAAW9I,EAAO,SAAW,IAAQ8I,WAAW9I,EAAO,SACjEA,EAAMgkB,iBACNhkB,EAAMukB,kBACNzrH,KAAKm6I,YACI,IAAQnqC,WAAW9I,EAAO,UAAY,IAAQ8I,WAAW9I,EAAO,OACzEA,EAAMgkB,iBACNhkB,EAAMukB,kBACNzrH,KAAKo6I,eAGLnf,EAAWxzH,UAAUsuH,cAAcnlH,KAAK5Q,KAAMknG,IAYlDzB,EAAO8rC,YAAc,SAAqBrqC,GACxCA,EAAMukB,kBACNvkB,EAAMgkB,kBAeRzlB,EAAOjM,SAAW,SAAkB6gD,GAClC,QAAa3vI,IAAT2vI,EACF,OAAOr6I,KAAKs6I,YAAa,EAG3Bt6I,KAAKs6I,YAAcD,EAEfr6I,KAAKs6I,UACPt6I,KAAKgmH,SAAS,uBAEdhmH,KAAKgmH,SAAS,0BAIXmzB,EAjYiB,CAkYxB7nB,IAEFA,GAAY2G,kBAAkB,SAAUkhB,IAExC,IAAIoB,GAAa,SAAoB3jI,EAAM7E,GACzC,OAAOmnI,GAAMtiI,EAAO7E,EAAM,IAAK,EAAG,KAAKioI,QAAQ,GAAK,KASlDQ,GAA+B,SAAUvf,GAY3C,SAASuf,EAAgB14I,EAAQ8H,GAC/B,IAAI28F,EASJ,OAPAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAClDumG,EAAMk0C,SAAW,GAEjBl0C,EAAMb,GAAG5jG,EAAQ,YAAY,SAAUkJ,GACrC,OAAOu7F,EAAM4rC,OAAOnnI,MAGfu7F,EArBT,IAAei0C,EAAiBvf,GA+BhC,IAAIx1B,EAAS+0C,EAAgB/yI,UAgG7B,OA9FAg+F,EAAO8f,SAAW,WAChB,IAAI5yG,EAAKsoH,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACvDo8F,UAAW,sBAGTskB,EAAU6E,GAAS,OAAQ,CAC7BnpB,UAAW,qBAETs+C,EAAan1B,GAAS,OAAQ,CAChChjG,YAAaviB,KAAK6yH,SAAS,YAEzB8nB,EAAY,IAASjpH,eAAe,MASxC,OARA1xB,KAAK46I,cAAgBr1B,GAAS,OAAQ,CACpCnpB,UAAW,qCACX75E,YAAa,OAEf5P,EAAGyc,YAAYsxF,GACfA,EAAQtxF,YAAYsrH,GACpBh6B,EAAQtxF,YAAYurH,GACpBj6B,EAAQtxF,YAAYpvB,KAAK46I,eAClBjoI,GAGT8yF,EAAOS,QAAU,WACflmG,KAAKy6I,SAAW,KAChBz6I,KAAK46I,cAAgB,KAErB3f,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAYpCylG,EAAO0sC,OAAS,SAAgBjrC,GAC9B,IAAIC,EAASnnG,KAEbA,KAAK03H,2BAA2B,0BAA0B,WACxD,IAAImhB,EAAc1xC,EAAOsqB,QAAQonB,YAE7Bxf,EAAWlyB,EAAOsqB,QAAQ4H,WAE1B3kH,EAAWmkI,GAAeA,EAAYh4I,SAAWg4I,EAAYgC,cAAgB1zC,EAAOsqB,QAAQ/8G,WAE5FomI,EAAc3zC,EAAOsqB,QAAQqpB,cAE7BxnB,EAAWnsB,EAAOszC,SAClBlhD,EAAUghD,GAAWO,EAAapmI,GAElCyyF,EAAO4zC,WAAaxhD,IAEtB4N,EAAO4oB,IAAI3vH,MAAMc,MAAQq4F,EAEzBh3E,GAAY4kF,EAAOyzC,cAAerhD,GAClC4N,EAAO4zC,SAAWxhD,GAIpB,IAAK,IAAI3+F,EAAI,EAAGA,EAAIy+H,EAASz7H,OAAQhD,IAAK,CACxC,IAAIkX,EAAQunH,EAASvnH,MAAMlX,GACvBmX,EAAMsnH,EAAStnH,IAAInX,GACnB0uE,EAAOgqD,EAAS14H,GAEf0uE,IACHA,EAAO69B,EAAO4oB,IAAI3gG,YAAYm2F,MAC9B+N,EAAS14H,GAAK0uE,GAIZA,EAAK0xE,QAAQlpI,QAAUA,GAASw3D,EAAK0xE,QAAQjpI,MAAQA,IAIzDu3D,EAAK0xE,QAAQlpI,MAAQA,EACrBw3D,EAAK0xE,QAAQjpI,IAAMA,EAEnBu3D,EAAKlpE,MAAMw5F,KAAO2gD,GAAWzoI,EAAOgpI,GACpCxxE,EAAKlpE,MAAMc,MAAQq5I,GAAWxoI,EAAMD,EAAOgpI,IAI7C,IAAK,IAAI70C,EAAKqtB,EAAS11H,OAAQqoG,EAAKozB,EAASz7H,OAAQqoG,IACnDkB,EAAO4oB,IAAItuB,YAAY6xB,EAASrtB,EAAK,IAGvCqtB,EAAS11H,OAASy7H,EAASz7H,WAIxB48I,EAhI0B,CAiIjClpB,IAEFA,GAAY2G,kBAAkB,kBAAmBuiB,IAQjD,IAAIS,GAA2B,SAAUhgB,GAYvC,SAASggB,EAAYn5I,EAAQ8H,GAC3B,IAAI28F,EAIJ,OAFAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAClDumG,EAAM4rC,OAAS9kB,GAASt/G,GAAK,IAAuBw4F,GAAQA,EAAM4rC,QAASjlB,IACpE3mB,EAhBT,IAAe00C,EAAahgB,GA0B5B,IAAIx1B,EAASw1C,EAAYxzI,UA4HzB,OA1HAg+F,EAAO8f,SAAW,WAChB,OAAO0V,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAW,oBACV,CACD,cAAe,UAenBqJ,EAAO0sC,OAAS,SAAgB+I,EAAaC,EAAc31B,GACzD,IAAI41B,EAAcn0B,GAAajnH,KAAK+vH,KAChCsrB,EAAav8C,GAAsB9+F,KAAKyxH,QAAQ9+G,MAChD2oI,EAAiBJ,EAAYh6I,MAAQi6I,EAGzC,GAAKE,GAAeD,EAApB,CAQA,IAAIG,EAAmBL,EAAYthD,KAAOyhD,EAAWzhD,KAAO0hD,EAKxDE,EAAoBN,EAAYh6I,MAAQo6I,GAAkBD,EAAWthD,MAAQmhD,EAAYnhD,OAGzF0hD,EAAgBL,EAAYl6I,MAAQ,EAGpCq6I,EAAmBE,EACrBA,GAAiBA,EAAgBF,EACxBC,EAAoBC,IAC7BA,EAAgBD,GAMdC,EAAgB,EAClBA,EAAgB,EACPA,EAAgBL,EAAYl6I,QACrCu6I,EAAgBL,EAAYl6I,OAO9Bu6I,EAAgB1lI,KAAKiqF,MAAMy7C,GAC3Bz7I,KAAK+vH,IAAI3vH,MAAM25F,MAAQ,IAAM0hD,EAAgB,KAC7Cz7I,KAAK07I,MAAMl2B,KAUb/f,EAAOi2C,MAAQ,SAAel2B,GAC5BjjG,GAAYviB,KAAK+vH,IAAKvK,IAqBxB/f,EAAOk2C,WAAa,SAAoBT,EAAaC,EAAcvkI,EAAMyzH,GACvE,IAAIljC,EAASnnG,KAEbA,KAAK03H,2BAA2B,0BAA0B,WACxD,IAAIlS,EAEA9wG,EAAWyyF,EAAOsqB,QAAQ/8G,WAE9B,GAAIyyF,EAAOsqB,QAAQonB,aAAe1xC,EAAOsqB,QAAQonB,YAAYh4I,SAAU,CACrE,IAAI+6I,EAAaz0C,EAAOsqB,QAAQonB,YAAY+C,aAExCC,EAAgBD,EAAaT,EAAeS,EAChDp2B,GAAWq2B,EAAgB,EAAI,GAAK,KAAOtE,GAAWsE,EAAeD,QAErEp2B,EAAU+xB,GAAW3gI,EAAMlC,GAG7ByyF,EAAOgrC,OAAO+I,EAAaC,EAAc31B,GAErC6kB,GACFA,QAKC4Q,EAvJsB,CAwJ7B3pB,IAEFA,GAAY2G,kBAAkB,cAAegjB,IAS7C,IAAIa,GAA+B,SAAU7gB,GAY3C,SAAS6gB,EAAgBh6I,EAAQ8H,GAC/B,IAAI28F,EAIJ,OAFAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAClDumG,EAAM4rC,OAAS9kB,GAASt/G,GAAK,IAAuBw4F,GAAQA,EAAM4rC,QAASjlB,IACpE3mB,EAhBT,IAAeu1C,EAAiB7gB,GA0BhC,IAAIx1B,EAASq2C,EAAgBr0I,UAiC7B,OA/BAg+F,EAAO8f,SAAW,WAChB,OAAO0V,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAW,oCACV,CACD,cAAe,UAgBnBqJ,EAAO0sC,OAAS,SAAgB+I,EAAaC,GAC3C,IAAIY,EAAc/7I,KAAKwzH,SAAS,eAEhC,GAAKuoB,EAAL,CAIA,IAAInlI,EAAO5W,KAAKyxH,QAAQoX,YAAc7oI,KAAKyxH,QAAQymB,WAAW7T,YAAcrkI,KAAKyxH,QAAQ4S,cACzF0X,EAAYJ,WAAWT,EAAaC,EAAcvkI,KAG7CklI,EA5D0B,CA6DjCxqB,IASFwqB,GAAgBr0I,UAAUmqH,SAAW,CACnC0B,SAAU,IAGP5O,IAAWlB,IACds4B,GAAgBr0I,UAAUmqH,SAAS0B,SAASr4H,KAAK,eAGnDq2H,GAAY2G,kBAAkB,kBAAmB6jB,IAWjD,IAAIE,GAAgC,SAAU/gB,GAY5C,SAAS+gB,EAAiBl6I,EAAQ8H,GAChC,IAAI28F,EAIJ,OAFAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAClDumG,EAAM4rC,OAAS9kB,GAASt/G,GAAK,IAAuBw4F,GAAQA,EAAM4rC,QAASjlB,IACpE3mB,EAhBT,IAAey1C,EAAkB/gB,GA0BjC,IAAIx1B,EAASu2C,EAAiBv0I,UA6B9B,OA3BAg+F,EAAO8f,SAAW,WAChB,OAAO0V,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAW,uBAgBfqJ,EAAO0sC,OAAS,SAAgB+I,EAAaC,GAC3C,IAAIh0C,EAASnnG,KAET4W,EAAOukI,EAAen7I,KAAKyxH,QAAQ/8G,WACvC1U,KAAKwzH,SAAS,eAAemoB,WAAWT,EAAaC,EAAcvkI,GAAM,WACvEuwF,EAAO4oB,IAAI3vH,MAAMw5F,KAAOshD,EAAYh6I,MAAQi6I,EAAe,SAIxDa,EAxD2B,CAyDlC1qB,IASF0qB,GAAiBv0I,UAAUmqH,SAAW,CACpC0B,SAAU,CAAC,gBAEbhC,GAAY2G,kBAAkB,mBAAoB+jB,IAElD,IAAIC,GAAe,EAEfC,GAAsB,GAQtBC,GAAuB,SAAUC,GAYnC,SAASD,EAAQr6I,EAAQ8H,GACvB,IAAI28F,EAMJ,OAJAA,EAAQ61C,EAAQxrI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE/CumG,EAAM81C,oBAEC91C,EAlBT,IAAe41C,EAASC,GA2BxB,IAAI32C,EAAS02C,EAAQ10I,UA6crB,OA3cAg+F,EAAO42C,kBAAoB,WACzB,IAAIl1C,EAASnnG,KAEbA,KAAKoyI,QAAUrkI,GAAK/N,KAAMA,KAAKmyI,QAC/BnyI,KAAKmyI,OAAS9kB,GAASrtH,KAAKoyI,QAASllB,IACrCltH,KAAK0lG,GAAG1lG,KAAKyxH,QAAS,CAAC,QAAS,iBAAkB,cAAezxH,KAAKmyI,QAElEnyI,KAAKyxH,QAAQonB,aACf74I,KAAK0lG,GAAG1lG,KAAKyxH,QAAQonB,YAAa,iBAAkB74I,KAAKmyI,QAK3DnyI,KAAKs8I,eAAiB,KAEtBt8I,KAAKu8I,uBAAyB,SAAUvxI,GACtC,OAAOm8F,EAAOq1C,gBAAgBxxI,IAGhChL,KAAKy8I,wBAA0B,SAAUzxI,GACvC,OAAOm8F,EAAOu1C,iBAAiB1xI,IAGjChL,KAAK0lG,GAAG1lG,KAAKyxH,QAAS,CAAC,WAAYzxH,KAAKu8I,wBACxCv8I,KAAK0lG,GAAG1lG,KAAKyxH,QAAS,CAAC,QAAS,QAAS,WAAYzxH,KAAKy8I,yBAGtD,WAAY,KAAY,oBAAqB,KAC/Cz8I,KAAK0lG,GAAG,IAAU,mBAAoB1lG,KAAK28I,oBAI/Cl3C,EAAOk3C,kBAAoB,SAA2B3xI,GACnB,WAA7B,IAAS4xI,iBACX58I,KAAK43H,0BAA0B,kBAC/B53H,KAAK43H,0BAA0B,iBAC/B53H,KAAK08I,iBAAiB1xI,KAEjBhL,KAAKyxH,QAAQqc,SAAY9tI,KAAKyxH,QAAQyK,UACzCl8H,KAAKw8I,kBAIPx8I,KAAKmyI,WAIT1sC,EAAO+2C,gBAAkB,WACnBx8I,KAAKs8I,iBAITt8I,KAAKs8I,eAAiBt8I,KAAKi3H,YAAYj3H,KAAKmyI,OAAQjlB,MAGtDznB,EAAOi3C,iBAAmB,SAA0B1xI,GAC9ChL,KAAKyxH,QAAQonB,aAAe74I,KAAKyxH,QAAQonB,YAAYh4I,UAAYmK,GAAgB,UAAXA,EAAEnN,MAIvEmC,KAAKs8I,iBAIVt8I,KAAKg3H,cAAch3H,KAAKs8I,gBACxBt8I,KAAKs8I,eAAiB,OAUxB72C,EAAO8f,SAAW,WAChB,OAAO62B,EAAQ30I,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CAClDo8F,UAAW,uBACV,CACD,aAAcp8F,KAAK6yH,SAAS,mBAiBhCptB,EAAO0sC,OAAS,SAAgBjrC,GAC9B,IAAIoB,EAAStoG,KAGb,GAAiC,WAA7B,IAAS48I,gBAAb,CAIA,IAAIrjD,EAAU6iD,EAAQ30I,UAAU0qI,OAAOvhI,KAAK5Q,MAgC5C,OA9BAA,KAAK03H,2BAA2B,kBAAkB,WAChD,IAAI2M,EAAc/7B,EAAOmpB,QAAQqc,QAAUxlC,EAAOmpB,QAAQ/8G,WAAa4zF,EAAOu0C,kBAC1EhE,EAAcvwC,EAAOmpB,QAAQonB,YAE7BnkI,EAAW4zF,EAAOmpB,QAAQ/8G,WAE1BmkI,GAAeA,EAAYh4I,WAC7B6T,EAAW4zF,EAAOmpB,QAAQonB,YAAYiE,mBAGpCx0C,EAAOyyC,WAAaxhD,IAEtB+O,EAAOynB,IAAI1R,aAAa,iBAA4B,IAAV9kB,GAAeygD,QAAQ,IAEjE1xC,EAAOyyC,SAAWxhD,GAGhB+O,EAAOy0C,eAAiB1Y,GAAe/7B,EAAO0/B,YAActzH,IAE9D4zF,EAAOynB,IAAI1R,aAAa,iBAAkB/V,EAAOuqB,SAAS,oDAAqD,CAAC0kB,GAAWlT,EAAa3vH,GAAW6iI,GAAW7iI,EAAUA,IAAY,eAEpL4zF,EAAOy0C,aAAe1Y,EACtB/7B,EAAO0/B,UAAYtzH,GAIjB4zF,EAAOmxC,KACTnxC,EAAOmxC,IAAItH,OAAOrzC,GAAsBwJ,EAAO31F,MAAO21F,EAAOuxC,kBAG1DtgD,IAWTkM,EAAOu3C,UAAY,SAAmB5Y,GAChCpkI,KAAKyxH,QAAQonB,aAAe74I,KAAKyxH,QAAQonB,YAAYh4I,UACvDb,KAAKyxH,QAAQonB,YAAYoE,qBAG3Bj9I,KAAKyxH,QAAQ4S,YAAYD,IAa3B3+B,EAAOo3C,gBAAkB,WACvB,OAAO78I,KAAKyxH,QAAQoX,YAAc7oI,KAAKyxH,QAAQymB,WAAW7T,YAAcrkI,KAAKyxH,QAAQ4S,eAUvF5+B,EAAOw0C,WAAa,WAClB,IACI1gD,EADA8qC,EAAcrkI,KAAK68I,kBAEnBhE,EAAc74I,KAAKyxH,QAAQonB,YAY/B,OAVIA,GAAeA,EAAYh4I,UAC7B04F,GAAW8qC,EAAcwU,EAAYqE,iBAAmBrE,EAAY+C,aAEhE/C,EAAYG,eACdz/C,EAAU,IAGZA,EAAU8qC,EAAcrkI,KAAKyxH,QAAQ/8G,WAGhC6kF,GAYTkM,EAAO4wC,gBAAkB,SAAyBnvC,GAC3CghB,GAAkBhhB,KAKvBA,EAAMukB,kBACNzrH,KAAKm9I,iBAAmBn9I,KAAKyxH,QAAQyK,SACrCl8H,KAAKyxH,QAAQpvH,QAEb+5I,EAAQ30I,UAAU4uI,gBAAgBzlI,KAAK5Q,KAAMknG,KAa/CzB,EAAO+zC,gBAAkB,SAAyBtyC,EAAOk2C,GAKvD,QAJkB,IAAdA,IACFA,GAAY,GAGTl1B,GAAkBhhB,GAAvB,CAQA,IAAIm2C,EAJCD,GAAcp9I,KAAKyxH,QAAQoX,aAC9B7oI,KAAKyxH,QAAQoX,WAAU,GAIzB,IAAIyU,EAAWt9I,KAAKk6I,kBAAkBhzC,GAClC2xC,EAAc74I,KAAKyxH,QAAQonB,YAE/B,GAAKA,GAAgBA,EAAYh4I,SAM1B,CACL,GAAIy8I,GAAY,IAEd,YADAzE,EAAYI,iBAId,IAAIiE,EAAgBrE,EAAYqE,gBAC5BrC,EAAchC,EAAYiE,kBAgB9B,GAfAO,EAAUH,EAAgBI,EAAWzE,EAAY+C,aAE7CyB,GAAWxC,IACbwC,EAAUxC,GAKRwC,GAAWH,IACbG,EAAUH,EAAgB,IAMxBG,IAAY3nI,IACd,YA7BF2nI,EAAUC,EAAWt9I,KAAKyxH,QAAQ/8G,WAE9B2oI,IAAYr9I,KAAKyxH,QAAQ/8G,aAC3B2oI,GAAoB,IA+BxBr9I,KAAKg9I,UAAUK,KAGjB53C,EAAOuc,OAAS,WACdo6B,EAAQ30I,UAAUu6G,OAAOpxG,KAAK5Q,MAE9B,IAAIu9I,EAAmBv9I,KAAKwzH,SAAS,oBAEhC+pB,GAILA,EAAiBxoB,QAGnBtvB,EAAOsc,QAAU,WACfq6B,EAAQ30I,UAAUs6G,QAAQnxG,KAAK5Q,MAE/B,IAAIu9I,EAAmBv9I,KAAKwzH,SAAS,oBAEhC+pB,GAILA,EAAiBvoB,QAYnBvvB,EAAO6zC,cAAgB,SAAuBpyC,GAC5Ck1C,EAAQ30I,UAAU6xI,cAAc1oI,KAAK5Q,KAAMknG,GAGvCA,GACFA,EAAMukB,kBAGRzrH,KAAKyxH,QAAQoX,WAAU,GASvB7oI,KAAKyxH,QAAQ3rB,QAAQ,CACnBjoG,KAAM,aACNwrB,OAAQrpB,KACRooI,mBAAmB,IAGjBpoI,KAAKm9I,gBACPljB,GAAej6H,KAAKyxH,QAAQrvH,QAI5BpC,KAAKoyI,WAQT3sC,EAAO20C,YAAc,WACnBp6I,KAAKg9I,UAAUh9I,KAAKyxH,QAAQ4S,cAAgB4X,KAO9Cx2C,EAAO00C,SAAW,WAChBn6I,KAAKg9I,UAAUh9I,KAAKyxH,QAAQ4S,cAAgB4X,KAY9Cx2C,EAAO+3C,aAAe,SAAsBt2C,GACtClnG,KAAKyxH,QAAQyK,SACfl8H,KAAKyxH,QAAQrvH,OAEbpC,KAAKyxH,QAAQpvH,SAqBjBojG,EAAOswB,cAAgB,SAAuB7uB,GAC5C,IAAI2xC,EAAc74I,KAAKyxH,QAAQonB,YAE/B,GAAI,IAAQ7oC,WAAW9I,EAAO,UAAY,IAAQ8I,WAAW9I,EAAO,SAClEA,EAAMgkB,iBACNhkB,EAAMukB,kBACNzrH,KAAKw9I,aAAat2C,QACb,GAAI,IAAQ8I,WAAW9I,EAAO,QACnCA,EAAMgkB,iBACNhkB,EAAMukB,kBACNzrH,KAAKg9I,UAAU,QACV,GAAI,IAAQhtC,WAAW9I,EAAO,OACnCA,EAAMgkB,iBACNhkB,EAAMukB,kBAEFotB,GAAeA,EAAYh4I,SAC7Bb,KAAKg9I,UAAUnE,EAAYiE,mBAE3B98I,KAAKg9I,UAAUh9I,KAAKyxH,QAAQ/8G,iBAEzB,GAAI,UAAU7V,KAAK,IAAQqoG,IAAS,CACzCA,EAAMgkB,iBACNhkB,EAAMukB,kBACN,IAAIgyB,EAAsE,IAAtD,IAAQ3tC,MAAM,IAAQ5I,IAAU,IAAQ4I,MAAM,MAAe,IAE7E+oC,GAAeA,EAAYh4I,SAC7Bb,KAAKg9I,UAAUnE,EAAYqE,gBAAkBrE,EAAY+C,aAAe6B,GAExEz9I,KAAKg9I,UAAUh9I,KAAKyxH,QAAQ/8G,WAAa+oI,QAElC,IAAQztC,WAAW9I,EAAO,SACnCA,EAAMgkB,iBACNhkB,EAAMukB,kBACNzrH,KAAKg9I,UAAUh9I,KAAKyxH,QAAQ4S,cAAgB4X,GAAeC,KAClD,IAAQlsC,WAAW9I,EAAO,SACnCA,EAAMgkB,iBACNhkB,EAAMukB,kBACNzrH,KAAKg9I,UAAUh9I,KAAKyxH,QAAQ4S,cAAgB4X,GAAeC,KAG3DE,EAAQ30I,UAAUsuH,cAAcnlH,KAAK5Q,KAAMknG,IAI/CzB,EAAOS,QAAU,WACflmG,KAAK08I,mBACL18I,KAAK4lG,IAAI5lG,KAAKyxH,QAAS,CAAC,QAAS,iBAAkB,cAAezxH,KAAKmyI,QAEnEnyI,KAAKyxH,QAAQonB,aACf74I,KAAK4lG,IAAI5lG,KAAKyxH,QAAQonB,YAAa,iBAAkB74I,KAAKmyI,QAG5DnyI,KAAK4lG,IAAI5lG,KAAKyxH,QAAS,CAAC,WAAYzxH,KAAKu8I,wBACzCv8I,KAAK4lG,IAAI5lG,KAAKyxH,QAAS,CAAC,QAAS,QAAS,WAAYzxH,KAAKy8I,yBAGvD,WAAY,KAAY,oBAAqB,KAC/Cz8I,KAAK4lG,IAAI,IAAU,mBAAoB5lG,KAAK28I,mBAG9CP,EAAQ30I,UAAUy+F,QAAQt1F,KAAK5Q,OAG1Bm8I,EAzekB,CA0ezBhD,IASFgD,GAAQ10I,UAAUmqH,SAAW,CAC3B0B,SAAU,CAAC,kBAAmB,mBAC9BomB,QAAS,mBAGNh1B,IAAWlB,IACd24B,GAAQ10I,UAAUmqH,SAAS0B,SAASztB,OAAO,EAAG,EAAG,oBAGnDyrB,GAAY2G,kBAAkB,UAAWkkB,IASzC,IAAIuB,GAA+B,SAAUziB,GAY3C,SAASyiB,EAAgB57I,EAAQ8H,GAC/B,IAAI28F,EAgBJ,OAdAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAClDumG,EAAMizC,gBAAkBnsB,GAASt/G,GAAK,IAAuBw4F,GAAQA,EAAMizC,iBAAkBtsB,IAC7F3mB,EAAMo3C,yBAA2BtwB,GAASt/G,GAAK,IAAuBw4F,GAAQA,EAAMq3C,iBAAkB1wB,IAEtG3mB,EAAMs3C,sBAAwB,SAAU7yI,GACtC,OAAOu7F,EAAM+yC,cAActuI,IAG7Bu7F,EAAMu3C,wBAA0B,SAAU9yI,GACxC,OAAOu7F,EAAM8vC,gBAAgBrrI,IAG/Bu7F,EAAMyb,SAECzb,EA5BT,IAAem3C,EAAiBziB,GAsChC,IAAIx1B,EAASi4C,EAAgBj2I,UAiM7B,OA/LAg+F,EAAO8f,SAAW,WAChB,OAAO0V,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAW,sCAcfqJ,EAAO+zC,gBAAkB,SAAyBtyC,GAChD,IAAI62C,EAAU/9I,KAAKwzH,SAAS,WAE5B,GAAKuqB,EAAL,CAIA,IAAIC,EAAkBD,EAAQvqB,SAAS,mBACnC+pB,EAAmBQ,EAAQvqB,SAAS,oBAExC,GAAKwqB,GAAoBT,EAAzB,CAIA,IAAIU,EAAYF,EAAQprI,KACpBuoI,EAAcj0B,GAAag3B,GAC3B9C,EAAe9zB,GAAmB42B,EAAW/2C,GAAOh1F,EAIxDipI,EAAejC,GAAMiC,EAAc,EAAG,GAElCoC,GACFA,EAAiBpL,OAAO+I,EAAaC,GAGnC6C,GACFA,EAAgB7L,OAAO+I,EAAa6C,EAAQlE,kBAyBhDp0C,EAAOm4C,gBAAkB,SAAyB12C,GAChD,IAAI62C,EAAU/9I,KAAKwzH,SAAS,WAExBuqB,GACFA,EAAQvE,gBAAgBtyC,IAW5BzB,EAAOw5B,QAAU,WACf,OAAOj/H,KAAK+xI,UAOdtsC,EAAOsc,QAAU,WAKf,GAJA/hH,KAAKszH,WAAWj2H,SAAQ,SAAU+6G,GAChC,OAAOA,EAAM2J,SAAW3J,EAAM2J,aAG3B/hH,KAAKi/H,YAIVj/H,KAAK4lG,IAAI,CAAC,YAAa,cAAe5lG,KAAK89I,yBAC3C99I,KAAK4lG,IAAI5lG,KAAK+vH,IAAK,YAAa/vH,KAAKw5I,iBACrCx5I,KAAKk+I,+CACLl+I,KAAKgmH,SAAS,YACdhmH,KAAK+xI,UAAW,EAEZ/xI,KAAKyxH,QAAQoX,aAAa,CAC5B,IAAIkV,EAAU/9I,KAAKwzH,SAAS,WAC5BxzH,KAAKyxH,QAAQoX,WAAU,GAEnBkV,EAAQZ,iBACVljB,GAAej6H,KAAKyxH,QAAQrvH,UASlCqjG,EAAOuc,OAAS,WACdhiH,KAAKszH,WAAWj2H,SAAQ,SAAU+6G,GAChC,OAAOA,EAAM4J,QAAU5J,EAAM4J,YAG3BhiH,KAAKi/H,YAITj/H,KAAK0lG,GAAG,CAAC,YAAa,cAAe1lG,KAAK89I,yBAC1C99I,KAAK0lG,GAAG1lG,KAAK+vH,IAAK,YAAa/vH,KAAKw5I,iBACpCx5I,KAAKmmH,YAAY,YACjBnmH,KAAK+xI,UAAW,IAOlBtsC,EAAOy4C,6CAA+C,WACpD,IAAI7uH,EAAMrvB,KAAK+vH,IAAIjZ,cACnB92G,KAAK4lG,IAAIv2E,EAAK,YAAarvB,KAAK29I,0BAChC39I,KAAK4lG,IAAIv2E,EAAK,YAAarvB,KAAK29I,0BAChC39I,KAAK4lG,IAAIv2E,EAAK,UAAWrvB,KAAK69I,uBAC9B79I,KAAK4lG,IAAIv2E,EAAK,WAAYrvB,KAAK69I,wBAajCp4C,EAAO4wC,gBAAkB,SAAyBnvC,GAChD,IAAI73E,EAAMrvB,KAAK+vH,IAAIjZ,cACfinC,EAAU/9I,KAAKwzH,SAAS,WAExBuqB,GACFA,EAAQ1H,gBAAgBnvC,GAG1BlnG,KAAK0lG,GAAGr2E,EAAK,YAAarvB,KAAK29I,0BAC/B39I,KAAK0lG,GAAGr2E,EAAK,YAAarvB,KAAK29I,0BAC/B39I,KAAK0lG,GAAGr2E,EAAK,UAAWrvB,KAAK69I,uBAC7B79I,KAAK0lG,GAAGr2E,EAAK,WAAYrvB,KAAK69I,wBAahCp4C,EAAO6zC,cAAgB,SAAuBpyC,GAC5C,IAAI62C,EAAU/9I,KAAKwzH,SAAS,WAExBuqB,GACFA,EAAQzE,cAAcpyC,GAGxBlnG,KAAKk+I,gDAGAR,EAxO0B,CAyOjCpsB,IASFosB,GAAgBj2I,UAAUmqH,SAAW,CACnC0B,SAAU,CAAC,YAEbhC,GAAY2G,kBAAkB,kBAAmBylB,IAQjD,IAAIS,GAAsC,SAAUhI,GAelD,SAASgI,EAAuBr8I,EAAQ8H,GACtC,IAAI28F,EA8BJ,OA5BAA,EAAQ4vC,EAAQvlI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE/CumG,EAAMb,GAAG5jG,EAAQ,CAAC,wBAAyB,0BAA0B,SAAUkJ,GAC7E,OAAOu7F,EAAM63C,6BAA6BpzI,MAG5Cu7F,EAAMb,GAAG5jG,EAAQ,CAAC,iCAAkC,mBAAmB,SAAUkJ,GAC/E,OAAOu7F,EAAM83C,oCAAoCrzI,MAGnDu7F,EAAMb,GAAG5jG,EAAQ,CAAC,iBAAkB,sBAAuB,0BAA0B,WAEnF,IAAIw8I,EAAyD,UAAzCx8I,EAAOy8I,cAAczgJ,UAAU,EAAG,GAElDwgJ,GAAiBx8I,EAAO08I,mBAAqB18I,EAAO28I,iBAClD38I,EAAO48I,wBACT58I,EAAO68I,uBAGTp4C,EAAMyuB,QAENzuB,EAAMwuB,UAKVxuB,EAAMwb,UAECxb,EA7CT,IAAe43C,EAAwBhI,GAuDvC,IAAI1wC,EAAS04C,EAAuB12I,UA4DpC,OA1DAg+F,EAAOkvB,cAAgB,WACrB,MAAO,kCAAoCwhB,EAAQ1uI,UAAUktH,cAAc/jH,KAAK5Q,OAQlFylG,EAAO44C,oCAAsC,WACvC,IAASO,0BAAsE,IAA3C5+I,KAAKyxH,QAAQ0Y,0BACnDnqI,KAAKgiH,SAELhiH,KAAK+hH,WAeTtc,EAAO24C,6BAA+B,SAAsCl3C,GACtElnG,KAAKyxH,QAAQitB,uBACf1+I,KAAK48H,YAAY,2BAEjB58H,KAAK48H,YAAY,sBAGnB58H,KAAKq+I,uCAeP54C,EAAO8rC,YAAc,SAAqBrqC,GACnClnG,KAAKyxH,QAAQitB,uBAGhB1+I,KAAKyxH,QAAQktB,uBAFb3+I,KAAKyxH,QAAQsY,2BAMVoU,EApHiC,CAqHxClI,IASFkI,GAAuB12I,UAAUkqI,aAAe,qBAChDrgB,GAAY2G,kBAAkB,yBAA0BkmB,IAQxD,IAAIU,GAAgC,SAAU1I,GAY5C,SAAS0I,EAAiB/8I,EAAQ8H,GAChC,IAAI28F,EAYJ,OAVAA,EAAQ4vC,EAAQvlI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE/CumG,EAAMb,GAAG5jG,EAAQ,oBAAoB,SAAUkJ,GAC7C,OAAOu7F,EAAMu4C,uBAAuB9zI,OAGY,IAA9C,IAASlJ,EAAOi9I,OAAOC,oBACzBz4C,EAAMwb,UAGDxb,EAxBT,IAAes4C,EAAkB1I,GAkCjC,IAAI1wC,EAASo5C,EAAiBp3I,UA4C9B,OA1CAg+F,EAAOkvB,cAAgB,WACrB,MAAO,0BAA4BwhB,EAAQ1uI,UAAUktH,cAAc/jH,KAAK5Q,OAa1EylG,EAAOq5C,uBAAyB,SAAgC53C,GAC1DlnG,KAAKyxH,QAAQwtB,eACfj/I,KAAK48H,YAAY,kBAEjB58H,KAAK48H,YAAY,eAgBrBn3B,EAAO8rC,YAAc,SAAqBrqC,GACnClnG,KAAKyxH,QAAQwtB,eAGhBj/I,KAAKyxH,QAAQytB,iBAFbl/I,KAAKyxH,QAAQ0tB,qBAMVN,EA/E2B,CAgFlC5I,IASF4I,GAAiBp3I,UAAUkqI,aAAe,aAC1CrgB,GAAY2G,kBAAkB,mBAAoB4mB,IAclD,IAAIO,GAAqB,SAA4B97I,EAAMxB,GAErDA,EAAOohI,QAAUphI,EAAOohI,MAAMkI,uBAChC9nI,EAAK0iH,SAAS,cAGhB1iH,EAAKoiG,GAAG5jG,EAAQ,aAAa,WACtBA,EAAOohI,MAAMkI,sBAGhB9nI,EAAK6iH,YAAY,cAFjB7iH,EAAK0iH,SAAS,kBAahBq5B,GAA2B,SAAUpkB,GAGvC,SAASokB,IACP,OAAOpkB,EAAWjgH,MAAMhb,KAAMqR,YAAcrR,KAH9C,IAAeq/I,EAAapkB,GAM5B,IAAIx1B,EAAS45C,EAAY53I,UAmBzB,OAXAg+F,EAAO8f,SAAW,WAChB,IAAI5yG,EAAKsoH,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACvDo8F,UAAW,qBAMb,OAHAzpF,EAAGyc,YAAY6rG,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,OAAQ,CAC9Do8F,UAAW,sBAENzpF,GAGF0sI,EA1BsB,CA2B7B/tB,IAEFA,GAAY2G,kBAAkB,cAAeonB,IAQ7C,IAAIC,GAAkC,SAAUrkB,GAY9C,SAASqkB,EAAmBx9I,EAAQ8H,GAClC,IAAI28F,EAIJ,OAFAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAClDumG,EAAM4rC,OAAS9kB,GAASt/G,GAAK,IAAuBw4F,GAAQA,EAAM4rC,QAASjlB,IACpE3mB,EAhBT,IAAe+4C,EAAoBrkB,GA0BnC,IAAIx1B,EAAS65C,EAAmB73I,UAwGhC,OAtGAg+F,EAAO8f,SAAW,WAChB,OAAO0V,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAW,sBACV,CACD,cAAe,UAqBnBqJ,EAAO0sC,OAAS,SAAgBoN,EAAcC,EAAehmD,EAAUgsB,GACrE,IAAKhsB,EAAU,CACb,IAAI4hD,EAAct8C,GAAsB9+F,KAAK+vH,KACzCsrB,EAAav8C,GAAsB9+F,KAAKyxH,QAAQ9+G,MAChD8sI,EAAmBF,EAAar+I,MAAQs+I,EAE5C,IAAKnE,IAAeD,EAClB,OAGF,IAAIG,EAAmBgE,EAAa3lD,KAAOyhD,EAAWzhD,KAAO6lD,EACzDjE,EAAoB+D,EAAar+I,MAAQu+I,GAAoBpE,EAAWthD,MAAQwlD,EAAaxlD,OAC7F0hD,EAAgBL,EAAYl6I,MAAQ,EAEpCq6I,EAAmBE,EACrBA,GAAiBA,EAAgBF,EACxBC,EAAoBC,IAC7BA,EAAgBD,GAGdC,EAAgB,EAClBA,EAAgB,EACPA,EAAgBL,EAAYl6I,QACrCu6I,EAAgBL,EAAYl6I,OAG9BlB,KAAK+vH,IAAI3vH,MAAM25F,MAAQ,IAAM0hD,EAAgB,KAG/Cz7I,KAAK07I,MAAMl2B,EAAU,MAUvB/f,EAAOi2C,MAAQ,SAAel2B,GAC5BjjG,GAAYviB,KAAK+vH,IAAKvK,IAyBxB/f,EAAOi6C,aAAe,SAAsBH,EAAcC,EAAehmD,EAAUq0C,EAAQxD,GACzF,IAAIljC,EAASnnG,KAEbA,KAAK03H,2BAA2B,mCAAmC,WACjEvwB,EAAOgrC,OAAOoN,EAAcC,EAAehmD,EAAUq0C,EAAOmM,QAAQ,IAEhE3P,GACFA,QAKCiV,EAnI6B,CAoIpChuB,IAEFA,GAAY2G,kBAAkB,qBAAsBqnB,IAWpD,IAAIK,GAAuC,SAAU1kB,GAYnD,SAAS0kB,EAAwB79I,EAAQ8H,GACvC,IAAI28F,EAIJ,OAFAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAClDumG,EAAM4rC,OAAS9kB,GAASt/G,GAAK,IAAuBw4F,GAAQA,EAAM4rC,QAASjlB,IACpE3mB,EAhBT,IAAeo5C,EAAyB1kB,GA0BxC,IAAIx1B,EAASk6C,EAAwBl4I,UAsCrC,OApCAg+F,EAAO8f,SAAW,WAChB,OAAO0V,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAW,uBAqBfqJ,EAAO0sC,OAAS,SAAgBoN,EAAcC,EAAehmD,GAC3D,IAAI2N,EAASnnG,KAET6tI,EAAS,IAAM2R,EACnBx/I,KAAKwzH,SAAS,sBAAsBksB,aAAaH,EAAcC,EAAehmD,EAAUq0C,GAAQ,WAC1Fr0C,EACF2N,EAAO4oB,IAAI3vH,MAAM67B,OAASsjH,EAAap+I,OAASq+I,EAAgB,KAEhEr4C,EAAO4oB,IAAI3vH,MAAMw5F,KAAO2lD,EAAar+I,MAAQs+I,EAAgB,SAK5DG,EAjEkC,CAkEzCruB,IASFquB,GAAwBl4I,UAAUmqH,SAAW,CAC3C0B,SAAU,CAAC,uBAEbhC,GAAY2G,kBAAkB,0BAA2B0nB,IAQzD,IAAIC,GAAyB,SAAUxD,GAYrC,SAASwD,EAAU99I,EAAQ8H,GACzB,IAAI28F,EAeJ,OAbAA,EAAQ61C,EAAQxrI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE/CumG,EAAMb,GAAG,gBAAgB,SAAU16F,GACjC,OAAOu7F,EAAMs5C,kBAAkB70I,MAGjCu7F,EAAMb,GAAG5jG,EAAQ,gBAAgB,SAAUkJ,GACzC,OAAOu7F,EAAMu5C,qBAAqB90I,MAGpClJ,EAAO0vH,OAAM,WACX,OAAOjrB,EAAMu5C,0BAERv5C,EA3BT,IAAeq5C,EAAWxD,GAqC1B,IAAI32C,EAASm6C,EAAUn4I,UAqJvB,OAnJAg+F,EAAO8f,SAAW,WAChB,OAAO62B,EAAQ30I,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CAClDo8F,UAAW,iCACV,CACD,aAAcp8F,KAAK6yH,SAAS,gBAC5B,YAAa,YAajBptB,EAAO4wC,gBAAkB,SAAyBnvC,GAC3CghB,GAAkBhhB,IAIvBk1C,EAAQ30I,UAAU4uI,gBAAgBzlI,KAAK5Q,KAAMknG,IAY/CzB,EAAO+zC,gBAAkB,SAAyBtyC,GAChD,IAAI64C,EAA0B//I,KAAKwzH,SAAS,2BAE5C,GAAIusB,EAAyB,CAC3B,IAAIC,EAAchgJ,KAAK2S,KACnBstI,EAAgBnhD,GAAsBkhD,GACtCxmD,EAAWx5F,KAAKw5F,WAChB0mD,EAAiB74B,GAAmB24B,EAAa94C,GACrDg5C,EAAiB1mD,EAAW0mD,EAAe/tI,EAAI+tI,EAAehuI,EAI9DguI,EAAiBhH,GAAMgH,EAAgB,EAAG,GAC1CH,EAAwB5N,OAAO8N,EAAeC,EAAgB1mD,GAG3D0uB,GAAkBhhB,KAIvBlnG,KAAKmgJ,aACLngJ,KAAKyxH,QAAQoc,OAAO7tI,KAAKk6I,kBAAkBhzC,MAO7CzB,EAAO06C,WAAa,WACdngJ,KAAKyxH,QAAQkc,SACf3tI,KAAKyxH,QAAQkc,OAAM,IAWvBloC,EAAOw0C,WAAa,WAClB,OAAIj6I,KAAKyxH,QAAQkc,QACR,EAGF3tI,KAAKyxH,QAAQoc,UAOtBpoC,EAAO20C,YAAc,WACnBp6I,KAAKmgJ,aACLngJ,KAAKyxH,QAAQoc,OAAO7tI,KAAKyxH,QAAQoc,SAAW,KAO9CpoC,EAAO00C,SAAW,WAChBn6I,KAAKmgJ,aACLngJ,KAAKyxH,QAAQoc,OAAO7tI,KAAKyxH,QAAQoc,SAAW,KAY9CpoC,EAAOq6C,qBAAuB,SAA8B54C,GAC1D,IAAIk5C,EAAYpgJ,KAAKyxH,QAAQkc,QAAU,EAAI3tI,KAAKqgJ,sBAChDrgJ,KAAK+vH,IAAI1R,aAAa,gBAAiB+hC,GACvCpgJ,KAAK+vH,IAAI1R,aAAa,iBAAkB+hC,EAAY,MAStD36C,EAAO46C,oBAAsB,WAC3B,OAAOtqI,KAAKiqF,MAA8B,IAAxBhgG,KAAKyxH,QAAQoc,WAYjCpoC,EAAOo6C,kBAAoB,WACzB,IAAI14C,EAASnnG,KAETsgJ,EAAmBtgJ,KAAKyxH,QAAQoc,SACpC7tI,KAAK6sH,IAAI,kBAAkB,WACO,IAA5B1lB,EAAOsqB,QAAQoc,UACjB1mC,EAAOsqB,QAAQ8uB,YAAYD,OAK1BV,EA3LoB,CA4L3BzG,IASFyG,GAAUn4I,UAAUmqH,SAAW,CAC7B0B,SAAU,CAAC,eACXomB,QAAS,eAGNh1B,IAAWlB,IACdo8B,GAAUn4I,UAAUmqH,SAAS0B,SAASztB,OAAO,EAAG,EAAG,2BASrD+5C,GAAUn4I,UAAUkyI,YAAc,eAClCroB,GAAY2G,kBAAkB,YAAa2nB,IAQ3C,IAAIY,GAA6B,SAAUvlB,GAYzC,SAASulB,EAAc1+I,EAAQ8H,GAC7B,IAAI28F,EAqDJ,YAnDgB,IAAZ38F,IACFA,EAAU,IAGZA,EAAQ4vF,SAAW5vF,EAAQ4vF,WAAY,GAGN,qBAAtB5vF,EAAQ62I,WAA6B79B,GAAQh5G,EAAQ62I,cAC9D72I,EAAQ62I,UAAY72I,EAAQ62I,WAAa,GACzC72I,EAAQ62I,UAAUjnD,SAAW5vF,EAAQ4vF,UAGvC+M,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAElDo/I,GAAmB,IAAuB74C,GAAQzkG,GAClDykG,EAAMm6C,yBAA2BrzB,GAASt/G,GAAK,IAAuBw4F,GAAQA,EAAMizC,iBAAkBtsB,IAEtG3mB,EAAMs3C,sBAAwB,SAAU7yI,GACtC,OAAOu7F,EAAM+yC,cAActuI,IAG7Bu7F,EAAMb,GAAG,aAAa,SAAU16F,GAC9B,OAAOu7F,EAAM8vC,gBAAgBrrI,MAG/Bu7F,EAAMb,GAAG,cAAc,SAAU16F,GAC/B,OAAOu7F,EAAM8vC,gBAAgBrrI,MAG/Bu7F,EAAMb,GAAG,aAAa,SAAU16F,GAC9B,OAAOu7F,EAAMizC,gBAAgBxuI,MAK/Bu7F,EAAMb,GAAGa,EAAMk6C,UAAW,CAAC,QAAS,iBAAiB,WACnDl6C,EAAMk6C,UAAUz6B,SAAS,qBAEzBzf,EAAMyf,SAAS,qBAEfzf,EAAMT,QAAQ,mBAGhBS,EAAMb,GAAGa,EAAMk6C,UAAW,CAAC,OAAQ,mBAAmB,WACpDl6C,EAAMk6C,UAAUt6B,YAAY,qBAE5B5f,EAAM4f,YAAY,qBAElB5f,EAAMT,QAAQ,qBAGTS,EAjET,IAAei6C,EAAevlB,GA2E9B,IAAIx1B,EAAS+6C,EAAc/4I,UAgE3B,OA9DAg+F,EAAO8f,SAAW,WAChB,IAAIo7B,EAAmB,wBAMvB,OAJI3gJ,KAAK4xH,SAASp4B,WAChBmnD,EAAmB,uBAGd1lB,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAW,kCAAoCukD,KAcnDl7C,EAAO4wC,gBAAkB,SAAyBnvC,GAChD,IAAI73E,EAAMrvB,KAAK+vH,IAAIjZ,cACnB92G,KAAK0lG,GAAGr2E,EAAK,YAAarvB,KAAK0gJ,0BAC/B1gJ,KAAK0lG,GAAGr2E,EAAK,YAAarvB,KAAK0gJ,0BAC/B1gJ,KAAK0lG,GAAGr2E,EAAK,UAAWrvB,KAAK69I,uBAC7B79I,KAAK0lG,GAAGr2E,EAAK,WAAYrvB,KAAK69I,wBAahCp4C,EAAO6zC,cAAgB,SAAuBpyC,GAC5C,IAAI73E,EAAMrvB,KAAK+vH,IAAIjZ,cACnB92G,KAAK4lG,IAAIv2E,EAAK,YAAarvB,KAAK0gJ,0BAChC1gJ,KAAK4lG,IAAIv2E,EAAK,YAAarvB,KAAK0gJ,0BAChC1gJ,KAAK4lG,IAAIv2E,EAAK,UAAWrvB,KAAK69I,uBAC9B79I,KAAK4lG,IAAIv2E,EAAK,WAAYrvB,KAAK69I,wBAajCp4C,EAAO+zC,gBAAkB,SAAyBtyC,GAChDlnG,KAAKygJ,UAAUjH,gBAAgBtyC,IAG1Bs5C,EA5IwB,CA6I/BlvB,IASFkvB,GAAc/4I,UAAUmqH,SAAW,CACjC0B,SAAU,CAAC,cAEbhC,GAAY2G,kBAAkB,gBAAiBuoB,IAc/C,IAAII,GAAmB,SAA0Bt9I,EAAMxB,GAEjDA,EAAOohI,QAAUphI,EAAOohI,MAAMmI,qBAChC/nI,EAAK0iH,SAAS,cAGhB1iH,EAAKoiG,GAAG5jG,EAAQ,aAAa,WACtBA,EAAOohI,MAAMmI,oBAGhB/nI,EAAK6iH,YAAY,cAFjB7iH,EAAK0iH,SAAS,kBAahB66B,GAA0B,SAAU1K,GAYtC,SAAS0K,EAAW/+I,EAAQ8H,GAC1B,IAAI28F,EAUJ,OARAA,EAAQ4vC,EAAQvlI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE/C4gJ,GAAiB,IAAuBr6C,GAAQzkG,GAEhDykG,EAAMb,GAAG5jG,EAAQ,CAAC,YAAa,iBAAiB,SAAUkJ,GACxD,OAAOu7F,EAAM4rC,OAAOnnI,MAGfu7F,EAtBT,IAAes6C,EAAY1K,GAgC3B,IAAI1wC,EAASo7C,EAAWp5I,UAuGxB,OArGAg+F,EAAOkvB,cAAgB,WACrB,MAAO,oBAAsBwhB,EAAQ1uI,UAAUktH,cAAc/jH,KAAK5Q,OAepEylG,EAAO8rC,YAAc,SAAqBrqC,GACxC,IAAI45C,EAAM9gJ,KAAKyxH,QAAQoc,SACnBkT,EAAa/gJ,KAAKyxH,QAAQ8uB,cAE9B,GAAY,IAARO,EAAW,CACb,IAAIE,EAAcD,EAAa,GAAM,GAAMA,EAC3C/gJ,KAAKyxH,QAAQoc,OAAOmT,GACpBhhJ,KAAKyxH,QAAQkc,OAAM,QAEnB3tI,KAAKyxH,QAAQkc,OAAM3tI,KAAKyxH,QAAQkc,UAgBpCloC,EAAO0sC,OAAS,SAAgBjrC,GAC9BlnG,KAAKihJ,cACLjhJ,KAAKkhJ,sBAePz7C,EAAOw7C,YAAc,WACnB,IAAIH,EAAM9gJ,KAAKyxH,QAAQoc,SACnB5sB,EAAQ,EAIRyD,IAAU1kH,KAAKyxH,QAAQyR,OAASljI,KAAKyxH,QAAQyR,MAAMnT,KACrD/vH,KAAKyxH,QAAQkc,MAAM3tI,KAAKyxH,QAAQyR,MAAMnT,IAAI4d,OAGhC,IAARmT,GAAa9gJ,KAAKyxH,QAAQkc,QAC5B1sB,EAAQ,EACC6/B,EAAM,IACf7/B,EAAQ,EACC6/B,EAAM,MACf7/B,EAAQ,GAIV,IAAK,IAAIrmH,EAAI,EAAGA,EAAI,EAAGA,IACrBurH,GAAYnmH,KAAK+vH,IAAK,WAAan1H,GAGrCorH,GAAShmH,KAAK+vH,IAAK,WAAa9O,IAWlCxb,EAAOy7C,mBAAqB,WAC1B,IAAIC,EAAWnhJ,KAAKyxH,QAAQkc,SAAqC,IAA1B3tI,KAAKyxH,QAAQoc,SAChD7xI,EAAOmlJ,EAAW,SAAW,OAE7BnhJ,KAAK48H,gBAAkB5gI,GACzBgE,KAAK48H,YAAY5gI,IAId6kJ,EAxIqB,CAyI5B5K,IASF4K,GAAWp5I,UAAUkqI,aAAe,OACpCrgB,GAAY2G,kBAAkB,aAAc4oB,IAS5C,IAAIO,GAA2B,SAAUnmB,GAYvC,SAASmmB,EAAYt/I,EAAQ8H,GAC3B,IAAI28F,EAuDJ,YArDgB,IAAZ38F,IACFA,EAAU,IAGkB,qBAAnBA,EAAQy3I,OACjBz3I,EAAQy3I,OAASz3I,EAAQy3I,OAEzBz3I,EAAQy3I,QAAS,GAKkB,qBAA1Bz3I,EAAQ03I,eAAiC1+B,GAAQh5G,EAAQ03I,kBAClE13I,EAAQ03I,cAAgB13I,EAAQ03I,eAAiB,GACjD13I,EAAQ03I,cAAc9nD,UAAY5vF,EAAQy3I,QAG5C96C,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAElDumG,EAAMg7C,uBAAyB,SAAUv2I,GACvC,OAAOu7F,EAAMyvB,eAAehrH,IAG9Bu7F,EAAMb,GAAG5jG,EAAQ,CAAC,cAAc,SAAUkJ,GACxC,OAAOu7F,EAAMi7C,kBAAkBx2I,MAGjCu7F,EAAMb,GAAGa,EAAMk7C,WAAY,SAAS,SAAUz2I,GAC5C,OAAOu7F,EAAMyvB,eAAehrH,MAG9Bu7F,EAAMb,GAAGa,EAAM+6C,cAAe,SAAS,SAAUt2I,GAC/C,OAAOu7F,EAAMm7C,yBAAyB12I,MAGxCu7F,EAAMb,GAAG,WAAW,SAAU16F,GAC5B,OAAOu7F,EAAMyvB,eAAehrH,MAG9Bu7F,EAAMb,GAAG,aAAa,SAAU16F,GAC9B,OAAOu7F,EAAM4qC,gBAAgBnmI,MAG/Bu7F,EAAMb,GAAG,YAAY,SAAU16F,GAC7B,OAAOu7F,EAAM8qC,eAAermI,MAK9Bu7F,EAAMb,GAAGa,EAAM+6C,cAAe,CAAC,gBAAiB/6C,EAAMo7C,eAEtDp7C,EAAMb,GAAGa,EAAM+6C,cAAe,CAAC,kBAAmB/6C,EAAMq7C,iBAEjDr7C,EAnET,IAAe66C,EAAanmB,GA6E5B,IAAIx1B,EAAS27C,EAAY35I,UAoIzB,OAlIAg+F,EAAOk8C,cAAgB,WACrB3hJ,KAAKgmH,SAAS,sBAUhBvgB,EAAOm8C,gBAAkB,WACvB5hJ,KAAKmmH,YAAY,sBAWnB1gB,EAAO+7C,kBAAoB,WAGrBxhJ,KAAKshJ,cAAc17B,SAAS,eAAiB5lH,KAAKyhJ,WAAW77B,SAAS,eACxE5lH,KAAKgmH,SAAS,cAKZhmH,KAAKshJ,cAAc17B,SAAS,gBAAkB5lH,KAAKyhJ,WAAW77B,SAAS,eACzE5lH,KAAKgmH,SAAS,yBAWlBvgB,EAAO8f,SAAW,WAChB,IAAIo7B,EAAmB,8BAMvB,OAJK3gJ,KAAK4xH,SAASyvB,SACjBV,EAAmB,6BAGd1lB,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAW,gCAAkCukD,KAQjDl7C,EAAOS,QAAU,WACflmG,KAAKqxI,iBAELpW,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAapCylG,EAAOi8C,yBAA2B,SAAkCx6C,GAC9D,IAAQ8I,WAAW9I,EAAO,QAC5BlnG,KAAKyhJ,WAAW36B,SAepBrhB,EAAO0rC,gBAAkB,SAAyBjqC,GAChDlnG,KAAKgmH,SAAS,aACdtgB,GAAG,IAAU,QAAS1lG,KAAKuhJ,yBAc7B97C,EAAO4rC,eAAiB,SAAwBnqC,GAC9ClnG,KAAKmmH,YAAY,aACjBvgB,GAAI,IAAU,QAAS5lG,KAAKuhJ,yBAa9B97C,EAAOuwB,eAAiB,SAAwB9uB,GAC1C,IAAQ8I,WAAW9I,EAAO,QAC5BlnG,KAAKqxI,kBAIF+P,EAlNsB,CAmN7B9vB,IASF8vB,GAAY35I,UAAUmqH,SAAW,CAC/B0B,SAAU,CAAC,aAAc,kBAE3BhC,GAAY2G,kBAAkB,cAAempB,IAS7C,IAAIS,GAAoB,SAAU5mB,GAahC,SAAS4mB,EAAK//I,EAAQ8H,GACpB,IAAI28F,EAuBJ,OArBAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE9C4J,IACF28F,EAAMu7C,YAAcl4I,EAAQm4I,YAG9Bx7C,EAAMy7C,eAAiB,EAEvBz7C,EAAMb,GAAG,WAAW,SAAU16F,GAC5B,OAAOu7F,EAAMwvB,cAAc/qH,MAI7Bu7F,EAAM07C,iBAAmB,SAAUj3I,GACjC,OAAOu7F,EAAM27C,WAAWl3I,IAG1Bu7F,EAAM47C,qBAAuB,SAAUn3I,GACrC,OAAOu7F,EAAM67C,eAAep3I,IAGvBu7F,EApCT,IAAes7C,EAAM5mB,GA+CrB,IAAIx1B,EAASo8C,EAAKp6I,UAgPlB,OA9OAg+F,EAAO48C,wBAA0B,SAAiCl/I,GAC1DA,aAAqBmuH,KAI3BtxH,KAAK0lG,GAAGviG,EAAW,OAAQnD,KAAKiiJ,kBAChCjiJ,KAAK0lG,GAAGviG,EAAW,CAAC,MAAO,SAAUnD,KAAKmiJ,wBAW5C18C,EAAO68C,2BAA6B,SAAoCn/I,GAChEA,aAAqBmuH,KAI3BtxH,KAAK4lG,IAAIziG,EAAW,OAAQnD,KAAKiiJ,kBACjCjiJ,KAAK4lG,IAAIziG,EAAW,CAAC,MAAO,SAAUnD,KAAKmiJ,wBAa7C18C,EAAOhE,YAAc,SAAqBt+F,GACf,kBAAdA,IACTA,EAAYnD,KAAKwzH,SAASrwH,IAG5BnD,KAAKsiJ,2BAA2Bn/I,GAEhC83H,EAAWxzH,UAAUg6F,YAAY7wF,KAAK5Q,KAAMmD,IAW9CsiG,EAAO88C,QAAU,SAAiBp/I,GAChC,IAAIq/I,EAAiBxiJ,KAAK2zH,SAASxwH,GAE/Bq/I,GACFxiJ,KAAKqiJ,wBAAwBG,IAWjC/8C,EAAO8f,SAAW,WAChB,IAAIk9B,EAAgBziJ,KAAK4xH,SAAS6wB,eAAiB,KACnDziJ,KAAKqzH,WAAa9N,GAASk9B,EAAe,CACxCrmD,UAAW,qBAEbp8F,KAAKqzH,WAAWhV,aAAa,OAAQ,QAErC,IAAI1rG,EAAKsoH,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACvD0iJ,OAAQ1iJ,KAAKqzH,WACbj3B,UAAW,aAUb,OAPAzpF,EAAGyc,YAAYpvB,KAAKqzH,YAGpB3tB,GAAG/yF,EAAI,SAAS,SAAUu0F,GACxBA,EAAMgkB,iBACNhkB,EAAMykB,8BAEDh5G,GAGT8yF,EAAOS,QAAU,WACflmG,KAAKqzH,WAAa,KAClBrzH,KAAKiiJ,iBAAmB,KACxBjiJ,KAAKmiJ,qBAAuB,KAE5BlnB,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAYpCylG,EAAOy8C,WAAa,SAAoBh7C,GACtC,IAAIkkB,EAAgBlkB,EAAMkkB,eAAiB,IAAS+R,cAEpD,IAAKn9H,KAAKszH,WAAWkB,MAAK,SAAUryG,GAClC,OAAOA,EAAQxP,OAASy4G,KACtB,CACF,IAAIu3B,EAAM3iJ,KAAK8hJ,YAEXa,GAAOA,EAAIC,gBAAkBx3B,IAAkBu3B,EAAIhwI,KAAK6uF,YAC1DmhD,EAAIE,kBAcVp9C,EAAO28C,eAAiB,SAAwBl7C,GAE9C,GAAIlnG,KAAK8hJ,YAAa,CACpB9hJ,KAAK8hJ,YAAYe,gBACjB,IAAIC,EAAkB9iJ,KAAKszH,WAE3B,IAAK5yH,MAAMyI,QAAQ25I,GACjB,OAGF,IAAIC,EAAiBD,EAAgB5qI,QAAO,SAAU/U,GACpD,OAAOA,EAAUwP,OAASu0F,EAAM79E,UAC/B,GAEH,IAAK05H,EACH,OAK4B,4BAA1BA,EAAevlJ,QACjBwC,KAAK8hJ,YAAYh7B,UAcvBrhB,EAAOswB,cAAgB,SAAuB7uB,GAExC,IAAQ8I,WAAW9I,EAAO,SAAW,IAAQ8I,WAAW9I,EAAO,SACjEA,EAAMgkB,iBACNhkB,EAAMukB,kBACNzrH,KAAKo6I,gBACI,IAAQpqC,WAAW9I,EAAO,UAAY,IAAQ8I,WAAW9I,EAAO,SACzEA,EAAMgkB,iBACNhkB,EAAMukB,kBACNzrH,KAAKm6I,aAQT10C,EAAO20C,YAAc,WACnB,IAAI4I,EAAY,OAEWt4I,IAAvB1K,KAAKgiJ,gBACPgB,EAAYhjJ,KAAKgiJ,cAAgB,GAGnChiJ,KAAK8mH,MAAMk8B,IAObv9C,EAAO00C,SAAW,WAChB,IAAI6I,EAAY,OAEWt4I,IAAvB1K,KAAKgiJ,gBACPgB,EAAYhjJ,KAAKgiJ,cAAgB,GAGnChiJ,KAAK8mH,MAAMk8B,IAUbv9C,EAAOqhB,MAAQ,SAAe99F,QACf,IAATA,IACFA,EAAO,GAGT,IAAIsqG,EAAWtzH,KAAKszH,WAAWv2H,QAC3BkmJ,EAAY3vB,EAAS11H,QAAU01H,EAAS,GAAG1N,SAAS,kBAEpDq9B,GACF3vB,EAAStE,QAGPsE,EAAS11H,OAAS,IAChBorB,EAAO,EACTA,EAAO,EACEA,GAAQsqG,EAAS11H,SAC1BorB,EAAOsqG,EAAS11H,OAAS,GAG3BoC,KAAKgiJ,cAAgBh5H,EACrBsqG,EAAStqG,GAAM+mG,IAAIjJ,UAIhB+6B,EAhSe,CAiStBvwB,IAEFA,GAAY2G,kBAAkB,OAAQ4pB,IAQtC,IAAIqB,GAA0B,SAAUjoB,GAYtC,SAASioB,EAAWphJ,EAAQ8H,GAC1B,IAAI28F,OAEY,IAAZ38F,IACFA,EAAU,IAGZ28F,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAClDumG,EAAMu7C,YAAc,IAAI7L,GAAOn0I,EAAQ8H,GAEvC28F,EAAMu7C,YAAYllB,YAAYr2B,EAAMorC,cAEpCprC,EAAMu7C,YAAY/xB,IAAI1R,aAAa,gBAAiB,QAGpD,IAAI8kC,EAAclN,GAAOxuI,UAAUktH,gBACnCpuB,EAAMu7C,YAAY/xB,IAAI3zB,UAAYmK,EAAMouB,gBAAkB,IAAMwuB,EAEhE58C,EAAMu7C,YAAY37B,YAAY,eAE9B5f,EAAMotB,SAASptB,EAAMu7C,aAErBv7C,EAAM4rC,SAEN5rC,EAAMwrC,UAAW,EAEjB,IAAIR,EAAc,SAAqBvmI,GACrC,OAAOu7F,EAAMgrC,YAAYvmI,IA+B3B,OA5BAu7F,EAAM68C,iBAAmB,SAAUp4I,GACjC,OAAOu7F,EAAM88C,gBAAgBr4I,IAG/Bu7F,EAAMb,GAAGa,EAAMu7C,YAAa,MAAOvQ,GAEnChrC,EAAMb,GAAGa,EAAMu7C,YAAa,QAASvQ,GAErChrC,EAAMb,GAAGa,EAAMu7C,YAAa,WAAW,SAAU92I,GAC/C,OAAOu7F,EAAMwvB,cAAc/qH,MAG7Bu7F,EAAMb,GAAGa,EAAMu7C,YAAa,cAAc,WACxCv7C,EAAMyf,SAAS,aAEfzf,EAAM+8C,KAAKvuB,OAEXrvB,GAAG,IAAU,QAASa,EAAM68C,qBAG9B78C,EAAMb,GAAG,cAAc,SAAU16F,GAC/B,OAAOu7F,EAAMg9C,iBAAiBv4I,MAGhCu7F,EAAMb,GAAG,WAAW,SAAU16F,GAC5B,OAAOu7F,EAAMi9C,qBAAqBx4I,MAG7Bu7F,EArET,IAAe28C,EAAYjoB,GA4E3B,IAAIx1B,EAASy9C,EAAWz7I,UA4WxB,OA1WAg+F,EAAO0sC,OAAS,WACd,IAAImR,EAAOtjJ,KAAKyjJ,aAEZzjJ,KAAKsjJ,OACPtjJ,KAAKsjJ,KAAKp9C,UACVlmG,KAAKyhG,YAAYzhG,KAAKsjJ,OAGxBtjJ,KAAKsjJ,KAAOA,EACZtjJ,KAAK2zH,SAAS2vB,GAQdtjJ,KAAK4iJ,gBAAiB,EACtB5iJ,KAAK8hJ,YAAY/xB,IAAI1R,aAAa,gBAAiB,SAE/Cr+G,KAAK0jJ,OAAS1jJ,KAAK0jJ,MAAM9lJ,QAAUoC,KAAK2jJ,gBAC1C3jJ,KAAKg1H,OACLh1H,KAAKsjJ,KAAKjwB,WAAW/U,gBAAgB,UAErCt+G,KAAK+0H,OACL/0H,KAAKsjJ,KAAKjwB,WAAWhV,aAAa,OAAQ,UAW9C5Y,EAAOg+C,WAAa,WAClB,IAAIH,EAAO,IAAIzB,GAAK7hJ,KAAKyxH,QAAS,CAChCswB,WAAY/hJ,OAad,GAFAA,KAAK2jJ,eAAiB,EAElB3jJ,KAAK4xH,SAASnqB,MAAO,CACvB,IAAIm8C,EAAUr+B,GAAS,KAAM,CAC3BnpB,UAAW,iBACX75E,YAAakuG,GAAczwH,KAAK4xH,SAASnqB,OACzCm0B,UAAW,IAETioB,EAAiB,IAAIvyB,GAAYtxH,KAAKyxH,QAAS,CACjD9+G,GAAIixI,IAENN,EAAKf,QAAQsB,GAKf,GAFA7jJ,KAAK0jJ,MAAQ1jJ,KAAK8jJ,cAEd9jJ,KAAK0jJ,MAEP,IAAK,IAAI9oJ,EAAI,EAAGA,EAAIoF,KAAK0jJ,MAAM9lJ,OAAQhD,IACrC0oJ,EAAKf,QAAQviJ,KAAK0jJ,MAAM9oJ,IAI5B,OAAO0oJ,GAST79C,EAAOq+C,YAAc,aASrBr+C,EAAO8f,SAAW,WAChB,OAAO0V,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAWp8F,KAAK+jJ,wBACf,KAULt+C,EAAOs+C,qBAAuB,WAC5B,IAAIC,EAAkB,mBAEO,IAAzBhkJ,KAAK4xH,SAASyvB,OAChB2C,GAAmB,UAEnBA,GAAmB,SAIrB,IAAIb,EAAclN,GAAOxuI,UAAUktH,gBACnC,MAAO,mBAAqBqvB,EAAkB,IAAMb,EAAc,IAAMloB,EAAWxzH,UAAUktH,cAAc/jH,KAAK5Q,OAUlHylG,EAAOkvB,cAAgB,WACrB,IAAIqvB,EAAkB,kBAQtB,OAN6B,IAAzBhkJ,KAAK4xH,SAASyvB,OAChB2C,GAAmB,UAEnBA,GAAmB,SAGd,mBAAqBA,EAAkB,IAAM/oB,EAAWxzH,UAAUktH,cAAc/jH,KAAK5Q,OAkB9FylG,EAAOm3B,YAAc,SAAqB5gI,EAAM2W,GAK9C,YAJW,IAAPA,IACFA,EAAK3S,KAAK8hJ,YAAYnvI,MAGjB3S,KAAK8hJ,YAAYllB,YAAY5gI,EAAM2W,IAO5C8yF,EAAOS,QAAU,WACflmG,KAAKujJ,mBAELtoB,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAepCylG,EAAO8rC,YAAc,SAAqBrqC,GACpClnG,KAAK4iJ,eACP5iJ,KAAK6iJ,gBAEL7iJ,KAAKikJ,eAaTx+C,EAAO89C,iBAAmB,SAA0Br8C,GAClDlnG,KAAKmmH,YAAY,aACjBvgB,GAAI,IAAU,QAAS5lG,KAAKojJ,mBAO9B39C,EAAOqhB,MAAQ,WACb9mH,KAAK8hJ,YAAYh7B,SAOnBrhB,EAAOqwB,KAAO,WACZ91H,KAAK8hJ,YAAYhsB,QAanBrwB,EAAOswB,cAAgB,SAAuB7uB,GAExC,IAAQ8I,WAAW9I,EAAO,QAAU,IAAQ8I,WAAW9I,EAAO,QAC5DlnG,KAAK4iJ,gBACP5iJ,KAAK6iJ,gBAIF,IAAQ7yC,WAAW9I,EAAO,SAC7BA,EAAMgkB,iBAENlrH,KAAK8hJ,YAAYh7B,WAGV,IAAQ9W,WAAW9I,EAAO,OAAS,IAAQ8I,WAAW9I,EAAO,WACjElnG,KAAK4iJ,iBACR17C,EAAMgkB,iBACNlrH,KAAKikJ,iBAeXx+C,EAAO49C,gBAAkB,SAAyBn8C,IAE5C,IAAQ8I,WAAW9I,EAAO,QAAU,IAAQ8I,WAAW9I,EAAO,SAChElnG,KAAKmmH,YAAY,cAarB1gB,EAAOy+C,sBAAwB,SAA+Bh9C,GAC5DlnG,KAAKwjJ,qBAAqBt8C,IAa5BzB,EAAO+9C,qBAAuB,SAA8Bt8C,IAEtD,IAAQ8I,WAAW9I,EAAO,QAAU,IAAQ8I,WAAW9I,EAAO,UAC5DlnG,KAAK4iJ,gBACP5iJ,KAAK6iJ,gBAIF,IAAQ7yC,WAAW9I,EAAO,SAC7BA,EAAMgkB,iBAENlrH,KAAK8hJ,YAAYh7B,WASvBrhB,EAAOw+C,YAAc,WACnB,GAAIjkJ,KAAK+xI,SAAU,CAOjB,GANA/xI,KAAK4iJ,gBAAiB,EACtB5iJ,KAAKsjJ,KAAKvuB,OACV/0H,KAAKsjJ,KAAKruB,cACVj1H,KAAK8hJ,YAAY/xB,IAAI1R,aAAa,gBAAiB,QAG/CqG,IAAUO,KAEZ,OAGFjlH,KAAKsjJ,KAAKx8B,UAQdrhB,EAAOo9C,cAAgB,WACjB7iJ,KAAK+xI,WACP/xI,KAAK4iJ,gBAAiB,EACtB5iJ,KAAKsjJ,KAAKpuB,gBACVl1H,KAAKsjJ,KAAKtuB,OACVh1H,KAAK8hJ,YAAY/xB,IAAI1R,aAAa,gBAAiB,WAQvD5Y,EAAOsc,QAAU,WACf/hH,KAAK6iJ,gBACL7iJ,KAAK+xI,UAAW,EAChB/xI,KAAKgmH,SAAS,gBACdhmH,KAAK8hJ,YAAY//B,WAOnBtc,EAAOuc,OAAS,WACdhiH,KAAK+xI,UAAW,EAChB/xI,KAAKmmH,YAAY,gBACjBnmH,KAAK8hJ,YAAY9/B,UAGZkhC,EAzbqB,CA0b5B5xB,IAEFA,GAAY2G,kBAAkB,aAAcirB,IAQ5C,IAAIiB,GAA2B,SAAUC,GAYvC,SAASD,EAAYriJ,EAAQ8H,GAC3B,IAAI28F,EAEAg0B,EAAS3wH,EAAQ2wH,OAOrB,GANAh0B,EAAQ69C,EAAYxzI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE/CumG,EAAMm9C,MAAM9lJ,QAAU,GACxB2oG,EAAMyuB,QAGHuF,EACH,OAAO,IAAuBh0B,GAGhC,IAAI89C,EAAgBt2I,GAAK,IAAuBw4F,GAAQA,EAAM4rC,QAa9D,OAZA5X,EAAOlR,iBAAiB,cAAeg7B,GACvC9pB,EAAOlR,iBAAiB,WAAYg7B,GACpC9pB,EAAOlR,iBAAiB,cAAeg7B,GAEvC99C,EAAMkrB,QAAQ/rB,GAAG,QAAS2+C,GAE1B99C,EAAMkrB,QAAQ/rB,GAAG,WAAW,WAC1B60B,EAAOnR,oBAAoB,cAAei7B,GAC1C9pB,EAAOnR,oBAAoB,WAAYi7B,GACvC9pB,EAAOnR,oBAAoB,cAAei7B,MAGrC99C,EAGT,OAzCA,IAAe49C,EAAaC,GAyCrBD,EA1CsB,CA2C7BjB,IAEF5xB,GAAY2G,kBAAkB,cAAeksB,IAa7C,IAAIG,GAAW,CAAC,MAAO,MAAO,KAAM,OAAQ,QAAS,QAQjDC,GAAwB,SAAUrS,GAapC,SAASqS,EAASziJ,EAAQ8H,GACxB,IAAI28F,EAmBJ,OAjBAA,EAAQ2rC,EAAoBthI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAC3DumG,EAAMi+C,WAAa56I,EAAQ46I,WAC3Bj+C,EAAMk+C,YAAc76I,EAAQ21H,WAAY,EACxCh5B,EAAMm+C,gBAAkB96I,EAAQ86I,gBAEhCn+C,EAAMg5B,SAASh5B,EAAMk+C,aAEjBl+C,EAAMi+C,WACJj+C,EAAMm+C,gBACRn+C,EAAMwpB,IAAI1R,aAAa,OAAQ,oBAE/B9X,EAAMwpB,IAAI1R,aAAa,OAAQ,iBAGjC9X,EAAMwpB,IAAI1R,aAAa,OAAQ,YAG1B9X,EAhCT,IAAeg+C,EAAUrS,GAmDzB,IAAIzsC,EAAS8+C,EAAS98I,UAgFtB,OA9EAg+F,EAAO8f,SAAW,SAAoB1nH,EAAM4C,EAAOH,GAEjDN,KAAK6xI,gBAAiB,EAEtB,IAAIl/H,EAAKu/H,EAAoBzqI,UAAU89G,SAAS30G,KAAK5Q,KAAM,KAAMopB,GAAO,CACtEgzE,UAAW,gBACXw/B,UAAW,GACVn7H,GAAQH,GAOX,OAJAqS,EAAGiqG,aAAa2I,GAAS,OAAQ,CAC/BnpB,UAAW,qBACX75E,YAAaviB,KAAK6yH,SAAS7yH,KAAK4xH,SAASx4G,SACvCzG,EAAG0yG,cAAc,0BACd1yG,GAaT8yF,EAAOswB,cAAgB,SAAuB7uB,GACvCo9C,GAAS9vB,MAAK,SAAUtrH,GAC3B,OAAO,IAAQ8mG,WAAW9I,EAAOh+F,OAGjCgpI,EAAoBzqI,UAAUsuH,cAAcnlH,KAAK5Q,KAAMknG,IAgB3DzB,EAAO8rC,YAAc,SAAqBrqC,GACxClnG,KAAKu/H,UAAS,IAUhB95B,EAAO85B,SAAW,SAAkBolB,GAC9B3kJ,KAAKwkJ,aACHG,GACF3kJ,KAAKgmH,SAAS,gBACdhmH,KAAK+vH,IAAI1R,aAAa,eAAgB,QAGtCr+G,KAAK48H,YAAY,cACjB58H,KAAKykJ,aAAc,IAEnBzkJ,KAAKmmH,YAAY,gBACjBnmH,KAAK+vH,IAAI1R,aAAa,eAAgB,SAEtCr+G,KAAK48H,YAAY,IACjB58H,KAAKykJ,aAAc,KAKlBF,EApImB,CAqI1BtT,IAEF3f,GAAY2G,kBAAkB,WAAYssB,IAQ1C,IAAIK,GAAiC,SAAUC,GAY7C,SAASD,EAAkB9iJ,EAAQ8H,GACjC,IAAI28F,EAEAvJ,EAAQpzF,EAAQozF,MAChBu9B,EAASz4H,EAAO24H,aAEpB7wH,EAAQwP,MAAQ4jF,EAAM5jF,OAAS4jF,EAAM5gF,UAAY,UACjDxS,EAAQ21H,SAA0B,YAAfviC,EAAMI,KACzBmJ,EAAQs+C,EAAUj0I,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KACjDumG,EAAMvJ,MAAQA,EAGduJ,EAAMu+C,OAASl7I,EAAQk7I,OAAS,CAACl7I,EAAQm2H,MAAQx5B,EAAMvJ,MAAM+iC,OAAO7nH,OAAOpX,SAE3E,IAiCMomG,EAjCF69C,EAAgB,WAClB,IAAK,IAAI3zI,EAAOC,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAM0Q,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/EwhB,EAAKxhB,GAAQF,UAAUE,GAGzBg1F,EAAMy+C,mBAAmBhqI,MAAM,IAAuBurF,GAAQxzE,IAG5DkyH,EAAgC,WAClC,IAAK,IAAIhjC,EAAQ5wG,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAMuhH,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFnvF,EAAKmvF,GAAS7wG,UAAU6wG,GAG1B3b,EAAM2+C,6BAA6BlqI,MAAM,IAAuBurF,GAAQxzE,KAG1EjxB,EAAO4jG,GAAG,CAAC,YAAa,mBAAoBq/C,GAC5CxqB,EAAOlR,iBAAiB,SAAU07B,GAClCxqB,EAAOlR,iBAAiB,yBAA0B47B,GAElD1+C,EAAMb,GAAG,WAAW,WAClB5jG,EAAO8jG,IAAI,CAAC,YAAa,mBAAoBm/C,GAC7CxqB,EAAOnR,oBAAoB,SAAU27B,GACrCxqB,EAAOnR,oBAAoB,yBAA0B67B,WAS/Bv6I,IAApB6vH,EAAO4qB,WAGT5+C,EAAMb,GAAG,CAAC,MAAO,UAAU,WACzB,GAA8B,kBAAnB,IAAS0/C,MAElB,IACEl+C,EAAQ,IAAI,IAASk+C,MAAM,UAC3B,MAAOtiJ,IAINokG,IACHA,EAAQ,IAASm+C,YAAY,SAC7Bn+C,EAAMo+C,UAAU,UAAU,GAAM,IAGlC/qB,EAAOvM,cAAc9mB,MAOzB,OAFAX,EAAMy+C,qBAECz+C,EAjFT,IAAeq+C,EAAmBC,GAgGlC,IAAIp/C,EAASm/C,EAAkBn9I,UA2E/B,OAzEAg+F,EAAO8rC,YAAc,SAAqBrqC,GACxC,IAAIq+C,EAAiBvlJ,KAAKg9F,MACtBu9B,EAASv6H,KAAKyxH,QAAQgJ,aAI1B,GAFAoqB,EAAUp9I,UAAU8pI,YAAY3gI,KAAK5Q,KAAMknG,GAEtCqzB,EAIL,IAAK,IAAI3/H,EAAI,EAAGA,EAAI2/H,EAAO38H,OAAQhD,IAAK,CACtC,IAAIoiG,EAAQu9B,EAAO3/H,IAGqB,IAApCoF,KAAK8kJ,MAAM77I,QAAQ+zF,EAAM+iC,QAMzB/iC,IAAUuoD,EACO,YAAfvoD,EAAMI,OACRJ,EAAMI,KAAO,WAIS,aAAfJ,EAAMI,OACfJ,EAAMI,KAAO,eAcnBqI,EAAOu/C,mBAAqB,SAA4B99C,GACtD,IAAIs+C,EAAuC,YAApBxlJ,KAAKg9F,MAAMI,KAG9BooD,IAAqBxlJ,KAAKykJ,aAC5BzkJ,KAAKu/H,SAASimB,IAIlB//C,EAAOy/C,6BAA+B,SAAsCh+C,GAC1E,GAAwB,YAApBlnG,KAAKg9F,MAAMI,KAAoB,CACjC,IAAIi3C,EAAmBr0I,KAAKyxH,QAAQ6e,OAAO+D,iBAE3C,GAAIA,GAAoBA,EAAiBpV,SAAWoV,EAAiBj4H,WAAapc,KAAKg9F,MAAM5gF,UAAYi4H,EAAiBtU,OAAS//H,KAAKg9F,MAAM+iC,KAC5I,OAGF//H,KAAKyxH,QAAQ6e,OAAO+D,iBAAmB,CACrCpV,SAAS,EACT7iH,SAAUpc,KAAKg9F,MAAM5gF,SACrB2jH,KAAM//H,KAAKg9F,MAAM+iC,QAKvBt6B,EAAOS,QAAU,WAEflmG,KAAKg9F,MAAQ,KAEb6nD,EAAUp9I,UAAUy+F,QAAQt1F,KAAK5Q,OAG5B4kJ,EA5K4B,CA6KnCL,IAEFjzB,GAAY2G,kBAAkB,oBAAqB2sB,IAQnD,IAAIa,GAAoC,SAAUC,GAYhD,SAASD,EAAqB3jJ,EAAQ8H,GA4BpC,OAzBAA,EAAQozF,MAAQ,CACdl7F,OAAQA,EAIRi+H,KAAMn2H,EAAQm2H,KACd+kB,MAAOl7I,EAAQk7I,MACf,SAAW,EACX1nD,KAAM,YAGHxzF,EAAQk7I,QACXl7I,EAAQk7I,MAAQ,CAACl7I,EAAQm2H,OAGvBn2H,EAAQwP,MACVxP,EAAQozF,MAAM5jF,MAAQxP,EAAQwP,MAE9BxP,EAAQozF,MAAM5jF,MAAQxP,EAAQk7I,MAAMjgJ,KAAK,SAAW,OAItD+E,EAAQ46I,YAAa,EAErB56I,EAAQ86I,iBAAkB,EACnBgB,EAAmB90I,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAvC3D,IAAeylJ,EAAsBC,GAiDrC,IAAIjgD,EAASggD,EAAqBh+I,UA0ClC,OAxCAg+F,EAAOu/C,mBAAqB,SAA4B99C,GAItD,IAHA,IAAIqzB,EAASv6H,KAAK8B,SAAS24H,aACvB+qB,GAAmB,EAEd5qJ,EAAI,EAAGmJ,EAAIw2H,EAAO38H,OAAQhD,EAAImJ,EAAGnJ,IAAK,CAC7C,IAAIoiG,EAAQu9B,EAAO3/H,GAEnB,GAAIoF,KAAK4xH,SAASkzB,MAAM77I,QAAQ+zF,EAAM+iC,OAAS,GAAoB,YAAf/iC,EAAMI,KAAoB,CAC5EooD,GAAmB,EACnB,OAMAA,IAAqBxlJ,KAAKykJ,aAC5BzkJ,KAAKu/H,SAASimB,IAIlB//C,EAAOy/C,6BAA+B,SAAsCh+C,GAI1E,IAHA,IAAIqzB,EAASv6H,KAAK8B,SAAS24H,aACvBkrB,GAAY,EAEP/qJ,EAAI,EAAGmJ,EAAIw2H,EAAO38H,OAAQhD,EAAImJ,EAAGnJ,IAAK,CAC7C,IAAIoiG,EAAQu9B,EAAO3/H,GAEnB,GAAI,CAAC,WAAY,eAAgB,aAAaqO,QAAQ+zF,EAAM+iC,OAAS,GAAoB,YAAf/iC,EAAMI,KAAoB,CAClGuoD,GAAY,EACZ,OAIAA,IACF3lJ,KAAKyxH,QAAQ6e,OAAO+D,iBAAmB,CACrCpV,SAAS,KAKRwmB,EA5F+B,CA6FtCb,IAEFtzB,GAAY2G,kBAAkB,uBAAwBwtB,IAQtD,IAAIG,GAA+B,SAAUC,GAY3C,SAASD,EAAgB9jJ,EAAQ8H,GAM/B,YALgB,IAAZA,IACFA,EAAU,IAGZA,EAAQ2wH,OAASz4H,EAAO24H,aACjBorB,EAAaj1I,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAjBrD,IAAe4lJ,EAAiBC,GA8BhC,IAAIpgD,EAASmgD,EAAgBn+I,UAqD7B,OAnDAg+F,EAAOq+C,YAAc,SAAqBJ,EAAOoC,GAW/C,IAAI1sI,OAVU,IAAVsqI,IACFA,EAAQ,SAGY,IAAlBoC,IACFA,EAAgBlB,IAOd5kJ,KAAK+lJ,SACP3sI,EAAQpZ,KAAK+lJ,OAAS,QAIxBrC,EAAMzoJ,KAAK,IAAIwqJ,GAAqBzlJ,KAAKyxH,QAAS,CAChDqzB,MAAO9kJ,KAAKgmJ,OACZjmB,KAAM//H,KAAKimJ,MACX7sI,MAAOA,KAETpZ,KAAK2jJ,gBAAkB,EACvB,IAAIppB,EAASv6H,KAAKyxH,QAAQgJ,aAErB/5H,MAAMyI,QAAQnJ,KAAKgmJ,UACtBhmJ,KAAKgmJ,OAAS,CAAChmJ,KAAKimJ,QAGtB,IAAK,IAAIrrJ,EAAI,EAAGA,EAAI2/H,EAAO38H,OAAQhD,IAAK,CACtC,IAAIoiG,EAAQu9B,EAAO3/H,GAEnB,GAAIoF,KAAKgmJ,OAAO/8I,QAAQ+zF,EAAM+iC,OAAS,EAAG,CACxC,IAAI/2G,EAAO,IAAI88H,EAAc9lJ,KAAKyxH,QAAS,CACzCz0B,MAAOA,EACP8nD,MAAO9kJ,KAAKgmJ,OACZjmB,KAAM//H,KAAKimJ,MAEXzB,YAAY,EAEZE,iBAAiB,IAEnB17H,EAAKg9F,SAAS,OAAShpB,EAAM+iC,KAAO,cACpC2jB,EAAMzoJ,KAAK+tB,IAIf,OAAO06H,GAGFkC,EApF0B,CAqFjCzB,IAEF7yB,GAAY2G,kBAAkB,kBAAmB2tB,IAQjD,IAAIM,GAAqC,SAAUrB,GAYjD,SAASqB,EAAsBpkJ,EAAQ8H,GACrC,IAAI28F,EAEAvJ,EAAQpzF,EAAQozF,MAChBvE,EAAM7uF,EAAQ6uF,IACd4rC,EAAcviI,EAAOuiI,cASzB,OAPAz6H,EAAQ46I,YAAa,EACrB56I,EAAQ86I,iBAAkB,EAC1B96I,EAAQwP,MAAQq/E,EAAIz8F,KACpB4N,EAAQ21H,SAAW9mC,EAAI3sE,WAAau4G,GAAeA,EAAc5rC,EAAI1sE,QACrEw6E,EAAQs+C,EAAUj0I,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KACjDumG,EAAMvJ,MAAQA,EACduJ,EAAM9N,IAAMA,EACL8N,EAzBT,IAAe2/C,EAAuBrB,GAwCtC,IAAIp/C,EAASygD,EAAsBz+I,UAQnC,OANAg+F,EAAO8rC,YAAc,SAAqBrqC,GACxC29C,EAAUp9I,UAAU8pI,YAAY3gI,KAAK5Q,MAErCA,KAAKyxH,QAAQ4S,YAAYrkI,KAAKy4F,IAAI3sE,YAG7Bo6H,EAjDgC,CAkDvC3B,IAEFjzB,GAAY2G,kBAAkB,wBAAyBiuB,IAUvD,IAAIC,GAA8B,SAAUC,GAe1C,SAASD,EAAerkJ,EAAQ8H,EAAS4nH,GACvC,IAAIjrB,EAUJ,OARAA,EAAQ6/C,EAAiBx1I,KAAK5Q,KAAM8B,EAAQ8H,EAAS4nH,IAAUxxH,KAE/DumG,EAAM8/C,mBAAqB,WACzB9/C,EAAMm9C,MAAMrmJ,SAAQ,SAAU2rB,GAC5BA,EAAKu2G,SAASh5B,EAAM+/C,OAAO3iB,WAAW,KAAO36G,EAAKyvE,SAI/C8N,EAzBT,IAAe4/C,EAAgBC,GAmC/B,IAAI3gD,EAAS0gD,EAAe1+I,UAkK5B,OAhKAg+F,EAAOkvB,cAAgB,WACrB,MAAO,uBAAyByxB,EAAiB3+I,UAAUktH,cAAc/jH,KAAK5Q,OAGhFylG,EAAOs+C,qBAAuB,WAC5B,MAAO,uBAAyBqC,EAAiB3+I,UAAUs8I,qBAAqBnzI,KAAK5Q,OAcvFylG,EAAO0sC,OAAS,SAAgBjrC,GAC9B,IAAIA,IAASA,EAAMlK,OAA8B,aAArBkK,EAAMlK,MAAM+iC,KAAxC,CAIA,IAAI/iC,EAAQh9F,KAAKumJ,oBAEbvpD,IAAUh9F,KAAKsmJ,QACjBtmJ,KAAKwmJ,SAASxpD,GAEdopD,EAAiB3+I,UAAU0qI,OAAOvhI,KAAK5Q,SAC7BA,KAAK0jJ,OAAS1mD,GAASA,EAAMsE,MAAQtE,EAAMsE,KAAK1jG,SAAWoC,KAAK0jJ,MAAM9lJ,SAEhFwoJ,EAAiB3+I,UAAU0qI,OAAOvhI,KAAK5Q,QAY3CylG,EAAO+gD,SAAW,SAAkBxpD,GAClC,GAAIh9F,KAAKsmJ,SAAWtpD,EAApB,CASA,GALKh9F,KAAKymJ,iBACRzmJ,KAAKymJ,eAAiBzmJ,KAAKmyI,OAAOpkI,KAAK/N,OAIrCA,KAAKsmJ,OAAQ,CACf,IAAII,EAAoB1mJ,KAAKyxH,QAAQoY,qBAAqBvJ,wBAAwBtgI,KAAKsmJ,QAEnFI,GACFA,EAAkBt9B,oBAAoB,OAAQppH,KAAKymJ,gBAGrDzmJ,KAAKsmJ,OAAOl9B,oBAAoB,YAAappH,KAAKqmJ,oBAClDrmJ,KAAKsmJ,OAAS,KAKhB,GAFAtmJ,KAAKsmJ,OAAStpD,EAEVh9F,KAAKsmJ,OAAQ,CACftmJ,KAAKsmJ,OAAOlpD,KAAO,SAEnB,IAAIupD,EAAqB3mJ,KAAKyxH,QAAQoY,qBAAqBvJ,wBAAwBtgI,KAAKsmJ,QAEpFK,GACFA,EAAmBt9B,iBAAiB,OAAQrpH,KAAKymJ,gBAGnDzmJ,KAAKsmJ,OAAOj9B,iBAAiB,YAAarpH,KAAKqmJ,uBAWnD5gD,EAAO8gD,kBAAoB,WAGzB,IAFA,IAAIhsB,EAASv6H,KAAKyxH,QAAQgJ,cAAgB,GAEjC7/H,EAAI2/H,EAAO38H,OAAS,EAAGhD,GAAK,EAAGA,IAAK,CAE3C,IAAIoiG,EAAQu9B,EAAO3/H,GAEnB,GAAIoiG,EAAM+iC,OAAS//H,KAAKimJ,MACtB,OAAOjpD,IAabyI,EAAOmhD,eAAiB,WACtB,OAAI5mJ,KAAKsmJ,QAAUtmJ,KAAKsmJ,OAAOltI,MACtBpZ,KAAKsmJ,OAAOltI,MAGdpZ,KAAK6yH,SAASpC,GAAczwH,KAAKimJ,SAU1CxgD,EAAOg+C,WAAa,WAElB,OADAzjJ,KAAK4xH,SAASnqB,MAAQznG,KAAK4mJ,iBACpBR,EAAiB3+I,UAAUg8I,WAAW7yI,KAAK5Q,OAUpDylG,EAAOq+C,YAAc,WACnB,IAAIJ,EAAQ,GAEZ,IAAK1jJ,KAAKsmJ,OACR,OAAO5C,EAGT,IAAIpiD,EAAOthG,KAAKsmJ,OAAOhlD,KAEvB,IAAKA,EACH,OAAOoiD,EAGT,IAAK,IAAI9oJ,EAAI,EAAGmJ,EAAIu9F,EAAK1jG,OAAQhD,EAAImJ,EAAGnJ,IAAK,CAC3C,IAAI69F,EAAM6I,EAAK1mG,GACXisJ,EAAK,IAAIX,GAAsBlmJ,KAAKyxH,QAAS,CAC/Cz0B,MAAOh9F,KAAKsmJ,OACZ7tD,IAAKA,IAEPirD,EAAMzoJ,KAAK4rJ,GAGb,OAAOnD,GAGFyC,EAtMyB,CAuMhCP,IASFO,GAAe1+I,UAAUw+I,MAAQ,WAQjCE,GAAe1+I,UAAUkqI,aAAe,WACxCrgB,GAAY2G,kBAAkB,iBAAkBkuB,IAQhD,IAAIW,GAAkC,SAAUV,GAe9C,SAASU,EAAmBhlJ,EAAQ8H,EAAS4nH,GAC3C,IAAIjrB,EAEJA,EAAQ6/C,EAAiBx1I,KAAK5Q,KAAM8B,EAAQ8H,EAAS4nH,IAAUxxH,KAC/D,IAAIu6H,EAASz4H,EAAO24H,aAChBsqB,EAAgBh3I,GAAK,IAAuBw4F,GAAQA,EAAMy+C,oBAO9D,OANAzqB,EAAOlR,iBAAiB,SAAU07B,GAElCx+C,EAAMb,GAAG,WAAW,WAClB60B,EAAOnR,oBAAoB,SAAU27B,MAGhCx+C,EA1BT,IAAeugD,EAAoBV,GAsCnC,IAAI3gD,EAASqhD,EAAmBr/I,UAsChC,OApCAg+F,EAAOu/C,mBAAqB,SAA4B99C,GAItD,IAHA,IAAIqzB,EAASv6H,KAAK8B,SAAS24H,aACvBhQ,GAAW,EAEN7vH,EAAI,EAAGmJ,EAAIw2H,EAAO38H,OAAQhD,EAAImJ,EAAGnJ,IAAK,CAC7C,IAAIoiG,EAAQu9B,EAAO3/H,GAEnB,GAAIoiG,EAAM+iC,OAAS//H,KAAKimJ,OAAwB,YAAfjpD,EAAMI,KAAoB,CACzDqtB,GAAW,EACX,OAKAA,EACFzqH,KAAK+hH,UAEL/hH,KAAKgiH,UAWTvc,EAAOkvB,cAAgB,WACrB,MAAO,2BAA6ByxB,EAAiB3+I,UAAUktH,cAAc/jH,KAAK5Q,OAGpFylG,EAAOs+C,qBAAuB,WAC5B,MAAO,2BAA6BqC,EAAiB3+I,UAAUs8I,qBAAqBnzI,KAAK5Q,OAGpF8mJ,EA7E6B,CA8EpClB,IASFkB,GAAmBr/I,UAAUw+I,MAAQ,eAQrCa,GAAmBr/I,UAAUkqI,aAAe,eAC5CrgB,GAAY2G,kBAAkB,qBAAsB6uB,IAQpD,IAAIC,GAA+B,SAAUX,GAe3C,SAASW,EAAgBjlJ,EAAQ8H,EAAS4nH,GACxC,OAAO40B,EAAiBx1I,KAAK5Q,KAAM8B,EAAQ8H,EAAS4nH,IAAUxxH,KAfhE,IAAe+mJ,EAAiBX,GAyBhC,IAAI3gD,EAASshD,EAAgBt/I,UAU7B,OARAg+F,EAAOkvB,cAAgB,WACrB,MAAO,wBAA0ByxB,EAAiB3+I,UAAUktH,cAAc/jH,KAAK5Q,OAGjFylG,EAAOs+C,qBAAuB,WAC5B,MAAO,wBAA0BqC,EAAiB3+I,UAAUs8I,qBAAqBnzI,KAAK5Q,OAGjF+mJ,EApC0B,CAqCjCnB,IASFmB,GAAgBt/I,UAAUw+I,MAAQ,YAQlCc,GAAgBt/I,UAAUkqI,aAAe,YACzCrgB,GAAY2G,kBAAkB,kBAAmB8uB,IAQjD,IAAIC,GAAuC,SAAUtB,GAYnD,SAASsB,EAAwBllJ,EAAQ8H,GACvC,IAAI28F,EAmBJ,OAjBA38F,EAAQozF,MAAQ,CACdl7F,OAAQA,EACRi+H,KAAMn2H,EAAQm2H,KACd3mH,MAAOxP,EAAQm2H,KAAO,YACtBykB,YAAY,EACZ,SAAW,EACXpnD,KAAM,YAGRxzF,EAAQ46I,YAAa,EACrB56I,EAAQpM,KAAO,0BACf+oG,EAAQm/C,EAAmB90I,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAE1DumG,EAAMyf,SAAS,0BAEfzf,EAAMq2B,YAAY,WAAahzH,EAAQm2H,KAAO,oBAEvCx5B,EA/BT,IAAeygD,EAAyBtB,GA8CxC,IAAIjgD,EAASuhD,EAAwBv/I,UAMrC,OAJAg+F,EAAO8rC,YAAc,SAAqBrqC,GACxClnG,KAAK8B,SAAS0xH,SAAS,qBAAqB9mH,QAGvCs6I,EArDkC,CAsDzCpC,IAEFtzB,GAAY2G,kBAAkB,0BAA2B+uB,IAQzD,IAAIC,GAA8B,SAAUb,GAe1C,SAASa,EAAenlJ,EAAQ8H,EAAS4nH,GACvC,OAAO40B,EAAiBx1I,KAAK5Q,KAAM8B,EAAQ8H,EAAS4nH,IAAUxxH,KAfhE,IAAeinJ,EAAgBb,GAyB/B,IAAI3gD,EAASwhD,EAAex/I,UA8B5B,OA5BAg+F,EAAOkvB,cAAgB,WACrB,MAAO,uBAAyByxB,EAAiB3+I,UAAUktH,cAAc/jH,KAAK5Q,OAGhFylG,EAAOs+C,qBAAuB,WAC5B,MAAO,uBAAyBqC,EAAiB3+I,UAAUs8I,qBAAqBnzI,KAAK5Q,OAUvFylG,EAAOq+C,YAAc,WACnB,IAAIJ,EAAQ,GASZ,OAPM1jJ,KAAK8B,SAASohI,OAASljI,KAAK8B,SAASohI,MAAMkE,2BAA6BpnI,KAAK8B,SAAS0xH,SAAS,uBACnGkwB,EAAMzoJ,KAAK,IAAI+rJ,GAAwBhnJ,KAAKyxH,QAAS,CACnDsO,KAAM//H,KAAKimJ,SAEbjmJ,KAAK2jJ,gBAAkB,GAGlByC,EAAiB3+I,UAAUq8I,YAAYlzI,KAAK5Q,KAAM0jJ,IAGpDuD,EAxDyB,CAyDhCrB,IASFqB,GAAex/I,UAAUw+I,MAAQ,WAQjCgB,GAAex/I,UAAUkqI,aAAe,WACxCrgB,GAAY2G,kBAAkB,iBAAkBgvB,IAShD,IAAIC,GAAgC,SAAUxB,GAG5C,SAASwB,IACP,OAAOxB,EAAmB1qI,MAAMhb,KAAMqR,YAAcrR,KAHtD,IAAeknJ,EAAkBxB,GAMjC,IAAIjgD,EAASyhD,EAAiBz/I,UAwB9B,OAtBAg+F,EAAO8f,SAAW,SAAoB1nH,EAAM4C,EAAOH,GACjD,IAAIqS,EAAK+yI,EAAmBj+I,UAAU89G,SAAS30G,KAAK5Q,KAAMnC,EAAM4C,EAAOH,GAEnE6mJ,EAAax0I,EAAG0yG,cAAc,uBAgBlC,MAdiC,aAA7BrlH,KAAK4xH,SAAS50B,MAAM+iC,OACtBonB,EAAW/3H,YAAYm2F,GAAS,OAAQ,CACtCnpB,UAAW,wBACV,CACD,eAAe,KAEjB+qD,EAAW/3H,YAAYm2F,GAAS,OAAQ,CACtCnpB,UAAW,mBAGX75E,YAAa,IAAMviB,KAAK6yH,SAAS,gBAI9BlgH,GAGFu0I,EA/B2B,CAgClCtC,IAEFtzB,GAAY2G,kBAAkB,mBAAoBivB,IAQlD,IAAIE,GAA8B,SAAUhB,GAG1C,SAASgB,EAAetlJ,EAAQ8H,GAC9B,IAAI28F,EAiBJ,YAfgB,IAAZ38F,IACFA,EAAU,IAGZ28F,EAAQ6/C,EAAiBx1I,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAGxDumG,EAAMw/C,OAAS,YAEX,CAAC,KAAM,QAAS,QAAS,SAAS98I,QAAQs9F,EAAMkrB,QAAQ41B,YAAc,IACxE9gD,EAAMw/C,OAAS,YAGjBx/C,EAAMu7C,YAAYllB,YAAYnM,GAAclqB,EAAMw/C,SAE3Cx/C,EApBT,IAAe6gD,EAAgBhB,GA8B/B,IAAI3gD,EAAS2hD,EAAe3/I,UA+B5B,OA7BAg+F,EAAOkvB,cAAgB,WACrB,MAAO,wBAA0ByxB,EAAiB3+I,UAAUktH,cAAc/jH,KAAK5Q,OAGjFylG,EAAOs+C,qBAAuB,WAC5B,MAAO,wBAA0BqC,EAAiB3+I,UAAUs8I,qBAAqBnzI,KAAK5Q,OAUxFylG,EAAOq+C,YAAc,WACnB,IAAIJ,EAAQ,GAUZ,OARM1jJ,KAAK8B,SAASohI,OAASljI,KAAK8B,SAASohI,MAAMkE,2BAA6BpnI,KAAK8B,SAAS0xH,SAAS,uBACnGkwB,EAAMzoJ,KAAK,IAAI+rJ,GAAwBhnJ,KAAKyxH,QAAS,CACnDsO,KAAM//H,KAAK+lJ,UAEb/lJ,KAAK2jJ,gBAAkB,GAGzBD,EAAQ0C,EAAiB3+I,UAAUq8I,YAAYlzI,KAAK5Q,KAAM0jJ,EAAOwD,IAC1DxD,GAGF0D,EA9DyB,CA+DhCxB,IASFwB,GAAe3/I,UAAUu+I,OAAS,CAAC,WAAY,aAS/CoB,GAAe3/I,UAAUkqI,aAAe,YACxCrgB,GAAY2G,kBAAkB,iBAAkBmvB,IAQhD,IAAIE,GAAkC,SAAUzC,GAY9C,SAASyC,EAAmBxlJ,EAAQ8H,GAClC,IAAI28F,EAEAvJ,EAAQpzF,EAAQozF,MAChBu9B,EAASz4H,EAAOylJ,cAEpB39I,EAAQwP,MAAQ4jF,EAAM5jF,OAAS4jF,EAAM5gF,UAAY,UACjDxS,EAAQ21H,SAAWviC,EAAMiiC,QACzB14B,EAAQs+C,EAAUj0I,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KACjDumG,EAAMvJ,MAAQA,EAEduJ,EAAMyf,SAAS,OAAShpB,EAAM+iC,KAAO,cAErC,IAAIglB,EAAgB,WAClB,IAAK,IAAI3zI,EAAOC,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAM0Q,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/EwhB,EAAKxhB,GAAQF,UAAUE,GAGzBg1F,EAAMy+C,mBAAmBhqI,MAAM,IAAuBurF,GAAQxzE,IAShE,OANAwnG,EAAOlR,iBAAiB,SAAU07B,GAElCx+C,EAAMb,GAAG,WAAW,WAClB60B,EAAOnR,oBAAoB,SAAU27B,MAGhCx+C,EAtCT,IAAe+gD,EAAoBzC,GAyCnC,IAAIp/C,EAAS6hD,EAAmB7/I,UAqEhC,OAnEAg+F,EAAO8f,SAAW,SAAoB1nH,EAAM4C,EAAOH,GACjD,IAAIqS,EAAKkyI,EAAUp9I,UAAU89G,SAAS30G,KAAK5Q,KAAMnC,EAAM4C,EAAOH,GAE1D6mJ,EAAax0I,EAAG0yG,cAAc,uBAclC,MAZiC,cAA7BrlH,KAAK4xH,SAAS50B,MAAM+iC,OACtBonB,EAAW/3H,YAAYm2F,GAAS,OAAQ,CACtCnpB,UAAW,wBACV,CACD,eAAe,KAEjB+qD,EAAW/3H,YAAYm2F,GAAS,OAAQ,CACtCnpB,UAAW,mBACX75E,YAAa,IAAMviB,KAAK6yH,SAAS,oBAI9BlgH,GAeT8yF,EAAO8rC,YAAc,SAAqBrqC,GAOxC,GANA29C,EAAUp9I,UAAU8pI,YAAY3gI,KAAK5Q,KAAMknG,GAI3ClnG,KAAKg9F,MAAMiiC,SAAU,EAEjBj/H,KAAKyxH,QAAQyR,MAAMskB,0BAGrB,IAFA,IAAIjtB,EAASv6H,KAAKyxH,QAAQ81B,cAEjB3sJ,EAAI,EAAGA,EAAI2/H,EAAO38H,OAAQhD,IAAK,CACtC,IAAIoiG,EAAQu9B,EAAO3/H,GAEfoiG,IAAUh9F,KAAKg9F,QAInBA,EAAMiiC,QAAUjiC,IAAUh9F,KAAKg9F,SAcrCyI,EAAOu/C,mBAAqB,SAA4B99C,GACtDlnG,KAAKu/H,SAASv/H,KAAKg9F,MAAMiiC,UAGpBqoB,EA/G6B,CAgHpC/C,IAEFjzB,GAAY2G,kBAAkB,qBAAsBqvB,IAQpD,IAAIG,GAAgC,SAAU5B,GAY5C,SAAS4B,EAAiB3lJ,EAAQ8H,GAMhC,YALgB,IAAZA,IACFA,EAAU,IAGZA,EAAQ2wH,OAASz4H,EAAOylJ,cACjB1B,EAAaj1I,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAjBrD,IAAeynJ,EAAkB5B,GA2BjC,IAAIpgD,EAASgiD,EAAiBhgJ,UA2C9B,OAzCAg+F,EAAOkvB,cAAgB,WACrB,MAAO,oBAAsBkxB,EAAap+I,UAAUktH,cAAc/jH,KAAK5Q,OAGzEylG,EAAOs+C,qBAAuB,WAC5B,MAAO,oBAAsB8B,EAAap+I,UAAUs8I,qBAAqBnzI,KAAK5Q,OAahFylG,EAAOq+C,YAAc,SAAqBJ,QAC1B,IAAVA,IACFA,EAAQ,IAIV1jJ,KAAK2jJ,eAAiB,EAGtB,IAFA,IAAIppB,EAASv6H,KAAKyxH,QAAQ81B,cAEjB3sJ,EAAI,EAAGA,EAAI2/H,EAAO38H,OAAQhD,IAAK,CACtC,IAAIoiG,EAAQu9B,EAAO3/H,GACnB8oJ,EAAMzoJ,KAAK,IAAIqsJ,GAAmBtnJ,KAAKyxH,QAAS,CAC9Cz0B,MAAOA,EAEPwnD,YAAY,EAEZE,iBAAiB,KAIrB,OAAOhB,GAGF+D,EAvE2B,CAwElCtD,IASFsD,GAAiBhgJ,UAAUkqI,aAAe,cAC1CrgB,GAAY2G,kBAAkB,mBAAoBwvB,IAQlD,IAAIC,GAAoC,SAAU7C,GAYhD,SAAS6C,EAAqB5lJ,EAAQ8H,GACpC,IAAI28F,EAEAntF,EAAQxP,EAAQ+9I,KAChBA,EAAOllI,WAAWrJ,EAAO,IAc7B,OAZAxP,EAAQwP,MAAQA,EAChBxP,EAAQ21H,SAAWooB,IAAS7lJ,EAAO8lJ,eACnCh+I,EAAQ46I,YAAa,EACrB56I,EAAQ86I,iBAAkB,EAC1Bn+C,EAAQs+C,EAAUj0I,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KACjDumG,EAAMntF,MAAQA,EACdmtF,EAAMohD,KAAOA,EAEbphD,EAAMb,GAAG5jG,EAAQ,cAAc,SAAUkJ,GACvC,OAAOu7F,EAAM4rC,OAAOnnI,MAGfu7F,EA7BT,IAAemhD,EAAsB7C,GA4CrC,IAAIp/C,EAASiiD,EAAqBjgJ,UAqBlC,OAnBAg+F,EAAO8rC,YAAc,SAAqBrqC,GACxC29C,EAAUp9I,UAAU8pI,YAAY3gI,KAAK5Q,MAErCA,KAAK8B,SAAS8lJ,aAAa5nJ,KAAK2nJ,OAYlCliD,EAAO0sC,OAAS,SAAgBjrC,GAC9BlnG,KAAKu/H,SAASv/H,KAAK8B,SAAS8lJ,iBAAmB5nJ,KAAK2nJ,OAG/CD,EAlE+B,CAmEtCnD,IASFmD,GAAqBjgJ,UAAUg7I,cAAgB,SAC/CnxB,GAAY2G,kBAAkB,uBAAwByvB,IAQtD,IAAIG,GAAsC,SAAUzD,GAYlD,SAASyD,EAAuB/lJ,EAAQ8H,GACtC,IAAI28F,EAsBJ,OApBAA,EAAQ69C,EAAYxzI,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAEnDumG,EAAMu7C,YAAY/xB,IAAI1R,aAAa,mBAAoB9X,EAAMuhD,YAE7DvhD,EAAMwhD,mBAENxhD,EAAMyhD,cAENzhD,EAAMb,GAAG5jG,EAAQ,aAAa,SAAUkJ,GACtC,OAAOu7F,EAAMwhD,iBAAiB/8I,MAGhCu7F,EAAMb,GAAG5jG,EAAQ,cAAc,SAAUkJ,GACvC,OAAOu7F,EAAMyhD,YAAYh9I,MAG3Bu7F,EAAMb,GAAG5jG,EAAQ,uBAAuB,SAAUkJ,GAChD,OAAOu7F,EAAM0hD,0BAA0Bj9I,MAGlCu7F,EAlCT,IAAeshD,EAAwBzD,GA4CvC,IAAI3+C,EAASoiD,EAAuBpgJ,UAuJpC,OArJAg+F,EAAO8f,SAAW,WAChB,IAAI5yG,EAAKyxI,EAAY38I,UAAU89G,SAAS30G,KAAK5Q,MAS7C,OAPAA,KAAK8nJ,WAAa,iCAAmC9nJ,KAAK6xH,IAC1D7xH,KAAKkoJ,SAAW3iC,GAAS,MAAO,CAC9BnpB,UAAW,0BACXvhF,GAAI7a,KAAK8nJ,WACTvlI,YAAa,OAEf5P,EAAGyc,YAAYpvB,KAAKkoJ,UACbv1I,GAGT8yF,EAAOS,QAAU,WACflmG,KAAKkoJ,SAAW,KAEhB9D,EAAY38I,UAAUy+F,QAAQt1F,KAAK5Q,OAUrCylG,EAAOkvB,cAAgB,WACrB,MAAO,qBAAuByvB,EAAY38I,UAAUktH,cAAc/jH,KAAK5Q,OAGzEylG,EAAOs+C,qBAAuB,WAC5B,MAAO,qBAAuBK,EAAY38I,UAAUs8I,qBAAqBnzI,KAAK5Q,OAQhFylG,EAAOq+C,YAAc,WAInB,IAHA,IAAIqE,EAAQnoJ,KAAKooJ,gBACb1E,EAAQ,GAEH9oJ,EAAIutJ,EAAMvqJ,OAAS,EAAGhD,GAAK,EAAGA,IACrC8oJ,EAAMzoJ,KAAK,IAAIysJ,GAAqB1nJ,KAAK8B,SAAU,CACjD6lJ,KAAMQ,EAAMvtJ,GAAK,OAIrB,OAAO8oJ,GAOTj+C,EAAOq6C,qBAAuB,WAE5B9/I,KAAK2S,KAAK0rG,aAAa,gBAAiBr+G,KAAK8B,SAAS8lJ,iBAexDniD,EAAO8rC,YAAc,SAAqBrqC,GAExC,IAAImhD,EAAcroJ,KAAK8B,SAAS8lJ,eAC5BO,EAAQnoJ,KAAKooJ,gBACbE,EAAeH,EAAMl/I,QAAQo/I,GAE7BE,GAAYD,EAAe,GAAKH,EAAMvqJ,OAC1CoC,KAAK8B,SAAS8lJ,aAAaO,EAAMI,KASnC9iD,EAAOwiD,0BAA4B,SAAmC/gD,GACpElnG,KAAKmyI,UAUP1sC,EAAO2iD,cAAgB,WACrB,IAAItmJ,EAAS9B,KAAK8B,SAClB,OAAOA,EAAOsmJ,eAAiBtmJ,EAAOsmJ,iBAAmB,IAW3D3iD,EAAO+iD,sBAAwB,WAC7B,OAAOxoJ,KAAK8B,SAASohI,OAASljI,KAAK8B,SAASohI,MAAMqI,sBAAwBvrI,KAAKooJ,iBAAmBpoJ,KAAKooJ,gBAAgBxqJ,OAAS,GAYlI6nG,EAAOsiD,iBAAmB,SAA0B7gD,GAC9ClnG,KAAKwoJ,wBACPxoJ,KAAKmmH,YAAY,cAEjBnmH,KAAKgmH,SAAS,eAalBvgB,EAAOuiD,YAAc,SAAqB9gD,GACpClnG,KAAKwoJ,0BACPxoJ,KAAKkoJ,SAAS3lI,YAAcviB,KAAK8B,SAAS8lJ,eAAiB,MAIxDC,EApMiC,CAqMxC3E,IASF2E,GAAuBpgJ,UAAUkqI,aAAe,gBAChDrgB,GAAY2G,kBAAkB,yBAA0B4vB,IASxD,IAAIY,GAAsB,SAAUxtB,GAGlC,SAASwtB,IACP,OAAOxtB,EAAWjgH,MAAMhb,KAAMqR,YAAcrR,KAH9C,IAAeyoJ,EAAQxtB,GAMvB,IAAIx1B,EAASgjD,EAAOhhJ,UAuCpB,OA/BAg+F,EAAOkvB,cAAgB,WACrB,MAAO,cAAgBsG,EAAWxzH,UAAUktH,cAAc/jH,KAAK5Q,OAUjEylG,EAAO8f,SAAW,SAAkB1gG,EAAKpkB,EAAO/B,GAiB9C,YAhBY,IAARmmB,IACFA,EAAM,YAGM,IAAVpkB,IACFA,EAAQ,SAGS,IAAf/B,IACFA,EAAa,IAGV+B,EAAM27F,YACT37F,EAAM27F,UAAYp8F,KAAK20H,iBAGlBsG,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM6kB,EAAKpkB,EAAO/B,IAGvD+pJ,EA9CiB,CA+CxBn3B,IAEFA,GAAY2G,kBAAkB,SAAUwwB,IAQxC,IAAIC,GAAmC,SAAUC,GAG/C,SAASD,IACP,OAAOC,EAAQ3tI,MAAMhb,KAAMqR,YAAcrR,KAH3C,IAAe0oJ,EAAqBC,GAMpC,IAAIljD,EAASijD,EAAoBjhJ,UA4BjC,OApBAg+F,EAAOkvB,cAAgB,WACrB,MAAO,6BAA+Bg0B,EAAQlhJ,UAAUktH,cAAc/jH,KAAK5Q,OAU7EylG,EAAO8f,SAAW,WAChB,OAAOojC,EAAQlhJ,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CAClDo8F,UAAWp8F,KAAK20H,gBAGhBpyG,YAAa,OAIVmmI,EAnC8B,CAoCrCD,IAEFn3B,GAAY2G,kBAAkB,sBAAuBywB,IAQrD,IAAIE,GAA0B,SAAU3tB,GAGtC,SAAS2tB,IACP,OAAO3tB,EAAWjgH,MAAMhb,KAAMqR,YAAcrR,KAH9C,IAAe4oJ,EAAY3tB,GAM3B,IAAIx1B,EAASmjD,EAAWnhJ,UAexB,OAPAg+F,EAAO8f,SAAW,WAChB,OAAO0V,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,MAAO,CACrDo8F,UAAW,kBACXzwE,IAAK,SAIFi9H,EAtBqB,CAuB5Bt3B,IASFs3B,GAAWnhJ,UAAUmqH,SAAW,CAC9B0B,SAAU,CAAC,aAAc,cAAe,qBAAsB,cAAe,kBAAmB,kBAAmB,cAAe,aAAc,uBAAwB,sBAAuB,yBAA0B,iBAAkB,qBAAsB,iBAAkB,mBAAoB,qBAGrS,yBAA0B,KAC5Bs1B,GAAWnhJ,UAAUmqH,SAAS0B,SAASztB,OAAO+iD,GAAWnhJ,UAAUmqH,SAAS0B,SAAS11H,OAAS,EAAG,EAAG,0BAGtG0zH,GAAY2G,kBAAkB,aAAc2wB,IAS5C,IAAIC,GAA4B,SAAUC,GAYxC,SAASD,EAAa/mJ,EAAQ8H,GAC5B,IAAI28F,EAQJ,OANAA,EAAQuiD,EAAal4I,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KAEpDumG,EAAMb,GAAG5jG,EAAQ,SAAS,SAAUkJ,GAClC,OAAOu7F,EAAM75F,KAAK1B,MAGbu7F,EApBT,IAAesiD,EAAcC,GAgC7B,IAAIrjD,EAASojD,EAAaphJ,UAkB1B,OAhBAg+F,EAAOkvB,cAAgB,WACrB,MAAO,qBAAuBm0B,EAAarhJ,UAAUktH,cAAc/jH,KAAK5Q,OAU1EylG,EAAO+f,QAAU,WACf,IAAI31F,EAAQ7vB,KAAK8B,SAAS+tB,QAC1B,OAAOA,EAAQ7vB,KAAK6yH,SAAShjG,EAAMgoE,SAAW,IAGzCgxD,EAnDuB,CAoD9B7tB,IAQF6tB,GAAaphJ,UAAUmqH,SAAW,IAAS,GAAIoJ,GAAYvzH,UAAUmqH,SAAU,CAC7EuK,aAAa,EACbJ,YAAY,EACZU,WAAW,EACXhB,aAAa,IAEfnK,GAAY2G,kBAAkB,eAAgB4wB,IAE9C,IAAIE,GAAsB,0BACtBC,GAAc,CAAC,OAAQ,SACvBC,GAAa,CAAC,OAAQ,QACtBC,GAAa,CAAC,OAAQ,QACtBC,GAAc,CAAC,OAAQ,SACvBC,GAAgB,CAAC,OAAQ,WACzBC,GAAY,CAAC,OAAQ,OACrBC,GAAc,CAAC,OAAQ,SACvBC,GAAe,CAAC,OAAQ,UACxBC,GAAiB,CAAC,IAAK,UACvBC,GAAe,CAAC,MAAO,oBACvBC,GAAgB,CAAC,IAAK,eAYtBC,GAAgB,CAClBjsD,gBAAiB,CACfynB,SAAU,yBACVtqG,GAAI,+BACJzB,MAAO,QACPxP,QAAS,CAACo/I,GAAaM,GAAaD,GAAWF,GAAaF,GAAYM,GAAcH,GAAeF,KAEvGhU,kBAAmB,CACjB/vB,SAAU,2BACVtqG,GAAI,iCACJzB,MAAO,eACPxP,QAAS,CAAC4/I,GAAgBC,GAAcC,KAE1CjsD,MAAO,CACL0nB,SAAU,yBACVtqG,GAAI,+BACJzB,MAAO,QACPxP,QAAS,CAAC0/I,GAAaN,GAAaK,GAAWF,GAAaF,GAAYM,GAAcH,GAAeF,KAEvG7T,UAAW,CACTlwB,SAAU,2BACVtqG,GAAI,KACJzB,MAAO,kBACPxP,QAAS,CAAC,CAAC,OAAQ,QAAS,CAAC,SAAU,UAAW,CAAC,YAAa,aAAc,CAAC,UAAW,WAAY,CAAC,aAAc,gBAEvH4rI,WAAY,CACVrwB,SAAU,4BACVtqG,GAAI,0BACJzB,MAAO,cACPxP,QAAS,CAAC,CAAC,wBAAyB,2BAA4B,CAAC,qBAAsB,wBAAyB,CAAC,oBAAqB,sBAAuB,CAAC,iBAAkB,mBAAoB,CAAC,SAAU,UAAW,CAAC,SAAU,UAAW,CAAC,aAAc,gBAEjQ2rI,YAAa,CACXpwB,SAAU,6BACVtqG,GAAI,wBACJzB,MAAO,YACPxP,QAAS,CAAC,CAAC,OAAQ,OAAQ,CAAC,OAAQ,OAAQ,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,SACjK,QAAW,EACX0e,OAAQ,SAAgBnhB,GACtB,MAAa,SAANA,EAAe,KAAOtK,OAAOsK,KAGxC8tI,YAAa,CACX9vB,SAAU,6BACVtqG,GAAI,iCACJzB,MAAO,eACPxP,QAAS,CAAC4/I,GAAgBC,KAG5BtU,YAAa,CACXhwB,SAAU,6BACVtqG,GAAI,2BACJzB,MAAO,SAGTg8H,cAAe,CACbjwB,SAAU,+BACVtqG,GAAI,6BACJzB,MAAO,eACPxP,QAAS,CAAC8/I,GAAeD,GAAcD,MAqB3C,SAASI,GAAiBxiJ,EAAOkhB,GAK/B,GAJIA,IACFlhB,EAAQkhB,EAAOlhB,IAGbA,GAAmB,SAAVA,EACX,OAAOA,EAqBX,SAASyiJ,GAAuBl3I,EAAI2V,GAClC,IAAIlhB,EAAQuL,EAAG/I,QAAQ+I,EAAG/I,QAAQkgJ,eAAe1iJ,MACjD,OAAOwiJ,GAAiBxiJ,EAAOkhB,GAmBjC,SAASyhI,GAAkBp3I,EAAIvL,EAAOkhB,GACpC,GAAKlhB,EAIL,IAAK,IAAIxM,EAAI,EAAGA,EAAI+X,EAAG/I,QAAQhM,OAAQhD,IACrC,GAAIgvJ,GAAiBj3I,EAAG/I,QAAQhP,GAAGwM,MAAOkhB,KAAYlhB,EAAO,CAC3DuL,EAAGm3I,cAAgBlvJ,EACnB,OA1EN+uJ,GAAcxU,YAAYvrI,QAAU+/I,GAAcjsD,gBAAgB9zF,QAqFlE,IAAIogJ,GAAiC,SAAUlB,GAY7C,SAASkB,EAAkBloJ,EAAQ8H,GACjC,IAAI28F,EA2CJ,OAzCA38F,EAAQ6yH,WAAY,EACpBl2B,EAAQuiD,EAAal4I,KAAK5Q,KAAM8B,EAAQ8H,IAAY5J,KACpDumG,EAAM+iC,cAAgB/iC,EAAM+iC,cAAcv7H,KAAK,IAAuBw4F,IAEtEA,EAAMy1B,OAENz1B,EAAM+0B,eAAiB/0B,EAAMg1B,gBAAiB,EAC9Ch1B,EAAM0jD,UAAY1kC,GAAS,IAAK,CAC9BnpB,UAAW,mBACX75E,YAAagkF,EAAMssB,SAAS,2BAG9BtsB,EAAM5zF,KAAKyc,YAAYm3E,EAAM0jD,WAE7B1jD,EAAM2jD,mBAGmCx/I,IAArCd,EAAQugJ,2BACV5jD,EAAMqrB,SAASu4B,yBAA2B5jD,EAAMqrB,SAAS0C,cAAc61B,0BAGzE5jD,EAAMb,GAAGa,EAAM+hB,EAAE,oBAAqB,SAAS,WAC7C/hB,EAAM6jD,eAEN7jD,EAAM60B,WAGR70B,EAAMb,GAAGa,EAAM+hB,EAAE,uBAAwB,SAAS,WAChD/hB,EAAM2jD,cAEN3jD,EAAM+iC,mBAGR9mB,GAAKmnC,IAAe,SAAU93C,GAC5BtL,EAAMb,GAAGa,EAAM+hB,EAAEzW,EAAOsT,UAAW,SAAU5e,EAAM+iC,kBAGjD/iC,EAAMqrB,SAASu4B,0BACjB5jD,EAAM8jD,kBAGD9jD,EAvDT,IAAeyjD,EAAmBlB,GA0DlC,IAAIrjD,EAASukD,EAAkBviJ,UA2Q/B,OAzQAg+F,EAAOS,QAAU,WACflmG,KAAKiqJ,UAAY,KAEjBnB,EAAarhJ,UAAUy+F,QAAQt1F,KAAK5Q,OAetCylG,EAAO6kD,gBAAkB,SAAyBphJ,EAAKqhJ,EAAU1sJ,GAC/D,IAAIspG,EAASnnG,UAEI,IAAbuqJ,IACFA,EAAW,SAGA,IAAT1sJ,IACFA,EAAO,SAGT,IAAIg0G,EAAS83C,GAAczgJ,GACvB2R,EAAKg3F,EAAOh3F,GAAGre,QAAQ,KAAMwD,KAAK6xH,KAClC24B,EAAsB,CAACD,EAAU1vI,GAAIhW,KAAK,KAAKtH,OACnD,MAAO,CAAC,IAAMM,EAAO,QAAWgd,EAAK,aAA0B,UAAThd,EAAmB,YAAc,IAAM,KAAOmC,KAAK6yH,SAAShhB,EAAOz4F,OAAQ,KAAOvb,EAAO,IAAK,4BAA+B2sJ,EAAsB,MAAO74I,OAAOkgG,EAAOjoG,QAAQ5K,KAAI,SAAU4O,GAClP,IAAI68I,EAAW5vI,EAAK,IAAMjN,EAAE,GAAGpR,QAAQ,OAAQ,IAC/C,MAAO,CAAC,eAAkBiuJ,EAAW,YAAgB78I,EAAE,GAAK,KAAO,oBAAuB48I,EAAsB,IAAMC,EAAW,KAAOtjD,EAAO0rB,SAASjlH,EAAE,IAAK,aAAa/I,KAAK,QAC/K8M,OAAO,aAAa9M,KAAK,KAY/B4gG,EAAOilD,iBAAmB,WACxB,IAAIH,EAAW,wBAA0BvqJ,KAAK6xH,IAC9C,MAAO,CAAC,oDAAqD,eAAkB04B,EAAW,KAAOvqJ,KAAK6yH,SAAS,QAAS,YAAa7yH,KAAKsqJ,gBAAgB,QAASC,GAAW,8CAA+CvqJ,KAAKsqJ,gBAAgB,cAAeC,GAAW,UAAW,eAAe1lJ,KAAK,KAY7S4gG,EAAOklD,iBAAmB,WACxB,IAAIJ,EAAW,uBAAyBvqJ,KAAK6xH,IAC7C,MAAO,CAAC,oDAAqD,eAAkB04B,EAAW,KAAOvqJ,KAAK6yH,SAAS,cAAe,YAAa7yH,KAAKsqJ,gBAAgB,kBAAmBC,GAAW,4CAA6CvqJ,KAAKsqJ,gBAAgB,oBAAqBC,GAAW,UAAW,eAAe1lJ,KAAK,KAYjU4gG,EAAOmlD,kBAAoB,WACzB,IAAIL,EAAW,mBAAqBvqJ,KAAK6xH,IACzC,MAAO,CAAC,wDAAyD,eAAkB04B,EAAW,KAAOvqJ,KAAK6yH,SAAS,UAAW,YAAa7yH,KAAKsqJ,gBAAgB,cAAeC,GAAW,gDAAiDvqJ,KAAKsqJ,gBAAgB,gBAAiBC,GAAW,UAAW,eAAe1lJ,KAAK,KAY7T4gG,EAAOolD,gBAAkB,WACvB,OAAOtlC,GAAS,MAAO,CACrBnpB,UAAW,4BACXZ,UAAW,CAACx7F,KAAK0qJ,mBAAoB1qJ,KAAK2qJ,mBAAoB3qJ,KAAK4qJ,qBAAqB/lJ,KAAK,OAajG4gG,EAAOqlD,cAAgB,WACrB,OAAOvlC,GAAS,MAAO,CACrBnpB,UAAW,0BACXZ,UAAW,CAAC,wDAAyDx7F,KAAKsqJ,gBAAgB,cAAe,GAAI,UAAW,cAAe,sDAAuDtqJ,KAAKsqJ,gBAAgB,YAAa,GAAI,UAAW,cAAe,uDAAwDtqJ,KAAKsqJ,gBAAgB,aAAc,GAAI,UAAW,eAAezlJ,KAAK,OAahY4gG,EAAOslD,kBAAoB,WACzB,IAAIC,EAAsBhrJ,KAAK6yH,SAAS,8CACxC,OAAOtN,GAAS,MAAO,CACrBnpB,UAAW,8BACXZ,UAAW,CAAC,2DAAkEwvD,EAAsB,KAAOhrJ,KAAK6yH,SAAS,SAAU,mCAAuCm4B,EAAsB,UAAW,YAAa,iDAAuDhrJ,KAAK6yH,SAAS,QAAU,aAAahuH,KAAK,OAI7T4gG,EAAO+f,QAAU,WACf,MAAO,CAACxlH,KAAK6qJ,kBAAmB7qJ,KAAK8qJ,gBAAiB9qJ,KAAK+qJ,sBAG7DtlD,EAAOrsF,MAAQ,WACb,OAAOpZ,KAAK6yH,SAAS,4BAGvBptB,EAAOk2B,YAAc,WACnB,OAAO37H,KAAK6yH,SAAS,yEAGvBptB,EAAOkvB,cAAgB,WACrB,OAAOm0B,EAAarhJ,UAAUktH,cAAc/jH,KAAK5Q,MAAQ,4BAU3DylG,EAAOuvC,UAAY,WACjB,IAAI1sC,EAAStoG,KAEb,OAAOwR,GAAOm4I,IAAe,SAAUjnC,EAAO7Q,EAAQ3oG,GACpD,IAAI9B,EAAQyiJ,GAAuBvhD,EAAOggB,EAAEzW,EAAOsT,UAAWtT,EAAOvpF,QAMrE,YAJc5d,IAAVtD,IACFs7G,EAAMx5G,GAAO9B,GAGRs7G,IACN,KAULjd,EAAOwlD,UAAY,SAAmBr5I,GACpC,IAAI4lH,EAASx3H,KAEbwiH,GAAKmnC,IAAe,SAAU93C,EAAQ3oG,GACpC6gJ,GAAkBvyB,EAAOlP,EAAEzW,EAAOsT,UAAWvzG,EAAO1I,GAAM2oG,EAAOvpF,YAQrEm9E,EAAOykD,YAAc,WACnB,IAAIvyB,EAAS33H,KAEbwiH,GAAKmnC,IAAe,SAAU93C,GAC5B,IAAI5vG,EAAQ4vG,EAAOpoG,eAAe,WAAaooG,EAAO,WAAa,EACnE8lB,EAAOrP,EAAEzW,EAAOsT,UAAU2kC,cAAgB7nJ,MAQ9CwjG,EAAO4kD,gBAAkB,WACvB,IAAIz4I,EAEJ,IACEA,EAAS9G,KAAKC,MAAM,IAASmgJ,aAAaC,QAAQpC,KAClD,MAAOjmJ,GACPy/G,EAAMr1F,KAAKpqB,GAGT8O,GACF5R,KAAKirJ,UAAUr5I,IAQnB6zF,EAAO2kD,aAAe,WACpB,GAAKpqJ,KAAK4xH,SAASu4B,yBAAnB,CAIA,IAAIv4I,EAAS5R,KAAKg1I,YAElB,IACMhuI,OAAO0K,KAAKE,GAAQhU,OACtB,IAASstJ,aAAaE,QAAQrC,GAAqBj+I,KAAKqB,UAAUyF,IAElE,IAASs5I,aAAaG,WAAWtC,IAEnC,MAAOjmJ,GACPy/G,EAAMr1F,KAAKpqB,MAQf2iG,EAAO6jC,cAAgB,WACrB,IAAIgiB,EAAYtrJ,KAAKyxH,QAAQ+B,SAAS,oBAElC83B,GACFA,EAAUhiB,iBAUd7jC,EAAO+2B,iBAAmB,WACxBx8H,KAAK67H,oBAAsB,KAC3B,IAAIwO,EAAKrqI,KAAKyxH,QAAQ9vH,WAClB4pJ,EAAclhB,GAAMA,EAAGmhB,eACvBC,EAAQphB,GAAMA,EAAGqhB,eAEjBH,EACFA,EAAYzkC,QACH2kC,GACTA,EAAM3kC,SAIHkjC,EAtU4B,CAuUnChvB,IAEF1J,GAAY2G,kBAAkB,oBAAqB+xB,IAmBnD,IAAI2B,GAA6B,SAAU1wB,GAgBzC,SAAS0wB,EAAc7pJ,EAAQ8H,GAC7B,IAAI28F,EAEAqlD,EAA4BhiJ,EAAQiiJ,gBAAkB,IAASA,eAEpC,OAA3BjiJ,EAAQiiJ,iBACVD,GAA4B,GAI9B,IAAIh6B,EAAWf,GAAe,CAC5BtL,UAAWqmC,EACXp5B,qBAAqB,GACpB5oH,GAoCH,OAnCA28F,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8vH,IAAa5xH,KACnDumG,EAAMslD,eAAiBjiJ,EAAQiiJ,gBAAkB,IAASA,eAC1DtlD,EAAMulD,cAAgB,KACtBvlD,EAAMwlD,gBAAkB,KACxBxlD,EAAMylD,kBAAoBx+B,IAAS,WACjCjnB,EAAM0lD,kBACL,KAAK,EAAO,IAAuB1lD,IAElCqlD,GACFrlD,EAAMwlD,gBAAkB,IAAIxlD,EAAMslD,eAAetlD,EAAMylD,mBAEvDzlD,EAAMwlD,gBAAgBG,QAAQpqJ,EAAO6Q,QAErC4zF,EAAMulD,cAAgB,WACpB,GAAKvlD,EAAMwpB,KAAQxpB,EAAMwpB,IAAIo8B,cAA7B,CAIA,IAAIH,EAAoBzlD,EAAMylD,kBAE1BI,EAAkB7lD,EAAM6lD,gBAAkB,WAC5CxmD,GAAI5lG,KAAM,SAAUgsJ,GACpBpmD,GAAI5lG,KAAM,SAAUosJ,GACpBA,EAAkB,MAKpB1mD,GAAGa,EAAMwpB,IAAIo8B,cAAe,SAAUC,GACtC1mD,GAAGa,EAAMwpB,IAAIo8B,cAAe,SAAUH,KAGxCzlD,EAAMsmB,IAAI,OAAQtmB,EAAMulD,gBAGnBvlD,EAhET,IAAeolD,EAAe1wB,GAmE9B,IAAIx1B,EAASkmD,EAAclkJ,UA+D3B,OA7DAg+F,EAAO8f,SAAW,WAChB,OAAO0V,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,SAAU,CACxDo8F,UAAW,qBACXw/B,UAAW,EACXn0B,MAAOznG,KAAK6yH,SAAS,eACpB,CACD,cAAe,UAUnBptB,EAAOwmD,cAAgB,WAShBjsJ,KAAKyxH,SAAYzxH,KAAKyxH,QAAQ3rB,SAInC9lG,KAAKyxH,QAAQ3rB,QAAQ,iBAGvBL,EAAOS,QAAU,WACXlmG,KAAKgsJ,mBACPhsJ,KAAKgsJ,kBAAkBt+B,SAGrB1tH,KAAK+rJ,kBACH/rJ,KAAKyxH,QAAQ9+G,MACf3S,KAAK+rJ,gBAAgBM,UAAUrsJ,KAAKyxH,QAAQ9+G,MAG9C3S,KAAK+rJ,gBAAgBO,cAGnBtsJ,KAAK8rJ,eACP9rJ,KAAK4lG,IAAI,OAAQ5lG,KAAK8rJ,eAGpB9rJ,KAAK+vH,KAAO/vH,KAAK+vH,IAAIo8B,eAAiBnsJ,KAAKosJ,iBAC7CpsJ,KAAKosJ,gBAAgBx7I,KAAK5Q,KAAK+vH,IAAIo8B,eAGrCnsJ,KAAK6rJ,eAAiB,KACtB7rJ,KAAKusJ,eAAiB,KACtBvsJ,KAAKgsJ,kBAAoB,KACzBhsJ,KAAK8rJ,cAAgB,KAErB7wB,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAG7B2rJ,EAnIwB,CAoI/Br6B,IAEFA,GAAY2G,kBAAkB,gBAAiB0zB,IAE/C,IAAIa,GAAW,CACbC,kBAAmB,GACnBC,cAAe,IAUbC,GAA2B,SAAU1xB,GAsBvC,SAAS0xB,EAAY7qJ,EAAQ8H,GAC3B,IAAI28F,EAGAqrB,EAAWf,GAAe27B,GAAU5iJ,EAAS,CAC/C27G,UAAU,IA+CZ,OA7CAhf,EAAQ00B,EAAWrqH,KAAK5Q,KAAM8B,EAAQ8vH,IAAa5xH,KAEnDumG,EAAMqmD,wBAA0B,SAAU5hJ,GACxC,OAAOu7F,EAAMsmD,uBAAuB7hJ,IAGtCu7F,EAAMumD,kBAAoB,WACxB,OAAOvmD,EAAMwmD,cAGfxmD,EAAMymD,YAAc,SAAUhiJ,GAC5B,OAAOu7F,EAAMqwC,WAAW5rI,IAG1Bu7F,EAAM0mD,uBAAyB,SAAUjiJ,GACvC,OAAOu7F,EAAM2mD,sBAAsBliJ,IAGrCu7F,EAAM4mD,cAAgB,SAAUniJ,GAC9B,OAAOu7F,EAAMwwC,aAAa/rI,IAG5Bu7F,EAAM6mD,gBAAkB,SAAUpiJ,GAChC,OAAOu7F,EAAM0yC,eAAejuI,IAG9Bu7F,EAAM8mD,SAEN9mD,EAAMb,GAAGa,EAAMkrB,QAAS,kBAAkB,SAAUzmH,GAClD,OAAOu7F,EAAM+mD,qBAAqBtiJ,MAKpCu7F,EAAMb,GAAGa,EAAMkrB,QAAS,WAAW,WACjC,OAAOlrB,EAAMgnD,oBAMXtpC,IAAc,WAAY,KAAY,oBAAqB,KAC7D1d,EAAMb,GAAG,IAAU,mBAAoBa,EAAMqmD,yBAGxCrmD,EAzET,IAAeomD,EAAa1xB,GAgF5B,IAAIx1B,EAASknD,EAAYllJ,UAyVzB,OAvVAg+F,EAAOonD,uBAAyB,WAC1B7sJ,KAAKyxH,QAAQ/8G,aAAegB,MAI5B,IAASksH,OACX5hI,KAAKikI,eAELjkI,KAAKkkI,kBASTz+B,EAAOsnD,WAAa,WAClB,IAAInf,EAAW5tI,KAAKyxH,QAAQmc,WAE5B,GAAKA,GAAaA,EAAShwI,OAA3B,CAIA,IAAIy/I,EAAUxgJ,OAAO,IAASmtH,YAAYr0G,MAAMqkI,QAAQ,IACpDwT,GAAgC,IAApBxtJ,KAAKytJ,UAAmB,GAAKpQ,EAAUr9I,KAAKytJ,WAAa,IACzEztJ,KAAKytJ,UAAYpQ,EACjBr9I,KAAK0tJ,aAAe1tJ,KAAK2tJ,cAAgBH,EACzC,IAAI1Q,EAAkB98I,KAAK88I,kBACvBzY,EAAcrkI,KAAKyxH,QAAQ4S,cAM3BupB,EAAW5tJ,KAAKyxH,QAAQyK,UAAYl8H,KAAK6tJ,mBAAqB93I,KAAKkE,IAAI6iI,EAAkBzY,GAAerkI,KAAK4xH,SAAS86B,cAIrH1sJ,KAAK8tJ,iBAAmBhR,IAAoBpnI,MAC/Ck4I,GAAW,GAGTA,IAAa5tJ,KAAK+tJ,kBACpB/tJ,KAAK+tJ,gBAAkBH,EACvB5tJ,KAAK8lG,QAAQ,qBASjBL,EAAO6nD,qBAAuB,WAC5BttJ,KAAKutJ,kBAOP9nD,EAAO8nD,eAAiB,WAClBvtJ,KAAKyxH,QAAQ/8G,aAAegB,KAAY1V,KAAK47I,cAAgB57I,KAAK4xH,SAAS66B,mBACzEzsJ,KAAKyxH,QAAQG,SAASo8B,QACxBhuJ,KAAKyxH,QAAQzL,SAAS,cAGxBhmH,KAAKkkI,kBAELlkI,KAAKyxH,QAAQtL,YAAY,cACzBnmH,KAAKikI,iBAQTx+B,EAAOy+B,cAAgB,WACjBlkI,KAAKiuJ,eAOJjuJ,KAAK8tJ,kBACR9tJ,KAAK8tJ,gBAAkB9tJ,KAAKyxH,QAAQy8B,cAGtCluJ,KAAKmuJ,kBAAoBnuJ,KAAKi3H,YAAYj3H,KAAK8sJ,kBAAmB5/B,IAClEltH,KAAK+sJ,aACL/sJ,KAAK0lG,GAAG1lG,KAAKyxH,QAAS,CAAC,OAAQ,SAAUzxH,KAAK8sJ,mBAEzC9sJ,KAAK8tJ,gBAIR9tJ,KAAK0lG,GAAG1lG,KAAKyxH,QAAS,SAAUzxH,KAAKmtJ,gBAHrCntJ,KAAK6sH,IAAI7sH,KAAKyxH,QAAS,OAAQzxH,KAAKgtJ,aACpChtJ,KAAK6sH,IAAI7sH,KAAKyxH,QAAS,aAAczxH,KAAKitJ,2BAW9CxnD,EAAOynD,sBAAwB,WAC7BltJ,KAAK8tJ,iBAAkB,EACvB9tJ,KAAK0lG,GAAG1lG,KAAKyxH,QAAS,SAAUzxH,KAAKmtJ,gBAQvC1nD,EAAOsxC,aAAe,WACpB,IAAIqX,EAAWr4I,KAAKkE,IAAIja,KAAK88I,kBAAoB98I,KAAKyxH,QAAQ4S,eAC9DrkI,KAAK6tJ,kBAAoB7tJ,KAAKquJ,qBAAuBD,EAAW,EAChEpuJ,KAAKquJ,qBAAsB,EAC3BruJ,KAAK+sJ,cAQPtnD,EAAOmxC,WAAa,WAClB52I,KAAK6sH,IAAI7sH,KAAKyxH,QAAS,aAAczxH,KAAKotJ,kBAQ5C3nD,EAAO4nD,OAAS,WACdrtJ,KAAKytJ,WAAa,EAClBztJ,KAAK0tJ,aAAe,EACpB1tJ,KAAKsuJ,cAAgB,EACrBtuJ,KAAK+tJ,iBAAkB,EACvB/tJ,KAAK8tJ,iBAAkB,EACvB9tJ,KAAK6tJ,mBAAoB,EACzB7tJ,KAAKquJ,qBAAsB,EAC3BruJ,KAAKg3H,cAAch3H,KAAKmuJ,mBACxBnuJ,KAAKmuJ,kBAAoB,KACzBnuJ,KAAK4lG,IAAI5lG,KAAKyxH,QAAS,CAAC,OAAQ,SAAUzxH,KAAK8sJ,mBAC/C9sJ,KAAK4lG,IAAI5lG,KAAKyxH,QAAS,SAAUzxH,KAAKmtJ,eACtCntJ,KAAK4lG,IAAI5lG,KAAKyxH,QAAS,OAAQzxH,KAAKgtJ,aACpChtJ,KAAK4lG,IAAI5lG,KAAKyxH,QAAS,aAAczxH,KAAKitJ,wBAC1CjtJ,KAAK4lG,IAAI5lG,KAAKyxH,QAAS,aAAczxH,KAAKotJ,kBAS5C3nD,EAAOw3C,mBAAqB,WAC1Bj9I,KAAKquJ,qBAAsB,GAO7B5oD,EAAOw+B,aAAe,WACfjkI,KAAKiuJ,eAIVjuJ,KAAKqtJ,SACLrtJ,KAAK8lG,QAAQ,oBAWfL,EAAOo1C,YAAc,WACnB,IAAIjN,EAAW5tI,KAAKyxH,QAAQmc,WACxB2gB,EAAe,GACf3zJ,EAAIgzI,EAAWA,EAAShwI,OAAS,EAErC,MAAOhD,IACL2zJ,EAAatzJ,KAAK2yI,EAAS77H,IAAInX,IAKjC,OAAO2zJ,EAAa3wJ,OAAS2wJ,EAAa11I,OAAO01I,EAAa3wJ,OAAS,GAAK8X,KAW9E+vF,EAAOy3C,cAAgB,WACrB,IAAItP,EAAW5tI,KAAKyxH,QAAQmc,WACxB4gB,EAAiB,GACjB5zJ,EAAIgzI,EAAWA,EAAShwI,OAAS,EAErC,MAAOhD,IACL4zJ,EAAevzJ,KAAK2yI,EAAS97H,MAAMlX,IAKrC,OAAO4zJ,EAAe5wJ,OAAS4wJ,EAAe31I,OAAO,GAAK,GAa5D4sF,EAAOm2C,WAAa,WAClB,IAAIkB,EAAkB98I,KAAK88I,kBAE3B,OAAIA,IAAoBpnI,IACf,EAGFonI,EAAkB98I,KAAKk9I,iBAWhCz3C,EAAO5kG,OAAS,WACd,OAAOb,KAAKiuJ,cAWdxoD,EAAOuzC,WAAa,WAClB,OAAQh5I,KAAKyuJ,kBAUfhpD,EAAOq3C,gBAAkB,WACvB,OAAO98I,KAAK2tJ,cAAgB3tJ,KAAK66I,eAWnCp1C,EAAOkoD,YAAc,WACnB,IAAI9S,EAAc76I,KAAK66I,cAOvB,OAL2B,IAAvB76I,KAAKsuJ,cAAuBzT,IAAgB76I,KAAKsuJ,eACnDtuJ,KAAK0tJ,aAAe,GAGtB1tJ,KAAKsuJ,aAAezT,EACb76I,KAAK0tJ,cAWdjoD,EAAOgpD,eAAiB,WACtB,OAAOzuJ,KAAK+tJ,iBAOdtoD,EAAOwoD,WAAa,WAClB,MAAyC,kBAA3BjuJ,KAAKmuJ,mBAOrB1oD,EAAOwzC,eAAiB,WACtBj5I,KAAK6tJ,mBAAoB,EAErB7tJ,KAAKg5I,eAITh5I,KAAKquJ,qBAAsB,EAC3BruJ,KAAKyxH,QAAQ4S,YAAYrkI,KAAK88I,qBAOhCr3C,EAAOS,QAAU,WACflmG,KAAK4lG,IAAI,IAAU,mBAAoB5lG,KAAK4sJ,yBAC5C5sJ,KAAKikI,eAELhJ,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAG7B2sJ,EA1asB,CA2a7Br7B,IAEFA,GAAY2G,kBAAkB,cAAe00B,IAgB7C,IAwoDI/hB,GAxoDA8jB,GAAgB,SAAuBt0B,GACzC,IAAIznH,EAAKynH,EAAKznH,KAEd,GAAIA,EAAGwrG,aAAa,OAElB,OADAic,EAAKqN,iBAAiB90H,EAAGwhG,MAClB,EAgBT,IAAIwO,EAAUyX,EAAK7R,GAAG,UAClBomC,EAAU,GACVx6C,EAAM,GAEV,IAAKwO,EAAQ/kH,OACX,OAAO,EAIT,IAAK,IAAIhD,EAAI,EAAGA,EAAI+nH,EAAQ/kH,OAAQhD,IAAK,CACvC,IAAI+Q,EAAMg3G,EAAQ/nH,GAAGu5G,IAEjBxoG,IAAiC,IAA1BgjJ,EAAQ1lJ,QAAQ0C,IACzBgjJ,EAAQ1zJ,KAAK0Q,GAKjB,QAAKgjJ,EAAQ/wJ,SAMU,IAAnB+wJ,EAAQ/wJ,SACVu2G,EAAMw6C,EAAQ,IAGhBv0B,EAAKqN,iBAAiBtzB,IACf,IAQLy6C,GAA8B5nJ,OAAOC,eAAe,GAAI,YAAa,CACvEmkB,IAAK,WACH,OAAOprB,KAAK+7G,WAAU,GAAMvgB,WAE9BnwE,IAAK,SAAalkB,GAEhB,IAAI0nJ,EAAQ,IAASv0D,cAAct6F,KAAKwN,SAAS7P,eAEjDkxJ,EAAMrzD,UAAYr0F,EAElB,IAAI2nJ,EAAU,IAAShxC,yBAGvB,MAAO+wC,EAAMzsI,WAAWxkB,OACtBkxJ,EAAQ1/H,YAAYy/H,EAAMzsI,WAAW,IASvC,OALApiB,KAAK88F,UAAY,GAGjB,IAAS9rD,QAAQvpC,UAAU2nB,YAAYxe,KAAK5Q,KAAM8uJ,GAE3C9uJ,KAAKw7F,aAQZuzD,GAAgB,SAAuBC,EAAUthF,GAGnD,IAFA,IAAIuhF,EAAa,GAERr0J,EAAI,EAAGA,EAAIo0J,EAASpxJ,OAAQhD,IAGnC,GAFAq0J,EAAajoJ,OAAOkoJ,yBAAyBF,EAASp0J,GAAI8yE,GAEtDuhF,GAAcA,EAAW5jI,KAAO4jI,EAAW7jI,IAC7C,MAMJ,OAFA6jI,EAAW5nJ,YAAa,EACxB4nJ,EAAW1nJ,cAAe,EACnB0nJ,GAGLE,GAAyB,SAAgC/0B,GAC3D,OAAO20B,GAAc,CAAC30B,EAAKznH,KAAM,IAASy8I,iBAAiB3nJ,UAAW,IAASupC,QAAQvpC,UAAWmnJ,IAA8B,cAsB9HS,GAAmB,SAA0Bj1B,GAC/C,IAAIznH,EAAKynH,EAAKznH,KAEd,IAAIA,EAAG28I,kBAAP,CAIA,IAAI5wC,EAAM,GACN6wC,EAAkBJ,GAAuB/0B,GAEzCo1B,EAAgB,SAAuBC,GACzC,OAAO,WACL,IAAK,IAAIr+I,EAAOC,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAM0Q,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/EwhB,EAAKxhB,GAAQF,UAAUE,GAGzB,IAAIm+I,EAASD,EAASz0I,MAAMrI,EAAIogB,GAEhC,OADA27H,GAAct0B,GACPs1B,IAIX,CAAC,SAAU,cAAe,sBAAsBryJ,SAAQ,SAAUwU,GAC3Dc,EAAGd,KAKR6sG,EAAI7sG,GAAKc,EAAGd,GAGZc,EAAGd,GAAK29I,EAAc9wC,EAAI7sG,QAE5B7K,OAAOC,eAAe0L,EAAI,YAAak+G,GAAe0+B,EAAiB,CACrElkI,IAAKmkI,EAAcD,EAAgBlkI,QAGrC1Y,EAAG28I,kBAAoB,WACrB38I,EAAG28I,kBAAoB,KACvBtoJ,OAAO0K,KAAKgtG,GAAKrhH,SAAQ,SAAUwU,GACjCc,EAAGd,GAAK6sG,EAAI7sG,MAEd7K,OAAOC,eAAe0L,EAAI,YAAa48I,IAIzCn1B,EAAKvN,IAAI,YAAal6G,EAAG28I,qBAQvBK,GAAwB3oJ,OAAOC,eAAe,GAAI,MAAO,CAC3DmkB,IAAK,WACH,OAAIprB,KAAKm+G,aAAa,OACbikB,GAAe,IAASpxF,QAAQvpC,UAAU81G,aAAa3sG,KAAK5Q,KAAM,QAGpE,IAETqrB,IAAK,SAAalkB,GAEhB,OADA,IAAS6pC,QAAQvpC,UAAU42G,aAAaztG,KAAK5Q,KAAM,MAAOmH,GACnDA,KAIPyoJ,GAAmB,SAA0Bx1B,GAC/C,OAAO20B,GAAc,CAAC30B,EAAKznH,KAAM,IAASy8I,iBAAiB3nJ,UAAWkoJ,IAAwB,QAmB5FE,GAAiB,SAAwBz1B,GAC3C,GAAKA,EAAKoR,kBAAV,CAIA,IAAI74H,EAAKynH,EAAKznH,KAEd,IAAIA,EAAGm9I,gBAAP,CAIA,IAAIC,EAAgBH,GAAiBx1B,GACjC41B,EAAkBr9I,EAAG0rG,aACrB4xC,EAAUt9I,EAAG2yH,KACjBt+H,OAAOC,eAAe0L,EAAI,MAAOk+G,GAAek/B,EAAe,CAC7D1kI,IAAK,SAAalkB,GAChB,IAAIuoJ,EAASK,EAAc1kI,IAAIza,KAAK+B,EAAIxL,GAGxC,OADAizH,EAAKqN,iBAAiB90H,EAAGwhG,KAClBu7C,MAIX/8I,EAAG0rG,aAAe,SAAUh4G,EAAGc,GAC7B,IAAIuoJ,EAASM,EAAgBp/I,KAAK+B,EAAItM,EAAGc,GAMzC,MAJI,OAAOtI,KAAKwH,IACd+zH,EAAKqN,iBAAiB90H,EAAGwhG,KAGpBu7C,GAGT/8I,EAAG2yH,KAAO,WACR,IAAIoqB,EAASO,EAAQr/I,KAAK+B,GAU1B,OALK+7I,GAAct0B,KACjBA,EAAKqN,iBAAiB,IACtB4nB,GAAiBj1B,IAGZs1B,GAGL/8I,EAAGu9I,WACL91B,EAAKqN,iBAAiB90H,EAAGu9I,YACfxB,GAAct0B,IACxBi1B,GAAiBj1B,GAGnBznH,EAAGm9I,gBAAkB,WACnBn9I,EAAGm9I,gBAAkB,KACrBn9I,EAAG2yH,KAAO2qB,EACVt9I,EAAG0rG,aAAe2xC,EAClBhpJ,OAAOC,eAAe0L,EAAI,MAAOo9I,GAE7Bp9I,EAAG28I,mBACL38I,EAAG28I,wBAcLa,GAAqB,SAA4B3mJ,EAAKN,EAAKqnB,EAAU6/H,QACxD,IAAXA,IACFA,GAAS,GAGX,IAAI/kI,EAAM,SAAajkB,GACrB,OAAOJ,OAAOC,eAAeuC,EAAKN,EAAK,CACrC9B,MAAOA,EACPC,YAAY,EACZC,UAAU,KAIVsC,EAAU,CACZrC,cAAc,EACdF,YAAY,EACZ+jB,IAAK,WACH,IAAIhkB,EAAQmpB,IAEZ,OADAlF,EAAIjkB,GACGA,IAQX,OAJIgpJ,IACFxmJ,EAAQyhB,IAAMA,GAGTrkB,OAAOC,eAAeuC,EAAKN,EAAKU,IAUrCymJ,GAAqB,SAAU1kB,GAYjC,SAAS0kB,EAAMzmJ,EAAS4nH,GACtB,IAAIjrB,EAEJA,EAAQolC,EAAM/6H,KAAK5Q,KAAM4J,EAAS4nH,IAAUxxH,KAC5C,IAAIyR,EAAS7H,EAAQ6H,OACjB6+I,GAAoB,EAmBxB,GAlBA/pD,EAAMklC,2BAA6BllC,EAAMklC,4BAAoD,UAAtBllC,EAAMwpB,IAAI1tG,QAK7E5Q,IAAW80F,EAAMwpB,IAAImgC,aAAez+I,EAAO0iG,KAAOvqG,EAAQib,KAAyC,IAAlCjb,EAAQib,IAAI0rI,mBAC/EhqD,EAAM+lC,UAAU76H,GAEhB80F,EAAMiqD,gBAAgBjqD,EAAMwpB,KAI1BnmH,EAAQ6mJ,iBACVlqD,EAAMmqD,0BAGRnqD,EAAMoqD,cAAe,EAEjBpqD,EAAMwpB,IAAIjT,gBAAiB,CAC7B,IAAI8zC,EAAQrqD,EAAMwpB,IAAI3tG,WAClByuI,EAAcD,EAAMhzJ,OACpBkzJ,EAAc,GAElB,MAAOD,IAAe,CACpB,IAAIlrI,EAAOirI,EAAMC,GACbrjJ,EAAWmY,EAAKnY,SAAS7P,cAEZ,UAAb6P,IACG+4F,EAAM6gC,0BAQT7gC,EAAMsjC,qBAAqBzJ,iBAAiBz6G,GAE5C4gF,EAAM4iC,mBAAmB5K,SAAS54G,EAAKq3E,OAEvCuJ,EAAMk0B,aAAa8D,SAAS54G,EAAKq3E,OAE5BszD,GAAsB/pD,EAAMwpB,IAAI5R,aAAa,iBAAkBokB,GAAc58G,EAAKwuF,OACrFm8C,GAAoB,IAVtBQ,EAAY71J,KAAK0qB,IAgBvB,IAAK,IAAI/qB,EAAI,EAAGA,EAAIk2J,EAAYlzJ,OAAQhD,IACtC2rG,EAAMwpB,IAAItuB,YAAYqvD,EAAYl2J,IA2BtC,OAvBA2rG,EAAMwqD,qBAEFxqD,EAAM6gC,0BAA4BkpB,GACpC/tC,EAAMr1F,KAAK,0IAIbq5E,EAAMyqD,2CAMD5sC,IAAiBK,IAAab,MAAyD,IAAnCh6G,EAAQ49H,wBAC/DjhC,EAAM0qD,aAAY,GAKpB1qD,EAAM2qD,yBAEN3qD,EAAMsuB,eAECtuB,EA9FT,IAAe8pD,EAAO1kB,GAqGtB,IAAIlmC,EAAS4qD,EAAM5oJ,UA63BnB,OA33BAg+F,EAAOS,QAAU,WACXlmG,KAAK+vH,KAAO/vH,KAAK+vH,IAAI+/B,iBACvB9vJ,KAAK+vH,IAAI+/B,kBAGXO,EAAMc,oBAAoBnxJ,KAAK+vH,KAC/B/vH,KAAK4xH,SAAW,KAEhB+Z,EAAMlkI,UAAUy+F,QAAQt1F,KAAK5Q,OAQ/BylG,EAAOirD,wBAA0B,WAC/Bb,GAAe7vJ,OAYjBylG,EAAOurD,wCAA0C,WAC/C,IACII,EADA32B,EAAaz6H,KAAKy6H,aAGlB42B,EAA4B,WAC9BD,EAAmC,GAEnC,IAAK,IAAIx2J,EAAI,EAAGA,EAAI6/H,EAAW78H,OAAQhD,IAAK,CAC1C,IAAIoiG,EAAQy9B,EAAW7/H,GAEJ,aAAfoiG,EAAM+iC,MACRqxB,EAAiCn2J,KAAK,CACpC+hG,MAAOA,EACPs0D,WAAYt0D,EAAMI,SAQ1Bi0D,IACA52B,EAAWpR,iBAAiB,SAAUgoC,GACtCrxJ,KAAK0lG,GAAG,WAAW,WACjB,OAAO+0B,EAAWrR,oBAAoB,SAAUioC,MAGlD,IAAIE,EAAmB,SAASA,IAC9B,IAAK,IAAI32J,EAAI,EAAGA,EAAIw2J,EAAiCxzJ,OAAQhD,IAAK,CAChE,IAAI42J,EAAcJ,EAAiCx2J,GAEpB,aAA3B42J,EAAYx0D,MAAMI,MAAuBo0D,EAAYx0D,MAAMI,OAASo0D,EAAYF,aAClFE,EAAYx0D,MAAMI,KAAOo0D,EAAYF,YAKzC72B,EAAWrR,oBAAoB,SAAUmoC,IAK3CvxJ,KAAK0lG,GAAG,yBAAyB,WAC/B+0B,EAAWrR,oBAAoB,SAAUioC,GAEzC52B,EAAWrR,oBAAoB,SAAUmoC,GACzC92B,EAAWpR,iBAAiB,SAAUkoC,MAGxCvxJ,KAAK0lG,GAAG,uBAAuB,WAE7B+0B,EAAWrR,oBAAoB,SAAUioC,GACzC52B,EAAWpR,iBAAiB,SAAUgoC,GAEtC52B,EAAWrR,oBAAoB,SAAUmoC,OAc7C9rD,EAAOgsD,gBAAkB,SAAyB5zJ,EAAM6zJ,GACtD,IAAIvqD,EAASnnG,KAGb,GAAI0xJ,IAAa1xJ,KAAK,iBAAmBnC,EAAO,UAAhD,CAIA,IAAI8zJ,EAAgB9zJ,EAAKF,cAErBqC,KAAK2xJ,EAAgB,qBACvB3qJ,OAAO0K,KAAK1R,KAAK2xJ,EAAgB,qBAAqBt0J,SAAQ,SAAUu0J,GACtE,IAAIC,EAAW1qD,EAAOx0F,KAAKg/I,EAAgB,UAE3CE,EAASzoC,oBAAoBwoC,EAAWzqD,EAAOwqD,EAAgB,oBAAoBC,OAIvF5xJ,KAAK,iBAAmBnC,EAAO,WAAa6zJ,EAC5C1xJ,KAAK2xJ,EAAgB,oBAAsB,KAC3C3xJ,KAAK8xJ,0BAA0BH,KAUjClsD,EAAOilC,0BAA4B,SAAmCgnB,GACpE1xJ,KAAKyxJ,gBAAgB,QAASC,IAUhCjsD,EAAOklC,0BAA4B,SAAmC+mB,GACpE1xJ,KAAKyxJ,gBAAgB,QAASC,IAWhCjsD,EAAOqsD,0BAA4B,SAAmCt0J,GACpE,IAAI8qG,EAAStoG,KAETS,EAAQ8kI,GAAO/nI,GACfq0J,EAAW7xJ,KAAK2S,KAAKlS,EAAMklI,YAC3BosB,EAAa/xJ,KAAKS,EAAMklI,cAE5B,GAAK3lI,KAAK,iBAAmBS,EAAMilI,YAAc,WAAcmsB,GAAaA,EAASxoC,iBAArF,CAIA,IAAI7jB,EAAY,CACdo5B,OAAQ,SAAgB5zH,GACtB,IAAIk8F,EAAQ,CACVrpG,KAAM,SACNwrB,OAAQ0oI,EACRC,cAAeD,EACf5mC,WAAY4mC,GAEdA,EAAWjsD,QAAQoB,GAQN,SAAT1pG,GACF8qG,EAAOu9B,GAAOC,WAAWH,cAAc7/B,QAAQoB,IAGnD23B,SAAU,SAAkB7zH,GAC1B+mJ,EAAWxzB,SAASvzH,EAAEgyF,QAExB8hC,YAAa,SAAqB9zH,GAChC+mJ,EAAWtzB,YAAYzzH,EAAEgyF,SAIzBi1D,EAAkB,WAGpB,IAFA,IAAIC,EAAe,GAEVt3J,EAAI,EAAGA,EAAIm3J,EAAWn0J,OAAQhD,IAAK,CAG1C,IAFA,IAAIu3J,GAAQ,EAEHthB,EAAI,EAAGA,EAAIghB,EAASj0J,OAAQizI,IACnC,GAAIghB,EAAShhB,KAAOkhB,EAAWn3J,GAAI,CACjCu3J,GAAQ,EACR,MAICA,GACHD,EAAaj3J,KAAK82J,EAAWn3J,IAIjC,MAAOs3J,EAAat0J,OAClBm0J,EAAWtzB,YAAYyzB,EAAaljC,UAIxChvH,KAAKS,EAAMklI,WAAa,cAAgBngC,EACxCx+F,OAAO0K,KAAK8zF,GAAWnoG,SAAQ,SAAUu0J,GACvC,IAAIjsD,EAAWH,EAAUosD,GACzBC,EAASxoC,iBAAiBuoC,EAAWjsD,GAErC2C,EAAO5C,GAAG,WAAW,SAAU16F,GAC7B,OAAO6mJ,EAASzoC,oBAAoBwoC,EAAWjsD,SAInD3lG,KAAK0lG,GAAG,YAAausD,GACrBjyJ,KAAK0lG,GAAG,WAAW,SAAU16F,GAC3B,OAAOs9F,EAAO1C,IAAI,YAAaqsD,QAWnCxsD,EAAOsrD,mBAAqB,WAC1B,IAAIv5B,EAASx3H,KAEbulI,GAAO51B,MAAMtyG,SAAQ,SAAUG,GAC7Bg6H,EAAOs6B,0BAA0Bt0J,OAWrCioG,EAAO8f,SAAW,WAChB,IAAI5yG,EAAK3S,KAAK4xH,SAAS/sG,IAKvB,IAAKlS,IAAQ3S,KAAK4xH,SAASwgC,iBAAkBpyJ,KAAKqyJ,wBAA0B,CAE1E,GAAI1/I,EAAI,CACN,IAAI2/I,EAAQ3/I,EAAGopG,WAAU,GAErBppG,EAAGme,YACLne,EAAGme,WAAW4rF,aAAa41C,EAAO3/I,GAGpC09I,EAAMc,oBAAoBx+I,GAC1BA,EAAK2/I,MACA,CACL3/I,EAAK,IAAS2nF,cAAc,SAE5B,IAAIi4D,EAAgBvyJ,KAAK4xH,SAAS/sG,KAAO4hG,GAAczmH,KAAK4xH,SAAS/sG,KACjEnmB,EAAamyH,GAAe,GAAI0hC,GAE/BnuC,KAA0D,IAAzCpkH,KAAK4xH,SAAS4V,+BAC3B9oI,EAAW29H,SAGpB9V,GAAc5zG,EAAIyW,GAAO1qB,EAAY,CACnCmc,GAAI7a,KAAK4xH,SAAS4gC,OAClB,MAAS,cAIb7/I,EAAG8/I,SAAWzyJ,KAAK4xH,SAAS6gC,SAGO,qBAA1BzyJ,KAAK4xH,SAAS8gC,SACvBr0C,GAAa1rG,EAAI,UAAW3S,KAAK4xH,SAAS8gC,cAGEhoJ,IAA1C1K,KAAK4xH,SAASuY,0BAChBx3H,EAAGw3H,wBAA0BnqI,KAAK4xH,SAASuY,yBAQ7C,IAFA,IAAIwoB,EAAgB,CAAC,OAAQ,QAAS,cAAe,YAE5C/3J,EAAI,EAAGA,EAAI+3J,EAAc/0J,OAAQhD,IAAK,CAC7C,IAAI41B,EAAOmiI,EAAc/3J,GACrBwM,EAAQpH,KAAK4xH,SAASphG,GAEL,qBAAVppB,IACLA,EACFi3G,GAAa1rG,EAAI6d,EAAMA,GAEvB8tF,GAAgB3rG,EAAI6d,GAGtB7d,EAAG6d,GAAQppB,GAIf,OAAOuL,GAiBT8yF,EAAO+qD,gBAAkB,SAAyB79I,GAChD,GAAwB,IAApBA,EAAGigJ,cAA0C,IAApBjgJ,EAAGigJ,aAAhC,CAMA,GAAsB,IAAlBjgJ,EAAGrI,WAAkB,CAWvB,IAAIuoJ,GAAiB,EAEjBC,EAAoB,WACtBD,GAAiB,GAGnB7yJ,KAAK0lG,GAAG,YAAaotD,GAErB,IAAIC,EAAmB,WAGhBF,GACH7yJ,KAAK8lG,QAAQ,cAcjB,OAVA9lG,KAAK0lG,GAAG,iBAAkBqtD,QAC1B/yJ,KAAKwxH,OAAM,WACTxxH,KAAK4lG,IAAI,YAAaktD,GACtB9yJ,KAAK4lG,IAAI,iBAAkBmtD,GAEtBF,GAEH7yJ,KAAK8lG,QAAQ,gBAUnB,IAAIktD,EAAkB,CAAC,aAEvBA,EAAgB/3J,KAAK,kBAEjB0X,EAAGrI,YAAc,GACnB0oJ,EAAgB/3J,KAAK,cAInB0X,EAAGrI,YAAc,GACnB0oJ,EAAgB/3J,KAAK,WAInB0X,EAAGrI,YAAc,GACnB0oJ,EAAgB/3J,KAAK,kBAIvB+E,KAAKwxH,OAAM,WACTwhC,EAAgB31J,SAAQ,SAAUQ,GAChCmC,KAAK8lG,QAAQjoG,KACZmC,WAcPylG,EAAOmjC,aAAe,SAAsBqqB,GAC1CjzJ,KAAK2wJ,aAAesC,GAWtBxtD,EAAOojC,UAAY,WACjB,OAAO7oI,KAAK2wJ,cAUdlrD,EAAOqjC,eAAiB,SAAwB74H,GAC9C,IACMjQ,KAAK2wJ,cAAgB3wJ,KAAK+vH,IAAImjC,UAAYvuC,GAC5C3kH,KAAK+vH,IAAImjC,SAASjjJ,GAElBjQ,KAAK+vH,IAAIsU,YAAcp0H,EAEzB,MAAOjF,GACPu3G,EAAMv3G,EAAG,oCAWby6F,EAAO/wF,SAAW,WAChB,IAAIijH,EAAS33H,KAMb,GAAIA,KAAK+vH,IAAIr7G,WAAagB,KAAY8tG,IAAcO,IAAsC,IAAzB/jH,KAAK+vH,IAAIsU,YAAmB,CAG3F,IAAI8uB,EAAgB,SAASA,IACvBx7B,EAAO5H,IAAIsU,YAAc,IAEvB1M,EAAO5H,IAAIr7G,WAAagB,KAC1BiiH,EAAO7xB,QAAQ,kBAGjB6xB,EAAO/xB,IAAI,aAAcutD,KAK7B,OADAnzJ,KAAK0lG,GAAG,aAAcytD,GACfC,IAGT,OAAOpzJ,KAAK+vH,IAAIr7G,UAAY0+I,KAU9B3tD,EAAOvkG,MAAQ,WACb,OAAOlB,KAAK+vH,IAAIrxB,aAUlB+G,EAAOtkG,OAAS,WACd,OAAOnB,KAAK+vH,IAAItxB,cAclBgH,EAAOyrD,uBAAyB,WAC9B,IAAIp5B,EAAS93H,KAEb,GAAM,+BAAgCA,KAAK+vH,IAA3C,CAIA,IAAIsjC,EAAQ,WACVrzJ,KAAK8lG,QAAQ,mBAAoB,CAC/Bm5C,cAAc,IAGZj/I,KAAK+vH,IAAIsM,WAAar8H,KAAK4xH,SAAS4V,wBAA0BxnI,KAAKq8H,aACrEr8H,KAAK+vH,IAAIsM,UAAW,IAIpBi3B,EAAU,WACR,2BAA4BtzJ,KAAK+vH,KAA2C,uBAApC/vH,KAAK+vH,IAAIwjC,yBACnDvzJ,KAAK6sH,IAAI,sBAAuBwmC,GAChCrzJ,KAAK8lG,QAAQ,mBAAoB,CAC/Bm5C,cAAc,EAEduU,qBAAqB,MAK3BxzJ,KAAK0lG,GAAG,wBAAyB4tD,GACjCtzJ,KAAK0lG,GAAG,WAAW,WACjBoyB,EAAOlyB,IAAI,wBAAyB0tD,GAEpCx7B,EAAOlyB,IAAI,sBAAuBytD,QAYtC5tD,EAAOguD,mBAAqB,WAC1B,GAA8C,oBAAnCzzJ,KAAK+vH,IAAI2jC,sBAAsC,CACxD,IAAIvwC,EAAY,IAASD,WAAa,IAASA,UAAUC,WAAa,GAEtE,GAAI,UAAUtkH,KAAKskH,KAAe,uBAAuBtkH,KAAKskH,GAC5D,OAAO,EAIX,OAAO,GAOT1d,EAAOkuD,gBAAkB,WACvB,IAAI73J,EAAQkE,KAAK+vH,IAEjB,GAAIj0H,EAAMogI,QAAUpgI,EAAM82J,cAAgB92J,EAAM83J,cAG9C35B,GAAej6H,KAAK+vH,IAAI3tH,QAGxBpC,KAAKuK,YAAW,WACdzO,EAAMuG,QAEN,IACEvG,EAAM43J,wBACN,MAAO1oJ,GACPhL,KAAK8lG,QAAQ,kBAAmB96F,MAEjC,QAEH,IACElP,EAAM43J,wBACN,MAAO1oJ,GACPhL,KAAK8lG,QAAQ,kBAAmB96F,KAStCy6F,EAAOouD,eAAiB,WACjB7zJ,KAAK+vH,IAAI+jC,2BAKd9zJ,KAAK+vH,IAAIgkC,uBAJP/zJ,KAAK8lG,QAAQ,kBAAmB,IAAI97F,MAAM,iCAkB9Cy7F,EAAOskC,wBAA0B,WAC/B,OAAO/pI,KAAK+vH,IAAIga,2BAalBtkC,EAAOs+B,0BAA4B,SAAmCsG,GACpE,OAAIrqI,KAAKyrI,6BAA+BzrI,KAAK+vH,IAAIikC,WACxCh0J,KAAK+vH,IAAIgU,0BAA0BsG,GAGrCsB,EAAMlkI,UAAUs8H,0BAA0BnzH,KAAK5Q,KAAMqqI,IAS9D5kC,EAAO8+B,yBAA2B,SAAkC1pH,GAC9D7a,KAAKyrI,6BAA+BzrI,KAAK+vH,IAAIikC,WAC/Ch0J,KAAK+vH,IAAIwU,yBAAyB1pH,GAElC8wH,EAAMlkI,UAAU88H,yBAAyB3zH,KAAK5Q,KAAM6a,IAkBxD4qF,EAAO0O,IAAM,SAAa06B,GACxB,QAAankI,IAATmkI,EACF,OAAO7uI,KAAK+vH,IAAI5b,IAIlBn0G,KAAKsyI,OAAOzD,IAQdppC,EAAO+iC,MAAQ,WACb6nB,EAAM4D,kBAAkBj0J,KAAK+vH,MAY/BtqB,EAAOyqD,WAAa,WAClB,OAAIlwJ,KAAKwsI,eACAxsI,KAAKwsI,eAAer4B,IAGtBn0G,KAAK+vH,IAAImgC,YAUlBzqD,EAAOwrD,YAAc,SAAqBzqI,GACxCxmB,KAAK+vH,IAAIsM,WAAa71G,GAmBxBi/E,EAAO+jC,aAAe,SAAsBzJ,EAAM3mH,EAAOgD,GACvD,OAAKpc,KAAKonI,yBAIHpnI,KAAK+vH,IAAIyZ,aAAazJ,EAAM3mH,EAAOgD,GAHjCuvH,EAAMlkI,UAAU+hI,aAAa54H,KAAK5Q,KAAM+/H,EAAM3mH,EAAOgD,IAmChEqpF,EAAOgkC,sBAAwB,SAA+B7/H,GAC5D,IAAK5J,KAAKonI,yBACR,OAAOuE,EAAMlkI,UAAUgiI,sBAAsB74H,KAAK5Q,KAAM4J,GAG1D,IAAIggI,EAAmB,IAAStvC,cAAc,SA0B9C,OAxBI1wF,EAAQm2H,OACV6J,EAAiB7J,KAAOn2H,EAAQm2H,MAG9Bn2H,EAAQwP,QACVwwH,EAAiBxwH,MAAQxP,EAAQwP,QAG/BxP,EAAQwS,UAAYxS,EAAQ05H,WAC9BsG,EAAiBtG,QAAU15H,EAAQwS,UAAYxS,EAAQ05H,SAGrD15H,EAAQ,aACVggI,EAAiB,WAAahgI,EAAQ,YAGpCA,EAAQiR,KACV+uH,EAAiB/uH,GAAKjR,EAAQiR,IAG5BjR,EAAQuqG,MACVy1B,EAAiBz1B,IAAMvqG,EAAQuqG,KAG1By1B,GAgBTnkC,EAAOm1B,mBAAqB,SAA4BhxH,EAAS8/H,GAC/D,IAAIE,EAAmB+B,EAAMlkI,UAAUmzH,mBAAmBhqH,KAAK5Q,KAAM4J,EAAS8/H,GAM9E,OAJI1pI,KAAKonI,0BACPpnI,KAAK2S,KAAKyc,YAAYw6G,GAGjBA,GAUTnkC,EAAO6iC,sBAAwB,SAA+BtrC,GAG5D,GAFA2uC,EAAMlkI,UAAU6gI,sBAAsB13H,KAAK5Q,KAAMg9F,GAE7Ch9F,KAAKonI,yBAA0B,CACjC,IAAI7M,EAASv6H,KAAKuoH,GAAG,SACjB3tH,EAAI2/H,EAAO38H,OAEf,MAAOhD,IACDoiG,IAAUu9B,EAAO3/H,IAAMoiG,IAAUu9B,EAAO3/H,GAAGoiG,OAC7Ch9F,KAAK2S,KAAK8uF,YAAY84B,EAAO3/H,MAgBrC6qG,EAAOqkC,wBAA0B,WAC/B,GAAiD,oBAAtC9pI,KAAK2S,KAAKm3H,wBACnB,OAAO9pI,KAAK2S,KAAKm3H,0BAGnB,IAAIoqB,EAAuB,GAa3B,MAXiD,qBAAtCl0J,KAAK2S,KAAKwhJ,yBAAwF,qBAAtCn0J,KAAK2S,KAAKyhJ,0BAC/EF,EAAqBG,mBAAqBr0J,KAAK2S,KAAKwhJ,wBACpDD,EAAqBI,iBAAmBt0J,KAAK2S,KAAKyhJ,yBAGhD,IAASpqC,aAAmD,oBAA7B,IAASA,YAAYr0G,IACtDu+I,EAAqBK,aAAe,IAASvqC,YAAYr0G,MAChD,IAASq0G,aAAe,IAASA,YAAYwqC,QAAiE,kBAAhD,IAASxqC,YAAYwqC,OAAOC,kBACnGP,EAAqBK,aAAe,IAAS1wI,KAAKlO,MAAQ,IAASq0G,YAAYwqC,OAAOC,iBAGjFP,GAGF7D,EAn+BgB,CAo+BvB97B,IAYF47B,GAAmBE,GAAO,YAAY,WACpC,GAAKhsC,KAAL,CAIA,IAAIvoH,EAAQ,IAASw+F,cAAc,SAC/B0C,EAAQ,IAAS1C,cAAc,SAKnC,OAJA0C,EAAM+iC,KAAO,WACb/iC,EAAMsmC,QAAU,KAChBtmC,EAAM5jF,MAAQ,UACdtd,EAAMszB,YAAY4tE,GACXlhG,MAUTu0J,GAAMrzC,YAAc,WAElB,IACEqzC,GAAMqE,SAAS7mB,OAAS,GACxB,MAAO7iI,GACP,OAAO,EAGT,SAAUqlJ,GAAMqE,WAAYrE,GAAMqE,SAAS9pB,cAW7CylB,GAAMzlB,YAAc,SAAU/sI,GAC5B,OAAOwyJ,GAAMqE,SAAS9pB,YAAY/sI,IAapCwyJ,GAAMxlB,cAAgB,SAAUC,EAAQlhI,GACtC,OAAOymJ,GAAMzlB,YAAYE,EAAOjtI,OAalCwyJ,GAAMsE,iBAAmB,WAEvB,IACE,IAAI9mB,EAASwiB,GAAMqE,SAAS7mB,OAC5BwiB,GAAMqE,SAAS7mB,OAASA,EAAS,EAAI,GACrC,IAAI+mB,EAAa/mB,IAAWwiB,GAAMqE,SAAS7mB,OAM3C,OAAI+mB,GAAclwC,IAChB,IAASn6G,YAAW,WACd8lJ,IAASA,GAAM5oJ,YACjB4oJ,GAAM5oJ,UAAU2jI,sBAAwByC,IAAWwiB,GAAMqE,SAAS7mB,YAI/D,GAGF+mB,EACP,MAAO5pJ,GACP,OAAO,IAcXqlJ,GAAMwE,cAAgB,WACpB,IACE,IAAIlnB,EAAQ0iB,GAAMqE,SAAS/mB,MAW3B,OARA0iB,GAAMqE,SAAS/mB,OAASA,EAEpB0iB,GAAMqE,SAAS/mB,MACjBtvB,GAAagyC,GAAMqE,SAAU,QAAS,SAEtCp2C,GAAgB+xC,GAAMqE,SAAU,QAAS,SAGpC/mB,IAAU0iB,GAAMqE,SAAS/mB,MAChC,MAAO3iI,GACP,OAAO,IAYXqlJ,GAAMyE,uBAAyB,WAG7B,GAAItxC,IAAcO,IAAaC,GAAiB,GAC9C,OAAO,EAIT,IACE,IAAI4jC,EAAeyI,GAAMqE,SAAS9M,aAElC,OADAyI,GAAMqE,SAAS9M,aAAeA,EAAe,EAAI,GAC1CA,IAAiByI,GAAMqE,SAAS9M,aACvC,MAAO58I,GACP,OAAO,IAaXqlJ,GAAM0E,sBAAwB,WAG5B,IACE,IAAItnJ,EAAO,aAEXzG,OAAOC,eAAe,IAASqzF,cAAc,SAAU,MAAO,CAC5DlvE,IAAK3d,EACL4d,IAAK5d,IAEPzG,OAAOC,eAAe,IAASqzF,cAAc,SAAU,MAAO,CAC5DlvE,IAAK3d,EACL4d,IAAK5d,IAEPzG,OAAOC,eAAe,IAASqzF,cAAc,SAAU,YAAa,CAClElvE,IAAK3d,EACL4d,IAAK5d,IAEPzG,OAAOC,eAAe,IAASqzF,cAAc,SAAU,YAAa,CAClElvE,IAAK3d,EACL4d,IAAK5d,IAEP,MAAOzC,GACP,OAAO,EAGT,OAAO,GAWTqlJ,GAAM2E,yBAA2B,WAC/B,OAAOrwC,IAAiBD,IAAUX,IAWpCssC,GAAM4E,0BAA4B,WAChC,SAAU5E,GAAMqE,WAAYrE,GAAMqE,SAASQ,cAW7C7E,GAAM8E,0BAA4B,WAChC,SAAU9E,GAAMqE,WAAYrE,GAAMqE,SAASnN,cAU7C8I,GAAMpjC,OAAS,CAAC,YAAa,UAAW,QAAS,QAAS,UAAW,UAAW,iBAAkB,aAAc,UAAW,iBAAkB,UAAW,UAAW,UAAW,SAAU,QAAS,iBAAkB,aAAc,WAAY,OAAQ,QAAS,aAAc,SAAU,gBAqDtR,CAAC,CAAC,sBAAuB,iBAAkB,CAAC,uBAAwB,0BAA2B,CAAC,oBAAqB,yBAA0B,CAAC,2BAA4B,4BAA6B,CAAC,4BAA6B,6BAA8B,CAAC,4BAA6B,8BAA8B5vH,SAAQ,SAAU+V,GACjV,IAAIlK,EAAMkK,EAAK,GACXkb,EAAKlb,EAAK,GACd+8I,GAAmBE,GAAM5oJ,UAAWyB,GAAK,WACvC,OAAOmnJ,GAAM/hI,QACZ,MAEL+hI,GAAM5oJ,UAAU2jI,sBAAwBilB,GAAMsE,mBAU9CtE,GAAM5oJ,UAAU4qJ,yBAA2B3tC,GAW3C2rC,GAAM5oJ,UAAU6jI,0BAA2B,EAS3C+kB,GAAM5oJ,UAAUq/H,wBAAyB,EAQzCupB,GAAM5oJ,UAAUu/H,0BAA2B,EAO3CqpB,GAAM5oJ,UAAUgkI,8BAAgC4kB,GAAMqE,WAAYrE,GAAMqE,SAAS3wB,2BAIjFssB,GAAM+E,iBAAmB,WAGnB3xC,IAAmB,IAAQI,KAAeE,KAC5C6mB,GAAcylB,GAAMqE,UAAYrE,GAAMqE,SAAS/lJ,YAAYlH,UAAUmjI,YAErEylB,GAAMqE,SAAS/lJ,YAAYlH,UAAUmjI,YAAc,SAAU/sI,GAC3D,IAAIw3J,EAAY,4CAEhB,OAAIx3J,GAAQw3J,EAAUx2J,KAAKhB,GAClB,QAGF+sI,GAAYh6H,KAAK5Q,KAAMnC,MAKpCwyJ,GAAMiF,mBAAqB,WACzB,IAAIn9I,EAAIk4I,GAAMqE,SAAS/lJ,YAAYlH,UAAUmjI,YAM7C,OAJIA,KACFylB,GAAMqE,SAAS/lJ,YAAYlH,UAAUmjI,YAAcA,IAG9CzyH,GAITk4I,GAAM+E,mBAEN/E,GAAMc,oBAAsB,SAAUx+I,GACpC,GAAKA,EAAL,CAIIA,EAAGme,YACLne,EAAGme,WAAW2wE,YAAY9uF,GAI5B,MAAOA,EAAGmqG,gBACRnqG,EAAG8uF,YAAY9uF,EAAG6uF,YAKpB7uF,EAAG2rG,gBAAgB,OAGI,oBAAZ3rG,EAAG2yH,MAEZ,WACE,IACE3yH,EAAG2yH,OACH,MAAOt6H,KAHX,KASJqlJ,GAAM4D,kBAAoB,SAAUthJ,GAClC,GAAKA,EAAL,CAIA,IAAIgwG,EAAUhwG,EAAG+qH,iBAAiB,UAC9B9iI,EAAI+nH,EAAQ/kH,OAEhB,MAAOhD,IACL+X,EAAG8uF,YAAYkhB,EAAQ/nH,IAKzB+X,EAAG2rG,gBAAgB,OAEI,oBAAZ3rG,EAAG2yH,MAEZ,WACE,IACE3yH,EAAG2yH,OACH,MAAOt6H,KAHX,KAcJ,CAaA,QAeA,eAaA,WAaA,WAgBA,OAcA,eAAe3N,SAAQ,SAAUqwE,GAC/B2iF,GAAM5oJ,UAAUimE,GAAQ,WACtB,OAAO1tE,KAAK+vH,IAAIriD,IAAS1tE,KAAK+vH,IAAI5R,aAAazwC,OAOnD,CAYA,QAYA,eAYA,WAeA,OAaA,eAAerwE,SAAQ,SAAUqwE,GAC/B2iF,GAAM5oJ,UAAU,MAAQgpH,GAAc/iD,IAAS,SAAUvmE,GACvDnH,KAAK+vH,IAAIriD,GAAQvmE,EAEbA,EACFnH,KAAK+vH,IAAI1R,aAAa3wC,EAAMA,GAE5B1tE,KAAK+vH,IAAIzR,gBAAgB5wC,OAS/B,CAWA,SAWA,cAYA,WAYA,SAYA,SAkBA,UAaA,QAaA,UAYA,WAaA,QAcA,eAiBA,sBAYA,0BAYA,SAgBA,eAkBA,aAYA,aAYA,cAaA,eAAerwE,SAAQ,SAAUqwE,GAC/B2iF,GAAM5oJ,UAAUimE,GAAQ,WACtB,OAAO1tE,KAAK+vH,IAAIriD,OAQpB,CAYA,SAWA,MAYA,SAkBA,UAcA,eAiBA,sBAWA,0BAaA,eAAerwE,SAAQ,SAAUqwE,GAC/B2iF,GAAM5oJ,UAAU,MAAQgpH,GAAc/iD,IAAS,SAAUvmE,GACvDnH,KAAK+vH,IAAIriD,GAAQvmE,MAMrB,CAQA,QAQA,OAQA,QAAQ9J,SAAQ,SAAUqwE,GACxB2iF,GAAM5oJ,UAAUimE,GAAQ,WACtB,OAAO1tE,KAAK+vH,IAAIriD,SAGpB6mD,GAAKmX,mBAAmB2kB,IAWxBA,GAAM9jB,oBAAsB,GAW5B8jB,GAAM9jB,oBAAoB3B,YAAc,SAAU/sI,GAEhD,IACE,OAAOwyJ,GAAMqE,SAAS9pB,YAAY/sI,GAClC,MAAOmN,GACP,MAAO,KAiBXqlJ,GAAM9jB,oBAAoBN,gBAAkB,SAAUx6H,EAAQ7H,GAE5D,GAAI6H,EAAO5T,KACT,OAAOwyJ,GAAM9jB,oBAAoB3B,YAAYn5H,EAAO5T,MAC/C,GAAI4T,EAAO0iG,IAAK,CACrB,IAAIg8B,EAAM9N,GAAiB5wH,EAAO0iG,KAClC,OAAOk8C,GAAM9jB,oBAAoB3B,YAAY,SAAWuF,GAG1D,MAAO,IAgBTkgB,GAAM9jB,oBAAoBE,aAAe,SAAUh7H,EAAQ2oH,EAAMxwH,GAC/DwwH,EAAKkY,OAAO7gI,EAAO0iG,MAOrBk8C,GAAM9jB,oBAAoBrmC,QAAU,aAGpCmqD,GAAMzkB,sBAAsBykB,GAAM9jB,qBAClChY,GAAKwW,aAAa,QAASslB,IAI3B,IAAIkF,GAAwB,CAgB5B,WAgBA,QAgBA,UAgBA,UAgBA,UAgBA,iBAgBA,aAgBA,aAgBA,SAgBA,eAgBA,mBAIIC,GAAoB,CACtBC,QAAS,UACTC,eAAgB,iBAChBC,QAAS,UACTC,OAAQ,UAENC,GAAmB,CAAC,OAAQ,SAAU,QAAS,SAAU,QAAS,SAAU,QAC5EC,GAAqB,GAQzBD,GAAiBx4J,SAAQ,SAAUwU,GACjC,IAAI1K,EAAoB,MAAhB0K,EAAE7N,OAAO,GAAa,KAAO6N,EAAE/T,UAAU,GAAK+T,EACtDikJ,GAAmBjkJ,GAAK,cAAgB1K,KAE1C,IAAI4uJ,GAAsB,CACxBC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,KACPC,OAAQ,KACRC,KAAM5gJ,KAaJ6iH,GAAsB,SAAU0C,GAelC,SAAS1C,EAAO1zG,EAAKjb,EAAS4nH,GAC5B,IAAIjrB,EAqBJ,GAlBA1hF,EAAIhK,GAAKgK,EAAIhK,IAAMjR,EAAQiR,IAAM,aAAegvG,KAMhDjgH,EAAUwf,GAAOmvG,EAAOg+B,eAAe1xI,GAAMjb,GAG7CA,EAAQ2oH,cAAe,EAEvB3oH,EAAQ27G,UAAW,EAEnB37G,EAAQimH,SAAU,EAGlBjmH,EAAQ4oH,qBAAsB,GAEzB5oH,EAAQwS,SACX,GAA2B,oBAAhByI,EAAI2xI,QAAwB,CACrC,IAAIA,EAAU3xI,EAAI2xI,QAAQ,UAEtBA,GAAWA,EAAQj5C,eACrB3zG,EAAQwS,SAAWo6I,EAAQj5C,aAAa,aAErC,CACL,IAAIp7F,EAAU0C,EAEd,MAAO1C,GAAgC,IAArBA,EAAQu2F,SAAgB,CACxC,GAAI+N,GAActkG,GAAS1Y,eAAe,QAAS,CACjDG,EAAQwS,SAAW+F,EAAQo7F,aAAa,QACxC,MAGFp7F,EAAUA,EAAQ2O,YAkFxB,GA5EAy1E,EAAQ00B,EAAWrqH,KAAK5Q,KAAM,KAAM4J,EAAS4nH,IAAUxxH,KAEvDumG,EAAMkwD,+BAAiC,SAAUzrJ,GAC/C,OAAOu7F,EAAMmwD,0BAA0B1rJ,IAGzCu7F,EAAMowD,yBAA2B,SAAU3rJ,GACzC,OAAOu7F,EAAMqwD,mBAAmB5rJ,IAGlCu7F,EAAMswD,oBAAsB,SAAU7rJ,GACpC,OAAOu7F,EAAMuwD,eAAe9rJ,IAG9Bu7F,EAAMwwD,oBAAsB,SAAU/rJ,GACpC,OAAOu7F,EAAMywD,eAAehsJ,IAG9Bu7F,EAAM0wD,8BAAgC,SAAUjsJ,GAC9C,OAAOu7F,EAAM2wD,yBAAyBlsJ,IAGxCu7F,EAAM4wD,sBAAwB,SAAUnsJ,GACtC,OAAOu7F,EAAM6wD,iBAAiBpsJ,IAGhCu7F,EAAM8wD,4BAA8B,SAAUrsJ,GAC5C,OAAOu7F,EAAM+wD,uBAAuBtsJ,IAGtCu7F,EAAMgxD,2BAA6B,SAAUvsJ,GAC3C,OAAOu7F,EAAMixD,sBAAsBxsJ,IAGrCu7F,EAAMkxD,0BAA4B,SAAUzsJ,GAC1C,OAAOu7F,EAAMmxD,qBAAqB1sJ,IAGpCu7F,EAAMoxD,yBAA2B,SAAU3sJ,GACzC,OAAOu7F,EAAMqxD,oBAAoB5sJ,IAGnCu7F,EAAMsxD,oBAAsB,SAAU7sJ,GACpC,OAAOu7F,EAAMuxD,eAAe9sJ,IAI9Bu7F,EAAMwxD,eAAgB,EAEtBxxD,EAAM1jG,IAAM2+G,EAAajb,EAAMsrB,KAE/BtrB,EAAMw4C,OAASp+B,EAEfpa,EAAMyxD,mBAAoB,EAG1BzxD,EAAM0xD,iBAAmB,GAEzB1xD,EAAMquB,UAAW,EAEjBruB,EAAMsgC,aAAc,EAEpBtgC,EAAM2xD,aAAc,EAEpB3xD,EAAM4xD,eAAgB,EAEtB5xD,EAAM6xD,gBAAiB,EAEvB7xD,EAAM8xD,kBAAmB,EAEzB9xD,EAAM+xD,gBAAkB,CACtBC,aAAc,KACdC,eAAgB,KAIbjyD,EAAMqrB,WAAarrB,EAAMqrB,SAASkf,YAAcvqC,EAAMqrB,SAASkf,UAAUlzI,OAC5E,MAAM,IAAIoM,MAAM,2HAWlB,GAPAu8F,EAAM1hF,IAAMA,EAEZ0hF,EAAMgsD,cAAgB1tI,GAAO4hG,GAAc5hG,GAE3C0hF,EAAMnqF,SAASmqF,EAAMqrB,SAASx1G,UAG1BxS,EAAQopH,UAAW,CAErB,IAAIylC,EAAmB,GACvBzxJ,OAAOy+G,oBAAoB77G,EAAQopH,WAAW31H,SAAQ,SAAUG,GAC9Di7J,EAAiBj7J,EAAKG,eAAiBiM,EAAQopH,UAAUx1H,MAE3D+oG,EAAMmyD,WAAaD,OAEnBlyD,EAAMmyD,WAAangC,EAAO9wH,UAAUmqH,SAASoB,UAG/CzsB,EAAMoyD,cAGNpyD,EAAMqyD,QAAUhvJ,EAAQyoI,QAAU,GAElC9rC,EAAMsyD,YAAcjvJ,EAAQyyH,SAI5Bx3G,EAAIw3G,UAAW,EACfx3G,EAAIy5F,gBAAgB,YACpB/X,EAAMuyD,cAAe,EACrBvyD,EAAMwyD,eAAiB,GACvBxyD,EAAMyyD,qBAAuB,GAEzBn0I,EAAIs5F,aAAa,YACnB5X,EAAMllG,UAAS,GAIfklG,EAAMllG,SAASklG,EAAMqrB,SAASvwH,UAI5BuI,EAAQqvJ,SACVjyJ,OAAO0K,KAAK9H,EAAQqvJ,SAAS57J,SAAQ,SAAUG,GAC7C,GAA2B,oBAAhB+oG,EAAM/oG,GACf,MAAM,IAAIwM,MAAM,WAAcxM,EAAO,uBAY3C+oG,EAAM2yD,YAAa,EACnB3yD,EAAMwpB,IAAMxpB,EAAMgf,WAElBsK,GAAQ,IAAuBtpB,GAAQ,CACrCupB,YAAa,QAMXvpB,EAAMw4C,OAAOI,oBACfz5C,GAAG,IAAUa,EAAMw4C,OAAOoa,iBAAkB5yD,EAAMkwD,gCAElDlwD,EAAMb,GAAGa,EAAMw4C,OAAOoa,iBAAkB5yD,EAAMkwD,iCAG5ClwD,EAAM6yD,QACR7yD,EAAMb,GAAG,CAAC,cAAe,UAAWa,EAAMswD,qBAO5C,IAAIwC,EAAoBxoC,GAAetqB,EAAMqrB,UAEzChoH,EAAQqvJ,SACVjyJ,OAAO0K,KAAK9H,EAAQqvJ,SAAS57J,SAAQ,SAAUG,GAC7C+oG,EAAM/oG,GAAMoM,EAAQqvJ,QAAQz7J,OAK5BoM,EAAQ+3G,OACVpb,EAAMob,OAAM,GAGdpb,EAAMqrB,SAAS0C,cAAgB+kC,EAC/B9yD,EAAM+yD,YAAc,GAEpB/yD,EAAM6hD,cAAcx+I,EAAQw+I,eAE5B7hD,EAAMgsB,eAGNhsB,EAAMwvC,QAAuC,UAA/BlxH,EAAIrX,SAAS7P,eAIvB4oG,EAAM81B,WACR91B,EAAMyf,SAAS,wBAEfzf,EAAMyf,SAAS,yBAIjBzf,EAAMwpB,IAAI1R,aAAa,OAAQ,UAE3B9X,EAAMwvC,UACRxvC,EAAMwpB,IAAI1R,aAAa,aAAc9X,EAAMssB,SAAS,iBAEpDtsB,EAAMwpB,IAAI1R,aAAa,aAAc9X,EAAMssB,SAAS,iBAGlDtsB,EAAMwvC,WACRxvC,EAAMyf,SAAS,aAGbzf,EAAMgzD,qBACRhzD,EAAMyf,SAAS,eAOb5B,IACF7d,EAAMyf,SAAS,qBAIZtB,IACHne,EAAMyf,SAAS,oBAIjBuS,EAAOC,QAAQjyB,EAAMsrB,KAAO,IAAuBtrB,GAEnD,IAAIizD,EAAer5C,EAAU/iH,MAAM,KAAK,GAwCxC,OAtCAmpG,EAAMyf,SAAS,QAAUwzC,GAIzBjzD,EAAMkzD,YAAW,GAEjBlzD,EAAMuwB,qBAENvwB,EAAMsmB,IAAI,QAAQ,SAAU7hH,GAC1B,OAAOu7F,EAAMmzD,uBAAuB1uJ,MAGtCu7F,EAAMb,GAAG,cAAc,SAAU16F,GAC/B,OAAOu7F,EAAMozD,kBAAkB3uJ,MAGjCu7F,EAAMb,GAAG,WAAW,SAAU16F,GAC5B,OAAOu7F,EAAMwvB,cAAc/qH,MAG7Bu7F,EAAMb,GAAG,kBAAkB,SAAU16F,GACnC,OAAOu7F,EAAMurB,qBAAqB9mH,MAGpCu7F,EAAMqzD,YAAYrzD,EAAMqrB,SAASgoC,aAEjCrzD,EAAMszD,WAAWtzD,EAAMqrB,SAASioC,YAIhCtzD,EAAMb,GAAG,SAAS,WAGhBa,EAAMi4C,gBAAgBj4C,EAAMqrB,SAAS4sB,iBAErCj4C,EAAMk4C,cAAcl4C,EAAMqrB,SAAS6sB,kBAG9Bl4C,EApUT,IAAegyB,EAAQ0C,GAgVvB,IAAIx1B,EAAS8yB,EAAO9wH,UAulJpB,OArlJAg+F,EAAOS,QAAU,WACf,IAAIiB,EAASnnG,KAQbA,KAAK8lG,QAAQ,WAEb9lG,KAAK4lG,IAAI,WAETA,GAAI,IAAU5lG,KAAK++I,OAAOoa,iBAAkBn5J,KAAKy2J,gCACjD7wD,GAAI,IAAU,UAAW5lG,KAAK22J,0BAE1B32J,KAAK85J,UAAY95J,KAAK85J,SAAShpI,aACjC9wB,KAAK85J,SAAShpI,WAAW2wE,YAAYzhG,KAAK85J,UAC1C95J,KAAK85J,SAAW,MAIlBvhC,EAAOC,QAAQx4H,KAAK6xH,KAAO,KAEvB7xH,KAAK6kB,KAAO7kB,KAAK6kB,IAAI/iB,SACvB9B,KAAK6kB,IAAI/iB,OAAS,MAGhB9B,KAAK+vH,KAAO/vH,KAAK+vH,IAAIjuH,SACvB9B,KAAK+vH,IAAIjuH,OAAS,MAGhB9B,KAAKkjI,QACPljI,KAAKkjI,MAAMh9B,UACXlmG,KAAKg4J,mBAAoB,EACzBh4J,KAAK44J,QAAU,IAGb54J,KAAK+5J,kBACP/5J,KAAK+5J,gBAAkB,MAGrB/5J,KAAK6kB,MACP7kB,KAAK6kB,IAAM,MAGbupH,GAAoBpuI,MAIpBgmI,GAAIr2B,MAAMtyG,SAAQ,SAAUG,GAC1B,IAAIiD,EAAQulI,GAAIxoI,GAEZ4U,EAAO+0F,EAAO1mG,EAAMklI,cAIpBvzH,GAAQA,EAAKwzF,KACfxzF,EAAKwzF,SAITq1B,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,KAAM,CACtC2yH,UAAW3yH,KAAK4xH,SAASe,aAW7BltB,EAAO8f,SAAW,WAChB,IACI5yG,EADAkS,EAAM7kB,KAAK6kB,IAEXutI,EAAiBpyJ,KAAK+5J,gBAAkBl1I,EAAIiM,YAAcjM,EAAIiM,WAAWqtF,cAAgBt5F,EAAIiM,WAAWqtF,aAAa,mBACrH67C,EAA8C,aAAnCh6J,KAAK6kB,IAAIxC,QAAQ1kB,cAE5By0J,EACFz/I,EAAK3S,KAAK+vH,IAAMlrG,EAAIiM,WACVkpI,IACVrnJ,EAAK3S,KAAK+vH,IAAMkL,EAAWxzH,UAAU89G,SAAS30G,KAAK5Q,KAAM,QAK3D,IAAIM,EAAQmmH,GAAc5hG,GAE1B,GAAIm1I,EAAU,CACZrnJ,EAAK3S,KAAK+vH,IAAMlrG,EAChBA,EAAM7kB,KAAK6kB,IAAM,IAASy1E,cAAc,SAExC,MAAO3nF,EAAG2gH,SAAS11H,OACjBinB,EAAIuK,YAAYzc,EAAG6uF,YAGhBokB,GAASjzG,EAAI,aAChBqzG,GAASrzG,EAAI,YAGfA,EAAGyc,YAAYvK,GACfutI,EAAiBpyJ,KAAK+5J,gBAAkBpnJ,EAKxC3L,OAAO0K,KAAKiB,GAAItV,SAAQ,SAAUwU,GAChC,IACEgT,EAAIhT,GAAKc,EAAGd,GACZ,MAAO7G,QAuDb,GAjDA6Z,EAAIw5F,aAAa,WAAY,MAC7B/9G,EAAM25J,SAAW,MAMbh2C,IAAcF,IAAaI,MAC7Bt/F,EAAIw5F,aAAa,OAAQ,eACzB/9G,EAAM6b,KAAO,eAIf0I,EAAIy5F,gBAAgB,SACpBz5F,EAAIy5F,gBAAgB,UAEhB,UAAWh+G,UACNA,EAAMY,MAGX,WAAYZ,UACPA,EAAMa,OAGf6F,OAAOy+G,oBAAoBnlH,GAAOjD,SAAQ,SAAUmzB,GAI5CwpI,GAAqB,UAATxpI,GAChB7d,EAAG0rG,aAAa7tF,EAAMlwB,EAAMkwB,IAG1BwpI,GACFn1I,EAAIw5F,aAAa7tF,EAAMlwB,EAAMkwB,OAMjC3L,EAAI4tI,SAAW5tI,EAAIhK,GACnBgK,EAAIhK,IAAM,aACVgK,EAAIu3E,UAAY,WAEhBv3E,EAAI/iB,OAAS6Q,EAAG7Q,OAAS9B,KAEzBA,KAAKgmH,SAAS,eAI4B,IAAtC,IAASk0C,yBAAmC,CAC9Cl6J,KAAK85J,SAAWvwC,GAAmB,yBACnC,IAAI4wC,EAAkB7xC,GAAE,wBACpB8xC,EAAO9xC,GAAE,QACb8xC,EAAK19C,aAAa18G,KAAK85J,SAAUK,EAAkBA,EAAgBtiD,YAAcuiD,EAAK54D,YAGxFxhG,KAAKq6J,OAAQ,EACbr6J,KAAKo5J,QAAS,EAEdp5J,KAAKkB,MAAMlB,KAAK4xH,SAAS1wH,OACzBlB,KAAKmB,OAAOnB,KAAK4xH,SAASzwH,QAC1BnB,KAAKg8H,KAAKh8H,KAAK4xH,SAASoK,MACxBh8H,KAAKs6J,MAAMt6J,KAAK4xH,SAAS0oC,OACzBt6J,KAAKid,YAAYjd,KAAK4xH,SAAS30G,aAE/Bjd,KAAK2iI,YAAY3iI,KAAK4xH,SAAS+Q,aAAe3iI,KAAK4xH,SAAS2oC,aAK5D,IAFA,IAAIC,EAAQ31I,EAAI2D,qBAAqB,KAE5B5tB,EAAI,EAAGA,EAAI4/J,EAAM58J,OAAQhD,IAAK,CACrC,IAAI6/J,EAASD,EAAMxxI,KAAKpuB,GACxBorH,GAASy0C,EAAQ,cACjBA,EAAOp8C,aAAa,SAAU,UAuBhC,OAlBAx5F,EAAI0rI,kBAAoB1rI,EAAI+tI,aAExB/tI,EAAIiM,aAAeshI,GACrBvtI,EAAIiM,WAAW4rF,aAAa/pG,EAAIkS,GAQlC8gG,GAAU9gG,EAAKlS,GACf3S,KAAK+xH,UAAU33G,QAAQyK,GAGvB7kB,KAAK+vH,IAAI1R,aAAa,OAAQr+G,KAAKqnJ,WACnCrnJ,KAAK+vH,IAAI1R,aAAa,YAAa,MACnCr+G,KAAK+vH,IAAMp9G,EACJA,GAmBT8yF,EAAOk9B,YAAc,SAAqBv7H,GACxC,IAAKA,EACH,OAAOpH,KAAK06J,SAAS,eAGT,cAAVtzJ,GAAmC,oBAAVA,EAK7BpH,KAAK26J,UAAU,iBAAkBvzJ,GAJ/Bm7G,EAAMr1F,KAAK,gEAAuE9lB,EAAQ,MAmB9Fq+F,EAAOvkG,MAAQ,SAAekG,GAC5B,OAAOpH,KAAKo1H,UAAU,QAAShuH,IAcjCq+F,EAAOtkG,OAAS,SAAgBiG,GAC9B,OAAOpH,KAAKo1H,UAAU,SAAUhuH,IAkBlCq+F,EAAO2vB,UAAY,SAAmBwlC,EAAYxzJ,GAChD,IAAIyzJ,EAAgBD,EAAa,IAEjC,QAAclwJ,IAAVtD,EACF,OAAOpH,KAAK66J,IAAkB,EAGhC,GAAc,KAAVzzJ,GAA0B,SAAVA,EAIlB,OAFApH,KAAK66J,QAAiBnwJ,OACtB1K,KAAK82J,iBAIP,IAAIgE,EAAYr4I,WAAWrb,GAEvBmN,MAAMumJ,GACRv4C,EAAM1yF,MAAM,mBAAsBzoB,EAAQ,sBAAyBwzJ,IAIrE56J,KAAK66J,GAAiBC,EACtB96J,KAAK82J,mBAkBPrxD,EAAO60D,MAAQ,SAAejgB,GAC5B,IAAI/xC,EAAStoG,KAEb,QAAa0K,IAAT2vI,EACF,QAASr6I,KAAKo5J,OAGhBp5J,KAAKo5J,SAAW/e,EAEZhsB,GAAUruH,OACZA,KAAK4lG,IAAI,CAAC,cAAe,UAAW5lG,KAAK62J,qBAGvCxc,GACFr6I,KAAKgmH,SAAS,aACdhmH,KAAKg8H,MAAK,GACVzN,GAAmBvuH,MAAM,WACvBsoG,EAAO5C,GAAG,CAAC,cAAe,UAAW4C,EAAOuuD,yBAG9C72J,KAAKmmH,YAAY,aAGnBnmH,KAAK82J,kBAkBPrxD,EAAOu2B,KAAO,SAAcqe,GAC1B,QAAa3vI,IAAT2vI,EACF,QAASr6I,KAAKq6J,MAGhBr6J,KAAKq6J,QAAUhgB,EAEXA,GACFr6I,KAAKgmH,SAAS,YACdhmH,KAAKs6J,OAAM,IAEXt6J,KAAKmmH,YAAY,aAyBrB1gB,EAAOxoF,YAAc,SAAqB6zD,GACxC,QAAcpmE,IAAVomE,EACF,OAAO9wE,KAAK+6J,aAId,IAAK,aAAal8J,KAAKiyE,GACrB,MAAM,IAAI9mE,MAAM,kGAGlBhK,KAAK+6J,aAAejqF,EAGpB9wE,KAAKs6J,OAAM,GACXt6J,KAAK82J,kBAUPrxD,EAAOqxD,eAAiB,WACtB,IAA0C,IAAtC,IAASoD,yBAAb,CAoBA,IAAIh5J,EACAC,EACA8b,EACA+9I,EAIF/9I,OAFwBvS,IAAtB1K,KAAK+6J,cAAoD,SAAtB/6J,KAAK+6J,aAE5B/6J,KAAK+6J,aACV/6J,KAAKi7J,aAAe,EAEfj7J,KAAKi7J,aAAe,IAAMj7J,KAAKk7J,cAG/B,OAIhB,IAAIC,EAAal+I,EAAY7f,MAAM,KAC/Bg+J,EAAkBD,EAAW,GAAKA,EAAW,GAI/Cj6J,OAFkBwJ,IAAhB1K,KAAKq7J,OAECr7J,KAAKq7J,YACa3wJ,IAAjB1K,KAAKs7J,QAENt7J,KAAKs7J,QAAUF,EAGfp7J,KAAKi7J,cAAgB,IAK7B95J,OAFmBuJ,IAAjB1K,KAAKs7J,QAEEt7J,KAAKs7J,QAGLp6J,EAAQk6J,EAKjBJ,EADE,aAAan8J,KAAKmB,KAAK6a,MACf,cAAgB7a,KAAK6a,KAErB7a,KAAK6a,KAAO,cAIxB7a,KAAKgmH,SAASg1C,GACdxxC,GAAexpH,KAAK85J,SAAU,YAAckB,EAAU,sBAAwB95J,EAAQ,wBAA0BC,EAAS,0BAA4B65J,EAAU,gEAAoF,IAAlBI,EAAwB,yBApEzP,CACE,IAAIG,EAAgC,kBAAhBv7J,KAAKq7J,OAAsBr7J,KAAKq7J,OAASr7J,KAAK4xH,SAAS1wH,MAEvEs6J,EAAkC,kBAAjBx7J,KAAKs7J,QAAuBt7J,KAAKs7J,QAAUt7J,KAAK4xH,SAASzwH,OAE1Es6J,EAASz7J,KAAKkjI,OAASljI,KAAKkjI,MAAMvwH,KAElC8oJ,IACEF,GAAU,IACZE,EAAOv6J,MAAQq6J,GAGbC,GAAW,IACbC,EAAOt6J,OAASq6J,MAuExB/1D,EAAOurC,UAAY,SAAmBD,EAAUt/H,GAC9C,IAAI+lH,EAASx3H,KAGTA,KAAKkjI,OACPljI,KAAK07J,cAGP,IAAIC,EAAgBlrC,GAAcsgB,GAC9B6qB,EAAgB7qB,EAAS/sI,OAAO,GAAGrG,cAAgBozI,EAASh0I,MAAM,GAEhD,UAAlB4+J,GAA6B37J,KAAK6kB,MACpC0vG,GAAK2W,QAAQ,SAASimB,oBAAoBnxJ,KAAK6kB,KAC/C7kB,KAAK6kB,IAAI/iB,OAAS,KAClB9B,KAAK6kB,IAAM,MAGb7kB,KAAK67J,UAAYF,EAEjB37J,KAAK40H,UAAW,EAChB,IAAIvzH,EAAWrB,KAAKqB,YAGW,kBAApBrB,KAAKqB,aAA+C,IAApBrB,KAAKqB,YAAuBrB,KAAK4xH,SAASkqC,qBACnFz6J,GAAW,GAIb,IAAI06J,EAAc,CAChBtqJ,OAAQA,EACRpQ,SAAUA,EACV,uBAA0BrB,KAAK4xH,SAAS4V,uBACxC,SAAYxnI,KAAK6a,KACjB,OAAU7a,KAAK6a,KAAO,IAAM+gJ,EAAgB,OAC5C,YAAe57J,KAAK4xH,SAAS4Y,YAC7B,QAAWxqI,KAAK4xH,SAAS8gC,QACzB,KAAQ1yJ,KAAK4xH,SAASoqC,KACtB,wBAA2Bh8J,KAAK4xH,SAASuY,wBACzC,MAASnqI,KAAK4xH,SAAS+b,MACvB,OAAU3tI,KAAKqyI,SACf,SAAYryI,KAAKoc,WACjB,eAAkBpc,KAAK+5J,kBAAmB,EAC1C,SAAU/5J,KAAK4xH,SAAS,UACxB,oBAAuB5xH,KAAK4xH,SAASqqC,sBACrC,gBAAmBj8J,KAAK4xH,SAAS6+B,gBACjC,QAAWzwJ,KAAK4xH,SAASqY,SAE3BjE,GAAIr2B,MAAMtyG,SAAQ,SAAUG,GAC1B,IAAIiD,EAAQulI,GAAIxoI,GAChBu+J,EAAYt7J,EAAMklI,YAAcnO,EAAO/2H,EAAMmlI,gBAE/Cx8G,GAAO2yI,EAAa/7J,KAAK4xH,SAAS+pC,IAClCvyI,GAAO2yI,EAAa/7J,KAAK4xH,SAASgqC,IAClCxyI,GAAO2yI,EAAa/7J,KAAK4xH,SAASmf,EAASpzI,gBAEvCqC,KAAK6kB,MACPk3I,EAAYl3I,IAAM7kB,KAAK6kB,KAGrBpT,GAAUA,EAAO0iG,MAAQn0G,KAAKswI,OAAOn8B,KAAOn0G,KAAKswI,OAAOjM,YAAc,IACxE03B,EAAYjwI,UAAY9rB,KAAKswI,OAAOjM,aAItC,IAAI63B,EAAY3nC,GAAK2W,QAAQ6F,GAE7B,IAAKmrB,EACH,MAAM,IAAIlyJ,MAAM,kBAAoB2xJ,EAAgB,cAAgBA,EAAgB,wDAGtF37J,KAAKkjI,MAAQ,IAAIg5B,EAAUH,GAE3B/7J,KAAKkjI,MAAM1R,MAAMzjH,GAAK/N,KAAMA,KAAKm8J,mBAAmB,GACpDrhC,GAAmBJ,iBAAiB16H,KAAKo8J,iBAAmB,GAAIp8J,KAAKkjI,OAErEqyB,GAAsBl4J,SAAQ,SAAU6pG,GACtCswB,EAAO9xB,GAAG8xB,EAAO0L,MAAOh8B,GAAO,SAAUl8F,GACvC,OAAOwsH,EAAO,aAAe/G,GAAcvpB,GAAS,KAAKl8F,SAG7DhE,OAAO0K,KAAK8jJ,IAAmBn4J,SAAQ,SAAU6pG,GAC/CswB,EAAO9xB,GAAG8xB,EAAO0L,MAAOh8B,GAAO,SAAUm1D,GACH,IAAhC7kC,EAAO0L,MAAM0kB,gBAAwBpwB,EAAO0L,MAAMo5B,UACpD9kC,EAAOygC,iBAAiBh9J,KAAK,CAC3B4O,SAAU2tH,EAAO,aAAeg+B,GAAkBtuD,GAAS,KAAKn5F,KAAKypH,GACrEtwB,MAAOm1D,IAMX7kC,EAAO,aAAeg+B,GAAkBtuD,GAAS,KAAKm1D,SAG1Dr8J,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,aAAa,SAAUl4H,GACzC,OAAOwsH,EAAO+kC,qBAAqBvxJ,MAErChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,aAAa,SAAUl4H,GACzC,OAAOwsH,EAAOglC,qBAAqBxxJ,MAErChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,WAAW,SAAUl4H,GACvC,OAAOwsH,EAAOilC,mBAAmBzxJ,MAEnChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,SAAS,SAAUl4H,GACrC,OAAOwsH,EAAOklC,iBAAiB1xJ,MAEjChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,WAAW,SAAUl4H,GACvC,OAAOwsH,EAAOmlC,mBAAmB3xJ,MAEnChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,QAAQ,SAAUl4H,GACpC,OAAOwsH,EAAOolC,gBAAgB5xJ,MAEhChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,aAAa,SAAUl4H,GACzC,OAAOwsH,EAAOqlC,qBAAqB7xJ,MAErChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,SAAS,SAAUl4H,GACrC,OAAOwsH,EAAOslC,iBAAiB9xJ,MAEjChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,kBAAkB,SAAUl4H,GAC9C,OAAOwsH,EAAOulC,0BAA0B/xJ,MAE1ChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,oBAAoB,SAAUl4H,EAAGnR,GACnD,OAAO29H,EAAOwlC,4BAA4BhyJ,EAAGnR,MAE/CmG,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,mBAAmB,SAAUl4H,EAAGlI,GAClD,OAAO00H,EAAOylC,2BAA2BjyJ,EAAGlI,MAE9C9C,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,yBAAyB,SAAUl4H,GACrD,OAAOwsH,EAAO0lC,iCAAiClyJ,MAEjDhL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,yBAAyB,SAAUl4H,GACrD,OAAOwsH,EAAO2lC,iCAAiCnyJ,MAEjDhL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,SAAS,SAAUl4H,GACrC,OAAOwsH,EAAO4lC,iBAAiBpyJ,MAEjChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,gBAAgB,SAAUl4H,GAC5C,OAAOwsH,EAAO6lC,wBAAwBryJ,MAExChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,YAAY,SAAUl4H,GACxC,OAAOwsH,EAAO8lC,oBAAoBtyJ,MAEpChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,cAAc,SAAUl4H,GAC1C,OAAOwsH,EAAO+lC,sBAAsBvyJ,MAEtChL,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,iBAAkBljI,KAAK62J,qBAC3C72J,KAAKw9J,oBAAoBx9J,KAAK06J,SAAS,aAEnC16J,KAAKq8H,aAAer8H,KAAKw9J,uBAC3Bx9J,KAAKy9J,4BAKHz9J,KAAKkjI,MAAMvwH,KAAKme,aAAe9wB,KAAK2S,MAA2B,UAAlBgpJ,GAA8B37J,KAAK6kB,KAClF8gG,GAAU3lH,KAAKkjI,MAAMvwH,KAAM3S,KAAK2S,MAI9B3S,KAAK6kB,MACP7kB,KAAK6kB,IAAI/iB,OAAS,KAClB9B,KAAK6kB,IAAM,OAUf4gF,EAAOi2D,YAAc,WACnB,IAAI/jC,EAAS33H,KAGbgmI,GAAIr2B,MAAMtyG,SAAQ,SAAUG,GAC1B,IAAIiD,EAAQulI,GAAIxoI,GAChBm6H,EAAOl3H,EAAMmlI,aAAejO,EAAOl3H,EAAMklI,iBAE3C3lI,KAAKo8J,gBAAkBthC,GAAmBX,iBAAiBn6H,KAAKkjI,OAChEljI,KAAK40H,UAAW,EAChB50H,KAAKkjI,MAAMh9B,UACXlmG,KAAKkjI,OAAQ,EAETljI,KAAKg4J,oBACPh4J,KAAK44J,QAAU,GACf54J,KAAK8lG,QAAQ,iBAGf9lG,KAAKg4J,mBAAoB,GAe3BvyD,EAAO20B,KAAO,SAAcsjC,GAK1B,YAJehzJ,IAAXgzJ,GACFn7C,EAAMr1F,KAAK,sJAGNltB,KAAKkjI,OAyBdz9B,EAAOg4D,0BAA4B,WAEjCz9J,KAAK29J,+BACL39J,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,QAASljI,KAAKm3J,uBAClCn3J,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,WAAYljI,KAAKq3J,6BAIrCr3J,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,aAAcljI,KAAKu3J,4BACvCv3J,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,YAAaljI,KAAKy3J,2BACtCz3J,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,WAAYljI,KAAK23J,0BAGrC33J,KAAK0lG,GAAG1lG,KAAKkjI,MAAO,MAAOljI,KAAK63J,sBAUlCpyD,EAAOk4D,6BAA+B,WAGpC39J,KAAK4lG,IAAI5lG,KAAKkjI,MAAO,MAAOljI,KAAK63J,qBACjC73J,KAAK4lG,IAAI5lG,KAAKkjI,MAAO,aAAcljI,KAAKu3J,4BACxCv3J,KAAK4lG,IAAI5lG,KAAKkjI,MAAO,YAAaljI,KAAKy3J,2BACvCz3J,KAAK4lG,IAAI5lG,KAAKkjI,MAAO,WAAYljI,KAAK23J,0BACtC33J,KAAK4lG,IAAI5lG,KAAKkjI,MAAO,QAASljI,KAAKm3J,uBACnCn3J,KAAK4lG,IAAI5lG,KAAKkjI,MAAO,WAAYljI,KAAKq3J,8BASxC5xD,EAAO02D,iBAAmB,WACxBn8J,KAAK60H,eAED70H,KAAKswI,OAAOzC,QACd7tI,KAAK26J,UAAU,YAAa36J,KAAKswI,OAAOzC,QAI1C7tI,KAAKq9J,0BAELr9J,KAAK+8J,6BAcPt3D,EAAO82D,qBAAuB,WAE5Bv8J,KAAKmmH,YAAY,aACjBnmH,KAAKmmH,YAAY,eAEjBnmH,KAAK6vB,MAAM,MAEX7vB,KAAK+8J,4BAIA/8J,KAAKk8H,UAWRl8H,KAAKkuJ,YAAW,GAChBluJ,KAAK8lG,QAAQ,eALb9lG,KAAK8lG,QAAQ,aACb9lG,KAAK8lG,QAAQ,cASf9lG,KAAK49J,iBAAoC,IAApB59J,KAAKqB,YAAuBrB,KAAK4xH,SAASkqC,kBAAoB,OAAS97J,KAAKqB,aAUnGokG,EAAOm4D,gBAAkB,SAAyB//J,GAChD,IAAIi6H,EAAS93H,KAEb,GAAKA,KAAKkjI,OAAyB,kBAATrlI,EAA1B,CAMA,IAwBIggK,EAxBAC,EAAe,WACjB,IAAIC,EAAkBjmC,EAAO6V,QAE7B7V,EAAO6V,OAAM,GAEb,IAAIqwB,EAAe,WACjBlmC,EAAO6V,MAAMowB,IAIfjmC,EAAOkhC,qBAAqB/9J,KAAK+iK,GAEjC,IAAIC,EAAenmC,EAAO11H,OAE1B,GAAK43H,GAAUikC,GAIf,OAAOA,EAAa,UAAS,SAAUn7J,GAErC,MADAk7J,IACM,IAAIh0J,MAAM,wDAA0DlH,GAAY,SAmB1F,GAZa,QAATjF,GAAmBmC,KAAK2tI,QAS1BkwB,EAHkB,UAAThgK,GAAqBmC,KAAK2tI,QAGzB3tI,KAAKoC,OAFL07J,KANVD,EAAU79J,KAAKoC,OAEX43H,GAAU6jC,KACZA,EAAUA,EAAQ,SAASC,KAQ1B9jC,GAAU6jC,GAIf,OAAOA,EAAQn7J,MAAK,WAClBo1H,EAAOhyB,QAAQ,CACbjoG,KAAM,mBACNwD,SAAUxD,OAEX,UAAS,WACVi6H,EAAOhyB,QAAQ,CACbjoG,KAAM,mBACNwD,SAAUxD,SAiBhB4nG,EAAOy4D,oBAAsB,SAA6BpzB,QACzC,IAAXA,IACFA,EAAS,IAGX,IAAI32B,EAAM22B,EACNjtI,EAAO,GAEQ,kBAARs2G,IACTA,EAAM22B,EAAO32B,IACbt2G,EAAOitI,EAAOjtI,MAKhBmC,KAAKswI,OAAO7+H,OAASzR,KAAKswI,OAAO7+H,QAAU,GAC3CzR,KAAKswI,OAAO3tB,QAAU3iH,KAAKswI,OAAO3tB,SAAW,GAEzCxO,IAAQt2G,IACVA,EAAOwyI,GAAarwI,KAAMm0G,IAI5Bn0G,KAAKswI,OAAO7+H,OAASo/G,GAAe,GAAIia,EAAQ,CAC9C32B,IAAKA,EACLt2G,KAAMA,IASR,IAPA,IAAI0yI,EAAkBvwI,KAAKswI,OAAO3tB,QAAQzqG,QAAO,SAAU0M,GACzD,OAAOA,EAAEuvF,KAAOvvF,EAAEuvF,MAAQA,KAExBgqD,EAAkB,GAClBC,EAAYp+J,KAAKuoH,GAAG,UACpB81C,EAAoB,GAEfzjK,EAAI,EAAGA,EAAIwjK,EAAUxgK,OAAQhD,IAAK,CACzC,IAAI0jK,EAAY73C,GAAc23C,EAAUxjK,IACxCujK,EAAgBljK,KAAKqjK,GAEjBA,EAAUnqD,KAAOmqD,EAAUnqD,MAAQA,GACrCkqD,EAAkBpjK,KAAKqjK,EAAUnqD,KAMjCkqD,EAAkBzgK,SAAW2yI,EAAgB3yI,OAC/CoC,KAAKswI,OAAO3tB,QAAUw7C,EAEZ5tB,EAAgB3yI,SAC1BoC,KAAKswI,OAAO3tB,QAAU,CAAC3iH,KAAKswI,OAAO7+H,SAIrCzR,KAAKswI,OAAOn8B,IAAMA,GAwCpB1O,EAAO+2D,qBAAuB,SAA8Bt1D,GAC1D,IAAIyiC,EAAS3pI,KAIb,IAAKA,KAAK84J,aAAc,CACtB,IAAIyF,EAAqB,SAA4BpqD,GACnD,OAAOw1B,EAAOu0B,oBAAoB/pD,IAGhCqqD,EAAYx+J,KAAKy+J,gBAAgBtqD,IACjCuqD,EAAWx3D,EAAMiN,IAEjBqqD,IAAc,SAAS3/J,KAAK2/J,IAAc,SAAS3/J,KAAK6/J,MAGrD1+J,KAAK2+J,aAAe3+J,KAAK2+J,YAAYvkC,OAASskC,GAAY1+J,KAAK2+J,YAAY78J,SAAW08J,KACzFD,EAAqB,cAMzBA,EAAmBG,GAIdx3D,EAAMiN,KACTn0G,KAAKkjI,MAAMnW,IAAI,CAAC,YAAa,cAAc,SAAU/hH,GAInD,GAAe,cAAXA,EAAEnN,KAAN,CAIA,IAAI+gK,EAAUj1B,EAAOk1B,QAAQ,cAE7Bl1B,EAAOg1B,YAAYvkC,KAAOwkC,EAE1Bj1B,EAAOu0B,oBAAoBU,OAKjC5+J,KAAK2+J,YAAc,CACjB78J,OAAQ9B,KAAKy+J,gBAAgBtqD,IAC7BimB,KAAMlzB,EAAMiN,KAEdn0G,KAAK8lG,QAAQ,CACXqO,IAAKjN,EAAMiN,IACXt2G,KAAM,eAiBV4nG,EAAOyoD,WAAa,SAAoB4Q,GACtC,QAAgBp0J,IAAZo0J,EAEF,OAAO9+J,KAAK6mI,YAGVi4B,IAAY9+J,KAAK6mI,cAIrB7mI,KAAK6mI,YAAci4B,EAEf9+J,KAAK6mI,aACP7mI,KAAKgmH,SAAS,mBACdhmH,KAAK8lG,QAAQ,cAEb9lG,KAAKmmH,YAAY,qBAarB1gB,EAAOm3D,gBAAkB,WACvB58J,KAAKmmH,YAAY,aACjBnmH,KAAKmmH,YAAY,cACjBnmH,KAAKgmH,SAAS,eAEdhmH,KAAKkuJ,YAAW,GAShBluJ,KAAK8lG,QAAQ,SAefL,EAAO83D,sBAAwB,WACzBv9J,KAAKkjI,MAAM0kB,eAAiB,GAAsC,IAAjC5nJ,KAAKswI,OAAOyuB,mBAC/C/+J,KAAKi4J,iBAAiB56J,SAAQ,SAAU2hK,GACtC,OAAOA,EAAOn1J,SAASm1J,EAAO93D,UAEhClnG,KAAKi4J,iBAAmB,IAG1Bj4J,KAAKswI,OAAOyuB,iBAAmB/+J,KAAKkjI,MAAM0kB,eAQ1C5nJ,KAAK8lG,QAAQ,eAWfL,EAAOg3D,mBAAqB,WAC1B,IAAInyB,EAAStqI,KAEbA,KAAKgmH,SAAS,eAQdhmH,KAAK8lG,QAAQ,WAGb,IAAIm5D,EAAkBj/J,KAAKqkI,cAEvB66B,EAAqB,SAASA,IAC5BD,IAAoB30B,EAAOjG,gBAC7BiG,EAAOnkB,YAAY,eAEnBmkB,EAAO1kC,IAAI,aAAcs5D,KAI7Bl/J,KAAK0lG,GAAG,aAAcw5D,IAYxBz5D,EAAO05D,mBAAqB,WAC1Bn/J,KAAKmmH,YAAY,eAQjBnmH,KAAK8lG,QAAQ,YAWfL,EAAO25D,0BAA4B,WACjCp/J,KAAKmmH,YAAY,eASjBnmH,KAAK8lG,QAAQ,mBAWfL,EAAO45D,mBAAqB,WAC1Br/J,KAAKmmH,YAAY,eAQjBnmH,KAAK8lG,QAAQ,YAWfL,EAAOk3D,mBAAqB,WAC1B38J,KAAKgmH,SAAS,eAQdhmH,KAAK8lG,QAAQ,YAWfL,EAAO65D,kBAAoB,WACzBt/J,KAAKmmH,YAAY,eACjBnmH,KAAKmmH,YAAY,aAQjBnmH,KAAK8lG,QAAQ,WAafL,EAAOo3D,qBAAuB,WAGxB78J,KAAK4xH,SAAS2tC,YAChBh9C,EAAMr1F,KAAK,0EACXltB,KAAKqkI,YAAYrkI,KAAK4xH,SAAS2tC,YAGjCv/J,KAAKgmH,SAAS,mBAWdhmH,KAAK8lG,QAAQ,cAWfL,EAAOq3D,iBAAmB,WACxB98J,KAAKmmH,YAAY,eACjBnmH,KAAKgmH,SAAS,cAQdhmH,KAAK8lG,QAAQ,UAWfL,EAAOi3D,iBAAmB,WACxB18J,KAAKgmH,SAAS,aACdhmH,KAAKmmH,YAAY,eAEbnmH,KAAK4xH,SAASoqC,MAChBh8J,KAAKqkI,YAAY,GACjBrkI,KAAKoC,QACKpC,KAAKk8H,UACfl8H,KAAKqC,QAUPrC,KAAK8lG,QAAQ,UAUfL,EAAOs3D,0BAA4B,WACjC/8J,KAAK0U,SAAS1U,KAAK06J,SAAS,cAa9Bj1D,EAAO2xD,iBAAmB,SAA0BlwD,GAG7ClnG,KAAK64J,iBAIYnuJ,IAAlB1K,KAAK4xH,eAAwDlnH,IAA9B1K,KAAK4xH,SAAS4tC,kBAAiE90J,IAApC1K,KAAK4xH,SAAS4tC,YAAYC,QAA2D,IAApCz/J,KAAK4xH,SAAS4tC,YAAYC,aACjI/0J,IAAlB1K,KAAK4xH,eAAwDlnH,IAA9B1K,KAAK4xH,SAAS4tC,aAAwE,oBAApCx/J,KAAK4xH,SAAS4tC,YAAYC,MAC7Gz/J,KAAK4xH,SAAS4tC,YAAYC,MAAM7uJ,KAAK5Q,KAAMknG,GAClClnG,KAAKk8H,SACdjC,GAAej6H,KAAKoC,QAEpBpC,KAAKqC,WAeXojG,EAAO6xD,uBAAyB,SAAgCpwD,GAC9D,GAAKlnG,KAAK64J,UAAV,CAMA,IAAI6G,EAAeh/J,MAAM+G,UAAU+sH,KAAK5jH,KAAK5Q,KAAKuoH,GAAG,wCAAwC,SAAU51G,GACrG,OAAOA,EAAGozG,SAAS7e,EAAM79E,WAGtBq2I,QAQmBh1J,IAAlB1K,KAAK4xH,eAAwDlnH,IAA9B1K,KAAK4xH,SAAS4tC,kBAAuE90J,IAA1C1K,KAAK4xH,SAAS4tC,YAAYG,cAAuE,IAA1C3/J,KAAK4xH,SAAS4tC,YAAYG,mBACvIj1J,IAAlB1K,KAAK4xH,eAAwDlnH,IAA9B1K,KAAK4xH,SAAS4tC,aAA8E,oBAA1Cx/J,KAAK4xH,SAAS4tC,YAAYG,YAC7G3/J,KAAK4xH,SAAS4tC,YAAYG,YAAY/uJ,KAAK5Q,KAAMknG,GACxClnG,KAAKi/I,eACdj/I,KAAKk/I,iBAELl/I,KAAKm/I,uBAcb15C,EAAOqyD,eAAiB,WACtB93J,KAAKy5J,YAAYz5J,KAAKy5J,eAUxBh0D,EAAO+xD,sBAAwB,WAC7Bx3J,KAAK4/J,cAAgB5/J,KAAKy5J,cAU5Bh0D,EAAOiyD,qBAAuB,WACxB13J,KAAK4/J,eACP5/J,KAAK82H,sBAeTrxB,EAAOmyD,oBAAsB,SAA6B1wD,GAEpDA,EAAM24D,YACR34D,EAAMgkB,kBAYVzlB,EAAOk0D,kBAAoB,WACzB35J,KAAK82H,sBAOPrxB,EAAOq6D,uBAAyB,WAC1B9/J,KAAKi/I,eACPj/I,KAAKgmH,SAAS,kBAEdhmH,KAAKmmH,YAAY,mBAQrB1gB,EAAOixD,0BAA4B,SAAmC1rJ,GACpE,IAAI+0J,EAAe/0J,EAAEqe,OAAOvnB,OAG5B,IAAIi+J,GAAgBA,IAAiB//J,KAArC,CAIA,IAAI2S,EAAK3S,KAAK2S,KACVqtJ,EAAO,IAAShgK,KAAK++I,OAAO53B,qBAAuBx0G,GAElDqtJ,GAAQrtJ,EAAGirG,QACdoiD,EAAOrtJ,EAAGirG,QAAQ,IAAM59G,KAAK++I,OAAOkhB,aAC1BD,GAAQrtJ,EAAGutJ,oBACrBF,EAAOrtJ,EAAGutJ,kBAAkB,IAAMlgK,KAAK++I,OAAOkhB,aAGhDjgK,KAAKi/I,aAAa+gB,KAiBpBv6D,EAAOu3D,4BAA8B,SAAqC91D,EAAOrtG,GAC/E,IAAIsmK,EAASngK,KAETnG,IACEA,EAAK25J,sBACPxzJ,KAAKgmH,SAAS,qBACdhmH,KAAKkjI,MAAMrW,IAAI,uBAAuB,WACpCszC,EAAOh6C,YAAY,yBAIvBnmH,KAAKi/I,aAAaplJ,EAAKolJ,gBAI3Bx5C,EAAOw3D,2BAA6B,SAAoC/1D,EAAOpkG,GAC7E9C,KAAK8lG,QAAQ,kBAAmBhjG,IAOlC2iG,EAAO26D,6BAA+B,WAChCpgK,KAAK0+I,uBACP1+I,KAAKgmH,SAAS,0BAEdhmH,KAAKmmH,YAAY,2BAcrB1gB,EAAOy3D,iCAAmC,SAA0Ch2D,GAClFlnG,KAAK0+I,sBAAqB,IAa5Bj5C,EAAO03D,iCAAmC,SAA0Cj2D,GAClFlnG,KAAK0+I,sBAAqB,IAU5Bj5C,EAAO23D,iBAAmB,WACxB,IAAIvtI,EAAQ7vB,KAAKkjI,MAAMrzG,QACvB7vB,KAAK6vB,MAAMA,IAWb41E,EAAO63D,oBAAsB,WAC3B,IAAIzjK,EAAO,KAEPwX,UAAUzT,OAAS,IACrB/D,EAAOwX,UAAU,IAUnBrR,KAAK8lG,QAAQ,WAAYjsG,IAU3B4rG,EAAOyyC,SAAW,WAChB,OAAOl4I,KAAKswI,QAYd7qC,EAAOkzD,YAAc,WACnB34J,KAAKswI,OAAS,CAKZjM,YAAa,EACbg8B,SAAU,EACVC,kBAAmBtgK,KAAK4xH,SAAS0uC,kBACjC5rJ,SAAU0+I,IACVrS,WAAY,EACZge,iBAAkB/+J,KAAKugK,sBACvB5gJ,MAAO,KACPw0F,IAAK,GACL1iG,OAAQ,GACRkxG,QAAS,GACTylC,cAAe,GACfva,OAAQ,IAgBZpoC,EAAOk1D,UAAY,SAAmBjvJ,EAAQ0hI,GAE5CptI,KAAKwxH,OAAM,WACT,GAAI9lH,KAAUqiI,GACZ,OAAO1iH,GAAIrrB,KAAKs5J,YAAat5J,KAAKkjI,MAAOx3H,EAAQ0hI,GAC5C,GAAI1hI,KAAUwiI,GACnB,OAAOb,GAAQrtI,KAAKs5J,YAAat5J,KAAKkjI,MAAOx3H,EAAQ0hI,GAGvD,IACMptI,KAAKkjI,OACPljI,KAAKkjI,MAAMx3H,GAAQ0hI,GAErB,MAAOpiI,GAEP,MADAu3G,EAAMv3G,GACAA,MAEP,IAeLy6F,EAAOi1D,SAAW,SAAkBhvJ,GAClC,GAAK1L,KAAKkjI,OAAUljI,KAAKkjI,MAAMtO,SAA/B,CAIA,GAAIlpH,KAAUgiI,GACZ,OAAOtiH,GAAIprB,KAAKs5J,YAAat5J,KAAKkjI,MAAOx3H,GACpC,GAAIA,KAAUwiI,GACnB,OAAOb,GAAQrtI,KAAKs5J,YAAat5J,KAAKkjI,MAAOx3H,GAO/C,IACE,OAAO1L,KAAKkjI,MAAMx3H,KAClB,MAAOV,GAEP,QAA2BN,IAAvB1K,KAAKkjI,MAAMx3H,GAEb,MADA62G,EAAM,aAAe72G,EAAS,2BAA6B1L,KAAK67J,UAAY,wBAAyB7wJ,GAC/FA,EAIR,GAAe,cAAXA,EAAExN,KAGJ,MAFA+kH,EAAM,aAAe72G,EAAS,mBAAqB1L,KAAK67J,UAAY,gCAAiC7wJ,GACrGhL,KAAKkjI,MAAMtO,UAAW,EAChB5pH,EAKR,MADAu3G,EAAMv3G,GACAA,KAeVy6F,EAAOrjG,KAAO,WACZ,IAAIo+J,EAAUxgK,KAEVgqI,EAAehqI,KAAK4xH,SAASqY,SAAW,IAASA,QAErD,OAAID,EACK,IAAIA,GAAa,SAAUy2B,GAChCD,EAAQE,MAAMD,MAIXzgK,KAAK0gK,SAadj7D,EAAOi7D,MAAQ,SAAe72J,GAC5B,IAAI82J,EAAU3gK,UAEG,IAAb6J,IACFA,EAAWowH,IAGbj6H,KAAK+4J,eAAe99J,KAAK4O,GACzB,IAAI+2J,EAAa9/J,SAASd,KAAK84J,eAAiB94J,KAAKm0G,OAASn0G,KAAKkwJ,eAC/D2Q,EAAgB//J,QAAQ6jH,IAAiBD,IAS7C,GAPI1kH,KAAK8gK,cACP9gK,KAAK4lG,IAAI,CAAC,QAAS,aAAc5lG,KAAK8gK,aACtC9gK,KAAK8gK,YAAc,OAKhB9gK,KAAK40H,WAAagsC,EAYrB,OAXA5gK,KAAK8gK,YAAc,SAAU91J,GAC3B21J,EAAQD,SAGV1gK,KAAK6sH,IAAI,CAAC,QAAS,aAAc7sH,KAAK8gK,mBAGjCF,GAAcC,GACjB7gK,KAAKslI,QAOT,IAAI9+G,EAAMxmB,KAAK06J,SAAS,QAEpBqG,EAAiBF,GAAiB7gK,KAAK4lH,SAAS,aAEhDm7C,GACF/gK,KAAKghK,oBAIK,OAARx6I,EACFxmB,KAAKihK,0BAELjhK,KAAKkhK,kBAAkB16I,IAU3Bi/E,EAAOw7D,wBAA0B,WAC/B,IAAIE,EAAQnhK,KAAKg5J,qBAAqBj8J,MAAM,GAC5CiD,KAAKg5J,qBAAuB,GAC5BmI,EAAM9jK,SAAQ,SAAU+jK,GACtBA,QAcJ37D,EAAOy7D,kBAAoB,SAA2B16I,GACpD,IAAIu/E,EAAY/lG,KAAK+4J,eAAeh8J,MAAM,GAC1CiD,KAAK+4J,eAAiB,GAEtB/4J,KAAKg5J,qBAAuB,GAC5BjzD,EAAU1oG,SAAQ,SAAUgtI,GAC1BA,EAAG7jH,OAWPi/E,EAAOpjG,MAAQ,WACbrC,KAAK26J,UAAU,UAWjBl1D,EAAOy2B,OAAS,WAEd,OAAmC,IAA5Bl8H,KAAK06J,SAAS,WAYvBj1D,EAAOkjC,OAAS,WACd,OAAO3oI,KAAK06J,SAAS,WAAavhC,GAAiB,EAAG,IAexD1zB,EAAOojC,UAAY,SAAmBoqB,GACpC,GAA2B,qBAAhBA,EACT,OAAOjzJ,KAAKk5J,WAGdl5J,KAAKk5J,aAAejG,EACpBjzJ,KAAK26J,UAAU,eAAgB36J,KAAKk5J,YAEhCjG,EACFjzJ,KAAKgmH,SAAS,iBAEdhmH,KAAKmmH,YAAY,kBAcrB1gB,EAAO4+B,YAAc,SAAqBp0H,GACxC,MAAuB,qBAAZA,GACLA,EAAU,IACZA,EAAU,GAGPjQ,KAAK40H,WAAY50H,KAAK84J,cAAiB94J,KAAKkjI,OAAUljI,KAAKkjI,MAAMtO,UAOtE50H,KAAK26J,UAAU,iBAAkB1qJ,QACjCjQ,KAAKswI,OAAO+vB,SAAW,KAPrBrgK,KAAKswI,OAAO+vB,SAAWpwJ,EACvBjQ,KAAK4lG,IAAI,UAAW5lG,KAAK+2J,0BACzB/2J,KAAK6sH,IAAI,UAAW7sH,KAAK+2J,wBAe7B/2J,KAAKswI,OAAOjM,YAAcrkI,KAAK06J,SAAS,gBAAkB,EACnD16J,KAAKswI,OAAOjM,cASrB5+B,EAAOuxD,eAAiB,WACtBh3J,KAAKqkI,YAAYrkI,KAAKswI,OAAO+vB,WAoB/B56D,EAAO/wF,SAAW,SAAkBzE,GAClC,QAAgBvF,IAAZuF,EAEF,YAAgCvF,IAAzB1K,KAAKswI,OAAO57H,SAAyB1U,KAAKswI,OAAO57H,SAAW0+I,IAGrEnjJ,EAAUwS,WAAWxS,GAEjBA,EAAU,IACZA,EAAUyF,KAGRzF,IAAYjQ,KAAKswI,OAAO57H,WAG1B1U,KAAKswI,OAAO57H,SAAWzE,EAEnBA,IAAYyF,IACd1V,KAAKgmH,SAAS,YAEdhmH,KAAKmmH,YAAY,YAGd5xG,MAAMtE,IAQTjQ,KAAK8lG,QAAQ,oBAanBL,EAAO+yC,cAAgB,WACrB,OAAOx4I,KAAK0U,WAAa1U,KAAKqkI,eAWhC5+B,EAAO8yC,qBAAuB,WAC5B,OAAOxiI,KAAKG,MAAMlW,KAAK0U,YAAcqB,KAAKG,MAAMlW,KAAKqkI,gBAgBvD5+B,EAAO4zB,SAAW,WAChB,IAAIA,EAAWr5H,KAAK06J,SAAS,YAM7B,OAJKrhC,GAAaA,EAASz7H,SACzBy7H,EAAWF,GAAiB,EAAG,IAG1BE,GAYT5zB,EAAO2zB,gBAAkB,WACvB,OAAOA,GAAgBp5H,KAAKq5H,WAAYr5H,KAAK0U,aAW/C+wF,EAAOq1C,YAAc,WACnB,IAAIzhB,EAAWr5H,KAAKq5H,WAChB3kH,EAAW1U,KAAK0U,WAChB3C,EAAMsnH,EAAStnH,IAAIsnH,EAASz7H,OAAS,GAMzC,OAJImU,EAAM2C,IACR3C,EAAM2C,GAGD3C,GAgBT0zF,EAAOooC,OAAS,SAAgBwzB,GAC9B,IAAIvgB,EAEJ,YAAyBp2I,IAArB22J,GAEFvgB,EAAM/qI,KAAKK,IAAI,EAAGL,KAAKM,IAAI,EAAGoM,WAAW4+I,KACzCrhK,KAAKswI,OAAOzC,OAASiT,EACrB9gJ,KAAK26J,UAAU,YAAa7Z,QAExBA,EAAM,GACR9gJ,KAAKugJ,YAAYO,MAOrBA,EAAMr+H,WAAWziB,KAAK06J,SAAS,WACxBnmJ,MAAMusI,GAAO,EAAIA,IAe1Br7C,EAAOkoC,MAAQ,SAAe2zB,GAC5B,QAAe52J,IAAX42J,EAKJ,OAAOthK,KAAK06J,SAAS,WAAY,EAJ/B16J,KAAK26J,UAAU,WAAY2G,IAkC/B77D,EAAO87D,aAAe,SAAsBC,GAC1C,YAAsB92J,IAAlB82J,EACKxhK,KAAK26J,UAAU,kBAAmB6G,GAGpCxhK,KAAK06J,SAAS,kBAAmB,GAkB1Cj1D,EAAO86C,YAAc,SAAqB8gB,GACxC,QAAyB32J,IAArB22J,GAAuD,IAArBA,EAKtC,OAAOrhK,KAAKswI,OAAOyQ,WAJjB/gJ,KAAKswI,OAAOyQ,WAAasgB,GAe7B57D,EAAOguD,mBAAqB,WAC1B,OAAOzzJ,KAAK06J,SAAS,wBAAyB,GAmBhDj1D,EAAOw5C,aAAe,SAAsBwiB,GAC1C,QAAa/2J,IAAT+2J,EAAoB,CACtB,IAAIC,EAAW1hK,KAAK+3J,cAcpB,OAbA/3J,KAAK+3J,cAAgBj3J,QAAQ2gK,GAIzBzhK,KAAK+3J,gBAAkB2J,GAAY1hK,KAAK++I,OAAOn+B,UAKjD5gH,KAAK8lG,QAAQ,yBAGf9lG,KAAK8/J,yBAIP,OAAO9/J,KAAK+3J,eAkBdtyD,EAAO05C,kBAAoB,SAA2BwiB,GACpD,IAAI33B,EAAehqI,KAAK4xH,SAASqY,SAAW,IAASA,QAErD,GAAID,EAAc,CAChB,IAAI1mI,EAAOtD,KACX,OAAO,IAAIgqI,GAAa,SAAUy2B,EAASv2B,GACzC,SAAS03B,IACPt+J,EAAKsiG,IAAI,kBAAmB13E,GAC5B5qB,EAAKsiG,IAAI,mBAAoBm/C,GAG/B,SAASA,IACP6c,IACAnB,IAGF,SAASvyI,EAAaljB,EAAGlI,GACvB8+J,IACA13B,EAAOpnI,GAGTQ,EAAKupH,IAAI,mBAAoBk4B,GAC7BzhJ,EAAKupH,IAAI,kBAAmB3+F,GAC5B,IAAI2vI,EAAUv6J,EAAKu+J,yBAAyBF,GAExC9D,IACFA,EAAQn7J,KAAKk/J,EAAYA,GACzB/D,EAAQn7J,KAAK+9J,EAASv2B,OAK5B,OAAOlqI,KAAK6hK,4BAGdp8D,EAAOo8D,yBAA2B,SAAkCF,GAClE,IAEIG,EAFAC,EAAU/hK,KAoBd,GAfKA,KAAK++I,OAAOn+B,WACfkhD,EAAY9hK,KAAK4xH,SAASquC,YAAcjgK,KAAK4xH,SAASquC,WAAWr2J,SAAW,QAElDc,IAAtBi3J,IACFG,EAAYH,IAWZ3hK,KAAK++I,OAAOI,kBAAmB,CACjC,IAAI0e,EAAU79J,KAAK+vH,IAAI/vH,KAAK++I,OAAOI,mBAAmB2iB,GAUtD,OARIjE,GACFA,EAAQn7J,MAAK,WACX,OAAOq/J,EAAQ9iB,cAAa,MAC3B,WACD,OAAO8iB,EAAQ9iB,cAAa,MAIzB4e,EACE79J,KAAKkjI,MAAMuwB,uBAA4D,KAAnCzzJ,KAAK4xH,SAASowC,iBAG3DhiK,KAAK26J,UAAU,mBAIf36J,KAAKiiK,mBAUTx8D,EAAOy5C,eAAiB,WACtB,IAAIlV,EAAehqI,KAAK4xH,SAASqY,SAAW,IAASA,QAErD,GAAID,EAAc,CAChB,IAAI1mI,EAAOtD,KACX,OAAO,IAAIgqI,GAAa,SAAUy2B,EAASv2B,GACzC,SAAS03B,IACPt+J,EAAKsiG,IAAI,kBAAmB13E,GAC5B5qB,EAAKsiG,IAAI,mBAAoBm/C,GAG/B,SAASA,IACP6c,IACAnB,IAGF,SAASvyI,EAAaljB,EAAGlI,GACvB8+J,IACA13B,EAAOpnI,GAGTQ,EAAKupH,IAAI,mBAAoBk4B,GAC7BzhJ,EAAKupH,IAAI,kBAAmB3+F,GAC5B,IAAI2vI,EAAUv6J,EAAK4+J,wBAEfrE,IACFA,EAAQn7J,KAAKk/J,EAAYA,GAEzB/D,EAAQn7J,KAAK+9J,EAASv2B,OAK5B,OAAOlqI,KAAKkiK,yBAGdz8D,EAAOy8D,sBAAwB,WAC7B,IAAIC,EAAUniK,KAEd,GAAIA,KAAK++I,OAAOI,kBAAmB,CACjC,IAAI0e,EAAU,IAAS79J,KAAK++I,OAAOG,kBAUnC,OARI2e,GAGF5jC,GAAe4jC,EAAQn7J,MAAK,WAC1B,OAAOy/J,EAAQljB,cAAa,OAIzB4e,EACE79J,KAAKkjI,MAAMuwB,uBAA4D,KAAnCzzJ,KAAK4xH,SAASowC,iBAC3DhiK,KAAK26J,UAAU,kBAEf36J,KAAKoiK,kBAWT38D,EAAOw8D,gBAAkB,WACvBjiK,KAAKi/I,cAAa,GAClBj/I,KAAKqiK,cAAe,EAEpBriK,KAAKsiK,gBAAkB,IAAS/0J,gBAAgBnN,MAAMmiK,SAEtD78D,GAAG,IAAU,UAAW1lG,KAAK22J,0BAE7B,IAASppJ,gBAAgBnN,MAAMmiK,SAAW,SAE1Cv8C,GAAS,IAAS77G,KAAM,mBAMxBnK,KAAK8lG,QAAQ,oBAWfL,EAAOmxD,mBAAqB,SAA4B1vD,GAClD,IAAQ8I,WAAW9I,EAAO,SACA,IAAxBlnG,KAAKi/I,iBACFj/I,KAAKqiK,aAGRriK,KAAKoiK,iBAFLpiK,KAAKk/I,mBAcbz5C,EAAO28D,eAAiB,WACtBpiK,KAAKi/I,cAAa,GAClBj/I,KAAKqiK,cAAe,EACpBz8D,GAAI,IAAU,UAAW5lG,KAAK22J,0BAE9B,IAASppJ,gBAAgBnN,MAAMmiK,SAAWviK,KAAKsiK,gBAE/Cn8C,GAAY,IAASh8G,KAAM,mBAQ3BnK,KAAK8lG,QAAQ,mBAWfL,EAAO0kC,wBAA0B,SAAiC/iI,GAChE,QAAcsD,IAAVtD,EACF,OAAOpH,KAAK06J,SAAS,2BAGvB16J,KAAK26J,UAAU,6BAA8BvzJ,GAC7CpH,KAAK4xH,SAASuY,wBAA0B/iI,EACxCpH,KAAK8lG,QAAQ,mCAefL,EAAOi5C,qBAAuB,SAA8B8jB,GAC1D,YAAc93J,IAAV83J,GACFxiK,KAAKyiK,wBAA0BD,OAC/BxiK,KAAKogK,kCAIEpgK,KAAKyiK,uBAgBhBh9D,EAAOskC,wBAA0B,WAC/B,GAAI,4BAA6B,MAA+C,IAAnC/pI,KAAKmqI,0BAOhD,OAAOnqI,KAAK06J,SAAS,4BAezBj1D,EAAOk5C,qBAAuB,WAC5B,GAAI,4BAA6B,IAO/B,OAAO,IAASA,wBAgBpBl5C,EAAOswB,cAAgB,SAAuB7uB,GAC5C,IAAIs4D,EAAcx/J,KAAK4xH,SAAS4tC,YAEhC,GAAKA,GAAgBA,EAAYkD,QAAjC,CAMA,IAAIC,EAAiB,SAAwBhwJ,GAC3C,IAAI0P,EAAU1P,EAAG0P,QAAQ1kB,cAEzB,GAAIgV,EAAGiwJ,kBACL,OAAO,EAKT,IAAIC,EAAoB,CAAC,SAAU,WAAY,SAAU,QAAS,QAAS,UAE3E,GAAgB,UAAZxgJ,EACF,OAA+C,IAAxCwgJ,EAAkB55J,QAAQ0J,EAAG9U,MAItC,IAAIilK,EAAe,CAAC,YACpB,OAA0C,IAAnCA,EAAa75J,QAAQoZ,IAI1BsgJ,EAAe3iK,KAAK+vH,IAAIjZ,cAAcqmB,iBAIP,oBAAxBqiC,EAAYkD,QACrBlD,EAAYkD,QAAQ9xJ,KAAK5Q,KAAMknG,GAE/BlnG,KAAK+iK,cAAc77D,MAgBvBzB,EAAOs9D,cAAgB,SAAuB77D,GAC5C,IAAIw7D,EAAU1iK,KAAK4xH,SAAS4tC,YAAcx/J,KAAK4xH,SAAS4tC,YAAYkD,QAAU,GAE1EM,EAAwBN,EAAQO,cAChCA,OAA0C,IAA1BD,EAAmC,SAAUE,GAC/D,OAAO,IAAQlzD,WAAWkzD,EAAc,MACtCF,EACAG,EAAmBT,EAAQU,QAC3BA,OAA+B,IAArBD,EAA8B,SAAUD,GACpD,OAAO,IAAQlzD,WAAWkzD,EAAc,MACtCC,EACAE,EAAwBX,EAAQY,aAChCA,OAAyC,IAA1BD,EAAmC,SAAUH,GAC9D,OAAO,IAAQlzD,WAAWkzD,EAAc,MAAQ,IAAQlzD,WAAWkzD,EAAc,UAC/EG,EAEJ,GAAIJ,EAAcryJ,KAAK5Q,KAAMknG,GAAQ,CACnCA,EAAMgkB,iBACNhkB,EAAMukB,kBACN,IAAI83C,EAAWjyC,GAAY0C,aAAa,qBAEQ,IAA5C,IAASh0H,KAAK++I,OAAOC,oBACvBukB,EAAS97J,UAAU8pI,YAAY3gI,KAAK5Q,KAAMknG,QAEvC,GAAIk8D,EAAQxyJ,KAAK5Q,KAAMknG,GAAQ,CACpCA,EAAMgkB,iBACNhkB,EAAMukB,kBACN,IAAIo1B,EAAavvB,GAAY0C,aAAa,cAC1C6sB,EAAWp5I,UAAU8pI,YAAY3gI,KAAK5Q,KAAMknG,QACvC,GAAIo8D,EAAa1yJ,KAAK5Q,KAAMknG,GAAQ,CACzCA,EAAMgkB,iBACNhkB,EAAMukB,kBACN,IAAIirB,EAAaplB,GAAY0C,aAAa,cAC1C0iB,EAAWjvI,UAAU8pI,YAAY3gI,KAAK5Q,KAAMknG,KAgBhDzB,EAAOmlC,YAAc,SAAqB/sI,GAGxC,IAFA,IAAIkuI,EAEKnxI,EAAI,EAAGi2I,EAAI7wI,KAAK4xH,SAASkf,UAAWl2I,EAAIi2I,EAAEjzI,OAAQhD,IAAK,CAC9D,IAAIm2I,EAAWF,EAAEj2I,GACbw/H,EAAO7F,GAAK2W,QAAQ6F,GAQxB,GALK3W,IACHA,EAAO9I,GAAY0C,aAAa+c,IAI7B3W,GAML,GAAIA,EAAKpd,gBACP+uB,EAAM3R,EAAKwQ,YAAY/sI,GAEnBkuI,GACF,OAAOA,OATTxpB,EAAM1yF,MAAM,QAAWkhH,EAAW,qEActC,MAAO,IAeTtrC,EAAO+9D,aAAe,SAAsB7gD,GAC1C,IAoCI8gD,EApCAC,EAAU1jK,KAIV2jK,EAAQ3jK,KAAK4xH,SAASkf,UAAU9xI,KAAI,SAAU+xI,GAChD,MAAO,CAACA,EAAUxc,GAAK2W,QAAQ6F,OAC9B74H,QAAO,SAAU9E,GAClB,IAAI29H,EAAW39H,EAAK,GAChBgnH,EAAOhnH,EAAK,GAGhB,OAAIgnH,EAEKA,EAAKpd,eAGduF,EAAM1yF,MAAM,QAAWkhH,EAAW,sEAC3B,MAKL6yB,EAAiC,SAAwCC,EAAYC,EAAYC,GACnG,IAAI5R,EAUJ,OATA0R,EAAWrvC,MAAK,SAAUwvC,GACxB,OAAOF,EAAWtvC,MAAK,SAAUyvC,GAG/B,GAFA9R,EAAQ4R,EAAOC,EAAaC,GAExB9R,EACF,OAAO,QAINA,GAKL+R,EAAO,SAAc51I,GACvB,OAAO,SAAU9oB,EAAGT,GAClB,OAAOupB,EAAGvpB,EAAGS,KAIb2+J,EAAS,SAAgB7qJ,EAAO7H,GAClC,IAAIs/H,EAAWz3H,EAAM,GACjB8gH,EAAO9gH,EAAM,GAEjB,GAAI8gH,EAAKyQ,cAAcp5H,EAAQiyJ,EAAQ9xC,SAASmf,EAASpzI,gBACvD,MAAO,CACL8T,OAAQA,EACR2oH,KAAM2W,IAeZ,OANE0yB,EAFEzjK,KAAK4xH,SAASwyC,YAEKR,EAA+BjhD,EAASghD,EAAOO,EAAKC,IAGpDP,EAA+BD,EAAOhhD,EAASwhD,GAG/DV,IAAsB,GAqB/Bh+D,EAAO4+D,WAAa,SAAoB5yJ,EAAQ6yJ,GAC9C,IAAIC,EAAUvkK,KAGd,GAAsB,qBAAXyR,EACT,OAAOzR,KAAKswI,OAAOn8B,KAAO,GAIxBn0G,KAAKwkK,oBACPxkK,KAAKwkK,qBAKP,IAAI7hD,EAAU6tB,GAAa/+H,GAI3B,GAAKkxG,EAAQ/kH,QAwDb,GA7CAoC,KAAK84J,cAAe,EAGfwL,IACHtkK,KAAKswI,OAAO3tB,QAAUA,GAGxB3iH,KAAKk+J,oBAAoBv7C,EAAQ,IAEjC2pB,GAAUtsI,KAAM2iH,EAAQ,IAAI,SAAU8hD,EAAkBt2B,GACtDo2B,EAAQjL,YAAcnrB,EAGjBm2B,IACHC,EAAQj0B,OAAO3tB,QAAUA,GAG3B4hD,EAAQrG,oBAAoBuG,GAE5B,IAAI3hK,EAAMyhK,EAAQG,KAAKD,GAEvB,GAAI3hK,EACF,OAAI6/G,EAAQ/kH,OAAS,EACZ2mK,EAAQF,WAAW1hD,EAAQ5lH,MAAM,KAG1CwnK,EAAQzL,cAAe,EAEvByL,EAAQh6J,YAAW,WACjBvK,KAAK6vB,MAAM,CACT7iB,KAAM,EACN6qF,QAAS73F,KAAK4xH,SAAS+yC,wBAExB,QAIHJ,EAAQ1vC,gBAKVmY,GAAQmB,EAAKo2B,EAAQrhC,UAGnBljI,KAAK4xH,SAASgzC,cAAgBjiD,EAAQ/kH,OAAS,EAAG,CACpD,IAAIinK,EAAQ,WAEVN,EAAQ10I,MAAM,MAEd00I,EAAQF,WAAW1hD,EAAQ5lH,MAAM,IAAI,IAGnC+nK,EAAyB,WAC3BP,EAAQ3+D,IAAI,QAASi/D,IAGvB7kK,KAAK6sH,IAAI,QAASg4C,GAClB7kK,KAAK6sH,IAAI,UAAWi4C,GAEpB9kK,KAAKwkK,mBAAqB,WACxBD,EAAQ3+D,IAAI,QAASi/D,GAErBN,EAAQ3+D,IAAI,UAAWk/D,UAzEzB9kK,KAAKuK,YAAW,WACdvK,KAAK6vB,MAAM,CACT7iB,KAAM,EACN6qF,QAAS73F,KAAK4xH,SAAS+yC,wBAExB,IAyFPl/D,EAAO0O,IAAM,SAAa1iG,GACxB,OAAOzR,KAAKqkK,WAAW5yJ,GAAQ,IAiBjCg0F,EAAOi/D,KAAO,SAAcjzJ,GAC1B,IAAIszJ,EAAU/kK,KAEVglK,EAAahlK,KAAKwjK,aAAa,CAAC/xJ,IAEpC,OAAKuzJ,IAIAt0C,GAAgBs0C,EAAW5qC,KAAMp6H,KAAK67J,YAY3C77J,KAAKwxH,OAAM,WAKLxxH,KAAKkjI,MAAMv0H,YAAYlH,UAAUgC,eAAe,aAClDzJ,KAAK26J,UAAU,YAAalpJ,GAE5BzR,KAAK26J,UAAU,MAAOlpJ,EAAO0iG,KAG/Bn0G,KAAK84J,cAAe,KACnB,IACI,IAxBL94J,KAAK84J,cAAe,EAEpB94J,KAAKgxI,UAAUg0B,EAAW5qC,KAAM4qC,EAAWvzJ,QAC3CzR,KAAKkjI,MAAM1R,OAAM,WACfuzC,EAAQjM,cAAe,MAElB,KAyBXrzD,EAAO6/B,KAAO,WACZtlI,KAAK26J,UAAU,SASjBl1D,EAAO+iC,MAAQ,WACb,IAAIy8B,EAAUjlK,KAEVgqI,EAAehqI,KAAK4xH,SAASqY,SAAW,IAASA,QAErD,GAAIjqI,KAAKk8H,WAAa8N,EACpBhqI,KAAKklK,eACA,CACL,IAAI5uB,EAAct2I,KAAKoC,OACvB63H,GAAeqc,EAAY5zI,MAAK,WAC9B,OAAOuiK,EAAQC,iBAKrBz/D,EAAOy/D,SAAW,WACZllK,KAAKkjI,OACPljI,KAAKkjI,MAAMmF,YAAY,QAGzBroI,KAAK24J,cACL34J,KAAKqyI,OAAO,IACZryI,KAAKgxI,UAAUhxI,KAAK4xH,SAASkf,UAAU,GAAI,MAC3C9wI,KAAK26J,UAAU,SACf36J,KAAKmlK,qBAED92C,GAAUruH,OACZA,KAAK8lG,QAAQ,gBASjBL,EAAO0/D,mBAAqB,WAC1BnlK,KAAKghK,oBACLhhK,KAAKolK,qBACLplK,KAAKqlK,mBAOP5/D,EAAOu7D,kBAAoB,WACzBhhK,KAAKqkI,YAAY,GAEjB,IAAI7qH,EAAQxZ,KAAK2B,YAAc,GAC3B2jK,EAAkB9rJ,EAAM8rJ,gBACxB/sB,EAAuB/+H,EAAM++H,qBAE7B+sB,GACFA,EAAgB7tB,gBAGdc,GACFA,EAAqBd,iBAQzBhyC,EAAO2/D,mBAAqB,WAC1BplK,KAAK4nJ,aAAa5nJ,KAAKugK,uBACvBvgK,KAAKu9J,yBAOP93D,EAAO4/D,gBAAkB,WACvBrlK,KAAK6tI,OAAO,GACZ7tI,KAAK8lG,QAAQ,iBAUfL,EAAO8/D,eAAiB,WACtB,IAAI9zJ,EAASzR,KAAKy+J,gBACd97C,EAAU,GAMd,OAJmC,IAA/B37G,OAAO0K,KAAKD,GAAQ7T,QACtB+kH,EAAQ1nH,KAAKwW,GAGRzR,KAAKswI,OAAO3tB,SAAWA,GAUhCld,EAAOg5D,cAAgB,WACrB,OAAOz+J,KAAKswI,OAAO7+H,QAAU,IAW/Bg0F,EAAOyqD,WAAa,WAClB,OAAOlwJ,KAAKy+J,iBAAmBz+J,KAAKy+J,gBAAgBtqD,KAAO,IAY7D1O,EAAO84C,YAAc,WACnB,OAAOv+I,KAAKy+J,iBAAmBz+J,KAAKy+J,gBAAgB5gK,MAAQ,IAc9D4nG,EAAOitD,QAAU,SAAiBtrJ,GAChC,YAAcsD,IAAVtD,GACFpH,KAAK26J,UAAU,aAAcvzJ,QAC7BpH,KAAK4xH,SAAS8gC,QAAUtrJ,IAInBpH,KAAK06J,SAAS,YAoBvBj1D,EAAOpkG,SAAW,SAAkB+F,GAElC,QAAcsD,IAAVtD,EACF,OAAOpH,KAAK4xH,SAASvwH,WAAY,EAGnC,IAAImkK,EAEiB,kBAAVp+J,GAAsB,mBAAmBvI,KAAKuI,KAAoB,IAAVA,GAAkBpH,KAAK4xH,SAASkqC,mBACjG97J,KAAK4xH,SAASvwH,SAAW+F,EACzBpH,KAAK49J,gBAAiC,kBAAVx2J,EAAqBA,EAAQ,QACzDo+J,GAAe,GAKfxlK,KAAK4xH,SAASvwH,WAHJ+F,EAMZo+J,EAAuC,qBAAjBA,EAA+BxlK,KAAK4xH,SAASvwH,SAAWmkK,EAK1ExlK,KAAKkjI,OACPljI,KAAK26J,UAAU,cAAe6K,IAqBlC//D,EAAO+kC,YAAc,SAAqBpjI,GACxC,YAAcsD,IAAVtD,GACFpH,KAAK26J,UAAU,iBAAkBvzJ,GACjCpH,KAAK4xH,SAAS4Y,YAAcpjI,EACrBpH,MAGFA,KAAK06J,SAAS,gBAcvBj1D,EAAOu2D,KAAO,SAAc50J,GAC1B,YAAcsD,IAAVtD,GACFpH,KAAK26J,UAAU,UAAWvzJ,QAC1BpH,KAAK4xH,SAASoqC,KAAO50J,IAIhBpH,KAAK06J,SAAS,SAevBj1D,EAAO4sC,OAAS,SAAgBl+B,GAC9B,QAAYzpG,IAARypG,EACF,OAAOn0G,KAAK44J,QAKTzkD,IACHA,EAAM,IAGJA,IAAQn0G,KAAK44J,UAKjB54J,KAAK44J,QAAUzkD,EAEfn0G,KAAK26J,UAAU,YAAaxmD,GAC5Bn0G,KAAKg4J,mBAAoB,EASzBh4J,KAAK8lG,QAAQ,kBAgBfL,EAAO43D,wBAA0B,WAC/B,KAAMr9J,KAAK44J,SAAW54J,KAAK4xH,SAASqqC,wBAA0Bj8J,KAAKkjI,OAASljI,KAAKkjI,MAAMmP,OAAQ,CAC7F,IAAIozB,EAAYzlK,KAAKkjI,MAAMmP,UAAY,GAEnCozB,IAAczlK,KAAK44J,UACrB54J,KAAK44J,QAAU6M,EACfzlK,KAAKg4J,mBAAoB,EAEzBh4J,KAAK8lG,QAAQ,mBAkBnBL,EAAO42B,SAAW,SAAkBge,GAClC,QAAa3vI,IAAT2vI,EACF,QAASr6I,KAAK64J,UAGhBxe,IAASA,EAELr6I,KAAK64J,YAAcxe,IAIvBr6I,KAAK64J,UAAYxe,EAEbr6I,KAAKw9J,uBACPx9J,KAAK26J,UAAU,cAAetgB,GAG5Br6I,KAAK64J,WACP74J,KAAKmmH,YAAY,yBACjBnmH,KAAKgmH,SAAS,wBAMdhmH,KAAK8lG,QAAQ,mBAER9lG,KAAKw9J,uBACRx9J,KAAKy9J,8BAGPz9J,KAAKmmH,YAAY,wBACjBnmH,KAAKgmH,SAAS,yBAMdhmH,KAAK8lG,QAAQ,oBAER9lG,KAAKw9J,uBACRx9J,KAAK29J,kCAuBXl4D,EAAO+3D,oBAAsB,SAA6BnjB,GACxD,QAAa3vI,IAAT2vI,EACF,QAASr6I,KAAK0lK,qBAGhBrrB,IAASA,EAELr6I,KAAK0lK,uBAAyBrrB,IAIlCr6I,KAAK0lK,qBAAuBrrB,EAExBr6I,KAAK0lK,sBACP1lK,KAAKgmH,SAAS,6BAQdhmH,KAAK8lG,QAAQ,yBAEb9lG,KAAKmmH,YAAY,6BAQjBnmH,KAAK8lG,QAAQ,0BAiBjBL,EAAO51E,MAAQ,SAAe/sB,GAC5B,IAAI6iK,EAAU3lK,KAEd,QAAY0K,IAAR5H,EACF,OAAO9C,KAAK0oI,QAAU,KAiBxB,GAbAroB,EAAM,eAAehjH,SAAQ,SAAUuoK,GACrC,IAAIC,EAASD,EAAaD,EAAS7iK,GAE7BoO,GAAS20J,KAAYnlK,MAAMyI,QAAQ08J,IAA6B,kBAAXA,GAAyC,kBAAXA,GAAkC,OAAXA,EAMhH/iK,EAAM+iK,EALJF,EAAQ9iK,IAAIgtB,MAAM,yEASlB7vB,KAAK4xH,SAASk0C,2BAA6BhjK,GAAoB,IAAbA,EAAIkK,KAAY,CACpE,IAAI+4J,EAAyB,WAC3B/lK,KAAK6vB,MAAM/sB,IAQb,OALA9C,KAAK4xH,SAASk0C,2BAA4B,EAC1C9lK,KAAK+sH,IAAI,CAAC,QAAS,cAAeg5C,QAClC/lK,KAAK6sH,IAAI,aAAa,WACpB7sH,KAAK4lG,IAAI,CAAC,QAAS,cAAemgE,MAMtC,GAAY,OAARjjK,EAQF,OAPA9C,KAAK0oI,OAAS5lI,EACd9C,KAAKmmH,YAAY,kBAEbnmH,KAAKgmK,cACPhmK,KAAKgmK,aAAa5qC,SAMtBp7H,KAAK0oI,OAAS,IAAInP,GAAWz2H,GAE7B9C,KAAKgmH,SAAS,aAGdzD,EAAM1yF,MAAM,SAAW7vB,KAAK0oI,OAAO17H,KAAO,IAAMusH,GAAWE,WAAWz5H,KAAK0oI,OAAO17H,MAAQ,IAAKhN,KAAK0oI,OAAO7wC,QAAS73F,KAAK0oI,QAMzH1oI,KAAK8lG,QAAQ,SAEbua,EAAM,SAAShjH,SAAQ,SAAUuoK,GAC/B,OAAOA,EAAaD,EAASA,EAAQj9B,YAYzCjjC,EAAOqxB,mBAAqB,SAA4B5vB,GACtDlnG,KAAKimK,eAAgB,GAiBvBxgE,EAAOg0D,WAAa,SAAoBpf,GACtC,QAAa3vI,IAAT2vI,EACF,OAAOr6I,KAAKk4J,YAKd,GAFA7d,IAASA,EAELA,IAASr6I,KAAKk4J,YAAlB,CAMA,GAFAl4J,KAAKk4J,YAAc7d,EAEfr6I,KAAKk4J,YAUP,OATAl4J,KAAKimK,eAAgB,EACrBjmK,KAAKmmH,YAAY,qBACjBnmH,KAAKgmH,SAAS,wBAMdhmH,KAAK8lG,QAAQ,cAYX9lG,KAAKkjI,OACPljI,KAAKkjI,MAAMrW,IAAI,aAAa,SAAU7hH,GACpCA,EAAEygH,kBACFzgH,EAAEkgH,oBAINlrH,KAAKimK,eAAgB,EACrBjmK,KAAKmmH,YAAY,mBACjBnmH,KAAKgmH,SAAS,qBAMdhmH,KAAK8lG,QAAQ,kBASfL,EAAOi0D,uBAAyB,WAC9B,IAAIwM,EACAC,EACAC,EACAC,EAAiBt4J,GAAK/N,KAAMA,KAAK82H,oBAEjC0iB,EAAkB,SAAyBxuI,GAGzCA,EAAEs7J,UAAYH,GAAan7J,EAAEu7J,UAAYH,IAC3CD,EAAYn7J,EAAEs7J,QACdF,EAAYp7J,EAAEu7J,QACdF,MAIAhwB,EAAkB,WACpBgwB,IAIArmK,KAAKg3H,cAAckvC,GAInBA,EAAkBlmK,KAAKi3H,YAAYovC,EAAgB,MAGjDG,EAA6B,SAAoCt/D,GACnEm/D,IAEArmK,KAAKg3H,cAAckvC,IAIrBlmK,KAAK0lG,GAAG,YAAa2wC,GACrBr2I,KAAK0lG,GAAG,YAAa8zC,GACrBx5I,KAAK0lG,GAAG,UAAW8gE,GACnBxmK,KAAK0lG,GAAG,aAAc8gE,GACtB,IAyBIlG,EAzBA3+J,EAAa3B,KAAKwzH,SAAS,eAG3B7xH,GAAe+iH,IAAWlB,KAC5B7hH,EAAW+jG,GAAG,cAAc,SAAUwB,GACa,IAA7ClnG,KAAK8B,SAAS8vH,SAAS0uC,oBACzBtgK,KAAK8B,SAASwuI,OAAOgwB,kBAAoBtgK,KAAK8B,SAAS8vH,SAAS0uC,mBAGlEtgK,KAAK8B,SAAS8vH,SAAS0uC,kBAAoB,KAE7C3+J,EAAW+jG,GAAG,cAAc,SAAUwB,GACpClnG,KAAK8B,SAAS8vH,SAAS0uC,kBAAoBtgK,KAAK8B,SAASwuI,OAAOgwB,sBAMpEtgK,KAAK0lG,GAAG,UAAW2gE,GACnBrmK,KAAK0lG,GAAG,QAAS2gE,GAOjBrmK,KAAKi3H,aAAY,WAEf,GAAKj3H,KAAKimK,cAAV,CAKAjmK,KAAKimK,eAAgB,EAErBjmK,KAAKy5J,YAAW,GAEhBz5J,KAAKmL,aAAam1J,GAClB,IAAIxzJ,EAAU9M,KAAK4xH,SAAS0uC,kBAExBxzJ,GAAW,IAMfwzJ,EAAoBtgK,KAAKuK,YAAW,WAI7BvK,KAAKimK,eACRjmK,KAAKy5J,YAAW,KAEjB3sJ,OACF,MAiBL24F,EAAOmiD,aAAe,SAAsBD,GAC1C,QAAaj9I,IAATi9I,EAOJ,OAAI3nJ,KAAKkjI,OAASljI,KAAKkjI,MAAMqI,qBACpBvrI,KAAKswI,OAAOyuB,kBAAoB/+J,KAAK06J,SAAS,gBAGhD,EARL16J,KAAK26J,UAAU,kBAAmBhT,IA2BtCliD,EAAO86D,oBAAsB,SAA6B5Y,GACxD,YAAaj9I,IAATi9I,EACK3nJ,KAAK26J,UAAU,yBAA0BhT,GAG9C3nJ,KAAKkjI,OAASljI,KAAKkjI,MAAMqI,qBACpBvrI,KAAK06J,SAAS,uBAGhB,GAcTj1D,EAAOswC,QAAU,SAAiBsE,GAChC,QAAa3vI,IAAT2vI,EAKJ,QAASr6I,KAAKymK,SAJZzmK,KAAKymK,WAAapsB,GAOtB50C,EAAOihE,mBAAqB,WAC1B,IAAIC,EAAU3mK,KAGdA,KAAKgmH,SAAS,uBACd,IAAI4gD,EAAiB5mK,KAAKszH,WACtB3xH,EAAa3B,KAAKwzH,SAAS,cAC3BqzC,EAAmBllK,GAAcA,EAAWk0H,gBAGhD+wC,EAAevpK,SAAQ,SAAU+6G,GAC3BA,IAAUz2G,GAIVy2G,EAAM2X,MAAQ3X,EAAMwN,SAAS,gBAC/BxN,EAAM4c,OAEN2xC,EAAQrO,gBAAgBE,eAAev9J,KAAKm9G,OAGhDp4G,KAAKs4J,gBAAgBC,aAAev4J,KAAK61H,gBAEzC71H,KAAKmB,OAAO0lK,GACZ7mK,KAAK8lG,QAAQ,wBAGfL,EAAOqhE,oBAAsB,WAC3B9mK,KAAKmmH,YAAY,uBAEjBnmH,KAAKs4J,gBAAgBE,eAAen7J,SAAQ,SAAU+6G,GACpD,OAAOA,EAAM2c,UAGf/0H,KAAKmB,OAAOnB,KAAKs4J,gBAAgBC,cACjCv4J,KAAK8lG,QAAQ,wBAiBfL,EAAOg5C,cAAgB,SAAuBr3I,GAC5C,IAAI2/J,EAAU/mK,KAEd,GAAqB,mBAAVoH,GAAuBA,IAAUpH,KAAKo4J,eAC/C,OAAOp4J,KAAKo4J,eAGdp4J,KAAKo4J,eAAiBhxJ,EACtB,IAAI4iI,EAAehqI,KAAK4xH,SAASqY,SAAW,IAASA,QAErD,GAAID,EAAc,CAEhB,GAAI5iI,EAAO,CACT,IAAI4/J,EAAe,GAcnB,OAZIhnK,KAAK0+I,wBACPsoB,EAAa/rK,KAAK+E,KAAK2+I,wBAGrB3+I,KAAKi/I,gBACP+nB,EAAa/rK,KAAK+E,KAAKk/I,kBAGrBl/I,KAAKw+I,mBACPwoB,EAAa/rK,KAAK+E,KAAKw+I,iBAAgB,IAGlCxU,EAAatoB,IAAIslD,GAActkK,MAAK,WACzC,OAAOqkK,EAAQL,wBAKnB,OAAO18B,EAAay2B,UAAU/9J,MAAK,WACjC,OAAOqkK,EAAQD,yBAIf1/J,GACEpH,KAAK0+I,wBACP1+I,KAAK2+I,uBAGH3+I,KAAKi/I,gBACPj/I,KAAKk/I,iBAGPl/I,KAAK0mK,sBAEL1mK,KAAK8mK,uBAITrhE,EAAOwhE,oBAAsB,WAE3B,IAAI7sC,EAAOp6H,KAAKkjI,OAASljI,KAAKkjI,MAC9B9I,EAAKpF,OACLh1H,KAAKgmH,SAAS,yBACdhmH,KAAK8lG,QAAQ,0BAGfL,EAAOyhE,qBAAuB,WAE5B,IAAI9sC,EAAOp6H,KAAKkjI,OAASljI,KAAKkjI,MAC9B9I,EAAKrF,OACL/0H,KAAKmmH,YAAY,yBACjBnmH,KAAK8lG,QAAQ,0BAcfL,EAAO+4C,gBAAkB,SAAyBp3I,GAChD,IAAI+/J,EAAUnnK,KAEd,GAAqB,mBAAVoH,GAAuBA,IAAUpH,KAAKq4J,iBAC/C,OAAOr4J,KAAKq4J,iBAGdr4J,KAAKq4J,iBAAmBjxJ,EACxB,IAAI4iI,EAAehqI,KAAK4xH,SAASqY,SAAW,IAASA,QAErD,GAAID,EAAc,CAChB,GAAI5iI,EAAO,CACT,GAAIpH,KAAKy+I,gBAAiB,CACxB,IAAI2oB,EAAuBpnK,KAAKy+I,eAAc,GAC9C,OAAO2oB,EAAqB1kK,MAAK,WAE/BykK,EAAQF,yBAIZ,OAAOj9B,EAAay2B,UAAU/9J,MAAK,WAEjCykK,EAAQF,yBAIZ,OAAOj9B,EAAay2B,UAAU/9J,MAAK,WAEjCykK,EAAQD,0BAIZ,GAAI9/J,EAMF,OALIpH,KAAKy+I,iBACPz+I,KAAKy+I,eAAc,QAGrBz+I,KAAKinK,sBAIPjnK,KAAKknK,wBAyBPzhE,EAAO+jC,aAAe,SAAsBzJ,EAAM3mH,EAAOgD,GACvD,GAAIpc,KAAKkjI,MACP,OAAOljI,KAAKkjI,MAAMsG,aAAazJ,EAAM3mH,EAAOgD,IAyBhDqpF,EAAOm1B,mBAAqB,SAA4BhxH,EAAS8/H,GAC/D,GAAI1pI,KAAKkjI,MACP,OAAOljI,KAAKkjI,MAAMtI,mBAAmBhxH,EAAS8/H,IAelDjkC,EAAO6iC,sBAAwB,SAA+B9+H,QAChD,IAARA,IACFA,EAAM,IAGR,IAAI69J,EAAO79J,EACPwzF,EAAQqqE,EAAKrqE,MAQjB,GANKA,IACHA,EAAQxzF,GAKNxJ,KAAKkjI,MACP,OAAOljI,KAAKkjI,MAAMoF,sBAAsBtrC,IAe5CyI,EAAOqkC,wBAA0B,WAC/B,OAAO9pI,KAAK06J,SAAS,4BAUvBj1D,EAAOw1D,WAAa,WAClB,OAAOj7J,KAAKkjI,OAASljI,KAAKkjI,MAAM+3B,YAAcj7J,KAAKkjI,MAAM+3B,cAAgB,GAU3Ex1D,EAAOy1D,YAAc,WACnB,OAAOl7J,KAAKkjI,OAASljI,KAAKkjI,MAAMg4B,aAAel7J,KAAKkjI,MAAMg4B,eAAiB,GAqB7Ez1D,EAAOrpF,SAAW,SAAkBpP,GAClC,QAAatC,IAATsC,EACF,OAAOhN,KAAKqnJ,UAGVrnJ,KAAKqnJ,YAAczmJ,OAAOoM,GAAMrP,gBAClCqC,KAAKqnJ,UAAYzmJ,OAAOoM,GAAMrP,cAE1B0wH,GAAUruH,OAOZA,KAAK8lG,QAAQ,oBAcnBL,EAAOutB,UAAY,WACjB,OAAOnC,GAAe0H,EAAO9wH,UAAUmqH,SAASoB,UAAWhzH,KAAK04J,aAWlEjzD,EAAO6hE,OAAS,WACd,IAAI19J,EAAUinH,GAAe7wH,KAAK4xH,UAC9B2I,EAAS3wH,EAAQ2wH,OACrB3wH,EAAQ2wH,OAAS,GAEjB,IAAK,IAAI3/H,EAAI,EAAGA,EAAI2/H,EAAO38H,OAAQhD,IAAK,CACtC,IAAIoiG,EAAQu9B,EAAO3/H,GAEnBoiG,EAAQ6zB,GAAe7zB,GACvBA,EAAMl7F,YAAS4I,EACfd,EAAQ2wH,OAAO3/H,GAAKoiG,EAGtB,OAAOpzF,GAoBT67F,EAAO8hE,YAAc,SAAqB/hD,EAAS57G,GACjD,IAAI49J,EAAUxnK,KAEd4J,EAAUA,GAAW,GACrBA,EAAQ47G,QAAUA,GAAW,GAC7B,IAAIiiD,EAAQ,IAAIzsC,GAAYh7H,KAAM4J,GAMlC,OALA5J,KAAK2zH,SAAS8zC,GACdA,EAAM/hE,GAAG,WAAW,WAClB8hE,EAAQ/lE,YAAYgmE,MAEtBA,EAAM/6J,OACC+6J,GASThiE,EAAOyxD,yBAA2B,WAChC,GAAKl3J,KAAK65J,aAOV,IAHA,IAAI6N,EAAoB1nK,KAAK0nK,oBACzB9xC,EAAe51H,KAAK41H,eAEfh7H,EAAI,EAAGA,EAAIi7J,GAAiBj4J,OAAQhD,IAAK,CAChD,IAAI+sK,EAAsB9R,GAAiBj7J,GACvCgtK,EAAW5nK,KAAK6nK,aAAaF,GAEjC,GAAI/xC,GAAgBgyC,EAAU,CAE5B,GAAIF,IAAsBC,EACxB,OAIED,GACF1nK,KAAKmmH,YAAY2vC,GAAmB4R,IAGtC1nK,KAAKgmH,SAAS8vC,GAAmB6R,IACjC3nK,KAAK8nK,YAAcH,EACnB,SAWNliE,EAAOsiE,yBAA2B,WAChC,IAAI3rE,EAAYp8F,KAAKgoK,yBACrBhoK,KAAK8nK,YAAc,GAEf1rE,GACFp8F,KAAKmmH,YAAY/pB,IAyCrBqJ,EAAOm0D,YAAc,SAAqBqO,GAExC,YAAqBv9J,IAAjBu9J,IAIJjoK,KAAK8nK,YAAc,GACnB9nK,KAAK6nK,aAAez+I,GAAO,GAAI2sI,GAAqBkS,GAGpDjoK,KAAKk3J,4BAPI9tI,GAAOppB,KAAK6nK,eAyBvBpiE,EAAOo0D,WAAa,SAAoBzyJ,GAEtC,QAAcsD,IAAVtD,EACF,OAAOpH,KAAKkoK,YAGd9gK,EAAQtG,QAAQsG,GAChB,IAAIub,EAAU3iB,KAAKkoK,YAEnB,OAAI9gK,IAAUub,GAKd3iB,KAAKkoK,YAAc9gK,EAGfA,GACFpH,KAAK0lG,GAAG,eAAgB1lG,KAAKi3J,+BAC7Bj3J,KAAKk3J,6BAELl3J,KAAK4lG,IAAI,eAAgB5lG,KAAKi3J,+BAC9Bj3J,KAAK+nK,4BAGA3gK,QAhBP,GA2BFq+F,EAAOiiE,kBAAoB,WACzB,OAAO1nK,KAAK8nK,aAYdriE,EAAOuiE,uBAAyB,WAC9B,OAAOlS,GAAmB91J,KAAK8nK,cAAgB,IA0DjDriE,EAAO0iE,UAAY,SAAmBxoJ,EAAO6xG,GAC3C,IAAI42C,EAAUpoK,KAEd,GAAK2f,GAA0B,kBAAVA,EAArB,CAIA3f,KAAKwoI,QAELxoI,KAAKswI,OAAO3wH,MAAQkxG,GAAelxG,GACnC,IAAI0oJ,EAAqBroK,KAAKswI,OAAO3wH,MACjC2oJ,EAAUD,EAAmBC,QAC7Bj2B,EAASg2B,EAAmBh2B,OAC5Bl+B,EAAMk0D,EAAmBl0D,IACzBsmB,EAAa4tC,EAAmB5tC,YAE/B6tC,GAAWj2B,IACdryI,KAAKswI,OAAO3wH,MAAM2oJ,QAAU,CAAC,CAC3Bn0D,IAAKk+B,EACLx0I,KAAMqyI,GAAYmC,MAIlBl+B,GACFn0G,KAAKm0G,IAAIA,GAGPk+B,GACFryI,KAAKqyI,OAAOA,GAGV3xI,MAAMyI,QAAQsxH,IAChBA,EAAWp9H,SAAQ,SAAUkrK,GAC3B,OAAOH,EAAQxtC,mBAAmB2tC,GAAI,MAI1CvoK,KAAKwxH,MAAMA,KAYb/rB,EAAO+iE,SAAW,WAChB,IAAKxoK,KAAKswI,OAAO3wH,MAAO,CACtB,IAAI0yH,EAASryI,KAAKqyI,SACdl+B,EAAMn0G,KAAKulK,iBACX9qC,EAAa/5H,MAAM+G,UAAUzI,IAAI4R,KAAK5Q,KAAKmpI,oBAAoB,SAAUo/B,GAC3E,MAAO,CACLxoC,KAAMwoC,EAAGxoC,KACT3mH,MAAOmvJ,EAAGnvJ,MACVgD,SAAUmsJ,EAAGnsJ,SACb+3F,IAAKo0D,EAAGp0D,QAGRx0F,EAAQ,CACVw0F,IAAKA,EACLsmB,WAAYA,GAWd,OARI4X,IACF1yH,EAAM0yH,OAASA,EACf1yH,EAAM2oJ,QAAU,CAAC,CACfn0D,IAAKx0F,EAAM0yH,OACXx0I,KAAMqyI,GAAYvwH,EAAM0yH,WAIrB1yH,EAGT,OAAOkxG,GAAe7wH,KAAKswI,OAAO3wH,QAcpC44G,EAAOg+B,eAAiB,SAAwB1xI,GAC9C,IAAI4jJ,EAAc,CAChB9lD,QAAS,GACT4X,OAAQ,IAENmuC,EAAajiD,GAAc5hG,GAC3B8jJ,EAAYD,EAAW,cAW3B,GATI9iD,GAAS/gG,EAAK,cAChB6jJ,EAAW1sC,MAAO,GAGhBpW,GAAS/gG,EAAK,eAChB6jJ,EAAWpO,OAAQ,GAIH,OAAdqO,EAAoB,CAGtB,IAAIC,EAAkB,IAAeD,GAAa,MAC9C7lK,EAAM8lK,EAAgB,GACtB/uK,EAAO+uK,EAAgB,GAEvB9lK,GACFy/G,EAAM1yF,MAAM/sB,GAGdsmB,GAAOs/I,EAAY7uK,GAKrB,GAFAuvB,GAAOq/I,EAAaC,GAEhB7jJ,EAAIi4F,gBAGN,IAFA,IAAIwW,EAAWzuG,EAAIzC,WAEVxnB,EAAI,EAAGi2I,EAAIvd,EAAS11H,OAAQhD,EAAIi2I,EAAGj2I,IAAK,CAC/C,IAAIw9G,EAAQkb,EAAS14H,GAEjBiuK,EAAYzwD,EAAM5qG,SAAS7P,cAEb,WAAdkrK,EACFJ,EAAY9lD,QAAQ1nH,KAAKwrH,GAAcrO,IAChB,UAAdywD,GACTJ,EAAYluC,OAAOt/H,KAAKwrH,GAAcrO,IAK5C,OAAOqwD,GAWThjE,EAAO8zD,kBAAoB,WACzB,IAAIlvC,EAAO,IAAS/vB,cAAc,KAGlC,QAAS,cAAe+vB,EAAKjqH,OAAS,oBAAqBiqH,EAAKjqH,OAAS,iBAAkBiqH,EAAKjqH,OAAS,gBAAiBiqH,EAAKjqH,OAC/H,gBAAiBiqH,EAAKjqH,QAWxBqlG,EAAOkc,MAAQ,SAAesd,GAC5B,QAAgBv0H,IAAZu0H,EACF,OAAOj/H,KAAKm4J,cAGVl5B,GACFj/H,KAAK8lG,QAAQ,WACb9lG,KAAK8oK,kBAAoB9oK,KAAK6C,IAAIo+G,MAClCjhH,KAAK6C,IAAIo+G,MAAM,SACfjhH,KAAKm4J,eAAgB,IAErBn4J,KAAK8lG,QAAQ,YACb9lG,KAAK6C,IAAIo+G,MAAMjhH,KAAK8oK,mBACpB9oK,KAAK8oK,uBAAoBp+J,EACzB1K,KAAKm4J,eAAgB,IAiBzB1yD,EAAO2iD,cAAgB,SAAuB2gB,GAC5C,QAAiBr+J,IAAbq+J,EACF,OAAO/oK,KAAKswI,OAAO8X,cAIhB1nJ,MAAMyI,QAAQ4/J,IAKdA,EAAS5pK,OAAM,SAAUwoJ,GAC5B,MAAuB,kBAATA,OAKhB3nJ,KAAKswI,OAAO8X,cAAgB2gB,EAQ5B/oK,KAAK8lG,QAAQ,yBAGRyyB,EAx6JiB,CAy6JxBjH,IAmDF0U,GAAIr2B,MAAMtyG,SAAQ,SAAUG,GAC1B,IAAIiD,EAAQulI,GAAIxoI,GAEhB+6H,GAAO9wH,UAAUhH,EAAMklI,YAAc,WACnC,OAAI3lI,KAAKkjI,MACAljI,KAAKkjI,MAAMziI,EAAMklI,eAK1B3lI,KAAKS,EAAMmlI,aAAe5lI,KAAKS,EAAMmlI,cAAgB,IAAInlI,EAAM+kI,UACxDxlI,KAAKS,EAAMmlI,kBAmBtBrN,GAAO9wH,UAAU8yJ,YAAchiC,GAAO9wH,UAAUk7H,YAUhDpK,GAAOC,QAAU,GACjB,IAAItV,GAAY,IAASA,UAUzBqV,GAAO9wH,UAAUmqH,SAAW,CAE1Bkf,UAAWvc,GAAK0W,kBAChB+9B,MAAO,GAEP1I,kBAAmB,IAEnBlY,cAAe,GAGf4F,QAAQ,EAER16B,SAAU,CAAC,cAAe,cAAe,mBAAoB,iBAAkB,gBAAiB,cAAe,aAAc,eAAgB,oBAAqB,iBAClKl3G,SAAU8mG,KAAcA,GAAU8P,WAAa9P,GAAU8P,UAAU,IAAM9P,GAAU+lD,cAAgB/lD,GAAU9mG,WAAa,KAE1H42G,UAAW,GAEX2xC,oBAAqB,iDACrB7I,mBAAmB,EACnBmE,WAAY,CACVr2J,QAAS,CACPs/J,aAAc,SAGlBtP,YAAa,GACbC,YAAY,EACZpb,eAAe,EACfD,iBAAiB,GAEnB,CAOA,QAOA,UAQA,WAqBA,eAwBA,cAAcnhJ,SAAQ,SAAUixB,GAC9BiqG,GAAO9wH,UAAU6mB,GAAM,WACrB,OAAOtuB,KAAK06J,SAASpsI,OAGzBinI,GAAsBl4J,SAAQ,SAAU6pG,GACtCqxB,GAAO9wH,UAAU,aAAegpH,GAAcvpB,GAAS,KAAO,WAC5D,OAAOlnG,KAAK8lG,QAAQoB,OA6DxBoqB,GAAY2G,kBAAkB,SAAUM,IAUxC,IAAI4wC,GAAmB,SASnBC,GAAmB,iBAQnBC,GAAgB,GAYhBC,GAAe,SAAsB9rK,GACvC,OAAO6rK,GAAc5/J,eAAejM,IAclC+rK,GAAY,SAAmB/rK,GACjC,OAAO8rK,GAAa9rK,GAAQ6rK,GAAc7rK,QAAQkN,GAgBhD8+J,GAAqB,SAA4B1nK,EAAQtE,GAC3DsE,EAAOsnK,IAAoBtnK,EAAOsnK,KAAqB,GACvDtnK,EAAOsnK,IAAkB5rK,IAAQ,GAkB/BisK,GAAoB,SAA2B3nK,EAAQuqH,EAAMq9C,GAC/D,IAAI9X,GAAa8X,EAAS,SAAW,IAAM,cAC3C5nK,EAAOgkG,QAAQ8rD,EAAWvlC,GAC1BvqH,EAAOgkG,QAAQ8rD,EAAY,IAAMvlC,EAAK7uH,KAAM6uH,IAkB1Cs9C,GAAoB,SAA2BnsK,EAAMosK,GACvD,IAAIC,EAAqB,WAOvBJ,GAAkBzpK,KAAM,CACtBxC,KAAMA,EACNosK,OAAQA,EACR32I,SAAU,OACT,GACH,IAAIA,EAAW22I,EAAO5uJ,MAAMhb,KAAMqR,WAOlC,OANAm4J,GAAmBxpK,KAAMxC,GACzBisK,GAAkBzpK,KAAM,CACtBxC,KAAMA,EACNosK,OAAQA,EACR32I,SAAUA,IAELA,GAMT,OAHAjsB,OAAO0K,KAAKk4J,GAAQvsK,SAAQ,SAAUqwE,GACpCm8F,EAAmBn8F,GAAQk8F,EAAOl8F,MAE7Bm8F,GAoBLC,GAAsB,SAA6BtsK,EAAMusK,GAI3D,OADAA,EAAetiK,UAAUjK,KAAOA,EACzB,WACLisK,GAAkBzpK,KAAM,CACtBxC,KAAMA,EACNosK,OAAQG,EACR92I,SAAU,OACT,GAEH,IAAK,IAAI7hB,EAAOC,UAAUzT,OAAQm1B,EAAO,IAAIryB,MAAM0Q,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/EwhB,EAAKxhB,GAAQF,UAAUE,GAGzB,IAAI0hB,EAAW,IAAW82I,EAAgB,CAAC/pK,MAAM2R,OAAOohB,IAQxD,OALA/yB,KAAKxC,GAAQ,WACX,OAAOy1B,GAGTw2I,GAAkBzpK,KAAMizB,EAAS+2I,gBAC1B/2I,IAmBPg3I,GAAsB,WASxB,SAASA,EAAOnoK,GACd,GAAI9B,KAAK2O,cAAgBs7J,EACvB,MAAM,IAAIjgK,MAAM,0DAGlBhK,KAAK8B,OAASA,EAET9B,KAAK6C,MACR7C,KAAK6C,IAAM7C,KAAK8B,OAAOe,IAAI2+G,aAAaxhH,KAAKxC,OAK/CqyH,GAAQ7vH,aACDA,KAAK8lG,QACZuqB,GAASrwH,KAAMA,KAAK2O,YAAY2hH,cAChCk5C,GAAmB1nK,EAAQ9B,KAAKxC,MAGhCwC,KAAKkmG,QAAUlmG,KAAKkmG,QAAQn4F,KAAK/N,MAEjC8B,EAAO4jG,GAAG,UAAW1lG,KAAKkmG,SAO5B,IAAIT,EAASwkE,EAAOxiK,UAmOpB,OAjOAg+F,EAAOrrG,QAAU,WACf,OAAO4F,KAAK2O,YAAY9H,SAgB1B4+F,EAAOukE,aAAe,SAAsB39C,GAQ1C,YAPa,IAATA,IACFA,EAAO,IAGTA,EAAK7uH,KAAOwC,KAAKxC,KACjB6uH,EAAKu9C,OAAS5pK,KAAK2O,YACnB09G,EAAKp5F,SAAWjzB,KACTqsH,GAkBT5mB,EAAOK,QAAU,SAAmBoB,EAAOmlB,GAKzC,YAJa,IAATA,IACFA,EAAO,IAGFvmB,GAAQ9lG,KAAKsuH,YAAapnB,EAAOlnG,KAAKgqK,aAAa39C,KAgB5D5mB,EAAO8qB,mBAAqB,SAA4BvlH,KAWxDy6F,EAAOS,QAAU,WACf,IAAI1oG,EAAOwC,KAAKxC,KACZsE,EAAS9B,KAAK8B,OAQlB9B,KAAK8lG,QAAQ,WACb9lG,KAAK4lG,MACL9jG,EAAO8jG,IAAI,UAAW5lG,KAAKkmG,SAI3BpkG,EAAOsnK,IAAkB5rK,IAAQ,EACjCwC,KAAK8B,OAAS9B,KAAKgiG,MAAQ,KAG3BlgG,EAAOtE,GAAQssK,GAAoBtsK,EAAM6rK,GAAc7rK,KAczDysK,EAAOC,QAAU,SAAiBN,GAChC,IAAIv7J,EAAsB,kBAAXu7J,EAAsBL,GAAUK,GAAUA,EACzD,MAAoB,oBAANv7J,IAAqB47J,EAAOxiK,UAAU4wH,cAAchqH,EAAE5G,YAmBtEwiK,EAAOE,eAAiB,SAAwB3sK,EAAMosK,GACpD,GAAoB,kBAATpsK,EACT,MAAM,IAAIwM,MAAM,yBAA4BxM,EAAO,mCAAsCA,EAAO,KAGlG,GAAI8rK,GAAa9rK,GACf+kH,EAAMr1F,KAAK,mBAAsB1vB,EAAO,wEACnC,GAAI+6H,GAAO9wH,UAAUgC,eAAejM,GACzC,MAAM,IAAIwM,MAAM,yBAA4BxM,EAAO,0DAGrD,GAAsB,oBAAXosK,EACT,MAAM,IAAI5/J,MAAM,uBAA0BxM,EAAO,qCAAwCosK,EAAS,KAcpG,OAXAP,GAAc7rK,GAAQosK,EAGlBpsK,IAAS2rK,KACPc,EAAOC,QAAQN,GACjBrxC,GAAO9wH,UAAUjK,GAAQmsK,GAAkBnsK,EAAMosK,GAEjDrxC,GAAO9wH,UAAUjK,GAAQssK,GAAoBtsK,EAAMosK,IAIhDA,GAcTK,EAAOG,iBAAmB,SAA0B5sK,GAClD,GAAIA,IAAS2rK,GACX,MAAM,IAAIn/J,MAAM,mCAGds/J,GAAa9rK,YACR6rK,GAAc7rK,UACd+6H,GAAO9wH,UAAUjK,KAgB5BysK,EAAOI,WAAa,SAAoB16D,GAKtC,IAAIx1G,EASJ,YAbc,IAAVw1G,IACFA,EAAQ3oG,OAAO0K,KAAK23J,KAItB15D,EAAMtyG,SAAQ,SAAUG,GACtB,IAAIosK,EAASL,GAAU/rK,GAEnBosK,IACFzvK,EAASA,GAAU,GACnBA,EAAOqD,GAAQosK,MAGZzvK,GAaT8vK,EAAOK,iBAAmB,SAA0B9sK,GAClD,IAAIosK,EAASL,GAAU/rK,GACvB,OAAOosK,GAAUA,EAAO/iK,SAAW,IAG9BojK,EAxQiB,GAwR1BA,GAAOV,UAAYA,GAOnBU,GAAOd,iBAAmBA,GAC1Bc,GAAOE,eAAehB,GAAkBc,IAOxC1xC,GAAO9wH,UAAUgrI,YAAc,SAAUj1I,GACvC,QAASwC,KAAKopK,MAAsD,IAAjCppK,KAAKopK,IAAkB5rK,IAS5D+6H,GAAO9wH,UAAU8iK,UAAY,SAAU/sK,GACrC,QAAS8rK,GAAa9rK,IAmDxB,IAAIgtK,IAAY,EAwBZC,GAAS,SAAgBh8J,EAAYi8J,QACf,IAApBA,IACFA,EAAkB,IAMfF,KACHjoD,EAAMr1F,KAAK,4FACXs9I,IAAY,GAGd,IAAIh8J,EAAW,WACbC,EAAWuM,MAAMhb,KAAMqR,YAGrB/O,EAAU,GAoBd,IAAK,IAAI9E,IAlBsB,kBAApBktK,GACLA,EAAgB/7J,cAAgB3H,OAAOS,UAAUkH,cACnDH,EAAWk8J,EAAgB/7J,aAG7BrM,EAAUooK,GAC0B,oBAApBA,IAChBl8J,EAAWk8J,GAGb,IAAUl8J,EAAUC,GAGhBA,IACFD,EAASm8J,OAASl8J,GAIHnM,EACXA,EAAQmH,eAAejM,KACzBgR,EAAS/G,UAAUjK,GAAQ8E,EAAQ9E,IAIvC,OAAOgR,GAkBLo8J,GAAc,SAAqB/vJ,GACrC,OAA2B,IAApBA,EAAG5R,QAAQ,KAAa4R,EAAG9d,MAAM,GAAK8d,GAmF/C,SAASswH,GAAQtwH,EAAIjR,EAAS4nH,GAC5B,IAAI1vH,EAASqpI,GAAQ0/B,UAAUhwJ,GAE/B,GAAI/Y,EASF,OARI8H,GACF24G,EAAMr1F,KAAK,WAAcrS,EAAK,0DAG5B22G,GACF1vH,EAAO0vH,MAAMA,GAGR1vH,EAGT,IAAI6Q,EAAmB,kBAAPkI,EAAkBytG,GAAE,IAAMsiD,GAAY/vJ,IAAOA,EAE7D,IAAKmqG,GAAKryG,GACR,MAAM,IAAI2W,UAAU,sDASjB3W,EAAGmkG,cAAcg0D,aAAgBn4J,EAAGmkG,cAAc3sG,KAAK47G,SAASpzG,IACnE4vG,EAAMr1F,KAAK,mDAGbtjB,EAAUA,GAAW,IAGK,IAAtBA,EAAQ+oH,YACV/oH,EAAQ+oH,WAAahgH,EAAGme,YAAcne,EAAGme,WAAWqtF,aAAa,mBAAqBxrG,EAAGme,WAAane,GAAIopG,WAAU,IAGtHsE,EAAM,eAAehjH,SAAQ,SAAUuoK,GACrC,IAAIv/I,EAAOu/I,EAAajzJ,EAAIk+G,GAAejnH,IAEtCsH,GAASmV,KAAS3lB,MAAMyI,QAAQkd,GAKrCzc,EAAUinH,GAAejnH,EAASyc,GAJhCk8F,EAAM1yF,MAAM,mDAQhB,IAAIk7I,EAAkBz5C,GAAY0C,aAAa,UAK/C,OAJAlyH,EAAS,IAAIipK,EAAgBp4J,EAAI/I,EAAS4nH,GAC1CnR,EAAM,SAAShjH,SAAQ,SAAUuoK,GAC/B,OAAOA,EAAa9jK,MAEfA,EAST,GANAqpI,GAAQ/qB,OAASA,EACjB+qB,GAAQ9qB,MAAQA,EAChB8qB,GAAQ7qB,KAAOA,EACf6qB,GAAQ3qB,SAAWA,EACnB2qB,GAAQ5qB,WAAaA,GAEqB,IAAtC,IAAS25C,0BAAqC71C,KAAU,CAC1D,IAAIjkH,GAAQkoH,GAAE,wBAEd,IAAKloH,GAAO,CACVA,GAAQmpH,GAAmB,uBAC3B,IAAI6wC,GAAO9xC,GAAE,QAET8xC,IACFA,GAAK19C,aAAat8G,GAAOg6J,GAAK54D,YAGhCgoB,GAAeppH,GAAO,4KAO1B4oH,GAAiB,EAAGmiB,IAOpBA,GAAQtkI,QAAUs5G,EAQlBgrB,GAAQvhI,QAAU2uH,GAAO9wH,UAAUmqH,SAQnCuZ,GAAQ6/B,WAAa,WACnB,OAAOzyC,GAAOC,SAkBhB2S,GAAQ0/B,UAAY,SAAUhwJ,GAC5B,IACIgK,EADA2zG,EAAUD,GAAOC,QAGrB,GAAkB,kBAAP39G,EAAiB,CAC1B,IAAIowJ,EAAML,GAAY/vJ,GAClB/Y,EAAS02H,EAAQyyC,GAErB,GAAInpK,EACF,OAAOA,EAGT+iB,EAAMyjG,GAAE,IAAM2iD,QAEdpmJ,EAAMhK,EAGR,GAAImqG,GAAKngG,GAAM,CACb,IAAIqmJ,EAAOrmJ,EACPsmJ,EAAUD,EAAKppK,OACf2wJ,EAAWyY,EAAKzY,SAGpB,GAAI0Y,GAAW3yC,EAAQi6B,GACrB,OAAO0Y,GAAW3yC,EAAQi6B,KAehCtnB,GAAQigC,cAAgB,WACtB,OAEEpkK,OAAO0K,KAAK6mH,GAAOC,SAASx5H,KAAI,SAAU6S,GACxC,OAAO0mH,GAAOC,QAAQ3mH,MACrBqG,OAAOpX,UAIdqqI,GAAQ3S,QAAUD,GAAOC,QACzB2S,GAAQnX,aAAe1C,GAAY0C,aAmBnCmX,GAAQlT,kBAAoB,SAAUz6H,EAAMinC,GACtC8vF,GAAKG,OAAOjwF,IACd89E,EAAMr1F,KAAK,OAAS1vB,EAAO,+GAG7B8zH,GAAY2G,kBAAkBrnH,KAAK0gH,GAAa9zH,EAAMinC,IAGxD0mG,GAAQD,QAAU3W,GAAK2W,QACvBC,GAAQJ,aAAexW,GAAKwW,aAC5BI,GAAQ0B,IAAMA,GASd7lI,OAAOC,eAAekkI,GAAS,aAAc,CAC3C/jI,MAAO,GACPikK,WAAW,EACXhkK,YAAY,IAEdL,OAAOC,eAAekkI,GAAQ2B,WAAY,aAAc,CACtD1lI,MAAOwlI,GACPy+B,WAAW,EACXhkK,YAAY,IASd8jI,GAAQvmB,QAAUA,GASlBumB,GAAQ/mB,cAAgBA,GACxB+mB,GAAQs/B,OAASA,GACjBt/B,GAAQmgC,aAAez6C,GACvBsa,GAAQp9H,KAAOA,GACfo9H,GAAQg/B,eAAiBF,GAAOE,eAChCh/B,GAAQi/B,iBAAmBH,GAAOG,iBAalCj/B,GAAQy+B,OAAS,SAAUpsK,EAAMosK,GAE/B,OADArnD,EAAMr1F,KAAK,wEACJ+8I,GAAOE,eAAe3sK,EAAMosK,IAGrCz+B,GAAQk/B,WAAaJ,GAAOI,WAC5Bl/B,GAAQo+B,UAAYU,GAAOV,UAC3Bp+B,GAAQm/B,iBAAmBL,GAAOK,iBAelCn/B,GAAQogC,YAAc,SAAUv+J,EAAMnT,GACpC,IAAI2xK,EAIJ,OAFAx+J,GAAQ,GAAKA,GAAMrP,cACnBwtI,GAAQvhI,QAAQopH,UAAYnC,GAAesa,GAAQvhI,QAAQopH,WAAYw4C,EAAgB,GAAIA,EAAcx+J,GAAQnT,EAAM2xK,IAChHrgC,GAAQvhI,QAAQopH,UAAUhmH,IAUnCm+H,GAAQtoI,IAAM0/G,EACd4oB,GAAQ3pB,aAAeA,EACvB2pB,GAAQsgC,gBAAkBtgC,GAAQhS,iBAAmBA,GACrDgS,GAAQoM,WAAaA,GACrBpM,GAAQiM,cAAgBA,GACxBjM,GAAQmM,gBAAkBA,GAC1BnM,GAAQjJ,SAAWA,GACnBiJ,GAAQ5I,cAAgBA,GACxB4I,GAAQugC,YAAc79C,GACtBsd,GAAQzlC,GAAKA,GACbylC,GAAQte,IAAMA,GACdse,GAAQvlC,IAAMA,GACdulC,GAAQrlC,QAAUA,GAclBqlC,GAAQ9gI,IAAM,IACd8gI,GAAQ/H,UAAYA,GACpB+H,GAAQtG,WAAaA,GACrBsG,GAAQpG,WAAaA,GACrB,CAAC,OAAQ,aAAc,WAAY,WAAY,WAAY,cAAe,cAAe,gBAAiB,gBAAiB,UAAW,gBAAiB,iBAAiB1nI,SAAQ,SAAUwU,GACxLs5H,GAAQt5H,GAAK,WAEX,OADA0wG,EAAMr1F,KAAK,WAAarb,EAAI,qCAAuCA,EAAI,cAChE22G,GAAI32G,GAAGmJ,MAAM,KAAM3J,eAG9B85H,GAAQtoB,cAAgBA,GAQxBsoB,GAAQzrI,IAAM8oH,GAQd2iB,GAAQx/H,IAAMi3H,GACduI,GAAQglB,mBAAqBA,GAG7BhlB,GAAQogC,YAAY,KAAM,CACxB,iBAAkB;;AAQpB,IAAI18J,GAAa,OAab88J,GAA0B,SAAiCC,EAAwBjgK,EAAKkgK,GAI1F,OAAID,GAA0BC,GAAOA,EAAIC,aAAengK,IAAQkgK,EAAIC,YAC3DD,EAAIC,YAGNngK,GAGLogK,GAAS,SAAgBt6J,GAC3B,OAAI05H,GAAQtoI,IAAI8+G,MACPwpB,GAAQtoI,IAAI8+G,MAAM5zG,KAAKo9H,GAAS,OAAQ15H,EAAS,MAGnD,cAULu6J,GAAoB,EAAI,GAMxBC,GAAsC,EAApBD,GAElBE,GAAe,SAAsBC,EAAYrjJ,GACnD,IACIluB,EADAwxK,EAAU,GAGd,GAAID,GAAcA,EAAWvuK,OAE3B,IAAKhD,EAAI,EAAGA,EAAIuxK,EAAWvuK,OAAQhD,IAC7BkuB,EAAUqjJ,EAAWr6J,MAAMlX,GAAIuxK,EAAWp6J,IAAInX,KAChDwxK,EAAQnxK,KAAK,CAACkxK,EAAWr6J,MAAMlX,GAAIuxK,EAAWp6J,IAAInX,KAKxD,OAAOuwI,GAAQhS,iBAAiBizC,IAY9BC,GAAY,SAAmBhzC,EAAUziH,GAC3C,OAAOs1J,GAAa7yC,GAAU,SAAUvnH,EAAOC,GAC7C,OAAOD,EAAQm6J,IAAmBr1J,GAAQ7E,EAAMk6J,IAAmBr1J,MAYnE01J,GAAgB,SAAuBH,EAAYv1J,GACrD,OAAOs1J,GAAaC,GAAY,SAAUr6J,GACxC,OAAOA,EAAQk6J,IAAqBp1J,MAWpC21J,GAAW,SAAkBlzC,GAC/B,GAAIA,EAASz7H,OAAS,EACpB,OAAOutI,GAAQhS,mBAKjB,IAFA,IAAIrlH,EAAS,GAEJlZ,EAAI,EAAGA,EAAIy+H,EAASz7H,OAAQhD,IAAK,CACxC,IAAIkX,EAAQunH,EAAStnH,IAAInX,EAAI,GACzBmX,EAAMsnH,EAASvnH,MAAMlX,GACzBkZ,EAAO7Y,KAAK,CAAC6W,EAAOC,IAGtB,OAAOo5H,GAAQhS,iBAAiBrlH,IAW9B04J,GAAqB,SAA4BC,EAASC,GAC5D,IAAI56J,EAAQ,KACRC,EAAM,KACN46J,EAAQ,EACRC,EAAU,GACV94J,EAAS,GAEb,IAAK24J,IAAYA,EAAQ7uK,SAAW8uK,IAAYA,EAAQ9uK,OACtD,OAAOutI,GAAQsgC,kBAKjB,IAAIxrJ,EAAQwsJ,EAAQ7uK,OAEpB,MAAOqiB,IACL2sJ,EAAQ3xK,KAAK,CACX2b,KAAM61J,EAAQ36J,MAAMmO,GACpBpiB,KAAM,UAER+uK,EAAQ3xK,KAAK,CACX2b,KAAM61J,EAAQ16J,IAAIkO,GAClBpiB,KAAM,QAIVoiB,EAAQysJ,EAAQ9uK,OAEhB,MAAOqiB,IACL2sJ,EAAQ3xK,KAAK,CACX2b,KAAM81J,EAAQ56J,MAAMmO,GACpBpiB,KAAM,UAER+uK,EAAQ3xK,KAAK,CACX2b,KAAM81J,EAAQ36J,IAAIkO,GAClBpiB,KAAM,QAUV,IALA+uK,EAAQ/zJ,MAAK,SAAUrT,EAAGT,GACxB,OAAOS,EAAEoR,KAAO7R,EAAE6R,QAIfqJ,EAAQ,EAAGA,EAAQ2sJ,EAAQhvK,OAAQqiB,IACV,UAAxB2sJ,EAAQ3sJ,GAAOpiB,MACjB8uK,IAGc,IAAVA,IACF76J,EAAQ86J,EAAQ3sJ,GAAOrJ,OAEQ,QAAxBg2J,EAAQ3sJ,GAAOpiB,OACxB8uK,IAGc,IAAVA,IACF56J,EAAM66J,EAAQ3sJ,GAAOrJ,OAKX,OAAV9E,GAA0B,OAARC,IACpB+B,EAAO7Y,KAAK,CAAC6W,EAAOC,IACpBD,EAAQ,KACRC,EAAM,MAIV,OAAOo5H,GAAQhS,iBAAiBrlH,IAU9B+4J,GAAiB,SAAwBr5J,GAC3C,IAAIs5J,EAAS,GAEb,IAAKt5J,IAAUA,EAAM5V,OACnB,MAAO,GAGT,IAAK,IAAIhD,EAAI,EAAGA,EAAI4Y,EAAM5V,OAAQhD,IAChCkyK,EAAO7xK,KAAKuY,EAAM1B,MAAMlX,GAAK,OAAS4Y,EAAMzB,IAAInX,IAGlD,OAAOkyK,EAAOjoK,KAAK,OAkBjBkoK,GAAoB,SAA2B1zC,EAAUgL,EAAaujB,QACnD,IAAjBA,IACFA,EAAe,GAGjB,IAAI9M,EAAczhB,EAASz7H,OAASy7H,EAAStnH,IAAIsnH,EAASz7H,OAAS,GAAK,EACxE,OAAQk9I,EAAczW,GAAeujB,GAUnColB,GAAoB,SAA2Bb,GAGjD,IAFA,IAAIc,EAAiB,GAEZryK,EAAI,EAAGA,EAAIuxK,EAAWvuK,OAAQhD,IACrCqyK,EAAehyK,KAAK,CAClB6W,MAAOq6J,EAAWr6J,MAAMlX,GACxBmX,IAAKo6J,EAAWp6J,IAAInX,KAIxB,OAAOqyK,GAgBLC,GAAmB,SAA0B1nK,EAAGT,GAElD,GAAIS,IAAMT,EACR,OAAO,EAIT,IAAKS,GAAKT,IAAMA,GAAKS,EACnB,OAAO,EAIT,GAAIA,EAAE5H,SAAWmH,EAAEnH,OACjB,OAAO,EAIT,IAAK,IAAIhD,EAAI,EAAGA,EAAI4K,EAAE5H,OAAQhD,IAC5B,GAAI4K,EAAEsM,MAAMlX,KAAOmK,EAAE+M,MAAMlX,IAAM4K,EAAEuM,IAAInX,KAAOmK,EAAEgN,IAAInX,GAClD,OAAO,EAMX,OAAO,GAGLuyK,GAAkB,SAAyB3nK,GAC7C,GAAKA,GAAMA,EAAE5H,QAAW4H,EAAEuM,IAI1B,OAAOvM,EAAEuM,IAAIvM,EAAE5H,OAAS,IAkBtBwvK,GAAc,SAAqB55J,EAAOsY,GAC5C,IAAIlV,EAAO,EAEX,IAAKpD,IAAUA,EAAM5V,OACnB,OAAOgZ,EAGT,IAAK,IAAIhc,EAAI,EAAGA,EAAI4Y,EAAM5V,OAAQhD,IAAK,CACrC,IAAIkX,EAAQ0B,EAAM1B,MAAMlX,GACpBmX,EAAMyB,EAAMzB,IAAInX,GAEhBkxB,EAAY/Z,IAMd6E,GADEkV,EAAYha,GAASga,GAAa/Z,EAC5BA,EAAM+Z,EAKR/Z,EAAMD,GAGhB,OAAO8E,GASL60J,GAAkBtgC,GAAQsgC,gBAc1B4B,GAA2B,SAAkCz1J,EAAUjE,GAGzE,IAAKA,EAAQ++I,QACX,OAAO/+I,EAAQe,SAKjB,IAAIva,EAAS,EAWb,OAVCwZ,EAAQsxF,OAAS,IAAI5nG,SAAQ,SAAUgR,GACtClU,GAAUkU,EAAEqG,aAIbf,EAAQq2F,cAAgB,IAAI3sG,SAAQ,SAAUgR,GAC9B,SAAXA,EAAExQ,OACJ1D,GAAUyd,EAASoxF,uBAGhB7uG,GAYLmzK,GAAsB,SAA6B11J,GACrD,OAAQA,EAASZ,UAAY,IAAIxF,QAAO,SAAUkB,EAAKiB,EAAS45J,GAqB9D,OApBI55J,EAAQsxF,MACVtxF,EAAQsxF,MAAM5nG,SAAQ,SAAUisE,EAAMgB,GACpC53D,EAAIzX,KAAK,CACPyZ,SAAU40D,EAAK50D,SACfo3F,aAAcyhE,EACdxhE,UAAWzhC,EACXhB,KAAMA,EACN31D,QAASA,OAIbjB,EAAIzX,KAAK,CACPyZ,SAAUf,EAAQe,SAClBo3F,aAAcyhE,EACdxhE,UAAW,KACXp4F,QAASA,EACT21D,KAAM,OAIH52D,IACN,KAGD86J,GAAe,SAAsB7tJ,GACvC,IAAI8tJ,EAAc9tJ,EAAM3I,UAAY2I,EAAM3I,SAASpZ,QAAU+hB,EAAM3I,SAAS2I,EAAM3I,SAASpZ,OAAS,GACpG,OAAO6vK,GAAeA,EAAYxoE,OAAS,IAGzCyoE,GAAoB,SAA2Bt6J,GACjD,IAAI62F,EAAiB72F,EAAK62F,eAE1B,GAAKA,EAAL,CAIA,IAAIhF,EAAQgF,EAAehF,MACvB+E,EAAeC,EAAeD,aAC9B2jE,GAAa3jE,GAAgB,IAAIx4F,QAAO,SAAUyO,EAAOksF,GAC3D,OAAOlsF,GAAuB,SAAdksF,EAAKtuG,KAAkB,EAAI,KAC1C,GAEH,OADA8vK,GAAa1oE,GAASA,EAAMrnG,OAASqnG,EAAMrnG,OAAS,EAC7C+vK,IAYLC,GAAgB,SAAuB1vK,EAAQyhB,GACjD,GAAIA,EAAMvH,QACR,OAAO,EAIT,GAAIla,GAAUA,EAAOwgB,2BACnB,OAAOxgB,EAAOwgB,2BAGhB,IAAIgrF,EAAW8jE,GAAa7tJ,GAAO/hB,OAAS,EAE5C,OAAI8rG,GAAY/pF,EAAMopF,eAAiBppF,EAAMopF,cAAc8kE,aAClDluJ,EAAMopF,cAAc8kE,aAClBnkE,GAAY/pF,EAAMqpF,mBACO,EAA3BrpF,EAAMqpF,mBACJrpF,EAAMopF,eAAiBppF,EAAMopF,cAAc+kE,SAC7CnuJ,EAAMopF,cAAc+kE,SAClBnuJ,EAAMhE,eACe,EAAvBgE,EAAMhE,eAGR,GAWLoyJ,GAAmB,SAA0Bn2J,EAAUo2J,GACzD,IAAI7zK,EAAS,EACTS,EAAIozK,EAAcp2J,EAASS,cAG3B1E,EAAUiE,EAASZ,SAASpc,GAGhC,GAAI+Y,EAAS,CACX,GAA6B,qBAAlBA,EAAQ7B,MACjB,MAAO,CACL3X,OAAQwZ,EAAQ7B,MAChB05F,SAAS,GAIb,GAA2B,qBAAhB73F,EAAQ5B,IACjB,MAAO,CACL5X,OAAQwZ,EAAQ5B,IAAM4B,EAAQe,SAC9B82F,SAAS,GAKf,MAAO5wG,IAAK,CAGV,GAFA+Y,EAAUiE,EAASZ,SAASpc,GAED,qBAAhB+Y,EAAQ5B,IACjB,MAAO,CACL5X,OAAQA,EAASwZ,EAAQ5B,IACzBy5F,SAAS,GAMb,GAFArxG,GAAUkzK,GAAyBz1J,EAAUjE,GAEhB,qBAAlBA,EAAQ7B,MACjB,MAAO,CACL3X,OAAQA,EAASwZ,EAAQ7B,MACzB05F,SAAS,GAKf,MAAO,CACLrxG,OAAQA,EACRqxG,SAAS,IAYTyiE,GAAkB,SAAyBr2J,EAAUo2J,GAMvD,IALA,IACIr6J,EADAxZ,EAAS,EAETS,EAAIozK,EAAcp2J,EAASS,cAGxBzd,EAAIgd,EAASZ,SAASpZ,OAAQhD,IAAK,CAGxC,GAFA+Y,EAAUiE,EAASZ,SAASpc,GAEC,qBAAlB+Y,EAAQ7B,MACjB,MAAO,CACL3X,OAAQwZ,EAAQ7B,MAAQ3X,EACxBqxG,SAAS,GAMb,GAFArxG,GAAUkzK,GAAyBz1J,EAAUjE,GAElB,qBAAhBA,EAAQ5B,IACjB,MAAO,CACL5X,OAAQwZ,EAAQ5B,IAAM5X,EACtBqxG,SAAS,GAMf,MAAO,CACLrxG,QAAS,EACTqxG,SAAS,IAkBT0iE,GAAmB,SAA0Bt2J,EAAUo2J,EAAaG,GAKtE,GAJ2B,qBAAhBH,IACTA,EAAcp2J,EAASS,cAAgBT,EAASZ,SAASpZ,QAGvDowK,EAAcp2J,EAASS,cACzB,OAAO,EAIT,IAAI+1J,EAAWL,GAAiBn2J,EAAUo2J,GAE1C,GAAII,EAAS5iE,QAIX,OAAO4iE,EAASj0K,OAKlB,IAAIk0K,EAAUJ,GAAgBr2J,EAAUo2J,GAExC,OAAIK,EAAQ7iE,QAGH6iE,EAAQl0K,OAIVi0K,EAASj0K,OAASg0K,GAmBvBz5J,GAAW,SAAkBkD,EAAUo2J,EAAaG,GACtD,IAAKv2J,EACH,OAAO,EAST,GANuB,kBAAZu2J,IACTA,EAAU,GAKe,qBAAhBH,EAA6B,CAEtC,GAAIp2J,EAAS02J,cACX,OAAO12J,EAAS02J,cAIlB,IAAK12J,EAASQ,QACZ,OAAO,IAAS1C,SAKpB,OAAOw4J,GAAiBt2J,EAAUo2J,EAAaG,IAgB7CI,GAAe,SAAsBj1J,GACvC,IAAIk1J,EAAkBl1J,EAAMk1J,gBACxBC,EAAen1J,EAAMm1J,aACrB32J,EAAawB,EAAMxB,WACnBU,EAAWc,EAAMd,SACjBk2J,EAAY,EAEhB,GAAI52J,EAAaU,EAAU,CACzB,IAAIgB,EAAQ,CAAChB,EAAUV,GACvBA,EAAa0B,EAAM,GACnBhB,EAAWgB,EAAM,GAGnB,GAAI1B,EAAa,EAAG,CAClB,IAAK,IAAIld,EAAIkd,EAAYld,EAAImb,KAAKM,IAAI,EAAGmC,GAAW5d,IAClD8zK,GAAaF,EAGf12J,EAAa,EAGf,IAAK,IAAImuF,EAAKnuF,EAAYmuF,EAAKztF,EAAUytF,IACvCyoE,GAAaD,EAAaxoE,GAAIvxF,SAGhC,OAAOg6J,GAuBLC,GAAc,SAAqB/2J,EAAUu2J,EAASS,EAAgBC,GACxE,IAAKj3J,IAAaA,EAASZ,SACzB,OAAO,KAGT,GAAIY,EAASQ,QACX,OAAO1D,GAASkD,GAGlB,GAAgB,OAAZu2J,EACF,OAAO,KAGTA,EAAUA,GAAW,EACrB,IAAIW,EAAqBZ,GAAiBt2J,EAAUA,EAASS,cAAgBT,EAASZ,SAASpZ,OAAQuwK,GAQvG,OANIS,IACFC,EAA6C,kBAApBA,EAA+BA,EAAkBjB,GAAc,KAAMh2J,GAC9Fk3J,GAAsBD,GAIjB94J,KAAKK,IAAI,EAAG04J,IAqBjBlhC,GAAW,SAAkBh2H,EAAUu2J,EAASU,GAClD,IAAID,GAAiB,EACjB1xB,EAAgBixB,GAAW,EAC3BtzB,EAAc8zB,GAAY/2J,EAAUu2J,EAASS,EAAgBC,GAEjE,OAAoB,OAAhBh0B,EACK4wB,KAGFA,GAAgBvuB,EAAerC,IAiBpCk0B,GAAsB,SAA6Bn1J,GAWrD,IAVA,IAAIhC,EAAWgC,EAAMhC,SACjBysH,EAAczqH,EAAMyqH,YACpB2qC,EAAuBp1J,EAAMo1J,qBAC7BC,EAAoBr1J,EAAMq1J,kBAC1BnjJ,EAAYlS,EAAMkS,UAClBojJ,EAAmCt1J,EAAMs1J,iCACzCt4J,EAAOytH,EAAcv4G,EACrBqjJ,EAAmB7B,GAAoB11J,GACvCE,EAAa,EAERld,EAAI,EAAGA,EAAIu0K,EAAiBvxK,OAAQhD,IAAK,CAChD,IAAIw0K,EAAiBD,EAAiBv0K,GAEtC,GAAIo0K,IAAyBI,EAAetjE,eAKX,kBAAtBmjE,GAAsE,kBAA7BG,EAAerjE,WAA0BkjE,IAAsBG,EAAerjE,WAAlI,CAIAj0F,EAAald,EACb,OAGF,GAAIgc,EAAO,EAAG,CAGZ,GAAIkB,EAAa,EACf,IAAK,IAAI49H,EAAM59H,EAAa,EAAG49H,GAAO,EAAGA,IAAO,CAC9C,IAAI25B,EAAkBF,EAAiBz5B,GAGvC,GAFA9+H,GAAQy4J,EAAgB36J,SAEpBw6J,GACF,GAAIt4J,EAAO,EACT,cAEG,GAAIA,EAAOo1J,IAAqB,EACrC,SAGF,MAAO,CACLjgE,UAAWsjE,EAAgBtjE,UAC3BD,aAAcujE,EAAgBvjE,aAC9BhgF,UAAWA,EAAYyiJ,GAAa,CAClCC,gBAAiB52J,EAAS+D,eAC1B8yJ,aAAcU,EACdr3J,WAAYA,EACZU,SAAUk9H,KAQlB,MAAO,CACL3pC,UAAWojE,EAAiB,IAAMA,EAAiB,GAAGpjE,WAAa,KACnED,aAAcqjE,EAAiB,IAAMA,EAAiB,GAAGrjE,cAAgB,EACzEhgF,UAAWu4G,GAOf,GAAIvsH,EAAa,EAAG,CAClB,IAAK,IAAIw3J,EAAMx3J,EAAYw3J,EAAM,EAAGA,IAGlC,GAFA14J,GAAQgB,EAAS+D,eAEb/E,EAAO,EACT,MAAO,CACLm1F,UAAWojE,EAAiB,IAAMA,EAAiB,GAAGpjE,WAAa,KACnED,aAAcqjE,EAAiB,IAAMA,EAAiB,GAAGrjE,cAAgB,EACzEhgF,UAAWu4G,GAKjBvsH,EAAa,EAKf,IAAK,IAAIy3J,EAAMz3J,EAAYy3J,EAAMJ,EAAiBvxK,OAAQ2xK,IAAO,CAC/D,IAAIC,EAAmBL,EAAiBI,GAGxC,GAFA34J,GAAQ44J,EAAiB96J,SAErBw6J,GACF,GAAIt4J,EAAO,EACT,cAEG,GAAIA,EAAOo1J,IAAqB,EACrC,SAGF,MAAO,CACLjgE,UAAWyjE,EAAiBzjE,UAC5BD,aAAc0jE,EAAiB1jE,aAC/BhgF,UAAWA,EAAYyiJ,GAAa,CAClCC,gBAAiB52J,EAAS+D,eAC1B8yJ,aAAcU,EACdr3J,WAAYA,EACZU,SAAU+2J,KAMhB,MAAO,CACLzjE,aAAcqjE,EAAiBA,EAAiBvxK,OAAS,GAAGkuG,aAC5DC,UAAWojE,EAAiBA,EAAiBvxK,OAAS,GAAGmuG,UACzDjgF,UAAWu4G,IAYXorC,GAAgB,SAAuB73J,GACzC,OAAOA,EAAS83J,cAAgB93J,EAAS83J,aAAe7rJ,KAAKlO,OAY3Dg6J,GAAiB,SAAwB/3J,GAC3C,OAAOA,EAAS83J,cAAgB93J,EAAS83J,eAAiBh6J,KAWxDk6J,GAAY,SAAmBh4J,GACjC,IAAIi4J,EAAcJ,GAAc73J,GAChC,OAAQA,EAAS6yG,WAAaolD,GAW5BC,GAAa,SAAoBl4J,GACnC,OAAOA,EAAS6yG,UASdslD,GAAQ,SAAepwJ,GACzB,IAAK,IAAI/kB,EAAI,EAAGA,EAAI+kB,EAAM3I,SAASpZ,OAAQhD,IACzC,GAAI+kB,EAAM3I,SAASpc,GAAGsO,IACpB,OAAO,EAIX,OAAO,GAeLi1G,GAAe,SAAsB3tF,EAAM5Y,GAC7C,OAAOA,EAASlZ,YAAckZ,EAASlZ,WAAW8xB,IAoBhDw/I,GAA6B,SAAoCl7J,EAAiB4G,EAAW9D,EAAUq4J,GAKzG,QAJsB,IAAlBA,IACFA,EAAgB,IAGb9xD,GAAa,YAAavmG,GAC7B,OAAOw7I,IAGT,IAAI76I,EAAOzD,EAAkB8C,EAASlZ,WAAW+c,UACjD,OAAQlD,EAAuB,EAAhB03J,GAAqBv0J,GASlCw0J,GAA2B,SAAkChyK,EAAQyhB,GACvE,GAAgC,IAA5BzhB,EAAOO,UAAUb,OACnB,OAAO,EAGT,IAAIuyK,EAAmBxwJ,EAAMjhB,WAAW+c,WAAa5e,OAAOuzK,UAC5D,OAMc,IANPlyK,EAAOO,UAAUyZ,QAAO,SAAUN,GACvC,QAAKg4J,GAAUh4J,KAIPA,EAASlZ,WAAW+c,WAAa,GAAK00J,KAC7CvyK,QAGDyyK,GAAgB,SAAuB7qK,EAAGT,GAI5C,SAAKS,IAAMT,IAAMS,GAAKT,GAAKS,IAAMT,KAK7BS,IAAMT,OAMNS,EAAEqV,KAAM9V,EAAE8V,IAAMrV,EAAEqV,KAAO9V,EAAE8V,SAM3BrV,EAAEoO,cAAe7O,EAAE6O,aAAepO,EAAEoO,cAAgB7O,EAAE6O,iBAMtDpO,EAAEmE,MAAO5E,EAAE4E,KAAOnE,EAAEmE,MAAQ5E,EAAE4E,SAOhC2mK,GAAmB,SAA0BpyK,EAAQ2L,GACvD,IAAIxL,EAAQH,GAAUA,EAAOE,aAAeF,EAAOE,YAAYC,OAAS,GACpE8zJ,GAAQ,EAEZ,IAAK,IAAIoe,KAAalyK,EAAO,CAC3B,IAAK,IAAI+a,KAAS/a,EAAMkyK,GAGtB,GAFApe,EAAQtoJ,EAASxL,EAAMkyK,GAAWn3J,IAE9B+4I,EACF,MAIJ,GAAIA,EACF,MAIJ,QAASA,GAGP52I,GAAc,SAAqBrd,GAGrC,IAAKA,IAAWA,EAAOO,YAAcP,EAAOO,UAAUb,OAAQ,CAG5D,IAAIu0J,EAAQme,GAAiBpyK,GAAQ,SAAUsyK,GAC7C,OAAOA,EAAQ/xK,WAAa+xK,EAAQ/xK,UAAUb,QAAU4yK,EAAQ7mK,OAElE,OAAOwoJ,EA8BT,IA1BA,IAAInwB,EAAQ,SAAepnI,GACzB,IAAIgd,EAAW1Z,EAAOO,UAAU7D,GAC5B+D,EAASiZ,EAASlZ,YAAckZ,EAASlZ,WAAWC,OAExD,GAAIA,GAAUA,EAAOvB,MAAM,KAAK+B,OAAM,SAAUF,GAC9C,OAAO,eAAaA,MAEpB,MAAO,WAIT,IAAIkzJ,EAAQme,GAAiBpyK,GAAQ,SAAUsyK,GAC7C,OAAOH,GAAcz4J,EAAU44J,MAGjC,OAAIre,EACK,WAKF,CACLhrJ,GAAG,IAIEvM,EAAI,EAAGA,EAAIsD,EAAOO,UAAUb,OAAQhD,IAAK,CAChD,IAAI61K,EAAOzuC,EAAMpnI,GAEjB,GAAa,aAAT61K,GACgB,kBAATA,EAAmB,OAAOA,EAAKtpK,EAK5C,OAAO,GAILupK,GAAW,CACb9C,cAAeA,GACfl5J,SAAUA,GACVk5H,SAAUA,GACVmhC,oBAAqBA,GACrBa,UAAWA,GACXE,WAAYA,GACZL,cAAeA,GACfE,eAAgBA,GAChBhB,YAAaA,GACboB,MAAOA,GACP5xD,aAAcA,GACd6xD,2BAA4BA,GAC5BE,yBAA0BA,GAC1B30J,YAAaA,GACb80J,cAAeA,GACfhD,yBAA0BA,IAExBxqK,GAAMsoI,GAAQtoI,IAEd8tK,GAAmB,SAA0B1uK,EAAO0H,GACtD,OAAO1H,EAAQ,IAAM0H,GAInBinK,GAAU,SAAiB/yK,EAAMsb,EAAOC,GAC1C,MAAO,mBAAqBvb,EAAO,IAAMsb,EAAQ,IAAMC,GAsBrDy3J,GAAgB,SAAuBz9J,GACzC,IAAI09J,EAAS19J,EAAK09J,OACdC,EAAS39J,EAAK29J,OACd3oJ,EAAiBhV,EAAKgV,eACtB4oJ,EAAwB59J,EAAK69J,iBAC7BA,OAA6C,IAA1BD,EAAmC,GAAKA,EAC3DE,EAAwB99J,EAAK+9J,iBAC7BA,OAA6C,IAA1BD,EAAmC,GAAKA,EAC3DE,EAAoBh+J,EAAKg+J,kBACzB9oJ,EAAS,IAAI,OAEbwoJ,GACFxoJ,EAAOo9E,GAAG,OAAQorE,GAGhBC,GACFzoJ,EAAOo9E,GAAG,OAAQqrE,GAGpBE,EAAiB5zK,SAAQ,SAAUg0K,GACjC,OAAO/oJ,EAAO+/E,UAAUgpE,MAE1BF,EAAiB9zK,SAAQ,SAAUgqG,GACjC,OAAO/+E,EAAOogF,aAAarB,MAE7B/+E,EAAOrtB,KAAKmtB,GACZE,EAAOvW,MACP,IAAIiH,EAAWsP,EAAOtP,SAqBtB,GAlBKo4J,IACH,CAAC,iBAAkB,OAAQ,gBAAiB,mBAAoB,UAAW,sBAAsB/zK,SAAQ,SAAUwU,GAC7GmH,EAASvP,eAAeoI,WACnBmH,EAASnH,MAIhBmH,EAAShC,UACXgC,EAAShC,SAAS3Z,SAAQ,SAAUsW,GAClC,CAAC,QAAS,gBAAgBtW,SAAQ,SAAUwU,GACtC8B,EAAQlK,eAAeoI,WAClB8B,EAAQ9B,WAOpBmH,EAAS2C,eAAgB,CAC5B,IAAIA,EAAiB,GAEjB3C,EAAShC,UAAYgC,EAAShC,SAASpZ,SACzC+d,EAAiB3C,EAAShC,SAASxF,QAAO,SAAUkB,EAAKkS,GACvD,OAAO7O,KAAKK,IAAI1D,EAAKkS,EAAElQ,YACtB,IAGDo8J,GACFA,EAAO,gDAAkDn1J,GAG3D3C,EAAS2C,eAAiBA,EAG5B,IAAIspF,EAAQuoE,GAAax0J,GAEzB,GAAIisF,EAAMrnG,SAAWob,EAASgwF,mBAAoB,CAChD,IAAIA,EAAqB/D,EAAMzzF,QAAO,SAAUkB,EAAKrE,GACnD,OAAO0H,KAAKK,IAAI1D,EAAKrE,EAAEqG,YACtB,GAECo8J,IACFA,EAAO,oDAAsD9nE,GAC7DnmG,GAAIgtB,MAAM,0MAGZ7W,EAASgwF,mBAAqBA,EAGhC,OAAOhwF,GAaLnI,GAAoB,SAA2B3S,EAAQ2L,GACpD3L,EAAOE,aAIZ,CAAC,QAAS,aAAaf,SAAQ,SAAUW,GACvC,GAAKE,EAAOE,YAAYJ,GAIxB,IAAK,IAAI+S,KAAY7S,EAAOE,YAAYJ,GACtC,IAAK,IAAIgT,KAAY9S,EAAOE,YAAYJ,GAAW+S,GAAW,CAC5D,IAAIE,EAAkB/S,EAAOE,YAAYJ,GAAW+S,GAAUC,GAC9DnH,EAASoH,EAAiBjT,EAAW+S,EAAUC,QAqBnDsgK,GAAqB,SAA4Bh4J,GACnD,IAAI1B,EAAW0B,EAAM1B,SACjBjO,EAAM2P,EAAM3P,IACZkR,EAAKvB,EAAMuB,GACfjD,EAASiD,GAAKA,EACdjD,EAAS25J,gBAAkB,EAEvB5nK,IAIFiO,EAASjO,IAAMA,GAUjBiO,EAASlZ,WAAakZ,EAASlZ,YAAc,IAY3C8yK,GAAsB,SAA6BtzK,GACrD,IAAItD,EAAIsD,EAAOO,UAAUb,OAEzB,MAAOhD,IAAK,CACV,IAAIgd,EAAW1Z,EAAOO,UAAU7D,GAChC02K,GAAmB,CACjB15J,SAAUA,EACViD,GAAI81J,GAAiB/1K,EAAGgd,EAASjO,OAEnCiO,EAAShE,YAAc/E,GAAW3Q,EAAOyL,IAAKiO,EAASjO,KACvDzL,EAAOO,UAAUmZ,EAASiD,IAAMjD,EAEhC1Z,EAAOO,UAAUmZ,EAASjO,KAAOiO,EAK5BA,EAASlZ,WAAW+c,WACvB5Y,GAAIqqB,KAAK,wEAYXukJ,GAAwB,SAA+BvzK,GACzD2S,GAAkB3S,GAAQ,SAAUgb,GAC9BA,EAAWvP,MACbuP,EAAWtF,YAAc/E,GAAW3Q,EAAOyL,IAAKuP,EAAWvP,UAiB7D+nK,GAAiB,SAAwB/xJ,EAAOhW,GAClD,IAAIkR,EAAK81J,GAAiB,EAAGhnK,GACzBzL,EAAS,CACXE,YAAa,CACX,MAAS,GACT,MAAS,GACT,kBAAmB,GACnB,UAAa,IAEfuL,IAAK,IAASqF,SAASC,KACvB2E,YAAa,IAAS5E,SAASC,KAC/BxQ,UAAW,CAAC,CACVkL,IAAKA,EACLkR,GAAIA,EACJjH,YAAajK,EAGbjL,WAAY,MAOhB,OAHAR,EAAOO,UAAUoc,GAAM3c,EAAOO,UAAU,GAExCP,EAAOO,UAAUkL,GAAOzL,EAAOO,UAAU,GAClCP,GAeLyzK,GAAwB,SAA+BzzK,EAAQyL,EAAKioK,QAChD,IAAlBA,IACFA,EAAgBhB,IAGlB1yK,EAAOyL,IAAMA,EAEb,IAAK,IAAI/O,EAAI,EAAGA,EAAIsD,EAAOO,UAAUb,OAAQhD,IAC3C,IAAKsD,EAAOO,UAAU7D,GAAG+O,IAAK,CAI5B,IAAIkoK,EAAW,mBAAqBj3K,EACpCsD,EAAOO,UAAU7D,GAAG+O,IAAMkoK,EAI9B,IAAIC,EAAkBv2J,GAAYrd,GAClC2S,GAAkB3S,GAAQ,SAAUgb,EAAYlb,EAAW+S,EAAUC,GAEnE,IAAKkI,EAAWza,YAAcya,EAAWza,UAAUb,OAAQ,CAIzD,GAAIk0K,GAAiC,UAAd9zK,IAA0Bkb,EAAWvP,IAC1D,IAAK,IAAIs8F,EAAK,EAAGA,EAAK/nG,EAAOO,UAAUb,OAAQqoG,IAAM,CACnD,IAAI53F,EAAInQ,EAAOO,UAAUwnG,GAEzB,GAAI53F,EAAE3P,YAAc2P,EAAE3P,WAAWL,OAASgQ,EAAE3P,WAAWL,QAAU0S,EAC/D,OAKNmI,EAAWza,UAAY,CAAC,IAAS,GAAIya,IAGvCA,EAAWza,UAAUpB,SAAQ,SAAUgR,EAAGzT,GACxC,IAAIm3K,EAAUH,EAAc5zK,EAAW+S,EAAUC,EAAU3C,GACvDwM,EAAK81J,GAAiB/1K,EAAGm3K,GAEzB1jK,EAAE1E,IACJ0E,EAAEuF,YAAcvF,EAAEuF,aAAe/E,GAAW3Q,EAAOyL,IAAK0E,EAAE1E,MAM1D0E,EAAE1E,IAAY,IAAN/O,EAAUm3K,EAAUl3J,EAG5BxM,EAAEuF,YAAcvF,EAAE1E,KAGpB0E,EAAEwM,GAAKxM,EAAEwM,IAAMA,EAGfxM,EAAE3P,WAAa2P,EAAE3P,YAAc,GAE/BR,EAAOO,UAAU4P,EAAEwM,IAAMxM,EACzBnQ,EAAOO,UAAU4P,EAAE1E,KAAO0E,QAG9BmjK,GAAoBtzK,GACpBuzK,GAAsBvzK,IAGpB8zK,GAAiB7mC,GAAQmgC,aACzB2G,GAAgB9mC,GAAQugC,YAExBwG,GAA0B,SAAiCvoK,EAAKgW,GAClE,GAAIA,EAAMvH,UAAYuH,EAAMopF,cAC1B,OAAOp/F,EAGT,IAAIwoK,EAAa,GAEjB,GAAIxyJ,EAAMopF,cAAckD,eAAgB,CACtC,IAAIhC,EAAiBtqF,EAAMsqF,eAEvBmoE,EAAUzyJ,EAAMtH,cAAgBsH,EAAM3I,SAASpZ,OAInD,GAAIqsG,EAAgB,CAClB,IAAIhF,EAAQgF,EAAehF,OAAS,GAEhCotE,EAAW3E,GAAkB/tJ,GAAS,EAItC0yJ,GAAY,GAAKA,IAAaptE,EAAMrnG,OAAS,IAG/Cu0K,EAAWG,UAAYD,IAYrBA,GAAY,GAAKptE,EAAMrnG,SACzBw0K,IAMJD,EAAWI,SAAWH,EASxB,GANIzyJ,EAAMopF,eAAiBppF,EAAMopF,cAAcypE,eAG7CL,EAAWM,UAAY9yJ,EAAMopF,cAAcmD,kBAAoB,KAAO,OAGpEllG,OAAO0K,KAAKygK,GAAYv0K,OAAQ,CAClC,IAAI80K,EAAY,IAAI,IAASvjK,IAAIxF,GACjC,CAAC,YAAa,WAAY,aAAatM,SAAQ,SAAUG,GAClD20K,EAAW1oK,eAAejM,IAI/Bk1K,EAAUC,aAAatnJ,IAAI7tB,EAAM20K,EAAW30K,OAE9CmM,EAAM+oK,EAAU51K,WAGlB,OAAO6M,GAaLipK,GAAgB,SAAuBptK,EAAGT,GAC5C,IAAKS,EACH,OAAOT,EAGT,IAAI5K,EAAS63K,GAAexsK,EAAGT,GAS/B,GANIS,EAAEwkG,eAAiBjlG,EAAEilG,qBAChB7vG,EAAO6vG,aAKZxkG,EAAEy/F,QAAUlgG,EAAEkgG,aACT9qG,EAAO8qG,WAGT,GAAIz/F,EAAEy/F,OAASlgG,EAAEkgG,MACtB,IAAK,IAAIrqG,EAAI,EAAGA,EAAImK,EAAEkgG,MAAMrnG,OAAQhD,IAC9B4K,EAAEy/F,OAASz/F,EAAEy/F,MAAMrqG,KACrBT,EAAO8qG,MAAMrqG,GAAKo3K,GAAexsK,EAAEy/F,MAAMrqG,GAAImK,EAAEkgG,MAAMrqG,KAiB3D,OAVK4K,EAAEqtK,SAAW9tK,EAAE8tK,UAClB14K,EAAO04K,SAAU,GAKfrtK,EAAEktJ,UAAY3tJ,EAAE2tJ,UAClBv4J,EAAOu4J,SAAU,GAGZv4J,GAmBL24K,GAAiB,SAAwBryD,EAAU0xB,EAAQlsI,GAC7D,IAAI8sK,EAActyD,EAAS1jH,QACvBi2K,EAAc7gC,EAAOp1I,QACzBkJ,EAASA,GAAU,EAInB,IAHA,IACIsjG,EADApvG,EAAS,GAGJouJ,EAAW,EAAGA,EAAWyqB,EAAYp1K,OAAQ2qJ,IAAY,CAChE,IAAIvuI,EAAa+4J,EAAYxqB,EAAWtiJ,GACpCgtK,EAAaD,EAAYzqB,GAEzBvuI,GACFuvF,EAAavvF,EAAWhb,KAAOuqG,EAC/BpvG,EAAOc,KAAK23K,GAAc54J,EAAYi5J,MAGlC1pE,IAAe0pE,EAAWj0K,MAC5Bi0K,EAAWj0K,IAAMuqG,GAGnBpvG,EAAOc,KAAKg4K,IAIhB,OAAO94K,GAGL+4K,GAAqB,SAA4Bv/J,EAASw/J,IAGvDx/J,EAAQC,aAAeD,EAAQhK,MAClCgK,EAAQC,YAAc/E,GAAWskK,EAASx/J,EAAQhK,MAGhDgK,EAAQzK,MAAQyK,EAAQzK,IAAI0K,cAC9BD,EAAQzK,IAAI0K,YAAc/E,GAAWskK,EAASx/J,EAAQzK,IAAIS,MAGxDgK,EAAQ3U,MAAQ2U,EAAQ3U,IAAI4U,cAC9BD,EAAQ3U,IAAI4U,YAAc/E,GAAWskK,EAASx/J,EAAQ3U,IAAI2K,MAGxDgK,EAAQ3U,KAAO2U,EAAQ3U,IAAIkK,MAAQyK,EAAQ3U,IAAIkK,IAAI0K,cACrDD,EAAQ3U,IAAIkK,IAAI0K,YAAc/E,GAAWskK,EAASx/J,EAAQ3U,IAAIkK,IAAIS,MAGhEgK,EAAQsxF,OAAStxF,EAAQsxF,MAAMrnG,QACjC+V,EAAQsxF,MAAM5nG,SAAQ,SAAUgR,GAC1BA,EAAEuF,cAINvF,EAAEuF,YAAc/E,GAAWskK,EAAS9kK,EAAE1E,SAItCgK,EAAQq2F,cAAgBr2F,EAAQq2F,aAAapsG,QAC/C+V,EAAQq2F,aAAa3sG,SAAQ,SAAUgR,GACjCA,EAAEuF,cAINvF,EAAEuF,YAAc/E,GAAWskK,EAAS9kK,EAAE1E,UAKxCypK,GAAiB,SAAwBzzJ,GAC3C,IAAI3I,EAAW2I,EAAM3I,UAAY,GAC7BizF,EAAiBtqF,EAAMsqF,eAI3B,GAAIA,GAAkBA,EAAehF,OAASgF,EAAehF,MAAMrnG,OAAQ,CAIzE,GAAIqsG,EAAeD,aACjB,IAAK,IAAIpvG,EAAI,EAAGA,EAAIqvG,EAAeD,aAAapsG,OAAQhD,IACtD,GAA4C,QAAxCqvG,EAAeD,aAAapvG,GAAGiD,KACjC,OAAOmZ,EAMbizF,EAAev1F,SAAWiL,EAAMhE,eAChCsuF,EAAeyoD,SAAU,EACzB17I,EAAS/b,KAAKgvG,GAGhB,OAAOjzF,GAMLq8J,GAAsB,SAA6B7tK,EAAGT,GACxD,OAAOS,IAAMT,GAAKS,EAAEwR,UAAYjS,EAAEiS,UAAYxR,EAAEwR,SAASpZ,SAAWmH,EAAEiS,SAASpZ,QAAU4H,EAAE4S,UAAYrT,EAAEqT,SAAW5S,EAAE6S,gBAAkBtT,EAAEsT,eAAiB7S,EAAEykG,iBAAmBllG,EAAEklG,gBAgBhLqpE,GAAiB,SAAsBp1K,EAAQq1K,EAAUC,QACpC,IAAnBA,IACFA,EAAiBH,IAGnB,IAAIl5K,EAAS63K,GAAe9zK,EAAQ,IAChCu1K,EAAWt5K,EAAOsE,UAAU80K,EAAS14J,IAEzC,IAAK44J,EACH,OAAO,KAGT,GAAID,EAAeC,EAAUF,GAC3B,OAAO,KAGTA,EAASv8J,SAAWo8J,GAAeG,GACnC,IAAIG,EAAiB1B,GAAeyB,EAAUF,GAO9C,GALIG,EAAezpE,iBAAmBspE,EAAStpE,uBACtCypE,EAAezpE,eAIpBwpE,EAASz8J,SAAU,CACrB,GAAIu8J,EAAS3nE,KAAM,CACjB2nE,EAASv8J,SAAWu8J,EAASv8J,UAAY,GAGzC,IAAK,IAAIpc,EAAI,EAAGA,EAAI24K,EAAS3nE,KAAK+nE,gBAAiB/4K,IACjD24K,EAASv8J,SAASoD,QAAQ,CACxBy4J,SAAS,IAKfa,EAAe18J,SAAW87J,GAAeW,EAASz8J,SAAUu8J,EAASv8J,SAAUu8J,EAASl7J,cAAgBo7J,EAASp7J,eAInHq7J,EAAe18J,SAAS3Z,SAAQ,SAAUsW,GACxCu/J,GAAmBv/J,EAAS+/J,EAAe9/J,gBAK7C,IAAK,IAAIqyF,EAAK,EAAGA,EAAK9rG,EAAOsE,UAAUb,OAAQqoG,IACzC9rG,EAAOsE,UAAUwnG,GAAIprF,KAAO04J,EAAS14J,KACvC1gB,EAAOsE,UAAUwnG,GAAMytE,GAmB3B,OAfAv5K,EAAOsE,UAAU80K,EAAS14J,IAAM64J,EAEhCv5K,EAAOsE,UAAU80K,EAAS5pK,KAAO+pK,EAEjC7iK,GAAkB3S,GAAQ,SAAUgb,EAAYlb,EAAW+S,EAAUC,GACnE,GAAKkI,EAAWza,UAIhB,IAAK,IAAIi3I,EAAM,EAAGA,EAAMx8H,EAAWza,UAAUb,OAAQ83I,IAC/C69B,EAAS14J,KAAO3B,EAAWza,UAAUi3I,GAAK76H,KAC5C3B,EAAWza,UAAUi3I,GAAOg+B,MAI3Bv5K,GAcLy5K,GAAe,SAAsBj0J,EAAOwyH,GAC9C,IAAIn7H,EAAW2I,EAAM3I,UAAY,GAC7By2J,EAAcz2J,EAASA,EAASpZ,OAAS,GACzCi2K,EAAWpG,GAAeA,EAAYxoE,OAASwoE,EAAYxoE,MAAMwoE,EAAYxoE,MAAMrnG,OAAS,GAC5Fk2K,EAAeD,GAAYA,EAASn/J,UAAY+4J,GAAeA,EAAY/4J,SAE/E,OAAIy9H,GAAU2hC,EACU,IAAfA,EAKyD,KAA1Dn0J,EAAMqpF,oBAAsBrpF,EAAMhE,gBAAkB,KAa1Do4J,GAA8B,SAAU11C,GAG1C,SAAS01C,EAAe5/D,EAAK6/D,EAAKpqK,GAChC,IAAI28F,EAQJ,QANgB,IAAZ38F,IACFA,EAAU,IAGZ28F,EAAQ83B,EAAaztH,KAAK5Q,OAASA,MAE9Bm0G,EACH,MAAM,IAAInqG,MAAM,kDAGlBu8F,EAAM0tE,QAAUlI,GAAO,kBACvB,IAAIpkJ,EAAW/d,EACXsqK,EAAwBvsJ,EAAS9a,gBACjCA,OAA4C,IAA1BqnK,GAA2CA,EAC7DC,EAAwBxsJ,EAASysJ,wBACjCA,OAAoD,IAA1BD,GAA2CA,EACzE5tE,EAAM4N,IAAMA,EACZ5N,EAAM8tE,KAAOL,EACbztE,EAAM15F,gBAAkBA,EACxB05F,EAAM6tE,wBAA0BA,EAChC,IAAIE,EAAaN,EAAIpiD,SAgBrB,OAfArrB,EAAM0qE,iBAAmBqD,GAAcA,EAAWrD,kBAAoB,GACtE1qE,EAAM4qE,iBAAmBmD,GAAcA,EAAWnD,kBAAoB,GACtE5qE,EAAM6qE,kBAAoBkD,GAAcA,EAAWlD,oBAAqB,EAEpEjmC,GAAQvmB,QAAQX,aAClB1d,EAAM6qE,mBAAoB,GAI5B7qE,EAAMvE,MAAQ,eAEduE,EAAMguE,0BAA4BhuE,EAAMguE,0BAA0BxmK,KAAK,IAAuBw4F,IAE9FA,EAAMb,GAAG,qBAAsBa,EAAMguE,2BAE9BhuE,EAzCT,IAAewtE,EAAgB11C,GA4C/B,IAAI54B,EAASsuE,EAAetsK,UAsgB5B,OApgBAg+F,EAAO8uE,0BAA4B,WACjC,IAAIptE,EAASnnG,KAEb,GAAmB,kBAAfA,KAAKgiG,MAAT,CAKA,IAAIriF,EAAQ3f,KAAK2f,QACbhW,EAAMkF,GAAW7O,KAAK9B,OAAOyL,IAAKgW,EAAMhW,KAExC3J,KAAKoxK,oBACPznK,EAAMuoK,GAAwBvoK,EAAKgW,IAGrC3f,KAAKgiG,MAAQ,wBACbhiG,KAAK8+J,QAAU9+J,KAAKq0K,KAAKhqK,IAAI,CAC3BV,IAAKA,EACLkD,gBAAiB7M,KAAK6M,kBACrB,SAAUgjB,EAAOg8I,GAElB,GAAK1kE,EAAO23D,QAIZ,OAAIjvI,EACKs3E,EAAOqtE,qBAAqBrtE,EAAO23D,QAAS33D,EAAOxnF,QAAS,sBAGrEwnF,EAAOstE,aAAa,CAClBC,eAAgBvtE,EAAO23D,QAAQn0J,aAC/BgB,IAAKw7F,EAAOxnF,QAAQhW,IACpBkR,GAAIssF,EAAOxnF,QAAQ9E,UAKzB4qF,EAAO+uE,qBAAuB,SAA8BnqK,EAAKuN,EAAU+8J,GACzE,IAAIhrK,EAAMiO,EAASjO,IACfkR,EAAKjD,EAASiD,GAElB7a,KAAK8+J,QAAU,KAEX6V,IACF30K,KAAKgiG,MAAQ2yE,GAGf30K,KAAK6vB,MAAQ,CACXjY,SAAU5X,KAAK9B,OAAOO,UAAUoc,GAChCrP,OAAQnB,EAAImB,OACZqsF,QAAS,sCAAwCluF,EAAM,IACvDgB,aAAcN,EAAIM,aAClBqC,KAAM3C,EAAImB,QAAU,IAAM,EAAI,GAEhCxL,KAAK8lG,QAAQ,UAGfL,EAAOmvE,eAAiB,SAAwBxhK,GAC9C,IAAIk1F,EAAStoG,KAET2L,EAAMyH,EAAKzH,IACXyc,EAAiBhV,EAAKgV,eAC1B,OAAOyoJ,GAAc,CACnBC,OAAQ,SAAgBx3J,GACtB,IAAIu+E,EAAUv+E,EAAMu+E,QACpB,OAAOyQ,EAAO2rE,QAAQ,wBAA0BtoK,EAAM,KAAOksF,IAE/Dk5E,OAAQ,SAAgBv3J,GACtB,IAAIq+E,EAAUr+E,EAAMq+E,QACpB,OAAOyQ,EAAO2rE,QAAQ,wBAA0BtoK,EAAM,KAAOksF,IAE/DzvE,eAAgBA,EAChB6oJ,iBAAkBjxK,KAAKixK,iBACvBE,iBAAkBnxK,KAAKmxK,iBACvBC,kBAAmBpxK,KAAKoxK,qBAiB5B3rE,EAAOgvE,aAAe,SAAsB76J,GAC1C,IAAI86J,EAAiB96J,EAAM86J,eACvBG,EAAiBj7J,EAAMi7J,eACvBlpK,EAAMiO,EAAMjO,IACZkP,EAAKjB,EAAMiB,GAEf7a,KAAK8+J,QAAU,KACf9+J,KAAKgiG,MAAQ,gBACb,IAAIpqF,EAAWi9J,GAAkB70K,KAAK40K,eAAe,CACnDjpK,IAAKA,EACLyc,eAAgBssJ,IAElB98J,EAASk9J,YAAcjxJ,KAAKlO,MAC5B27J,GAAmB,CACjB15J,SAAUA,EACVjO,IAAKgC,EACLkP,GAAIA,IAGN,IAAIs3H,EAASmhC,GAAetzK,KAAK9B,OAAQ0Z,GACzC5X,KAAK2b,eAAiB/D,EAASoxF,oBAAsBpxF,EAAS+D,eAC9D3b,KAAK+0K,cAAgB,KAEjB5iC,GACFnyI,KAAK9B,OAASi0I,EACdnyI,KAAKg1K,OAASh1K,KAAK9B,OAAOO,UAAUoc,IAEpC7a,KAAK8lG,QAAQ,qBAGf9lG,KAAKi1K,0BAA0BrB,GAAa5zK,KAAK2f,UAAWwyH,IAC5DnyI,KAAK8lG,QAAQ,mBAOfL,EAAOS,QAAU,WACflmG,KAAK8lG,QAAQ,WACb9lG,KAAKk1K,cACL,IAAS/pK,aAAanL,KAAKm1K,oBAC3B,IAAShqK,aAAanL,KAAKo1K,uBAC3Bp1K,KAAK4lG,OAGPH,EAAOyvE,YAAc,WACnB,GAAIl1K,KAAK8+J,QAAS,CAChB,IAAIuW,EAAar1K,KAAK8+J,QACtB9+J,KAAK8+J,QAAU,KACfuW,EAAWjpK,mBAAqB,KAChCipK,EAAWtoK,UAmBf04F,EAAO9lF,MAAQ,SAAe/H,EAAU09J,GACtC,IAAI99C,EAASx3H,KAGb,IAAK4X,EACH,OAAO5X,KAAKg1K,OAId,GAAmB,iBAAfh1K,KAAKgiG,MACP,MAAM,IAAIh4F,MAAM,qCAAuChK,KAAKgiG,OAK9D,GAAwB,kBAAbpqF,EAAuB,CAChC,IAAK5X,KAAK9B,OAAOO,UAAUmZ,GACzB,MAAM,IAAI5N,MAAM,yBAA2B4N,GAG7CA,EAAW5X,KAAK9B,OAAOO,UAAUmZ,GAKnC,GAFA,IAASzM,aAAanL,KAAKo1K,uBAEvBE,EAAJ,CACE,IAAIC,GAAS39J,EAASoxF,oBAAsBpxF,EAAS+D,gBAAkB,EAAI,KAAQ,IACnF3b,KAAKo1K,sBAAwB,IAAS7qK,WAAWvK,KAAK2f,MAAM5R,KAAK/N,KAAM4X,GAAU,GAAQ29J,OAF3F,CAMA,IAAIZ,EAAgB30K,KAAKgiG,MACrBwzE,GAAex1K,KAAKg1K,QAAUp9J,EAASiD,KAAO7a,KAAKg1K,OAAOn6J,GAC1D46J,EAAoBz1K,KAAK9B,OAAOO,UAAUmZ,EAASiD,IAEvD,GAAI46J,GAAqBA,EAAkBr9J,SAE3CR,EAASQ,SAAWR,EAASZ,SAASpZ,OA0BpC,OAxBIoC,KAAK8+J,UACP9+J,KAAK8+J,QAAQ1yJ,mBAAqB,KAClCpM,KAAK8+J,QAAQ/xJ,QACb/M,KAAK8+J,QAAU,MAGjB9+J,KAAKgiG,MAAQ,gBACbhiG,KAAKg1K,OAASp9J,OAEV49J,IACFx1K,KAAK8lG,QAAQ,iBAES,gBAAlB6uE,EAMF30K,KAAK8lG,QAAQ,kBAEb9lG,KAAK8lG,QAAQ,iBAcnB,GAFA9lG,KAAKi1K,0BAA0BrB,GAAah8J,GAAU,IAEjD49J,EAAL,CAMA,GAFAx1K,KAAKgiG,MAAQ,kBAEThiG,KAAK8+J,QAAS,CAChB,GAAIlnJ,EAAShE,cAAgB5T,KAAK8+J,QAAQnzJ,IAGxC,OAGF3L,KAAK8+J,QAAQ1yJ,mBAAqB,KAClCpM,KAAK8+J,QAAQ/xJ,QACb/M,KAAK8+J,QAAU,KAIb9+J,KAAKg1K,QACPh1K,KAAK8lG,QAAQ,iBAGf9lG,KAAK+0K,cAAgBn9J,EACrB5X,KAAK8+J,QAAU9+J,KAAKq0K,KAAKhqK,IAAI,CAC3BV,IAAKiO,EAAShE,YACd/G,gBAAiB7M,KAAK6M,kBACrB,SAAUgjB,EAAOg8I,GAElB,GAAKr0C,EAAOsnC,QAAZ,CAOA,GAHAlnJ,EAASk9J,YAAcjxJ,KAAKlO,MAC5BiC,EAAShE,YAAc+3J,GAAwBn0C,EAAO48C,wBAAyBx8J,EAAShE,YAAai4J,GAEjGh8I,EACF,OAAO2nG,EAAOg9C,qBAAqBh9C,EAAOsnC,QAASlnJ,EAAU+8J,GAG/Dn9C,EAAOi9C,aAAa,CAClBC,eAAgB7I,EAAIlhK,aACpBgB,IAAKiM,EAASjO,IACdkR,GAAIjD,EAASiD,KAIO,gBAAlB85J,EACFn9C,EAAO1xB,QAAQ,kBAEf0xB,EAAO1xB,QAAQ,sBASrBL,EAAOpjG,MAAQ,WACTrC,KAAKm1K,qBACP,IAAShqK,aAAanL,KAAKm1K,oBAC3Bn1K,KAAKm1K,mBAAqB,MAG5Bn1K,KAAKk1K,cAEc,iBAAfl1K,KAAKgiG,QAGPhiG,KAAK01K,SAAU,GAIE,oBAAf11K,KAAKgiG,MAIHhiG,KAAKg1K,OACPh1K,KAAKgiG,MAAQ,gBAEbhiG,KAAKgiG,MAAQ,cAES,0BAAfhiG,KAAKgiG,QACdhiG,KAAKgiG,MAAQ,kBAQjByD,EAAO6/B,KAAO,SAAcgwC,GAC1B,IAAI39C,EAAS33H,KAETA,KAAKm1K,qBACP,IAAShqK,aAAanL,KAAKm1K,oBAC3Bn1K,KAAKm1K,mBAAqB,MAG5B,IAAIx1J,EAAQ3f,KAAK2f,QAEjB,GAAI21J,EAAJ,CACE,IAAIC,EAAQ51J,GAASA,EAAMqpF,oBAAsBrpF,EAAMhE,gBAAkB,EAAI,IAAO,IACpF3b,KAAKm1K,mBAAqB,IAAS5qK,YAAW,WAC5CotH,EAAOw9C,mBAAqB,KAE5Bx9C,EAAO2N,SACNiwC,QAIAv1K,KAAK01K,QAKN/1J,IAAUA,EAAMvH,QAClBpY,KAAK8lG,QAAQ,sBAEb9lG,KAAK8lG,QAAQ,kBAPb9lG,KAAK8R,SAWT2zF,EAAOwvE,0BAA4B,SAAmCM,GACpE,IAAIz9C,EAAS93H,KAETA,KAAKm1K,qBACP,IAAShqK,aAAanL,KAAKm1K,oBAC3Bn1K,KAAKm1K,mBAAqB,MAIvBn1K,KAAK2f,UAAW3f,KAAK2f,QAAQvH,UAIlCpY,KAAKm1K,mBAAqB,IAAS5qK,YAAW,WAC5CutH,EAAOq9C,mBAAqB,KAE5Br9C,EAAOhyB,QAAQ,sBAEfgyB,EAAOm9C,0BAA0BM,KAChCA,KAOL9vE,EAAO3zF,MAAQ,WACb,IAAI63H,EAAS3pI,KAIb,GAFAA,KAAK01K,SAAU,EAES,kBAAb11K,KAAKm0G,IAsBd,OAnBKn0G,KAAKm0G,IAAIxqG,MACZ3J,KAAKm0G,IAAIxqG,IAAM,IAASqF,SAASC,MAKnCjP,KAAKm0G,IAAIvgG,YAAc5T,KAAKm0G,IAAIxqG,SAUhCY,YAAW,WACTo/H,EAAOgsC,qBAAqBhsC,EAAOx1B,OAClC,GAKLn0G,KAAK8+J,QAAU9+J,KAAKq0K,KAAKhqK,IAAI,CAC3BV,IAAK3J,KAAKm0G,IACVtnG,gBAAiB7M,KAAK6M,kBACrB,SAAUgjB,EAAOg8I,GAElB,GAAKliC,EAAOm1B,QAAZ,CAOA,GAFAn1B,EAAOm1B,QAAU,KAEbjvI,EAaF,OAZA85G,EAAO95G,MAAQ,CACbrkB,OAAQqgK,EAAIrgK,OACZqsF,QAAS,sCAAwC8xC,EAAOx1B,IAAM,IAC9DxpG,aAAckhK,EAAIlhK,aAElBqC,KAAM,GAGa,iBAAjB28H,EAAO3nC,QACT2nC,EAAO+rC,SAAU,GAGZ/rC,EAAO7jC,QAAQ,SAGxB6jC,EAAOx1B,IAAMw3D,GAAwBhiC,EAAOyqC,wBAAyBzqC,EAAOx1B,IAAK03D,GAEjF,IAAI7yJ,EAAW2wH,EAAOirC,eAAe,CACnCxsJ,eAAgByjJ,EAAIlhK,aACpBgB,IAAKg+H,EAAOx1B,MAGdw1B,EAAOgsC,qBAAqB38J,QAIhCysF,EAAOmwE,OAAS,WACd,MAA2B,kBAAb51K,KAAKm0G,IAAmBn0G,KAAKm0G,IAAMn0G,KAAKm0G,IAAIxqG,KAsB5D87F,EAAOkwE,qBAAuB,SAA8B38J,GAG1D,GAFAhZ,KAAKgiG,MAAQ,cAEThpF,EAASva,UAoBX,OAnBAuB,KAAK9B,OAAS8a,EACd24J,GAAsB3xK,KAAK9B,OAAQ8B,KAAK41K,UAIxC58J,EAASva,UAAUpB,SAAQ,SAAUua,GACnCA,EAASZ,SAAWo8J,GAAex7J,GACnCA,EAASZ,SAAS3Z,SAAQ,SAAUsW,GAClCu/J,GAAmBv/J,EAASiE,EAAShE,mBAGzC5T,KAAK8lG,QAAQ,uBAER9lG,KAAK8+J,SAGR9+J,KAAK2f,MAAM3f,KAAK9B,OAAOO,UAAU,KASrC,IAAIkL,EAAM3J,KAAK41K,UAAY,IAAS5mK,SAASC,KAC7CjP,KAAK9B,OAASwzK,GAAe14J,EAAUrP,GACvC3J,KAAKy0K,aAAa,CAChBI,eAAgB77J,EAChBrN,IAAKhC,EACLkR,GAAI7a,KAAK9B,OAAOO,UAAU,GAAGoc,KAE/B7a,KAAK8lG,QAAQ,mBAGRiuE,EAnjByB,CAojBhC9B,IAME4D,GAAa1qC,GAAQ9gI,IACrByrK,GAAiB3qC,GAAQmgC,aAEzByK,GAAkB,SAAyBjX,EAASjvI,EAAO3lB,EAAUL,GACvE,IAAImsK,EAAuC,gBAAzBlX,EAAQ5xJ,aAAiC4xJ,EAAQ50J,SAAW40J,EAAQn0J,cAEjFklB,GAASmmJ,IACZlX,EAAQmX,aAAepyJ,KAAKlO,MAC5BmpJ,EAAQoX,cAAgBpX,EAAQmX,aAAenX,EAAQqX,YACvDrX,EAAQmR,cAAgB+F,EAAY97K,YAAc87K,EAAYp4K,OAEzDkhK,EAAQpjJ,YACXojJ,EAAQpjJ,UAAY3F,KAAKG,MAAM4oJ,EAAQmR,cAAgBnR,EAAQoX,cAAgB,EAAI,OAInFhsK,EAASnB,UACX+1J,EAAQsX,gBAAkBlsK,EAASnB,SAMjC8mB,GAAwB,cAAfA,EAAM7iB,OACjB8xJ,EAAQuX,UAAW,GAMhBxmJ,GAAUivI,EAAQvzJ,SAAmC,MAAxBrB,EAASmB,YAA8C,MAAxBnB,EAASmB,YAA8C,IAAxBnB,EAASmB,aACvGwkB,EAAQ,IAAI7lB,MAAM,mCAAqC80J,IAAYkX,GAAelX,EAAQn0J,iBAG5Fd,EAASgmB,EAAOivI,IAGdwX,GAAa,WACf,IAAIjsK,EAAM,SAASksK,EAAY3sK,EAASC,GAEtCD,EAAUksK,GAAe,CACvBhpK,QAAS,MACRlD,GAGH,IAAI4sK,EAAgBD,EAAYC,eAAiBrrC,GAAQsrC,IAAIpsK,IAAImsK,cAEjE,GAAIA,GAA0C,oBAAlBA,EAA8B,CACxD,IAAIE,EAAaF,EAAc5sK,GAE3B8sK,IACF9sK,EAAU8sK,GAMd,IAAIC,GAAyC,IAA7BxrC,GAAQsrC,IAAIpsK,IAAIo2G,SAAoBo1D,GAAa1qC,GAAQsrC,IAAIpsK,IACzEy0J,EAAU6X,EAAU/sK,GAAS,SAAUimB,EAAO3lB,GAChD,OAAO6rK,GAAgBjX,EAASjvI,EAAO3lB,EAAUL,MAE/C+sK,EAAgB9X,EAAQ/xJ,MAS5B,OAPA+xJ,EAAQ/xJ,MAAQ,WAEd,OADA+xJ,EAAQvzJ,SAAU,EACXqrK,EAAc57J,MAAM8jJ,EAASztJ,YAGtCytJ,EAAQn1J,IAAMC,EAAQD,IACtBm1J,EAAQqX,YAActyJ,KAAKlO,MACpBmpJ,GAIT,OADAz0J,EAAIo2G,UAAW,EACRp2G,GAWLwsK,GAAe,SAAsBziK,GAGvC,IAAI0iK,EACAC,EAAiB3iK,EAAUnO,OAQ/B,OALE6wK,EAD8B,kBAArB1iK,EAAUnO,QAAmD,kBAArBmO,EAAUxW,OAC5C,IAASoW,OAAOI,EAAUnO,QAAU,IAAS+N,OAAOI,EAAUxW,QAAU,IAASoW,OAAO,GAExFI,EAAUnO,OAASmO,EAAUxW,OAAS,EAGhD,SAAWm5K,EAAiB,IAAMD,GAUvCE,GAAoB,SAA2BrjK,GACjD,IAAI5K,EAAU,GAMd,OAJI4K,EAAQS,YACVrL,EAAQkuK,MAAQJ,GAAaljK,EAAQS,YAGhCrL,GAeLmuK,GAAY,SAAmB1jK,EAAO5Y,GACxC,OAAO4Y,EAAM1B,MAAMlX,GAAK,IAAM4Y,EAAMzB,IAAInX,IAWtCu8K,GAAkB,SAAyBnsK,EAAGpQ,GAChD,IAAIwM,EAAQ4D,EAAElO,SAAS,IACvB,MAAO,KAAKgB,UAAU,EAAG,EAAIsJ,EAAMxJ,QAAUwJ,GAASxM,EAAI,EAAI,IAAM,KAGlEw8K,GAAoB,SAA2BpsK,GACjD,OAAIA,GAAK,IAAQA,EAAI,IACZpK,OAAOqD,aAAa+G,GAGtB,KAcLqsK,GAA4B,SAAmCx/E,GACjE,IAAIy/E,EAAe,GAcnB,OAbAtwK,OAAO0K,KAAKmmF,GAASx6F,SAAQ,SAAU6L,GACrC,IAAI9B,EAAQywF,EAAQ3uF,GAEhB,eAAkB9B,GACpBkwK,EAAapuK,GAAO,CAClBZ,MAAOlB,EAAMpN,OACbC,WAAYmN,EAAMnN,WAClBC,WAAYkN,EAAMlN,YAGpBo9K,EAAapuK,GAAO9B,KAGjBkwK,GAaLC,GAAgB,SAAuB//J,GACzC,IAAIpD,EAAYoD,EAAYpD,WAAa,CACvCxW,OAAQ8X,IACRzP,OAAQ,GAEV,MAAO,CAACmO,EAAUxW,OAAQwW,EAAUnO,OAAQuR,EAAY5D,aAAa/O,KAAK,MAUxE2yK,GAAe,SAAsBtuK,GACvC,OAAOA,EAAI0K,aAYT6jK,GAAU,SAAiB59K,GAO7B,IANA,IAGI65I,EACAgkC,EAJApvK,EAAQ5H,MAAM+G,UAAU1K,MAAM6T,KAAK/W,GACnCkmG,EAAO,GACP5lG,EAAS,GAIJ02I,EAAI,EAAGA,EAAIvoI,EAAM1K,OAASmiG,EAAM8wC,IACvC6C,EAAMprI,EAAMvL,MAAM8zI,EAAI9wC,EAAM8wC,EAAI9wC,EAAOA,GAAM/gG,IAAIm4K,IAAiBtyK,KAAK,IACvE6yK,EAAQpvK,EAAMvL,MAAM8zI,EAAI9wC,EAAM8wC,EAAI9wC,EAAOA,GAAM/gG,IAAIo4K,IAAmBvyK,KAAK,IAC3E1K,GAAUu5I,EAAM,IAAMgkC,EAAQ,KAGhC,OAAOv9K,GAGLw9K,GAAU,SAAiBvkK,GAC7B,IAAI9K,EAAQ8K,EAAK9K,MACjB,OAAOmvK,GAAQnvK,IAGbsvK,GAAa,SAAoB9jK,GACnC,IACIlZ,EADAT,EAAS,GAGb,IAAKS,EAAI,EAAGA,EAAIkZ,EAAOlW,OAAQhD,IAC7BT,GAAU+8K,GAAUpjK,EAAQlZ,GAAK,IAGnC,OAAOT,GAGL09K,GAAqB7wK,OAAOiiB,OAAO,CACrCjb,UAAW,KACXqpK,0BAA2BA,GAC3BE,cAAeA,GACfC,aAAcA,GACdC,QAASA,GACTE,QAASA,GACTC,WAAYA,KAIVE,GAA4B,IAiB5BC,GAA0B,SAAiCC,EAAYrkK,GACzE,IAAKA,EAAQq0F,eAGX,OAAO,KAGT,IAAIiwE,EAA6BtkK,EAAQukK,gBAAgBD,2BACrDE,EAAkBxkK,EAAQukK,gBAAgBE,4BAE1CC,EAAiBF,EAAkBF,EACnCK,EAAyBN,EAAaK,EAC1C,OAAO,IAAIx0J,KAAKlQ,EAAQq0F,eAAeuwE,UAAqC,IAAzBD,IAGjDE,GAA+B,SAAsCN,GACvE,OAAOA,EAAgBO,0BAA4BP,EAAgBE,4BAA8BF,EAAgBD,4BAW/GS,GAA4B,SAAmCC,EAAa/gK,GAI9E,IAAIowF,EAEJ,IACEA,EAAiB,IAAInkF,KAAK80J,GAC1B,MAAO3tK,GACP,OAAO,KAGT,IAAK4M,IAAaA,EAASZ,UAAyC,IAA7BY,EAASZ,SAASpZ,OACvD,OAAO,KAGT,IAAI+V,EAAUiE,EAASZ,SAAS,GAEhC,GAAIgxF,EAAiBr0F,EAAQq0F,eAE3B,OAAO,KAGT,IAAK,IAAIptG,EAAI,EAAGA,EAAIgd,EAASZ,SAASpZ,OAAS,EAAGhD,IAAK,CACrD+Y,EAAUiE,EAASZ,SAASpc,GAC5B,IAAIg+K,EAAmBhhK,EAASZ,SAASpc,EAAI,GAAGotG,eAEhD,GAAIA,EAAiB4wE,EACnB,MAIJ,IAAInL,EAAc71J,EAASZ,SAASY,EAASZ,SAASpZ,OAAS,GAC3Di7K,EAAmBpL,EAAYzlE,eAC/B8wE,EAAsBrL,EAAYyK,gBAAkBM,GAA6B/K,EAAYyK,iBAAmBzK,EAAY/4J,SAAW+4J,EAAY/4J,SAAWojK,GAC9JiB,EAAiB,IAAIl1J,KAAKg1J,EAAiBN,UAAkC,IAAtBO,GAE3D,OAAI9wE,EAAiB+wE,EAEZ,MAGL/wE,EAAiB6wE,IACnBllK,EAAU85J,GAGL,CACL95J,QAASA,EACTqlK,eAAgBrlK,EAAQukK,gBAAkBvkK,EAAQukK,gBAAgBE,4BAA8B1H,GAASh8J,SAASkD,EAAUA,EAASS,cAAgBT,EAASZ,SAAS/N,QAAQ0K,IAK/K9V,KAAM8V,EAAQukK,gBAAkB,WAAa,cAW7Ce,GAA2B,SAAkCriK,EAAMgB,GAKrE,IAAKA,IAAaA,EAASZ,UAAyC,IAA7BY,EAASZ,SAASpZ,OACvD,OAAO,KAMT,IAHA,IACI+V,EADAulK,EAAa,EAGRt+K,EAAI,EAAGA,EAAIgd,EAASZ,SAASpZ,OAAQhD,IAU5C,GATA+Y,EAAUiE,EAASZ,SAASpc,GAO5Bs+K,EAAavlK,EAAQukK,gBAAkBvkK,EAAQukK,gBAAgBO,0BAA4BS,EAAavlK,EAAQe,SAE5GkC,GAAQsiK,EACV,MAIJ,IAAIzL,EAAc71J,EAASZ,SAASY,EAASZ,SAASpZ,OAAS,GAE/D,GAAI6vK,EAAYyK,iBAAmBzK,EAAYyK,gBAAgBO,0BAA4B7hK,EAEzF,OAAO,KAGT,GAAIA,EAAOsiK,EAAY,CAIrB,GAAItiK,EAAOsiK,EAAazL,EAAY/4J,SAAWojK,GAI7C,OAAO,KAGTnkK,EAAU85J,EAGZ,MAAO,CACL95J,QAASA,EACTqlK,eAAgBrlK,EAAQukK,gBAAkBvkK,EAAQukK,gBAAgBE,4BAA8Bc,EAAavlK,EAAQe,SAGrH7W,KAAM8V,EAAQukK,gBAAkB,WAAa,aAe7CiB,GAAyB,SAAgCC,EAAqBT,GAChF,IAAIU,EACAC,EAEJ,IACED,EAAkB,IAAIx1J,KAAKu1J,GAC3BE,EAAkB,IAAIz1J,KAAK80J,GAC3B,MAAO3tK,IAGT,IAAIuuK,EAAmBF,EAAgBd,UACnCiB,EAAmBF,EAAgBf,UACvC,OAAQiB,EAAmBD,GAAoB,KAS7CE,GAA4B,SAAmC7hK,GACjE,IAAKA,EAASZ,UAAyC,IAA7BY,EAASZ,SAASpZ,OAC1C,OAAO,EAGT,IAAK,IAAIhD,EAAI,EAAGA,EAAIgd,EAASZ,SAASpZ,OAAQhD,IAAK,CACjD,IAAI+Y,EAAUiE,EAASZ,SAASpc,GAEhC,IAAK+Y,EAAQq0F,eACX,OAAO,EAIX,OAAO,GAmBL0xE,GAAiB,SAAwBtmK,GAC3C,IAAIwE,EAAWxE,EAAKwE,SAChB+hK,EAAYvmK,EAAKwD,KACjBA,OAAqB,IAAd+iK,OAAuBjvK,EAAYivK,EAC1C9vK,EAAWuJ,EAAKvJ,SAEpB,IAAKA,EACH,MAAM,IAAIG,MAAM,6CAGlB,IAAK4N,QAAqBlN,IAATkM,EACf,OAAO/M,EAAS,CACdguF,QAAS,uDAIb,IAAI+hF,EAAiBX,GAAyBriK,EAAMgB,GAEpD,IAAKgiK,EACH,OAAO/vK,EAAS,CACdguF,QAAS,oCAIb,GAA4B,aAAxB+hF,EAAe/7K,KACjB,OAAOgM,EAAS,CACdguF,QAAS,wFACTgiF,SAAUD,EAAeZ,iBAI7B,IAAIc,EAAoB,CACtBC,aAAcnjK,GAEZ+hK,EAAcZ,GAAwBnhK,EAAMgjK,EAAejmK,SAM/D,OAJIglK,IACFmB,EAAkBR,gBAAkBX,EAAYqB,eAG3CnwK,EAAS,KAAMiwK,IAkBpBG,GAAoB,SAASA,EAAkB3gK,GACjD,IAAIq/J,EAAcr/J,EAAMq/J,YACpB/gK,EAAW0B,EAAM1B,SACjBsiK,EAAmB5gK,EAAM6gK,WACzBA,OAAkC,IAArBD,EAA8B,EAAIA,EAC/CE,EAAS9gK,EAAM8gK,OACfC,EAAuB/gK,EAAMghK,eAC7BA,OAA0C,IAAzBD,GAAyCA,EAC1DjgD,EAAO9gH,EAAM8gH,KACbvwH,EAAWyP,EAAMzP,SAErB,IAAKA,EACH,MAAM,IAAIG,MAAM,gDAGlB,GAA2B,qBAAhB2uK,IAAgC/gK,IAAawiK,EACtD,OAAOvwK,EAAS,CACdguF,QAAS,yEAIb,IAAKjgF,EAASQ,UAAYgiH,EAAKyM,YAC7B,OAAOh9H,EAAS,CACdguF,QAAS,4DAIb,IAAK4hF,GAA0B7hK,GAC7B,OAAO/N,EAAS,CACdguF,QAAS,yDAA2DjgF,EAAShE,cAIjF,IAAIgmK,EAAiBlB,GAA0BC,EAAa/gK,GAE5D,IAAKgiK,EACH,OAAO/vK,EAAS,CACdguF,QAAS8gF,EAAc,iCAI3B,IAAIhlK,EAAUimK,EAAejmK,QACzB4mK,EAAcpB,GAAuBxlK,EAAQq0F,eAAgB2wE,GAEjE,GAA4B,aAAxBiB,EAAe/7K,KAEjB,OAAmB,IAAfs8K,EACKtwK,EAAS,CACdguF,QAAS8gF,EAAc,qCAI3ByB,EAAOR,EAAeZ,eAAiBuB,QACvCngD,EAAKvN,IAAI,UAAU,WACjBotD,EAAkB,CAChBtB,YAAaA,EACb/gK,SAAUA,EACVuiK,WAAYA,EAAa,EACzBC,OAAQA,EACRE,eAAgBA,EAChBlgD,KAAMA,EACNvwH,SAAUA,QAShB,IAAI2wK,EAAa7mK,EAAQ7B,MAAQyoK,EAE7BE,EAAiB,WACnB,OAAO5wK,EAAS,KAAMuwH,EAAKiK,gBAI7BjK,EAAKvN,IAAI,SAAU4tD,GAEfH,GACFlgD,EAAK/3H,QAGP+3K,EAAOI,IAILE,GAAsB,SAA6B5b,EAASz0B,GAC9D,GAA2B,IAAvBy0B,EAAQx0J,WACV,OAAO+/H,KAMPswC,GAAmB,SAA0BhxK,EAAKU,EAAKggI,GACzD,IACIuwC,EADAtyK,EAAQ,GAERuyK,GAAW,EAEXC,EAAwB,SAA+Bh4K,EAAK+oK,EAAKhuK,EAAMk9K,GAGzE,OAFAlP,EAAI9+J,QACJ8tK,GAAW,EACJxwC,EAAGvnI,EAAK+oK,EAAKhuK,EAAMk9K,IAGxBC,EAAmB,SAA0BnrJ,EAAOivI,GACtD,IAAI+b,EAAJ,CAIA,GAAIhrJ,EACF,OAAOirJ,EAAsBjrJ,EAAOivI,EAAS,GAAIx2J,GAInD,IAAI2yK,EAAUnc,EAAQn0J,aAAa7M,UAAUwK,GAASA,EAAMpO,YAAc,EAAG4kK,EAAQn0J,aAAa/M,QAMlG,GAJA0K,EAAQ,eAAkBA,EAAO,eAAc2yK,GAAS,IACxDL,EAAYA,GAAa,eAAatyK,GAGlCA,EAAM1K,OAAS,IAAMg9K,GAAatyK,EAAM1K,OAASg9K,EAAY,EAC/D,OAAOF,GAAoB5b,GAAS,WAClC,OAAOgc,EAAsBjrJ,EAAOivI,EAAS,GAAIx2J,MAIrD,IAAIzK,EAAO,eAAwByK,GAInC,MAAa,OAATzK,GAAiByK,EAAM1K,OAAS,MAQ/BC,GAAQyK,EAAM1K,OAAS,IAPnB88K,GAAoB5b,GAAS,WAClC,OAAOgc,EAAsBjrJ,EAAOivI,EAAS,GAAIx2J,MAY9CwyK,EAAsB,KAAMhc,EAASjhK,EAAMyK,KAGhDsB,EAAU,CACZD,IAAKA,EACLwD,WAAY,SAAoB2xJ,GAE9BA,EAAQoc,iBAAiB,sCACzBpc,EAAQz1C,iBAAiB,YAAY,SAAUj2G,GAG7C,OAFAA,EAAK06F,MACL16F,EAAK+nK,OACEpF,GAAgBjX,EAAS,KAAM,CACpCzzJ,WAAYyzJ,EAAQtzJ,QACnBwvK,QAILlc,EAAUz0J,EAAIT,GAAS,SAAUimB,EAAO3lB,GAC1C,OAAO6rK,GAAgBjX,EAASjvI,EAAO3lB,EAAU8wK,MAEnD,OAAOlc,GAGL4M,GAAcvgC,GAAQugC,YACtBJ,GAAengC,GAAQmgC,aAEvB8P,GAAwB,SAA+B51K,EAAGT,GAC5D,IAAKsuK,GAAoB7tK,EAAGT,GAC1B,OAAO,EAST,GAAIS,EAAEqS,MAAQ9S,EAAE8S,OAASrS,EAAEqS,KAAK5R,SAAWlB,EAAE8S,KAAK5R,QAAUT,EAAEqS,KAAKja,SAAWmH,EAAE8S,KAAKja,QACnF,OAAO,EACF,IAAK4H,EAAEqS,MAAQ9S,EAAE8S,MAAQrS,EAAEqS,OAAS9S,EAAE8S,KAC3C,OAAO,EAKT,GAAIrS,EAAEwR,WAAajS,EAAEiS,WAAaxR,EAAEwR,UAAYjS,EAAEiS,SAChD,OAAO,EAIT,IAAKxR,EAAEwR,WAAajS,EAAEiS,SACpB,OAAO,EAIT,IAAK,IAAIpc,EAAI,EAAGA,EAAI4K,EAAEwR,SAASpZ,OAAQhD,IAAK,CAC1C,IAAIygL,EAAW71K,EAAEwR,SAASpc,GACtB0gL,EAAWv2K,EAAEiS,SAASpc,GAE1B,GAAIygL,EAAS1xK,MAAQ2xK,EAAS3xK,IAC5B,OAAO,EAIT,GAAK0xK,EAASjnK,WAAcknK,EAASlnK,UAArC,CAIA,IAAImnK,EAAaF,EAASjnK,UACtBonK,EAAaF,EAASlnK,UAE1B,GAAImnK,IAAeC,IAAeD,GAAcC,EAC9C,OAAO,EAIT,GAAID,EAAWt1K,SAAWu1K,EAAWv1K,QAAUs1K,EAAW39K,SAAW49K,EAAW59K,OAC9E,OAAO,GAKX,OAAO,GAUL69K,GAAc,SAAqB59K,EAAMsb,EAAOC,EAAOxB,GAEzD,IAAI8jK,EAAa9jK,EAASlZ,WAAWqa,MAAQK,EAC7C,MAAO,mBAAqBvb,EAAO,IAAMsb,EAAQ,IAAMuiK,GAoBrDC,GAAiB,SAAwBvoK,GAC3C,IAAIwoK,EAAYxoK,EAAKwoK,UACjBC,EAASzoK,EAAKyoK,OACd5mK,EAAe7B,EAAK6B,aACpBiG,EAAc9H,EAAK8H,YACnBsD,EAAmBpL,EAAKoL,iBACxBxF,EAAW,eAAM4iK,EAAW,CAC9B/zJ,YAAag0J,EACb5mK,aAAcA,EACdiG,YAAaA,EACbsD,iBAAkBA,IAGpB,OADAmzJ,GAAsB34J,EAAU6iK,EAAQJ,IACjCziK,GAYL8iK,GAA4B,SAAmC3pC,EAAQ4pC,GACzElrK,GAAkBshI,GAAQ,SAAUj5H,EAAYrb,EAAMsb,EAAOC,GACrDA,KAAS2iK,EAAU39K,YAAYP,GAAMsb,WAClCg5H,EAAO/zI,YAAYP,GAAMsb,GAAOC,OAkBzC4iK,GAAe,SAAsBC,EAAWF,EAAW7gK,GAS7D,IARA,IAAIghK,GAAY,EACZ/pC,EAASm5B,GAAa2Q,EAAW,CAEnCvnK,SAAUqnK,EAAUrnK,SACpBa,oBAAqBwmK,EAAUxmK,oBAC/BqD,eAAgBmjK,EAAUnjK,iBAGnBhe,EAAI,EAAGA,EAAImhL,EAAUt9K,UAAUb,OAAQhD,IAAK,CACnD,IAAIgd,EAAWmkK,EAAUt9K,UAAU7D,GAEnC,GAAIgd,EAASC,KAAM,CACjB,IAAIsD,EAAU,eAAgBvD,EAASC,MAEnCqD,GAAeA,EAAYC,IAAYD,EAAYC,GAAStD,MAC9D,eAA0BD,EAAUsD,EAAYC,GAAStD,KAAMD,EAASC,KAAKjE,aAIjF,IAAIuoK,EAAiB7I,GAAenhC,EAAQv6H,EAAUwjK,IAElDe,IACFhqC,EAASgqC,EACTD,GAAY,GA+BhB,OA1BArrK,GAAkBkrK,GAAW,SAAU7iK,EAAYrb,EAAMsb,EAAOC,GAC9D,GAAIF,EAAWza,WAAaya,EAAWza,UAAUb,OAAQ,CACvD,IAAIid,EAAK3B,EAAWza,UAAU,GAAGoc,GAE7BuhK,EAAkB9I,GAAenhC,EAAQj5H,EAAWza,UAAU,GAAI28K,IAElEgB,IACFjqC,EAASiqC,EAEHhjK,KAAS+4H,EAAO/zI,YAAYP,GAAMsb,KACtCg5H,EAAO/zI,YAAYP,GAAMsb,GAAOC,GAASF,GAI3Ci5H,EAAO/zI,YAAYP,GAAMsb,GAAOC,GAAO3a,UAAU,GAAK0zI,EAAO1zI,UAAUoc,GACvEqhK,GAAY,OAKlBJ,GAA0B3pC,EAAQ4pC,GAE9BA,EAAUxmK,sBAAwB0mK,EAAU1mK,sBAC9C2mK,GAAY,GAGVA,EACK,KAGF/pC,GAOLkqC,GAAiB,SAAwB72K,EAAGT,GAC9C,IAAIu3K,EAAax7K,SAAS0E,EAAExG,MAAQ+F,EAAE/F,KAClCu9K,EAAgBD,GAAcx7K,QAAQ0E,EAAExG,KAAO+F,EAAE/F,KAAOwG,EAAExG,IAAIoV,UAAUnO,SAAWlB,EAAE/F,IAAIoV,UAAUnO,QAAUT,EAAExG,IAAIoV,UAAUxW,SAAWmH,EAAE/F,IAAIoV,UAAUxW,QAC5J,OAAO2+K,GAAiB/2K,EAAEmE,MAAQ5E,EAAE4E,KAAOnE,EAAE4O,UAAUnO,SAAWlB,EAAEqP,UAAUnO,QAAUT,EAAE4O,UAAUxW,SAAWmH,EAAEqP,UAAUxW,QAIzH4+K,GAAmB,SAA0B/9K,EAAWg+K,GAC1D,IAAIC,EAAiB,GAErB,IAAK,IAAI7hK,KAAMpc,EAAW,CACxB,IAAImZ,EAAWnZ,EAAUoc,GACrB8hK,EAAkB/kK,EAASC,KAE/B,GAAI8kK,EAAiB,CACnB,IAAIzzK,EAAM,eAAgByzK,GAE1B,IAAKF,EAAevzK,GAClB,MAGF,IAAI0zK,EAAgBH,EAAevzK,GAAK2zK,SAEpCR,GAAeO,EAAeD,KAChCD,EAAexzK,GAAOuzK,EAAevzK,KAK3C,OAAOwzK,GAYLI,GAA4B,SAAmC5+K,EAAQu+K,GACzE,IAAIM,EAAYP,GAAiBt+K,EAAOO,UAAWg+K,GAC/CO,EAAiBD,EAOrB,OANAlsK,GAAkB3S,GAAQ,SAAUgb,EAAYlb,EAAW+S,EAAUC,GACnE,GAAIkI,EAAWza,WAAaya,EAAWza,UAAUb,OAAQ,CACvD,IAAIa,EAAYya,EAAWza,UAC3Bu+K,EAAiB1R,GAAa0R,EAAgBR,GAAiB/9K,EAAWg+K,QAGvEO,GAGLC,GAAkC,SAAU5+C,GAM9C,SAAS4+C,EAAmBC,EAAkBlJ,EAAKpqK,EAASuzK,GAC1D,IAAI52E,OAEY,IAAZ38F,IACFA,EAAU,IAGZ28F,EAAQ83B,EAAaztH,KAAK5Q,OAASA,KACnCumG,EAAM62E,sBAAwBD,GAAwB,IAAuB52E,GAExE42E,IACH52E,EAAM82E,WAAY,GAGpB,IAAI11J,EAAW/d,EACXsqK,EAAwBvsJ,EAAS9a,gBACjCA,OAA4C,IAA1BqnK,GAA2CA,EAC7DC,EAAwBxsJ,EAASysJ,wBACjCA,OAAoD,IAA1BD,GAA2CA,EAKzE,GAJA5tE,EAAM8tE,KAAOL,EACbztE,EAAM15F,gBAAkBA,EACxB05F,EAAM6tE,wBAA0BA,GAE3B8I,EACH,MAAM,IAAIlzK,MAAM,kDA2BlB,OAvBAu8F,EAAMb,GAAG,uBAAuB,WAC9Ba,EAAM+2E,iBAIR/2E,EAAMb,GAAG,sBAAsB,WAC7Ba,EAAMg3E,cAAch3E,EAAM5mF,QAAQ9E,OAGpC0rF,EAAMvE,MAAQ,eACduE,EAAMi3E,iBAAmB,GACzBj3E,EAAM0tE,QAAUlI,GAAO,sBAGnBxlE,EAAM82E,WACR92E,EAAM62E,sBAAsBvB,OAASqB,EAGrC32E,EAAM62E,sBAAsBK,aAAe,IAE3Cl3E,EAAMm3E,eAAiBR,EAGlB32E,EAxDT,IAAe02E,EAAoB5+C,GA2DnC,IAAI54B,EAASw3E,EAAmBx1K,UAwkBhC,OAtkBAg+F,EAAOk4E,gBAAkB,SAAyB76K,EAAKg8J,EAAS6V,GAE9D,OAAK30K,KAAK8+J,UAKV9+J,KAAK8+J,QAAU,KAEXh8J,GAGF9C,KAAK6vB,MAAuB,kBAAR/sB,GAAsBA,aAAekH,MAAe,CACtEwB,OAAQszJ,EAAQtzJ,OAChBqsF,QAAS,8BAAgCinE,EAAQn1J,IACjDO,SAAU40J,EAAQ50J,SAElB8C,KAAM,GAL0DlK,EAQ9D6xK,IACF30K,KAAKgiG,MAAQ2yE,GAGf30K,KAAK8lG,QAAQ,UACN,QAhBT,IAyBFL,EAAOm4E,iBAAmB,SAA0BhmK,EAAU+8J,EAAetqC,GAC3E,IAAIljC,EAASnnG,KAETmb,EAAUvD,EAASC,MAAQ,eAAgBD,EAASC,MAExD,GAAKD,EAASC,MAASsD,IAAWnb,KAAKo9K,sBAAsBK,aAAatiK,GAA1E,CASA,IAAIxR,EAAMgiK,GAAwB3rK,KAAKo0K,wBAAyBx8J,EAASC,KAAKjE,aAE1EiqK,EAAM,SAAa/6K,EAAKg8J,GAC1B,IAAI33D,EAAOw2E,gBAAgB76K,EAAKg8J,EAAS6V,GAAzC,CAIA,IACI98J,EADAqD,EAAcisF,EAAOi2E,sBAAsBK,aAG/C,IACE5lK,EAAO,IAAU,eAAQinJ,EAAQ50J,UAAU3P,SAAS,IACpD,MAAOyQ,GAIP,YAFAm8F,EAAOw2E,gBAAgB3yK,EAAG8zJ,EAAS6V,GAUrC,OALAz5J,EAAYC,GAAW,CACrB0hK,SAAUjlK,EAASC,KACnBA,KAAMA,GAER,eAA0BD,EAAUC,EAAMD,EAASC,KAAKjE,aACjDy2H,GAAG,KAGZrqI,KAAK8+J,QAAU6b,GAAiBhxK,EAAK3J,KAAKq0K,KAAKhqK,KAAK,SAAUvH,EAAKg8J,EAAS5/J,EAAWoJ,GACrF,GAAIxF,EACF,OAAO+6K,EAAI/6K,EAAKg8J,GAGlB,IAAK5/J,GAA2B,QAAdA,EAChB,OAAO2+K,EAAI,CACTryK,OAAQszJ,EAAQtzJ,OAChBqsF,QAAS,gBAAkB34F,GAAa,WAAa,4CAA8CyK,EAGnGO,SAAU,GACV0N,SAAUA,EACVkmK,UAAU,EACVC,kBAAmBroK,IAEnB1I,KAAM,GACL8xJ,GAIL,IAAIkf,EAAwBpmK,EAASC,KAAKzD,UACtCnO,EAAS+3K,EAAsB/3K,OAC/BrI,EAASogL,EAAsBpgL,OAEnC,GAAI0K,EAAM1K,QAAUA,EAASqI,EAC3B,OAAO43K,EAAI/6K,EAAK,CACdoH,SAAU5B,EAAM/N,SAAS0L,EAAQA,EAASrI,GAC1C4N,OAAQszJ,EAAQtzJ,OAChB7B,IAAKm1J,EAAQn1J,MAKjBw9F,EAAO23D,QAAU33D,EAAOktE,KAAKhqK,IAAI,CAC/BV,IAAKA,EACLuD,aAAc,cACdnE,QAASiuK,GAAkB,CACzB5iK,UAAWwD,EAASC,KAAKzD,aAE1BypK,WA1EH79K,KAAKi+K,cAAgB,IAAS1zK,YAAW,WACvC,OAAO8/H,GAAG,KACT,IA4EP5kC,EAAOS,QAAU,WACflmG,KAAK8lG,QAAQ,WACb9lG,KAAKk1K,cACLl1K,KAAKw9K,iBAAmB,GACxB,IAASryK,aAAanL,KAAKk+K,6BAC3B,IAAS/yK,aAAanL,KAAKi+K,eAC3B,IAAS9yK,aAAanL,KAAKm1K,oBAC3Bn1K,KAAKm1K,mBAAqB,KAC1Bn1K,KAAKi+K,cAAgB,KACrBj+K,KAAKk+K,4BAA8B,KAE/Bl+K,KAAKo9K,sBAAsBe,oBAC7Bn+K,KAAK4lG,IAAI,iBAAkB5lG,KAAKo9K,sBAAsBe,mBACtDn+K,KAAKo9K,sBAAsBe,kBAAoB,MAGjDn+K,KAAK4lG,OAGPH,EAAO24E,kBAAoB,WACzB,OAAOp+K,KAAK8+J,SAAW9+J,KAAKi+K,eAG9Bx4E,EAAOyvE,YAAc,WACnB,GAAIl1K,KAAK8+J,QAAS,CAChB,IAAIuW,EAAar1K,KAAK8+J,QACtB9+J,KAAK8+J,QAAU,KACfuW,EAAWjpK,mBAAqB,KAChCipK,EAAWtoK,UAIf04F,EAAO9lF,MAAQ,SAAe/H,GAC5B,IAAI0wF,EAAStoG,KAGb,IAAK4X,EACH,OAAO5X,KAAKg1K,OAId,GAAmB,iBAAfh1K,KAAKgiG,MACP,MAAM,IAAIh4F,MAAM,qCAAuChK,KAAKgiG,OAG9D,IAAI2yE,EAAgB30K,KAAKgiG,MAEzB,GAAwB,kBAAbpqF,EAAuB,CAChC,IAAK5X,KAAKo9K,sBAAsBl/K,OAAOO,UAAUmZ,GAC/C,MAAM,IAAI5N,MAAM,yBAA2B4N,GAG7CA,EAAW5X,KAAKo9K,sBAAsBl/K,OAAOO,UAAUmZ,GAGzD,IAAI49J,GAAex1K,KAAKg1K,QAAUp9J,EAASiD,KAAO7a,KAAKg1K,OAAOn6J,GAE9D,GAAI26J,GAAex1K,KAAKw9K,iBAAiB5lK,EAASiD,KAAO7a,KAAKw9K,iBAAiB5lK,EAASiD,IAAIzC,QAS1F,OARApY,KAAKgiG,MAAQ,gBACbhiG,KAAKg1K,OAASp9J,OAEV49J,IACFx1K,KAAK8lG,QAAQ,iBACb9lG,KAAK8lG,QAAQ,iBAOZ0vE,IAKDx1K,KAAKg1K,QACPh1K,KAAK8lG,QAAQ,iBAGf9lG,KAAK49K,iBAAiBhmK,EAAU+8J,GAAe,SAAU0J,GAEvD/1E,EAAOmsE,aAAa,CAClBE,cAAeA,EACf/8J,SAAUA,SAKhB6tF,EAAOgvE,aAAe,SAAsBn7J,GAC1C,IAAIq7J,EAAgBr7J,EAAMq7J,cACtB/8J,EAAW0B,EAAM1B,SACrB5X,KAAKgiG,MAAQ,gBACbhiG,KAAKw9K,iBAAiB5lK,EAASiD,IAAMjD,EACrC5X,KAAKi+K,cAAgB,KAErBj+K,KAAKu9K,cAAc3lK,EAASiD,IAGN,gBAAlB85J,EACF30K,KAAK8lG,QAAQ,kBAGb9lG,KAAK8lG,QAAQ,gBAIjBL,EAAOpjG,MAAQ,WACTrC,KAAKo9K,sBAAsBe,oBAC7Bn+K,KAAK4lG,IAAI,iBAAkB5lG,KAAKo9K,sBAAsBe,mBACtDn+K,KAAKo9K,sBAAsBe,kBAAoB,MAGjDn+K,KAAKk1K,cACL,IAAS/pK,aAAanL,KAAKm1K,oBAC3Bn1K,KAAKm1K,mBAAqB,KAEtBn1K,KAAKq9K,YACP,IAASlyK,aAAanL,KAAKo9K,sBAAsBc,6BACjDl+K,KAAKo9K,sBAAsBc,4BAA8B,MAGxC,iBAAfl+K,KAAKgiG,QAGPhiG,KAAK01K,SAAU,IAInBjwE,EAAO6/B,KAAO,SAAcg5C,GAC1B,IAAI9mD,EAASx3H,KAEb,IAASmL,aAAanL,KAAKm1K,oBAC3Bn1K,KAAKm1K,mBAAqB,KAC1B,IAAIx1J,EAAQ3f,KAAK2f,QAEjB,GAAI2+J,EAAJ,CACE,IAAI/I,EAAQ51J,EAAQA,EAAMhE,eAAiB,EAAI,IAAO,IACtD3b,KAAKm1K,mBAAqB,IAAS5qK,YAAW,WAC5C,OAAOitH,EAAO8N,SACbiwC,QAMAv1K,KAAK01K,QAKN/1J,IAAUA,EAAMvH,SAIdpY,KAAKq9K,YAAcr9K,KAAKk+K,8BAE1Bl+K,KAAK8lG,QAAQ,uBAEb9lG,KAAKu+K,qCAGPv+K,KAAK8lG,QAAQ,uBAEb9lG,KAAK8lG,QAAQ,kBAjBb9lG,KAAK8R,SAqBT2zF,EAAO3zF,MAAQ,WACb,IAAI6lH,EAAS33H,KAEbA,KAAK01K,SAAU,EAGV11K,KAAKq9K,UAOVr9K,KAAKw+K,gBAAe,SAAU3S,EAAK4S,GACjC9mD,EAAO+mD,cAEF/mD,EAAOymD,qBAAwBzmD,EAAOq9C,QACzCr9C,EAAOh4G,MAAMg4G,EAAOylD,sBAAsBl/K,OAAOO,UAAU,OAV7DuB,KAAKi+K,cAAgB,IAAS1zK,YAAW,WACvC,OAAOotH,EAAO+mD,gBACb,IAaPj5E,EAAO+4E,eAAiB,SAAwBn0C,GAC9C,IAAIvS,EAAS93H,KAEbA,KAAK8+J,QAAU9+J,KAAKq0K,KAAKhqK,IAAI,CAC3BV,IAAK3J,KAAKo9K,sBAAsBvB,OAChChvK,gBAAiB7M,KAAK6M,kBACrB,SAAUgjB,EAAOg8I,GAClB,IAAI/zC,EAAO6lD,gBAAgB9tJ,EAAOg8I,GAAlC,CAQA,IAAI4S,EAAgB5S,EAAIlhK,eAAiBmtH,EAAOslD,sBAAsBuB,WAWtE,OAVA7mD,EAAOslD,sBAAsBuB,WAAa9S,EAAIlhK,aAE1CkhK,EAAIuK,iBAAmBvK,EAAIuK,gBAAgBwI,KAC7C9mD,EAAO+mD,cAAgBh7J,KAAK9Y,MAAM8gK,EAAIuK,gBAAgBwI,MAEtD9mD,EAAO+mD,cAAgBh7J,KAAKlO,MAG9BmiH,EAAOslD,sBAAsBvB,OAASlQ,GAAwB7zC,EAAOs8C,wBAAyBt8C,EAAOslD,sBAAsBvB,OAAQhQ,GAE/H4S,GACF3mD,EAAOgnD,qBAEPhnD,EAAOinD,wBAAuB,WAC5B,OAAO10C,EAAGwhC,EAAK4S,OAMZp0C,EAAGwhC,EAAK4S,GA5BQ,iBAAjB3mD,EAAO91B,QACT81B,EAAO49C,SAAU,OAuCzBjwE,EAAOs5E,uBAAyB,SAAgCC,GAC9D,IAAIr1C,EAAS3pI,KAETi/K,EAAY,eAAej/K,KAAKo9K,sBAAsBuB,YAG1D,OAAkB,OAAdM,GACFj/K,KAAKo9K,sBAAsB8B,cAAgBl/K,KAAK6+K,cAAgBh7J,KAAKlO,MAC9DqpK,KAGgB,WAArBC,EAAUvzK,QACZ1L,KAAKo9K,sBAAsB8B,cAAgBD,EAAU73K,MAAQyc,KAAKlO,MAC3DqpK,UAGTh/K,KAAK8+J,QAAU9+J,KAAKq0K,KAAKhqK,IAAI,CAC3BV,IAAKkF,GAAW7O,KAAKo9K,sBAAsBvB,OAAQoD,EAAU73K,OAC7DsE,OAAQuzK,EAAUvzK,OAClBmB,gBAAiB7M,KAAK6M,kBACrB,SAAUgjB,EAAOg8I,GAElB,GAAKliC,EAAOm1B,QAAZ,CAIA,GAAIjvI,EAIF,OADA85G,EAAOyzC,sBAAsB8B,cAAgBv1C,EAAOk1C,cAAgBh7J,KAAKlO,MAClEqpK,IAGT,IAAIG,EAQAA,EANqB,SAArBF,EAAUvzK,OACPmgK,EAAIuK,iBAAoBvK,EAAIuK,gBAAgBwI,KAKlC/6J,KAAK9Y,MAAM8gK,EAAIuK,gBAAgBwI,MAF/Bj1C,EAAOk1C,cAKTh7J,KAAK9Y,MAAM8gK,EAAIlhK,cAG9Bg/H,EAAOyzC,sBAAsB8B,cAAgBC,EAAat7J,KAAKlO,MAC/DqpK,UAIJv5E,EAAOi5E,YAAc,WACnB1+K,KAAKgiG,MAAQ,cAEThiG,KAAKq9K,UAIPr9K,KAAK8lG,QAAQ,kBACH9lG,KAAKg1K,QAGfh1K,KAAK2f,MAAM3f,KAAK09K,iBAIpBj4E,EAAOq5E,cAAgB,WAErB9+K,KAAKi+K,cAAgB,KACrB,IAAIhC,EAAYj8K,KAAKo9K,sBAAsBl/K,OACvC69K,EAAYJ,GAAe,CAC7BC,UAAW57K,KAAKo9K,sBAAsBuB,WACtC9C,OAAQ77K,KAAKo9K,sBAAsBvB,OACnC5mK,aAAcjV,KAAKo9K,sBAAsB8B,cACzChkK,YAAalb,KAAKo9K,sBAAsBK,aACxCj/J,iBAAkBy9J,IAGhBA,IACFF,EAAYC,GAAaC,EAAWF,EAAW/7K,KAAKo9K,sBAAsBK,eAI5Ez9K,KAAKo9K,sBAAsBl/K,OAAS69K,GAAwBE,EAC5D,IAAIjtK,EAAWhP,KAAKo9K,sBAAsBl/K,OAAOogB,WAAate,KAAKo9K,sBAAsBl/K,OAAOogB,UAAU,GAU1G,OARItP,GAAYA,IAAahP,KAAKo9K,sBAAsBvB,SACtD77K,KAAKo9K,sBAAsBvB,OAAS7sK,KAGjCitK,GAAaF,GAAaA,EAAUxmK,sBAAwB0mK,EAAU1mK,sBACzEvV,KAAKu+K,oCAGAz9K,QAAQi7K,IAGjBt2E,EAAO84E,kCAAoC,WACzC,IAAIa,EAAMp/K,KAAKo9K,sBAGXgC,EAAIjB,oBACNiB,EAAIx5E,IAAI,iBAAkBw5E,EAAIjB,mBAC9BiB,EAAIjB,kBAAoB,MAItBiB,EAAIlB,8BACN,IAAS/yK,aAAai0K,EAAIlB,6BAC1BkB,EAAIlB,4BAA8B,MAGpC,IAAImB,EAAMD,EAAIlhL,QAAUkhL,EAAIlhL,OAAOqX,oBAKvB,IAAR8pK,IACED,EAAIz/J,QACN0/J,EAAmC,IAA7BD,EAAIz/J,QAAQhE,gBAElByjK,EAAIjB,kBAAoBiB,EAAIb,kCAC5Ba,EAAIvyD,IAAI,iBAAkBuyD,EAAIjB,qBAOf,kBAARkB,GAAoBA,GAAO,EAChCA,EAAM,GACRr/K,KAAKi0K,QAAQ,wCAA0CoL,EAAM,2BAMjEr/K,KAAKs/K,kBAAkBD,IAGzB55E,EAAO65E,kBAAoB,SAA2BD,GACpD,IAAID,EAAMp/K,KAAKo9K,sBACfgC,EAAIlB,4BAA8B,IAAS3zK,YAAW,WACpD60K,EAAIlB,4BAA8B,KAClCkB,EAAIt5E,QAAQ,uBACZs5E,EAAIE,kBAAkBD,KACrBA,IAOL55E,EAAO63E,YAAc,WACnB,IAAIhzC,EAAStqI,KAEbA,KAAKw+K,gBAAe,SAAU3S,EAAK4S,GAC5BA,IAIDn0C,EAAO0qC,SACT1qC,EAAO0qC,OAAS1qC,EAAO8yC,sBAAsBl/K,OAAOO,UAAU6rI,EAAO0qC,OAAOn6J,KAI9EyvH,EAAO8yC,sBAAsBK,aAAeX,GAA0BxyC,EAAO8yC,sBAAsBl/K,OAAQosI,EAAO8yC,sBAAsBK,cAExInzC,EAAOszC,iBAAiBtzC,EAAO3qH,QAAS2qH,EAAOtoC,OAAO,SAAUq8E,GAE9D/zC,EAAOizC,cAAcjzC,EAAO3qH,QAAQ9E,YAW1C4qF,EAAO83E,cAAgB,SAAuBgC,GAC5C,IAAIpf,EAASngK,KAEb,IAAKu/K,EACH,MAAM,IAAIv1K,MAAM,sCAQdhK,KAAKg1K,QAAUh1K,KAAKq9K,WACtBr9K,KAAK8+K,gBAGP,IAAIrgL,EAAYuB,KAAKo9K,sBAAsBl/K,OAAOO,UAC9C+gL,GAAgBx/K,KAAKg1K,QAAUh1K,KAAKg1K,SAAWv2K,EAAU8gL,GAQ7D,GANIC,EACFx/K,KAAKg1K,OAASv2K,EAAU8gL,GAExBv/K,KAAK8lG,QAAQ,sBAGV9lG,KAAKm1K,mBAAoB,CAC5B,IAAIsK,EAA2B,SAASA,IAClCtf,EAAOxgJ,QAAQvH,UAInB+nJ,EAAOgV,mBAAqB,IAAS5qK,YAAW,WAC9C41J,EAAOr6D,QAAQ,sBAEf25E,MACC7L,GAAazT,EAAOxgJ,QAAS7e,QAAQ0+K,OAG1CC,IAGFz/K,KAAK8lG,QAAQ,mBAGRm3E,EApoB6B,CAqoBpCvR,IAEEgU,GAAS,CACXC,mBAAoB,GACpBC,uBAAwB,GACxBC,mBAAoB,GACpBC,wBAAyB,EAEzBC,kBAAmB,QAGnBC,mBAAoB,IAEpBC,sBAAuB,EACvBC,0BAA2B,GAE3BC,uCAAwC,GACxCC,2BAA4B,EAE5BC,uBAAwB,IAGtBC,GAAsB,SAA6B/xE,GAGrD,IAFA,IAAIz0G,EAAO,IAAIQ,WAAW,IAAI2yG,YAAYsB,EAAO3wG,SAExChD,EAAI,EAAGA,EAAI2zG,EAAO3wG,OAAQhD,IACjCd,EAAKc,GAAK2zG,EAAOnqG,WAAWxJ,GAG9B,OAAOd,EAAKE,QAMVumL,GAAwB,SAA+BC,GAIzD,OAFAA,EAAU96E,GAAK86E,EAAUn3D,iBACzBm3D,EAAU56E,IAAM46E,EAAUp3D,oBACnBo3D,GAGLC,GAAkB,SAAyB59J,GAC7C,IACE,OAAO1T,IAAIsxK,gBAAgB,IAAIC,KAAK,CAAC79J,GAAM,CACzChlB,KAAM,4BAER,MAAOmN,GACP,IAAI21K,EAAO,IAAIC,YAEf,OADAD,EAAKj+B,OAAO7/H,GACL1T,IAAIsxK,gBAAgBE,EAAKE,aAIhCx9K,GAAU,SAAiB2J,GAC7B,OAAO,WACL,IAAI8zK,EAAYL,GAAgBzzK,GAC5B+zK,EAASR,GAAsB,IAAIS,OAAOF,IAC9CC,EAAOE,OAASH,EAChB,IAAII,EAAYH,EAAOG,UASvB,OARAH,EAAOr7E,GAAKq7E,EAAO13D,iBACnB03D,EAAOn7E,IAAMm7E,EAAO33D,oBAEpB23D,EAAOG,UAAY,WAEjB,OADA/xK,IAAIgyK,gBAAgBL,GACbI,EAAUtwK,KAAK5Q,OAGjB+gL,IAIPx5D,GAAY,SAAmBv6G,GACjC,MAAO,+BAAiCuzK,GAAsBzjL,WAAvD,oCAA+GkQ,GAGpHo0K,GAAkB,SAAyB9yJ,GAC7C,OAAOA,EAAGxxB,WAAWN,QAAQ,gBAAiB,IAAIO,MAAM,GAAI,IAK1DskL,GAAe95D,GAAU65D,IAAgB,WAU3C,IAAI77E,EAAS,WACXvlG,KAAKshL,KAAO,WACV,IAAI97E,EAAY,GAQhBxlG,KAAK0lG,GAAK,SAAU7nG,EAAM8nG,GACnBH,EAAU3nG,KACb2nG,EAAU3nG,GAAQ,IAGpB2nG,EAAU3nG,GAAQ2nG,EAAU3nG,GAAM8T,OAAOg0F,IAU3C3lG,KAAK4lG,IAAM,SAAU/nG,EAAM8nG,GACzB,IAAI1jG,EAEJ,QAAKujG,EAAU3nG,KAIfoE,EAAQujG,EAAU3nG,GAAMoL,QAAQ08F,GAChCH,EAAU3nG,GAAQ2nG,EAAU3nG,GAAMd,QAClCyoG,EAAU3nG,GAAMgoG,OAAO5jG,EAAO,GACvBA,GAAS,IASlBjC,KAAK8lG,QAAU,SAAUjoG,GACvB,IAAIkoG,EAAWnrG,EAAGgD,EAAQm1B,EAG1B,GAFAgzE,EAAYP,EAAU3nG,GAEjBkoG,EAQL,GAAyB,IAArB10F,UAAUzT,OAGZ,IAFAA,EAASmoG,EAAUnoG,OAEdhD,EAAI,EAAGA,EAAIgD,IAAUhD,EACxBmrG,EAAUnrG,GAAGgW,KAAK5Q,KAAMqR,UAAU,QAE/B,CAIL,IAHA0hB,EAAO,GACPn4B,EAAIyW,UAAUzT,OAEThD,EAAI,EAAGA,EAAIyW,UAAUzT,SAAUhD,EAClCm4B,EAAK93B,KAAKoW,UAAUzW,IAKtB,IAFAgD,EAASmoG,EAAUnoG,OAEdhD,EAAI,EAAGA,EAAIgD,IAAUhD,EACxBmrG,EAAUnrG,GAAGogB,MAAMhb,KAAM+yB,KAS/B/yB,KAAKkmG,QAAU,WACbV,EAAY,MAelBD,EAAO99F,UAAU0+F,KAAO,SAAUC,GAgBhC,OAfApmG,KAAK0lG,GAAG,QAAQ,SAAU7rG,GACxBusG,EAAYnrG,KAAKpB,MAEnBmG,KAAK0lG,GAAG,QAAQ,SAAU67E,GACxBn7E,EAAY9C,MAAMi+E,MAEpBvhL,KAAK0lG,GAAG,eAAe,SAAU67E,GAC/Bn7E,EAAYo7E,aAAaD,MAE3BvhL,KAAK0lG,GAAG,iBAAiB,SAAU67E,GACjCn7E,EAAYq7E,YAAYF,MAE1BvhL,KAAK0lG,GAAG,SAAS,SAAU67E,GACzBn7E,EAAYoiC,MAAM+4C,MAEbn7E,GAOTb,EAAO99F,UAAUxM,KAAO,SAAUpB,GAChCmG,KAAK8lG,QAAQ,OAAQjsG,IAGvB0rG,EAAO99F,UAAU67F,MAAQ,SAAUi+E,GACjCvhL,KAAK8lG,QAAQ,OAAQy7E,IAGvBh8E,EAAO99F,UAAU+5K,aAAe,SAAUD,GACxCvhL,KAAK8lG,QAAQ,cAAey7E,IAG9Bh8E,EAAO99F,UAAUg6K,YAAc,SAAUF,GACvCvhL,KAAK8lG,QAAQ,gBAAiBy7E,IAGhCh8E,EAAO99F,UAAU+gI,MAAQ,SAAU+4C,GACjCvhL,KAAK8lG,QAAQ,QAASy7E,IAGxB,IAyBIjjF,EAAKojF,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAQn4D,EAAOo4D,EAAaC,EAAeC,EAAYC,EAAYC,EAAYC,EAAYC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAzB5PzgF,EAASqC,EACTq+E,EAAe7tK,KAAK2pG,IAAI,EAAG,IAE3BmkE,EAAc,SAAmBlkE,GACnC,IACIv4G,EADAw4G,EAAK,IAAI7lH,SAAS4lH,EAAM3lH,OAAQ2lH,EAAM1lH,WAAY0lH,EAAMzlH,YAG5D,OAAI0lH,EAAGC,cACLz4G,EAAQw4G,EAAGC,aAAa,GAEpBz4G,EAAQvK,OAAOsX,iBACVtX,OAAOuK,GAGTA,GAGFw4G,EAAGllH,UAAU,GAAKkpL,EAAehkE,EAAGllH,UAAU,IAGnDopL,EAAU,CACZnqL,UAAWkqL,EACXpkE,WAAYmkE,GAEVnkE,EAAaqkE,EAAQrkE,YAGzB,WACE,IAAI7kH,EA2CJ,GA1CA+vH,EAAQ,CACNo5D,KAAM,GAENC,KAAM,GACNC,KAAM,GACNvC,KAAM,GACNwC,KAAM,GACNvC,KAAM,GACNC,KAAM,GACNY,KAAM,GACNX,KAAM,GACNU,KAAM,GACND,KAAM,GACNR,KAAM,GACNC,KAAM,GACNC,KAAM,GACNC,KAAM,GACNkC,KAAM,GAENjC,KAAM,GACNC,KAAM,GACNiC,KAAM,GACN3B,KAAM,GACN4B,KAAM,GACN3B,KAAM,GACN4B,KAAM,GACNC,KAAM,GACN5B,KAAM,GACN6B,KAAM,GACNC,KAAM,GACNC,KAAM,GACNC,KAAM,GACNC,KAAM,GACNhC,KAAM,GACNR,KAAM,GACNyC,KAAM,GACNhC,KAAM,GACNR,KAAM,GACNyC,KAAM,IAIkB,qBAAfxqL,WAAX,CAIA,IAAKM,KAAK+vH,EACJA,EAAMlhH,eAAe7O,KACvB+vH,EAAM/vH,GAAK,CAACA,EAAEwJ,WAAW,GAAIxJ,EAAEwJ,WAAW,GAAIxJ,EAAEwJ,WAAW,GAAIxJ,EAAEwJ,WAAW,KAIhF2+K,EAAc,IAAIzoL,WAAW,CAAC,IAAI8J,WAAW,GAAI,IAAIA,WAAW,GAAI,IAAIA,WAAW,GAAI,IAAIA,WAAW,KACtG6+K,EAAa,IAAI3oL,WAAW,CAAC,IAAI8J,WAAW,GAAI,IAAIA,WAAW,GAAI,IAAIA,WAAW,GAAI,IAAIA,WAAW,KACrG4+K,EAAgB,IAAI1oL,WAAW,CAAC,EAAG,EAAG,EAAG,IACzC4oL,EAAa,IAAI5oL,WAAW,CAAC,EAC7B,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,IAAM,IAAM,IAAM,IAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAExE6oL,EAAa,IAAI7oL,WAAW,CAAC,EAC7B,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,IAAM,IAAM,IAAM,IAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAExE8oL,EAAa,CACXtnL,MAAOonL,EACPnnL,MAAOonL,GAETI,EAAO,IAAIjpL,WAAW,CAAC,EACvB,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,GAClB,IAAM,IAAM,IAAM,GAClB,EACA,EAAM,EAAM,IAEZgpL,EAAO,IAAIhpL,WAAW,CAAC,EACvB,EAAM,EAAM,EACZ,EAAM,EACN,EAAM,IAENkpL,EAAO,IAAIlpL,WAAW,CAAC,EACvB,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,IAElBmpL,EAAOD,EACPE,EAAO,IAAIppL,WAAW,CAAC,EACvB,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,IAElBqpL,EAAOH,EACPH,EAAO,IAAI/oL,WAAW,CAAC,EACvB,EAAM,EAAM,EACZ,EAAM,EACN,EAAM,EAAM,EAAM,EAAM,EAAM,MA1GhC,GA8GAgkG,EAAM,SAAazgG,GACjB,IAEIjD,EACAT,EACAL,EAJAirL,EAAU,GACVxsK,EAAO,EAKX,IAAK3d,EAAI,EAAGA,EAAIyW,UAAUzT,OAAQhD,IAChCmqL,EAAQ9pL,KAAKoW,UAAUzW,IAGzBA,EAAImqL,EAAQnnL,OAEZ,MAAOhD,IACL2d,GAAQwsK,EAAQnqL,GAAGV,WAQrB,IALAC,EAAS,IAAIG,WAAWie,EAAO,GAC/Bze,EAAO,IAAIC,SAASI,EAAOH,OAAQG,EAAOF,WAAYE,EAAOD,YAC7DJ,EAAKkrL,UAAU,EAAG7qL,EAAOD,YACzBC,EAAOkxB,IAAIxtB,EAAM,GAEZjD,EAAI,EAAG2d,EAAO,EAAG3d,EAAImqL,EAAQnnL,OAAQhD,IACxCT,EAAOkxB,IAAI05J,EAAQnqL,GAAI2d,GACvBA,GAAQwsK,EAAQnqL,GAAGV,WAGrB,OAAOC,GAGTunL,EAAO,WACL,OAAOpjF,EAAIqsB,EAAM+2D,KAAMpjF,EAAIqsB,EAAMu5D,KAAMX,KAGzC5B,EAAO,SAAc3kF,GACnB,OAAOsB,EAAIqsB,EAAMg3D,KAAM,IAAIrnL,WAAW,CAAC,EACvC,EAAM,EAAM,EAEZ,EACA,GACA,EAAM,EACN,EAEA,EACA,GACA,GACA,GACA,EAAM,EAAM,EACZ,EAAM,EAAM,IAAM,IAClB,EAAM,EAAM,IAAM,IAElB,EACA,EAGA0iG,EAAMioF,iBAAmB,EAAIjoF,EAAMkoF,yBAA2B,EAAGloF,EAAMkoF,wBAA0B,EAAIloF,EAAMmoF,cAAgB,EAAG,EAAM,EAAM,MAI5IvD,EAAO,WACL,OAAOtjF,EAAIqsB,EAAMi3D,KAAMmB,EAAaC,EAAeD,EAAaE,IAGlET,EAAO,SAAc3kL,GACnB,OAAOygG,EAAIqsB,EAAM63D,KAAMY,EAAWvlL,KAGpCgkL,EAAO,SAAchoL,GACnB,OAAOykG,EAAIqsB,EAAMk3D,KAAMhoL,IAGzB0oL,EAAO,SAAcvlF,GACnB,IAAI7iG,EAAS,IAAIG,WAAW,CAAC,EAC7B,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,GAAM,IAClB0iG,EAAMtoF,WAAa,GAAK,IAAMsoF,EAAMtoF,WAAa,GAAK,IAAMsoF,EAAMtoF,WAAa,EAAI,IAAuB,IAAjBsoF,EAAMtoF,SAC/F,GAAM,IACN,EAAM,IAWN,OAPIsoF,EAAMooF,aACRjrL,EAAO,IAAM6iG,EAAMooF,aAAe,GAAK,IACvCjrL,EAAO,IAAM6iG,EAAMooF,aAAe,GAAK,IACvCjrL,EAAO,IAAM6iG,EAAMooF,aAAe,EAAI,IACtCjrL,EAAO,IAAyB,IAAnB6iG,EAAMooF,YAGd9mF,EAAIqsB,EAAM43D,KAAMpoL,IAGzBmoL,EAAO,SAActlF,GACnB,OAAOsB,EAAIqsB,EAAM23D,KAAMC,EAAKvlF,GAAQwlF,EAAKxlF,EAAMn/F,MAAOkkL,EAAK/kF,KAG7D8kF,EAAO,SAAcuD,GACnB,OAAO/mF,EAAIqsB,EAAMm3D,KAAM,IAAIxnL,WAAW,CAAC,EAAM,EAAM,EAAM,GACvC,WAAjB+qL,IAAgC,IAAsB,SAAjBA,IAA8B,IAAsB,MAAjBA,IAA4B,EAAoB,IAAjBA,MAI1GtD,EAAO,SAAc/kF,GACnB,OAAOsB,EAAIqsB,EAAMo3D,KAAqB,UAAf/kF,EAAMn/F,KAAmBygG,EAAIqsB,EAAMm6D,KAAMzB,GAAQ/kF,EAAIqsB,EAAM05D,KAAMf,GAAO5B,IAAQgB,EAAK1lF,KAG9GglF,EAAO,SAAcqD,EAAgB9qD,GACnC,IAAI+qD,EAAiB,GACjB1qL,EAAI2/H,EAAO38H,OAEf,MAAOhD,IACL0qL,EAAe1qL,GAAKgoL,EAAKroD,EAAO3/H,IAGlC,OAAO0jG,EAAItjF,MAAM,KAAM,CAAC2vG,EAAMq3D,KAAMF,EAAKuD,IAAiB1zK,OAAO2zK,KASnErD,EAAO,SAAc1nD,GACnB,IAAI3/H,EAAI2/H,EAAO38H,OACX8iG,EAAQ,GAEZ,MAAO9lG,IACL8lG,EAAM9lG,GAAKwnL,EAAK7nD,EAAO3/H,IAGzB,OAAO0jG,EAAItjF,MAAM,KAAM,CAAC2vG,EAAMs3D,KAAME,EAAK,aAAaxwK,OAAO+uF,GAAO/uF,OAAOuwK,EAAK3nD,MAGlF2nD,EAAO,SAAc3nD,GACnB,IAAI3/H,EAAI2/H,EAAO38H,OACX8iG,EAAQ,GAEZ,MAAO9lG,IACL8lG,EAAM9lG,GAAKioL,EAAKtoD,EAAO3/H,IAGzB,OAAO0jG,EAAItjF,MAAM,KAAM,CAAC2vG,EAAMu3D,MAAMvwK,OAAO+uF,KAG7CyhF,EAAO,SAAcztK,GACnB,IAAIpM,EAAQ,IAAIhO,WAAW,CAAC,EAC5B,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,GAAM,KACN,WAAXoa,IAA0B,IAAgB,SAAXA,IAAwB,IAAgB,MAAXA,IAAsB,EAAc,IAAXA,EACtF,EAAM,EAAM,EAAM,EAClB,EAAM,EACN,EAAM,EACN,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,EAAM,EAAM,EAClN,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAC1I,IAAM,IAAM,IAAM,MAElB,OAAO4pF,EAAIqsB,EAAMw3D,KAAM75K,IAGzBm6K,EAAO,SAAczlF,GACnB,IAEI3iG,EACAO,EAHA2qL,EAAUvoF,EAAMuoF,SAAW,GAC3Bj9K,EAAQ,IAAIhO,WAAW,EAAIirL,EAAQ3nL,QAKvC,IAAKhD,EAAI,EAAGA,EAAI2qL,EAAQ3nL,OAAQhD,IAC9BP,EAAQkrL,EAAQ3qL,GAAGP,MACnBiO,EAAM1N,EAAI,GAAKP,EAAMmrL,WAAa,EAAInrL,EAAMorL,cAAgB,EAAIprL,EAAMqrL,cAGxE,OAAOpnF,EAAIqsB,EAAM83D,KAAMn6K,IAGzBo6K,EAAO,SAAc1lF,GACnB,OAAOsB,EAAIqsB,EAAM+3D,KAAMC,EAAK3lF,GAAQsB,EAAIqsB,EAAM85D,KAAMd,GAAOrlF,EAAIqsB,EAAM45D,KAAMd,GAAOnlF,EAAIqsB,EAAM65D,KAAMd,GAAOplF,EAAIqsB,EAAM25D,KAAMd,KAG3H,WACE,IAAImC,EAAaC,EAEjBjD,EAAO,SAAc3lF,GACnB,OAAOsB,EAAIqsB,EAAMg4D,KAAM,IAAIroL,WAAW,CAAC,EACvC,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,IAAuB,UAAf0iG,EAAMn/F,KAAmB8nL,EAAY3oF,GAAS4oF,EAAY5oF,KAGtF2oF,EAAc,SAAqB3oF,GACjC,IAIIpiG,EACAirL,EALAC,EAAM9oF,EAAM8oF,KAAO,GACnBC,EAAM/oF,EAAM+oF,KAAO,GACnBC,EAAwB,GACxBC,EAAuB,GAI3B,IAAKrrL,EAAI,EAAGA,EAAIkrL,EAAIloL,OAAQhD,IAC1BorL,EAAsB/qL,MAA0B,MAApB6qL,EAAIlrL,GAAGV,cAAyB,GAC5D8rL,EAAsB/qL,KAAyB,IAApB6qL,EAAIlrL,GAAGV,YAElC8rL,EAAwBA,EAAsBr0K,OAAOjR,MAAM+G,UAAU1K,MAAM6T,KAAKk1K,EAAIlrL,KAItF,IAAKA,EAAI,EAAGA,EAAImrL,EAAInoL,OAAQhD,IAC1BqrL,EAAqBhrL,MAA0B,MAApB8qL,EAAInrL,GAAGV,cAAyB,GAC3D+rL,EAAqBhrL,KAAyB,IAApB8qL,EAAInrL,GAAGV,YACjC+rL,EAAuBA,EAAqBt0K,OAAOjR,MAAM+G,UAAU1K,MAAM6T,KAAKm1K,EAAInrL,KA+BpF,GA5BAirL,EAAU,CAACl7D,EAAMo5D,KAAM,IAAIzpL,WAAW,CAAC,EAAM,EAAM,EAAM,EAAM,EAAM,EACrE,EAAM,EACN,EAAM,EACN,EAAM,EACN,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GACnD,MAAd0iG,EAAM97F,QAAmB,EAAiB,IAAd87F,EAAM97F,OACnB,MAAf87F,EAAM77F,SAAoB,EAAkB,IAAf67F,EAAM77F,OACpC,EAAM,GAAM,EAAM,EAClB,EAAM,GAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EACN,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAC1L,EAAM,GACN,GAAM,KACFm9F,EAAIqsB,EAAMq5D,KAAM,IAAI1pL,WAAW,CAAC,EACpC0iG,EAAMkpF,WACNlpF,EAAMmpF,qBACNnpF,EAAMopF,SACN,KACEz0K,OAAO,CAACm0K,EAAIloL,QACdooL,EACA,CAACD,EAAInoL,QACLqoL,KACK3nF,EAAIqsB,EAAMs5D,KAAM,IAAI3pL,WAAW,CAAC,EAAM,GAAM,IAAM,IACvD,EAAM,GAAM,IAAM,IAClB,EAAM,GAAM,IAAM,QAGd0iG,EAAMqpF,SAAU,CAClB,IAAIC,EAAWtpF,EAAMqpF,SAAS,GAC1BE,EAAWvpF,EAAMqpF,SAAS,GAC9BR,EAAQ5qL,KAAKqjG,EAAIqsB,EAAMy5D,KAAM,IAAI9pL,WAAW,EAAa,WAAXgsL,IAA0B,IAAgB,SAAXA,IAAwB,IAAgB,MAAXA,IAAsB,EAAc,IAAXA,GAA6B,WAAXC,IAA0B,IAAgB,SAAXA,IAAwB,IAAgB,MAAXA,IAAsB,EAAc,IAAXA,MAG5O,OAAOjoF,EAAItjF,MAAM,KAAM6qK,IAGzBD,EAAc,SAAqB5oF,GACjC,OAAOsB,EAAIqsB,EAAMw5D,KAAM,IAAI7pL,WAAW,CACtC,EAAM,EAAM,EAAM,EAAM,EAAM,EAC9B,EAAM,EAEN,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,GACI,MAArB0iG,EAAMmoF,eAA0B,EAAwB,IAArBnoF,EAAMmoF,cACtB,MAAnBnoF,EAAMwpF,aAAwB,EAAsB,IAAnBxpF,EAAMwpF,WACxC,EAAM,EACN,EAAM,GACc,MAAnBxpF,EAAMooF,aAAwB,EAAsB,IAAnBpoF,EAAMooF,WAAmB,EAAM,IAE7DzD,EAAK3kF,KAjFb,GAqFAqlF,EAAO,SAAcrlF,GACnB,IAAI7iG,EAAS,IAAIG,WAAW,CAAC,EAC7B,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,GACN,WAAX0iG,EAAMniF,KAAoB,IAAgB,SAAXmiF,EAAMniF,KAAkB,IAAgB,MAAXmiF,EAAMniF,KAAgB,EAAc,IAAXmiF,EAAMniF,GAC5F,EAAM,EAAM,EAAM,GACA,WAAjBmiF,EAAMtoF,WAA0B,IAAsB,SAAjBsoF,EAAMtoF,WAAwB,IAAsB,MAAjBsoF,EAAMtoF,WAAsB,EAAoB,IAAjBsoF,EAAMtoF,SAC9G,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAC1C,EAAM,EACN,EAAM,EACN,EAAM,EACN,EAAM,EACN,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,EAAM,EAAM,GACnM,MAAdsoF,EAAM97F,QAAmB,EAAiB,IAAd87F,EAAM97F,MAAc,EAAM,GACvC,MAAf87F,EAAM77F,SAAoB,EAAkB,IAAf67F,EAAM77F,OAAe,EAAM,IAEzD,OAAOm9F,EAAIqsB,EAAM03D,KAAMloL,IAQzByoL,EAAO,SAAc5lF,GACnB,IAAIypF,EAAqBC,EAAyBC,EAAkBC,EAAuBC,EAAYC,EAA8BC,EA0BrI,OAzBAN,EAAsBnoF,EAAIqsB,EAAMi6D,KAAM,IAAItqL,WAAW,CAAC,EACtD,EAAM,EAAM,IACA,WAAX0iG,EAAMniF,KAAoB,IAAgB,SAAXmiF,EAAMniF,KAAkB,IAAgB,MAAXmiF,EAAMniF,KAAgB,EAAc,IAAXmiF,EAAMniF,GAC5F,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,KAElBisK,EAA+B/wK,KAAKG,MAAM8mF,EAAMgqF,oBAAsBvnE,GACtEsnE,EAA+BhxK,KAAKG,MAAM8mF,EAAMgqF,oBAAsBvnE,GACtEinE,EAA0BpoF,EAAIqsB,EAAMg6D,KAAM,IAAIrqL,WAAW,CAAC,EAC1D,EAAM,EAAM,EAEZwsL,IAAiC,GAAK,IAAMA,IAAiC,GAAK,IAAMA,IAAiC,EAAI,IAAqC,IAA/BA,EAAqCC,IAAiC,GAAK,IAAMA,IAAiC,GAAK,IAAMA,IAAiC,EAAI,IAAqC,IAA/BA,KAI3SF,EAAa,GAQM,UAAf7pF,EAAMn/F,MACR8oL,EAAmB7D,EAAO9lF,EAAO6pF,GAC1BvoF,EAAIqsB,EAAMi4D,KAAM6D,EAAqBC,EAAyBC,KAMvEC,EAAwBnE,EAAKzlF,GAC7B2pF,EAAmB7D,EAAO9lF,EAAO4pF,EAAsBhpL,OAASipL,GACzDvoF,EAAIqsB,EAAMi4D,KAAM6D,EAAqBC,EAAyBC,EAAkBC,KASzFxE,EAAO,SAAcplF,GAEnB,OADAA,EAAMtoF,SAAWsoF,EAAMtoF,UAAY,WAC5B4pF,EAAIqsB,EAAMy3D,KAAMC,EAAKrlF,GAAQslF,EAAKtlF,KAG3C6lF,EAAO,SAAc7lF,GACnB,IAAI7iG,EAAS,IAAIG,WAAW,CAAC,EAC7B,EAAM,EAAM,GACA,WAAX0iG,EAAMniF,KAAoB,IAAgB,SAAXmiF,EAAMniF,KAAkB,IAAgB,MAAXmiF,EAAMniF,KAAgB,EAAc,IAAXmiF,EAAMniF,GAC5F,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,IAUlB,MAJmB,UAAfmiF,EAAMn/F,OACR1D,EAAOA,EAAOyD,OAAS,GAAK,GAGvB0gG,EAAIqsB,EAAMk4D,KAAM1oL,IAGzB,WACE,IAAI8sL,EAAWC,EAAWC,EAK1BA,EAAa,SAAoB5B,EAASt/K,GACxC,IAAImhL,EAAkB,EAClBC,EAAc,EACdC,EAAe,EACfC,EAAwB,EAoB5B,OAlBIhC,EAAQ3nL,cACkB8M,IAAxB66K,EAAQ,GAAG7wK,WACb0yK,EAAkB,QAGI18K,IAApB66K,EAAQ,GAAGhtK,OACb8uK,EAAc,QAGS38K,IAArB66K,EAAQ,GAAGlrL,QACbitL,EAAe,QAGwB58K,IAArC66K,EAAQ,GAAGgC,wBACbA,EAAwB,IAIrB,CAAC,EACR,EAAMH,EAAkBC,EAAcC,EAAeC,EAAuB,GAC1D,WAAjBhC,EAAQ3nL,UAAyB,IAAsB,SAAjB2nL,EAAQ3nL,UAAuB,IAAsB,MAAjB2nL,EAAQ3nL,UAAqB,EAAoB,IAAjB2nL,EAAQ3nL,QACzG,WAATqI,KAAyB,IAAc,SAATA,KAAuB,IAAc,MAATA,KAAqB,EAAY,IAATA,IAIrFihL,EAAY,SAAmBlqF,EAAO/2F,GACpC,IAAIuhL,EAAal/K,EAAOm/K,EAAQlC,EAASmC,EAAQ9sL,EAQjD,IAPA2qL,EAAUvoF,EAAMuoF,SAAW,GAC3Bt/K,GAAU,GAAS,GAAKs/K,EAAQ3nL,OAChC6pL,EAASN,EAAW5B,EAASt/K,GAC7BqC,EAAQ,IAAIhO,WAAWmtL,EAAO7pL,OAA0B,GAAjB2nL,EAAQ3nL,QAC/C0K,EAAM+iB,IAAIo8J,GACVD,EAAcC,EAAO7pL,OAEhBhD,EAAI,EAAGA,EAAI2qL,EAAQ3nL,OAAQhD,IAC9B8sL,EAASnC,EAAQ3qL,GACjB0N,EAAMk/K,MAAoC,WAAlBE,EAAOhzK,YAA2B,GAC1DpM,EAAMk/K,MAAoC,SAAlBE,EAAOhzK,YAAyB,GACxDpM,EAAMk/K,MAAoC,MAAlBE,EAAOhzK,YAAuB,EACtDpM,EAAMk/K,KAAmC,IAAlBE,EAAOhzK,SAE9BpM,EAAMk/K,MAAgC,WAAdE,EAAOnvK,QAAuB,GACtDjQ,EAAMk/K,MAAgC,SAAdE,EAAOnvK,QAAqB,GACpDjQ,EAAMk/K,MAAgC,MAAdE,EAAOnvK,QAAmB,EAClDjQ,EAAMk/K,KAA+B,IAAdE,EAAOnvK,KAE9BjQ,EAAMk/K,KAAiBE,EAAOrtL,MAAMstL,WAAa,EAAID,EAAOrtL,MAAMmrL,UAClEl9K,EAAMk/K,KAAiBE,EAAOrtL,MAAMorL,cAAgB,EAAIiC,EAAOrtL,MAAMqrL,eAAiB,EAAIgC,EAAOrtL,MAAMutL,cAAgB,EAAIF,EAAOrtL,MAAMwtL,gBACxIv/K,EAAMk/K,KAAoD,MAAnCE,EAAOrtL,MAAMytL,oBACpCx/K,EAAMk/K,KAAoD,GAAnCE,EAAOrtL,MAAMytL,oBAEpCx/K,EAAMk/K,MAAiD,WAA/BE,EAAOH,yBAAwC,GACvEj/K,EAAMk/K,MAAiD,SAA/BE,EAAOH,yBAAsC,GACrEj/K,EAAMk/K,MAAiD,MAA/BE,EAAOH,yBAAoC,EACnEj/K,EAAMk/K,KAAgD,IAA/BE,EAAOH,sBAGhC,OAAOjpF,EAAIqsB,EAAMk6D,KAAMv8K,IAGzB2+K,EAAY,SAAmBjqF,EAAO/2F,GACpC,IAAIqC,EAAOk/K,EAAaC,EAAQlC,EAASmC,EAAQ9sL,EAQjD,IAPA2qL,EAAUvoF,EAAMuoF,SAAW,GAC3Bt/K,GAAU,GAAS,EAAIs/K,EAAQ3nL,OAC/B6pL,EAASN,EAAW5B,EAASt/K,GAC7BqC,EAAQ,IAAIhO,WAAWmtL,EAAO7pL,OAA0B,EAAjB2nL,EAAQ3nL,QAC/C0K,EAAM+iB,IAAIo8J,GACVD,EAAcC,EAAO7pL,OAEhBhD,EAAI,EAAGA,EAAI2qL,EAAQ3nL,OAAQhD,IAC9B8sL,EAASnC,EAAQ3qL,GACjB0N,EAAMk/K,MAAoC,WAAlBE,EAAOhzK,YAA2B,GAC1DpM,EAAMk/K,MAAoC,SAAlBE,EAAOhzK,YAAyB,GACxDpM,EAAMk/K,MAAoC,MAAlBE,EAAOhzK,YAAuB,EACtDpM,EAAMk/K,KAAmC,IAAlBE,EAAOhzK,SAE9BpM,EAAMk/K,MAAgC,WAAdE,EAAOnvK,QAAuB,GACtDjQ,EAAMk/K,MAAgC,SAAdE,EAAOnvK,QAAqB,GACpDjQ,EAAMk/K,MAAgC,MAAdE,EAAOnvK,QAAmB,EAClDjQ,EAAMk/K,KAA+B,IAAdE,EAAOnvK,KAGhC,OAAO+lF,EAAIqsB,EAAMk6D,KAAMv8K,IAGzBw6K,EAAS,SAAc9lF,EAAO/2F,GAC5B,MAAmB,UAAf+2F,EAAMn/F,KACDopL,EAAUjqF,EAAO/2F,GAGnBihL,EAAUlqF,EAAO/2F,IAtG5B,GA0GA,IA2VI8hL,EAiCJt4K,EACIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAlYAi4K,EAAe,CACjBpG,KAAMA,EACNC,KAAMA,EACNG,KAAMA,EACNC,KAAMA,EACNzqK,YAAa,SAAqB+iH,GAChC,IAEIpgI,EAFA8tL,EAAWrG,IACXsG,EAAQjG,EAAK1nD,GAKjB,OAHApgI,EAAS,IAAIG,WAAW2tL,EAAS/tL,WAAaguL,EAAMhuL,YACpDC,EAAOkxB,IAAI48J,GACX9tL,EAAOkxB,IAAI68J,EAAOD,EAAS/tL,YACpBC,IAcPguL,EAAsB,SAA6BC,GACrD,IAAIxtL,EACAytL,EACAC,EAAe,GACfC,EAAS,GAOb,IALAA,EAAOruL,WAAa,EACpBquL,EAAOC,SAAW,EAClBD,EAAO7zK,SAAW,EAClB4zK,EAAapuL,WAAa,EAErBU,EAAI,EAAGA,EAAIwtL,EAASxqL,OAAQhD,IAC/BytL,EAAaD,EAASxtL,GAES,+BAA3BytL,EAAWI,aAGTH,EAAa1qL,SACf0qL,EAAa5zK,SAAW2zK,EAAWK,IAAMJ,EAAaI,IAEtDH,EAAOruL,YAAcouL,EAAapuL,WAClCquL,EAAOC,UAAYF,EAAa1qL,OAChC2qL,EAAO7zK,UAAY4zK,EAAa5zK,SAChC6zK,EAAOttL,KAAKqtL,IAGdA,EAAe,CAACD,GAChBC,EAAapuL,WAAamuL,EAAWxuL,KAAKK,WAC1CouL,EAAaK,IAAMN,EAAWM,IAC9BL,EAAaI,IAAML,EAAWK,MAGC,8CAA3BL,EAAWI,cACbH,EAAaM,UAAW,GAG1BN,EAAa5zK,SAAW2zK,EAAWK,IAAMJ,EAAaI,IACtDJ,EAAapuL,YAAcmuL,EAAWxuL,KAAKK,WAC3CouL,EAAartL,KAAKotL,IAgBtB,OAVIE,EAAO3qL,UAAY0qL,EAAa5zK,UAAY4zK,EAAa5zK,UAAY,KACvE4zK,EAAa5zK,SAAW6zK,EAAOA,EAAO3qL,OAAS,GAAG8W,UAKpD6zK,EAAOruL,YAAcouL,EAAapuL,WAClCquL,EAAOC,UAAYF,EAAa1qL,OAChC2qL,EAAO7zK,UAAY4zK,EAAa5zK,SAChC6zK,EAAOttL,KAAKqtL,GACLC,GAOLM,EAAsB,SAA6BN,GACrD,IAAI3tL,EACA0tL,EACAQ,EAAa,GACbC,EAAO,GAeX,IAZAD,EAAW5uL,WAAa,EACxB4uL,EAAWN,SAAW,EACtBM,EAAWp0K,SAAW,EACtBo0K,EAAWH,IAAMJ,EAAO,GAAGI,IAC3BG,EAAWJ,IAAMH,EAAO,GAAGG,IAE3BK,EAAK7uL,WAAa,EAClB6uL,EAAKP,SAAW,EAChBO,EAAKr0K,SAAW,EAChBq0K,EAAKJ,IAAMJ,EAAO,GAAGI,IACrBI,EAAKL,IAAMH,EAAO,GAAGG,IAEhB9tL,EAAI,EAAGA,EAAI2tL,EAAO3qL,OAAQhD,IAC7B0tL,EAAeC,EAAO3tL,GAElB0tL,EAAaM,UAGXE,EAAWlrL,SACbmrL,EAAK9tL,KAAK6tL,GACVC,EAAK7uL,YAAc4uL,EAAW5uL,WAC9B6uL,EAAKP,UAAYM,EAAWN,SAC5BO,EAAKr0K,UAAYo0K,EAAWp0K,UAG9Bo0K,EAAa,CAACR,GACdQ,EAAWN,SAAWF,EAAa1qL,OACnCkrL,EAAW5uL,WAAaouL,EAAapuL,WACrC4uL,EAAWH,IAAML,EAAaK,IAC9BG,EAAWJ,IAAMJ,EAAaI,IAC9BI,EAAWp0K,SAAW4zK,EAAa5zK,WAEnCo0K,EAAWp0K,UAAY4zK,EAAa5zK,SACpCo0K,EAAWN,UAAYF,EAAa1qL,OACpCkrL,EAAW5uL,YAAcouL,EAAapuL,WACtC4uL,EAAW7tL,KAAKqtL,IAapB,OATIS,EAAKnrL,QAAUkrL,EAAWp0K,UAAY,IACxCo0K,EAAWp0K,SAAWq0K,EAAKA,EAAKnrL,OAAS,GAAG8W,UAG9Cq0K,EAAK7uL,YAAc4uL,EAAW5uL,WAC9B6uL,EAAKP,UAAYM,EAAWN,SAC5BO,EAAKr0K,UAAYo0K,EAAWp0K,SAE5Bq0K,EAAK9tL,KAAK6tL,GACHC,GAaLC,GAAsB,SAA6BD,GACrD,IAAID,EAeJ,OAbKC,EAAK,GAAG,GAAGH,UAAYG,EAAKnrL,OAAS,IAExCkrL,EAAaC,EAAK/5D,QAClB+5D,EAAK7uL,YAAc4uL,EAAW5uL,WAC9B6uL,EAAKP,UAAYM,EAAWN,SAI5BO,EAAK,GAAG,GAAGL,IAAMI,EAAWJ,IAC5BK,EAAK,GAAG,GAAGJ,IAAMG,EAAWH,IAC5BI,EAAK,GAAG,GAAGr0K,UAAYo0K,EAAWp0K,UAG7Bq0K,GAQLE,GAAsB,WACxB,MAAO,CACL1wK,KAAM,EACNle,MAAO,CACLstL,UAAW,EACXnC,UAAW,EACXC,aAAc,EACdC,cAAe,EACfoC,oBAAqB,EACrBD,gBAAiB,KAcnBqB,GAAiB,SAAwBC,EAAOtC,GAClD,IAAIa,EAASuB,KAab,OAZAvB,EAAOb,WAAaA,EACpBa,EAAOH,sBAAwB4B,EAAMR,IAAMQ,EAAMT,IACjDhB,EAAOhzK,SAAWy0K,EAAMz0K,SACxBgzK,EAAOnvK,KAAO,EAAI4wK,EAAMvrL,OAExB8pL,EAAOnvK,MAAQ4wK,EAAMjvL,WAEjBivL,EAAMP,WACRlB,EAAOrtL,MAAMmrL,UAAY,EACzBkC,EAAOrtL,MAAMwtL,gBAAkB,GAG1BH,GAIL0B,GAAwB,SAA6BL,EAAMM,GAC7D,IAAIrxF,EACAp9F,EACA8sL,EACAoB,EACAR,EACAzB,EAAawC,GAAkB,EAC/B9D,EAAU,GAEd,IAAKvtF,EAAI,EAAGA,EAAI+wF,EAAKnrL,OAAQo6F,IAG3B,IAFA8wF,EAAaC,EAAK/wF,GAEbp9F,EAAI,EAAGA,EAAIkuL,EAAWlrL,OAAQhD,IACjC0tL,EAAeQ,EAAWluL,GAC1B8sL,EAASwB,GAAeZ,EAAczB,GACtCA,GAAca,EAAOnvK,KACrBgtK,EAAQtqL,KAAKysL,GAIjB,OAAOnC,GAIL+D,GAAqB,SAA4BP,GACnD,IAAI/wF,EACAp9F,EACAi2I,EACAi4C,EACAR,EACAD,EACAxB,EAAa,EACb0C,EAAiBR,EAAK7uL,WACtBsvL,EAAeT,EAAKP,SACpBiB,EAAkBF,EAAiB,EAAIC,EACvC3vL,EAAO,IAAIS,WAAWmvL,GACtB3vL,EAAO,IAAIC,SAASF,EAAKG,QAE7B,IAAKg+F,EAAI,EAAGA,EAAI+wF,EAAKnrL,OAAQo6F,IAG3B,IAFA8wF,EAAaC,EAAK/wF,GAEbp9F,EAAI,EAAGA,EAAIkuL,EAAWlrL,OAAQhD,IAGjC,IAFA0tL,EAAeQ,EAAWluL,GAErBi2I,EAAI,EAAGA,EAAIy3C,EAAa1qL,OAAQizI,IACnCw3C,EAAaC,EAAaz3C,GAC1B/2I,EAAKkrL,UAAU6B,EAAYwB,EAAWxuL,KAAKK,YAC3C2sL,GAAc,EACdhtL,EAAKwxB,IAAIg9J,EAAWxuL,KAAMgtL,GAC1BA,GAAcwB,EAAWxuL,KAAKK,WAKpC,OAAOL,GAIL6vL,GAA8B,SAAqCP,EAAOE,GAC5E,IAAI3B,EACAb,EAAawC,GAAkB,EAC/B9D,EAAU,GAGd,OAFAmC,EAASwB,GAAeC,EAAOtC,GAC/BtB,EAAQtqL,KAAKysL,GACNnC,GAILoE,GAA6B,SAAoCR,GACnE,IAAIvuL,EACAytL,EACAxB,EAAa,EACb0C,EAAiBJ,EAAMjvL,WACvBsvL,EAAeL,EAAMvrL,OACrB6rL,EAAkBF,EAAiB,EAAIC,EACvC3vL,EAAO,IAAIS,WAAWmvL,GACtB3vL,EAAO,IAAIC,SAASF,EAAKG,QAE7B,IAAKY,EAAI,EAAGA,EAAIuuL,EAAMvrL,OAAQhD,IAC5BytL,EAAac,EAAMvuL,GACnBd,EAAKkrL,UAAU6B,EAAYwB,EAAWxuL,KAAKK,YAC3C2sL,GAAc,EACdhtL,EAAKwxB,IAAIg9J,EAAWxuL,KAAMgtL,GAC1BA,GAAcwB,EAAWxuL,KAAKK,WAGhC,OAAOL,GAGL+vL,GAAa,CACfzB,oBAAqBA,EACrBU,oBAAqBA,EACrBG,oBAAqBA,GACrBa,oBAAqBT,GACrBE,mBAAoBA,GACpBI,4BAA6BA,GAC7BC,2BAA4BA,IAS1BG,GAAa,CAAC,GAAI,GAAI,EAAG,GAAI,IAAK,IAClCC,GAAY,CAAC,GAAI,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,KAEjEC,GAAW,SAAkB/pK,GAC/B,IAAIza,EAAI,GAER,MAAOya,IACLza,EAAEvK,KAAK,GAGT,OAAOuK,GAGLykL,GAAY,SAAmBC,GACjC,OAAOljL,OAAO0K,KAAKw4K,GAAW14K,QAAO,SAAUhI,EAAKN,GAIlD,OAHAM,EAAIN,GAAO,IAAI5O,WAAW4vL,EAAUhhL,GAAKsI,QAAO,SAAU24K,EAAK7gH,GAC7D,OAAO6gH,EAAIx4K,OAAO23D,KACjB,KACI9/D,IACN,KAKD4gL,GAAY,WACd,IAAKrC,EAAS,CAEZ,IAAIsC,EAAgB,CAClBC,KAAO,CAACR,GAAY,CAAC,IAAK,IAAKE,GAAS,KAAM,CAAC,KAC/CO,MAAO,CAACT,GAAY,CAAC,KAAME,GAAS,KAAM,CAAC,KAC3CQ,KAAO,CAACV,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,KAChDS,KAAO,CAACX,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,IAAK,CAAC,MAC9EU,MAAO,CAACZ,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,IAAK,CAAC,MAC9EW,KAAO,CAACb,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,GAAI,KAAMA,GAAS,KAAM,CAAC,MAC1EY,KAAO,CAACd,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,IAAK,KAAMA,GAAS,KAAM,CAAC,MAC1Ga,KAAO,CAACf,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,IAAK,KAAMA,GAAS,KAAM,CAAC,IAAK,KAAMA,GAAS,KAAM,CAAC,EAAG,MACxIc,KAAO,CAACf,GAAWC,GAAS,KAAM,CAAC,EAAG,IAAK,KAAMA,GAAS,KAAM,CAAC,EAAG,IAAK,KAAMA,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,KAC7Je,MAAO,CAAChB,GAAWC,GAAS,KAAM,CAAC,EAAG,IAAK,KAAMA,GAAS,KAAM,CAAC,EAAG,IAAK,KAAMA,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,MAC5LgB,IAAM,CAACjB,GAAWC,GAAS,KAAM,CAAC,EAAG,IAAK,IAAKA,GAAS,IAAK,CAAC,KAEhEjC,EAAUkC,GAAUI,GAGtB,OAAOtC,GAULkD,GAAqB,IAUzBx7K,EAAmB,SAA0BQ,GAC3C,OAAOA,EAAUg7K,IAGnBv7K,EAAmB,SAA0BO,EAASC,GACpD,OAAOD,EAAUC,GAGnBP,EAAmB,SAA0BQ,GAC3C,OAAOA,EAAY86K,IAGrBr7K,EAAmB,SAA0BO,EAAWD,GACtD,OAAOC,EAAYD,GAGrBL,EAAmB,SAA0BM,EAAWD,GACtD,OAAOT,EAAiBG,EAAiBO,EAAWD,KAGtDJ,EAAmB,SAA0BK,EAAWD,GACtD,OAAOR,EAAiBC,EAAiBQ,GAAYD,IAQvDH,EAAsB,SAA6BI,EAAWC,EAAkBC,GAC9E,OAAOV,EAAiBU,EAAyBF,EAAYA,EAAYC,IAG3E,IAAI86K,GAAQ,CACVl7K,iBAAkBi7K,GAClBx7K,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,oBAAqBA,GAanBo7K,GAAsB,SAA6B9hL,GACrD,IAAIzO,EACAwwL,EACArpG,EAAM,EAEV,IAAKnnF,EAAI,EAAGA,EAAIyO,EAAMzL,OAAQhD,IAC5BwwL,EAAa/hL,EAAMzO,GACnBmnF,GAAOqpG,EAAWvxL,KAAKK,WAGzB,OAAO6nF,GAKLspG,GAAoB,SAA2BruF,EAAOurF,EAAQ+C,EAAoBC,GACpF,IAAIC,EAKAC,EACA7wL,EACA8wL,EANAC,EAAgB,EAChBC,EAAmB,EACnBC,EAAsB,EACtBC,EAAoB,EAKxB,GAAKvD,EAAO3qL,SAIZ4tL,EAAwBN,GAAMr7K,iBAAiBmtF,EAAMgqF,oBAAqBhqF,EAAMooF,YAEhFuG,EAAgB51K,KAAKC,KAAKk1K,GAAMl7K,kBAAoBgtF,EAAMooF,WAAa,OAEnEkG,GAAsBC,IAExBK,EAAmBJ,EAAwBz1K,KAAKK,IAAIk1K,EAAoBC,GAExEM,EAAsB91K,KAAKG,MAAM01K,EAAmBD,GACpDG,EAAoBD,EAAsBF,KAKxCE,EAAsB,GAAKC,EAAoBZ,GAAMl7K,iBAAmB,IAA5E,CAYA,IARAy7K,EAAcrB,KAAYptF,EAAMooF,YAE3BqG,IAGHA,EAAclD,EAAO,GAAG1uL,MAGrBe,EAAI,EAAGA,EAAIixL,EAAqBjxL,IACnC8wL,EAAanD,EAAO,GACpBA,EAAO1iF,OAAO,EAAG,EAAG,CAClBhsG,KAAM4xL,EACN/C,IAAKgD,EAAWhD,IAAMiD,EACtBhD,IAAK+C,EAAW/C,IAAMgD,IAK1B,OADA3uF,EAAMgqF,qBAAuBjxK,KAAKG,MAAMg1K,GAAMp7K,iBAAiBg8K,EAAmB9uF,EAAMooF,aACjF0G,IAOLC,GAA8B,SAAqCC,EAAYhvF,EAAOivF,GACxF,OAAIjvF,EAAMkvF,eAAiBD,EAClBD,GAIThvF,EAAMkvF,cAAgBx2K,IACfs2K,EAAW9zK,QAAO,SAAUowK,GAEjC,OAAIA,EAAaI,KAAOuD,IACtBjvF,EAAMkvF,cAAgBn2K,KAAKM,IAAI2mF,EAAMkvF,cAAe5D,EAAaI,KACjE1rF,EAAMmvF,cAAgBnvF,EAAMkvF,eACrB,QASTrC,GAAsB,SAA6BtB,GACrD,IAAI3tL,EACA0tL,EACA/C,EAAU,GAEd,IAAK3qL,EAAI,EAAGA,EAAI2tL,EAAO3qL,OAAQhD,IAC7B0tL,EAAeC,EAAO3tL,GACtB2qL,EAAQtqL,KAAK,CACXsd,KAAM+vK,EAAazuL,KAAKK,WACxBwa,SAAU,OAKd,OAAO6wK,GAIL6G,GAAuB,SAA8B7D,GACvD,IAAI3tL,EACA0tL,EACAzB,EAAa,EACbhtL,EAAO,IAAIS,WAAW6wL,GAAoB5C,IAE9C,IAAK3tL,EAAI,EAAGA,EAAI2tL,EAAO3qL,OAAQhD,IAC7B0tL,EAAeC,EAAO3tL,GACtBf,EAAKwxB,IAAIi9J,EAAazuL,KAAMgtL,GAC5BA,GAAcyB,EAAazuL,KAAKK,WAGlC,OAAOL,GAGLwyL,GAAkB,CACpBhB,kBAAmBA,GACnBU,4BAA6BA,GAC7BlC,oBAAqBA,GACrBuC,qBAAsBA,IASpBE,GAAqBpB,GAAMl7K,iBAO3Bu8K,GAAiB,SAAwBvvF,EAAOnjG,GAC1B,kBAAbA,EAAK8uL,WACsBj+K,IAAhCsyF,EAAMwvF,kBAAkB7D,MAC1B3rF,EAAMwvF,kBAAkB7D,IAAM9uL,EAAK8uL,UAGTj+K,IAAxBsyF,EAAMmvF,cACRnvF,EAAMmvF,cAAgBtyL,EAAK8uL,IAE3B3rF,EAAMmvF,cAAgBp2K,KAAKM,IAAI2mF,EAAMmvF,cAAetyL,EAAK8uL,UAG/Bj+K,IAAxBsyF,EAAMyvF,cACRzvF,EAAMyvF,cAAgB5yL,EAAK8uL,IAE3B3rF,EAAMyvF,cAAgB12K,KAAKK,IAAI4mF,EAAMyvF,cAAe5yL,EAAK8uL,MAIrC,kBAAb9uL,EAAK6uL,WACsBh+K,IAAhCsyF,EAAMwvF,kBAAkB9D,MAC1B1rF,EAAMwvF,kBAAkB9D,IAAM7uL,EAAK6uL,UAGTh+K,IAAxBsyF,EAAMkvF,cACRlvF,EAAMkvF,cAAgBryL,EAAK6uL,IAE3B1rF,EAAMkvF,cAAgBn2K,KAAKM,IAAI2mF,EAAMkvF,cAAeryL,EAAK6uL,UAG/Bh+K,IAAxBsyF,EAAM0vF,cACR1vF,EAAM0vF,cAAgB7yL,EAAK6uL,IAE3B1rF,EAAM0vF,cAAgB32K,KAAKK,IAAI4mF,EAAM0vF,cAAe7yL,EAAK6uL,OAU3DiE,GAAe,SAAsB3vF,UAChCA,EAAMkvF,qBACNlvF,EAAM0vF,qBACN1vF,EAAMmvF,qBACNnvF,EAAMyvF,eAYXG,GAAoC,SAA2C5vF,EAAO3sF,GACxF,IAAI22K,EACA6F,EACAX,EAAgBlvF,EAAMkvF,cAsB1B,OApBK77K,IACH67K,GAAiBlvF,EAAMwvF,kBAAkB9D,KAK3C1B,EAAsBhqF,EAAMwvF,kBAAkBxF,oBAE9CA,GAAuBkF,EAEvBlF,EAAsBjxK,KAAKK,IAAI,EAAG4wK,GAEf,UAAfhqF,EAAMn/F,OAGRgvL,EAAQ7vF,EAAMooF,WAAakH,GAC3BtF,GAAuB6F,EACvB7F,EAAsBjxK,KAAKG,MAAM8wK,IAG5BA,GAGL8F,GAAkB,CACpBH,aAAcA,GACdC,kCAAmCA,GACnCL,eAAgBA,IAkBdQ,GAAiC,EACjCC,GAAqB,IAUrBC,GAAW,SAAkB3kL,GAC/B,IAAI1N,EAAI,EACJT,EAAS,CACX+yL,aAAc,EACdC,YAAa,GAEXD,EAAc,EACdC,EAAc,EAElB,MAAOvyL,EAAI0N,EAAMpO,WAAY,CAE3B,GAAIoO,EAAM1N,KAAOoyL,GACf,MAIF,MAAoB,MAAb1kL,EAAM1N,GACXsyL,GAAe,IACftyL,IAGFsyL,GAAe5kL,EAAM1N,KAErB,MAAoB,MAAb0N,EAAM1N,GACXuyL,GAAe,IACfvyL,IAMF,GAHAuyL,GAAe7kL,EAAM1N,MAGhBT,EAAO4qL,SAAWmI,IAAgBH,GAAgC,CACrE,IAAIK,EAAiBxsL,OAAOqD,aAAaqE,EAAM1N,EAAI,GAAI0N,EAAM1N,EAAI,GAAI0N,EAAM1N,EAAI,GAAI0N,EAAM1N,EAAI,IAE7F,GAAuB,SAAnBwyL,EAA2B,CAC7BjzL,EAAO+yL,YAAcA,EACrB/yL,EAAOgzL,YAAcA,EACrBhzL,EAAO4qL,QAAUz8K,EAAM/N,SAASK,EAAGA,EAAIuyL,GACvC,MAEAhzL,EAAO4qL,aAAU,EAKrBnqL,GAAKuyL,EACLD,EAAc,EACdC,EAAc,EAGhB,OAAOhzL,GAILkzL,GAAgB,SAAuBC,GAGzC,OAAuB,MAAnBA,EAAIvI,QAAQ,IAK+B,MAA1CuI,EAAIvI,QAAQ,IAAM,EAAIuI,EAAIvI,QAAQ,KAKqD,SAAxFnkL,OAAOqD,aAAaqpL,EAAIvI,QAAQ,GAAIuI,EAAIvI,QAAQ,GAAIuI,EAAIvI,QAAQ,GAAIuI,EAAIvI,QAAQ,KAK7D,IAAnBuI,EAAIvI,QAAQ,GAdP,KAoBFuI,EAAIvI,QAAQxqL,SAAS,EAAG+yL,EAAIvI,QAAQnnL,OAAS,IAIlD2vL,GAAsB,SAA6B5E,EAAK6E,GAC1D,IACI5yL,EACAqlB,EACAha,EACApM,EAJAuyK,EAAU,GAMd,KAAoB,GAAdohB,EAAS,IACb,OAAOphB,EAMT,IAFAnsJ,EAAsB,GAAdutK,EAAS,GAEZ5yL,EAAI,EAAGA,EAAIqlB,EAAOrlB,IACrBqL,EAAa,EAAJrL,EACTf,EAAO,CACLgE,KAA6B,EAAvB2vL,EAASvnL,EAAS,GACxB0iL,IAAKA,GAGoB,EAAvB6E,EAASvnL,EAAS,KACpBpM,EAAK4zL,OAASD,EAASvnL,EAAS,IAAM,EAAIunL,EAASvnL,EAAS,GAC5DmmK,EAAQnxK,KAAKpB,IAIjB,OAAOuyK,GAGLshB,GAAoC,SAAyC7zL,GAC/E,IAGI8zL,EACAC,EAJAhwL,EAAS/D,EAAKK,WACd2zL,EAAoC,GACpCjzL,EAAI,EAIR,MAAOA,EAAIgD,EAAS,EACF,IAAZ/D,EAAKe,IAA4B,IAAhBf,EAAKe,EAAI,IAA4B,IAAhBf,EAAKe,EAAI,IACjDizL,EAAkC5yL,KAAKL,EAAI,GAC3CA,GAAK,GAELA,IAMJ,GAAiD,IAA7CizL,EAAkCjwL,OACpC,OAAO/D,EAIT8zL,EAAY/vL,EAASiwL,EAAkCjwL,OACvDgwL,EAAU,IAAItzL,WAAWqzL,GACzB,IAAIG,EAAc,EAElB,IAAKlzL,EAAI,EAAGA,EAAI+yL,EAAWG,IAAelzL,IACpCkzL,IAAgBD,EAAkC,KAEpDC,IAEAD,EAAkC7+D,SAGpC4+D,EAAQhzL,GAAKf,EAAKi0L,GAGpB,OAAOF,GAILG,GAAsB,CACxBd,SAAUA,GACVI,cAAeA,GACfE,oBAAqBA,GACrBS,gCAAiCN,GACjCX,+BAAgCA,IAI9BkB,GAAkB,SAASC,EAActkL,GAC3CA,EAAUA,GAAW,GACrBskL,EAAczmL,UAAU65K,KAAK1wK,KAAK5Q,MAElCA,KAAKmuL,kBAAwD,mBAA7BvkL,EAAQwkL,kBAAiCxkL,EAAQwkL,iBACjFpuL,KAAKquL,gBAAkB,GACvBruL,KAAKsuL,WAAa,CAAC,IAAIC,GAAa,EAAG,GACvC,IAAIA,GAAa,EAAG,GACpB,IAAIA,GAAa,EAAG,GACpB,IAAIA,GAAa,EAAG,IAGhBvuL,KAAKmuL,oBACPnuL,KAAKwuL,aAAe,IAAIC,GAAa,CACnC9xK,gBAAiB/S,EAAQ+S,mBAI7B3c,KAAKwoI,QAELxoI,KAAKsuL,WAAWjxL,SAAQ,SAAU8G,GAChCA,EAAGuhG,GAAG,OAAQ1lG,KAAK8lG,QAAQ/3F,KAAK/N,KAAM,SACtCmE,EAAGuhG,GAAG,cAAe1lG,KAAK8lG,QAAQ/3F,KAAK/N,KAAM,gBAC7CmE,EAAGuhG,GAAG,OAAQ1lG,KAAK8lG,QAAQ/3F,KAAK/N,KAAM,WACrCA,MAECA,KAAKmuL,oBACPnuL,KAAKwuL,aAAa9oF,GAAG,OAAQ1lG,KAAK8lG,QAAQ/3F,KAAK/N,KAAM,SACrDA,KAAKwuL,aAAa9oF,GAAG,cAAe1lG,KAAK8lG,QAAQ/3F,KAAK/N,KAAM,gBAC5DA,KAAKwuL,aAAa9oF,GAAG,OAAQ1lG,KAAK8lG,QAAQ/3F,KAAK/N,KAAM,WAIzDiuL,GAAgBxmL,UAAY,IAAIy7F,EAEhC+qF,GAAgBxmL,UAAUxM,KAAO,SAAUisG,GACzC,IAAIomF,EAAKE,EAAUkB,EAEnB,GAA0B,aAAtBxnF,EAAMuhF,cAKV6E,EAAMS,GAAoBd,SAAS/lF,EAAMynF,aAEpCrB,EAAIvI,SAKLuI,EAAIJ,cAAgBa,GAAoBhB,iCAK5CS,EAAWO,GAAoBV,cAAcC,GAExCE,IAYL,GAAItmF,EAAMwhF,IAAM1oL,KAAK4uL,WAEnB5uL,KAAK6uL,qBAAsB,MAF7B,CAIO,GAAI3nF,EAAMwhF,MAAQ1oL,KAAK4uL,YAAc5uL,KAAK6uL,oBAQ/C,OAPA7uL,KAAK8uL,mBAEA9uL,KAAK8uL,cAER9uL,KAAK6uL,qBAAsB,IAO/BH,EAAoBX,GAAoBR,oBAAoBrmF,EAAMyhF,IAAK6E,GACvExtL,KAAKquL,gBAAkBruL,KAAKquL,gBAAgB18K,OAAO+8K,GAE/C1uL,KAAK4uL,aAAe1nF,EAAMwhF,MAC5B1oL,KAAK8uL,YAAc,GAGrB9uL,KAAK8uL,cACL9uL,KAAK4uL,WAAa1nF,EAAMwhF,MAG1BuF,GAAgBxmL,UAAUsnL,eAAiB,SAAUC,GACnDhvL,KAAKsuL,WAAWjxL,SAAQ,SAAU8G,GAChC,MAAqB,UAAd6qL,EAAwB7qL,EAAGm/F,QAAUn/F,EAAGq9K,iBAC9CxhL,OAGLiuL,GAAgBxmL,UAAUwnL,YAAc,SAAUD,GAE3ChvL,KAAKquL,gBAAgBzwL,QAO1BoC,KAAKquL,gBAAgBhxL,SAAQ,SAAUgtH,EAAM6kE,GAC3C7kE,EAAK8kE,aAAeD,KAGtBlvL,KAAKquL,gBAAgBx1K,MAAK,SAAUrT,EAAGT,GACrC,OAAIS,EAAEmjL,MAAQ5jL,EAAE4jL,IACPnjL,EAAE2pL,aAAepqL,EAAEoqL,aAGrB3pL,EAAEmjL,IAAM5jL,EAAE4jL,OAEnB3oL,KAAKquL,gBAAgBhxL,SAAQ,SAAU+xL,GACjCA,EAAOvxL,KAAO,EAEhBmC,KAAKqvL,qBAAqBD,GAG1BpvL,KAAKsvL,qBAAqBF,KAE3BpvL,MACHA,KAAKquL,gBAAgBzwL,OAAS,EAC9BoC,KAAK+uL,eAAeC,IA3BlBhvL,KAAK+uL,eAAeC,IA8BxBf,GAAgBxmL,UAAU67F,MAAQ,WAChC,OAAOtjG,KAAKivL,YAAY,UAI1BhB,GAAgBxmL,UAAU+5K,aAAe,WACvC,OAAOxhL,KAAKivL,YAAY,iBAG1BhB,GAAgBxmL,UAAU+gI,MAAQ,WAChCxoI,KAAK4uL,WAAa,KAClB5uL,KAAK6uL,qBAAsB,EAC3B7uL,KAAK8uL,YAAc,EACnB9uL,KAAKuvL,qBAAuB,CAAC,KAAM,MACnCvvL,KAAKsuL,WAAWjxL,SAAQ,SAAUmyL,GAChCA,EAAShnD,YAgBbylD,GAAgBxmL,UAAU4nL,qBAAuB,SAAUD,GAErDpvL,KAAKyvL,oBAAoBL,GAC3BpvL,KAAKuvL,qBAAqBH,EAAOvxL,MAAQ,KAChCmC,KAAK0vL,mBAAmBN,GACjCpvL,KAAKuvL,qBAAqBH,EAAOvxL,MAAQ,EAChCmC,KAAK2vL,mBAAmBP,KACjCpvL,KAAKuvL,qBAAqBH,EAAOvxL,MAAQ,GAGI,OAA3CmC,KAAKuvL,qBAAqBH,EAAOvxL,OAOrCmC,KAAKsuL,YAAYc,EAAOvxL,MAAQ,GAAKmC,KAAKuvL,qBAAqBH,EAAOvxL,OAAO5C,KAAKm0L,IAGpFnB,GAAgBxmL,UAAUioL,mBAAqB,SAAUN,GACvD,OAAoC,QAAZ,MAAhBA,EAAO3B,SAGjBQ,GAAgBxmL,UAAUkoL,mBAAqB,SAAUP,GACvD,OAAoC,QAAZ,MAAhBA,EAAO3B,SAGjBQ,GAAgBxmL,UAAUgoL,oBAAsB,SAAUL,GACxD,OAAoC,OAAZ,MAAhBA,EAAO3B,SAA4D,QAAZ,MAAhB2B,EAAO3B,SAA4D,QAAZ,MAAhB2B,EAAO3B,SAG/FQ,GAAgBxmL,UAAU6nL,qBAAuB,SAAUF,GACrDpvL,KAAKmuL,mBACPnuL,KAAKwuL,aAAavzL,KAAKm0L,IAsB3B,IAAIQ,GAA4B,CAC9B,IAAM,KAEN,KAAQ,GAER,KAAQ,IAER,KAAQ,KAER,KAAQ,IAER,KAAQ,IAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,IAER,KAAQ,IAER,KAAQ,KAER,KAAQ,IAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,KAER,KAAQ,OAINC,GAAqB,SAA4B7iL,GACnD,IAAI8iL,EAAUF,GAA0B5iL,IAASA,EAEjD,OAAW,KAAPA,GAAiBA,IAAS8iL,EAErB,GAGFlvL,OAAOqD,aAAa6rL,IAGzBC,GAAqB,SAA4BhrL,GACnD,OAAO,IAAQA,GAAKA,GAAK,KAAQ,KAAQA,GAAKA,GAAK,KAGjDirL,GAAe,SAAsBC,GACvCjwL,KAAKiwL,UAAYA,EACjBjwL,KAAKwoI,SAGPwnD,GAAavoL,UAAU+gI,MAAQ,WAC7BxoI,KAAKkwL,YACLlwL,KAAKmwL,gBAAiB,EACtBnwL,KAAKowL,QAAU,GACfpwL,KAAKqwL,QAAU,GACfrwL,KAAKswL,OAAS,GACdtwL,KAAKuwL,SAAW,GAGhBvwL,KAAKwwL,QAAU,EACfxwL,KAAKywL,QAAU,EACfzwL,KAAK0wL,WAAa,EAClB1wL,KAAKgvJ,SAAW,EAChBhvJ,KAAK2wL,oBAAsB,EAC3B3wL,KAAK4wL,eAAiB,EACtB5wL,KAAK6wL,iBAAmB,EACxB7wL,KAAK8wL,YAAc,EACnB9wL,KAAK+wL,SAAW,EAChB/wL,KAAKgxL,gBAAkBhxL,KAAK+wL,SAAW,EACvC/wL,KAAKixL,YAAc,GACnBjxL,KAAKkxL,YAAc,EACnBlxL,KAAKmxL,SAAW,GAGlBnB,GAAavoL,UAAU2pL,QAAU,WAC/B,OAAOpxL,KAAKqxL,KAAKxsL,KAAK,OAGxBmrL,GAAavoL,UAAUyoL,UAAY,WACjClwL,KAAKqxL,KAAO,CAAC,IACbrxL,KAAKsxL,OAAS,GAGhBtB,GAAavoL,UAAU8/F,QAAU,SAAUohF,GACrC3oL,KAAKqxL,KAAKzzL,QAAUoC,KAAKgxL,iBAAqD,oBAA3BhxL,KAAKuxL,mBAC1DvxL,KAAKuxL,kBAAkB5I,GAGrB3oL,KAAKqxL,KAAKzzL,OAAS,IACrBoC,KAAKqxL,KAAKp2L,KAAK,IACf+E,KAAKsxL,UAIP,MAAOtxL,KAAKqxL,KAAKzzL,OAASoC,KAAKgxL,gBAC7BhxL,KAAKqxL,KAAKriE,QACVhvH,KAAKsxL,UAITtB,GAAavoL,UAAU8B,QAAU,WAC/B,OAAyB,IAArBvJ,KAAKqxL,KAAKzzL,QAEkB,IAArBoC,KAAKqxL,KAAKzzL,QACK,KAAjBoC,KAAKqxL,KAAK,IAMrBrB,GAAavoL,UAAU+pL,QAAU,SAAUx1L,GACzCgE,KAAKqxL,KAAKrxL,KAAKsxL,SAAWt1L,GAG5Bg0L,GAAavoL,UAAUgqL,UAAY,WACjC,IAAKzxL,KAAKuJ,UAAW,CACnB,IAAIP,EAAMhJ,KAAKqxL,KAAKrxL,KAAKsxL,QACzBtxL,KAAKqxL,KAAKrxL,KAAKsxL,QAAUtoL,EAAI+lB,OAAO,EAAG/lB,EAAIpL,OAAS,KAIxD,IAAI8zL,GAAgB,SAAuBC,EAAYC,EAAU1uF,GAC/DljG,KAAK2xL,WAAaA,EAClB3xL,KAAKhE,KAAO,GACZgE,KAAK6xL,cAAgB,IAAI7B,IAAc,GACvChwL,KAAK8xL,QAAU,GACf9xL,KAAKkjG,OAASA,EAEU,kBAAb0uF,GACT5xL,KAAK+xL,kBAAkBH,IAY3BF,GAAcjqL,UAAU65K,KAAO,SAAUqH,EAAK4I,GAC5CvxL,KAAKgyL,SAAWrJ,EAEhB,IAAK,IAAIrxF,EAAM,EAAGA,EAAM,EAAGA,IACzBt3F,KAAK8xL,QAAQx6F,GAAO,IAAI04F,GAAa14F,GAEJ,oBAAtBi6F,IACTvxL,KAAK8xL,QAAQx6F,GAAKi6F,kBAAoBA,IAW5CG,GAAcjqL,UAAUwqL,iBAAmB,SAAUhC,GACnDjwL,KAAK6xL,cAAgB7xL,KAAK8xL,QAAQ7B,IAOpCyB,GAAcjqL,UAAUsqL,kBAAoB,SAAUH,GACpD,GAA2B,qBAAhBnnK,YACTzqB,KAAKkjG,OAAO4C,QAAQ,MAAO,CACzBmb,MAAO,OACPppB,QAAS,0EAGX,IACE73F,KAAKkyL,aAAe,IAAIznK,YAAYmnK,GACpC,MAAO/hK,GACP7vB,KAAKkjG,OAAO4C,QAAQ,MAAO,CACzBmb,MAAO,OACPppB,QAAS,yCAA2C+5F,EAAW,cAAgB/hK,MAMvF,IAAI4+J,GAAe,SAASA,EAAa7kL,GACvCA,EAAUA,GAAW,GACrB6kL,EAAahnL,UAAU65K,KAAK1wK,KAAK5Q,MACjC,IAGImyL,EAHA7uL,EAAOtD,KACP2c,EAAkB/S,EAAQ+S,iBAAmB,GAC7Cy1K,EAA0B,GAG9BprL,OAAO0K,KAAKiL,GAAiBtf,SAAQ,SAAUg1L,GAC7CF,EAAex1K,EAAgB01K,GAE3B,WAAWxzL,KAAKwzL,KAClBD,EAAwBC,GAAeF,EAAaP,aAGxD5xL,KAAKsyL,iBAAmBF,EACxBpyL,KAAKuyL,iBAAmB,KACxBvyL,KAAKwyL,SAAW,GAEhBxyL,KAAK/E,KAAO,SAAUm0L,GACA,IAAhBA,EAAOvxL,MAETyF,EAAKmvL,eACLnvL,EAAKovL,YAAYtD,KAEa,OAA1B9rL,EAAKivL,kBAEPjvL,EAAKmvL,eAGPnvL,EAAKovL,YAAYtD,MAKvBX,GAAahnL,UAAY,IAAIy7F,EAK7BurF,GAAahnL,UAAUgrL,aAAe,WACN,OAA1BzyL,KAAKuyL,kBACPvyL,KAAK2yL,gBAGP3yL,KAAKuyL,iBAAmB,CACtB14L,KAAM,GACN+4L,QAAS,KAQbnE,GAAahnL,UAAUirL,YAAc,SAAUtD,GAC7C,IAAIv1L,EAAOu1L,EAAO3B,OACdoF,EAAQh5L,IAAS,EACjBi5L,EAAe,IAAPj5L,EAGZmG,KAAKuyL,iBAAiBK,QAAQ33L,KAAKm0L,EAAOzG,KAC1C3oL,KAAKuyL,iBAAiB14L,KAAKoB,KAAK43L,GAChC7yL,KAAKuyL,iBAAiB14L,KAAKoB,KAAK63L,IAOlCrE,GAAahnL,UAAUkrL,cAAgB,WACrC,IAAII,EAAY/yL,KAAKuyL,iBACjBS,EAAaD,EAAUl5L,KACvB83L,EAAa,KACbsB,EAAY,KACZr4L,EAAI,EACJmK,EAAIiuL,EAAWp4L,KAInB,IAHAm4L,EAAUG,IAAMnuL,GAAK,EACrBguL,EAAUI,SAAe,GAAJpuL,EAEdnK,EAAIo4L,EAAWp1L,OAAQhD,IAC5BmK,EAAIiuL,EAAWp4L,KACf+2L,EAAa5sL,GAAK,EAClBkuL,EAAgB,GAAJluL,EAEO,IAAf4sL,GAAoBsB,EAAY,IAElCluL,EAAIiuL,EAAWp4L,KACf+2L,EAAa5sL,GAGf/E,KAAKozL,iBAAiBzB,EAAY/2L,EAAGq4L,GAEjCA,EAAY,IACdr4L,GAAKq4L,EAAY,IAkBvBxE,GAAahnL,UAAU2rL,iBAAmB,SAAUzB,EAAY7/K,EAAOyG,GACrE,IAAIxT,EACAnK,EAAIkX,EACJkhL,EAAahzL,KAAKuyL,iBAAiB14L,KACnCijB,EAAU9c,KAAKwyL,SAASb,GAM5B,IAJK70K,IACHA,EAAU9c,KAAKqzL,YAAY1B,EAAY/2L,IAGlCA,EAAIkX,EAAQyG,GAAQ3d,EAAIo4L,EAAWp1L,OAAQhD,IAChDmK,EAAIiuL,EAAWp4L,GAEXm1L,GAAmBhrL,GACrBnK,EAAIoF,KAAKszL,WAAW14L,EAAGkiB,GACR,KAAN/X,EACTnK,EAAIoF,KAAKuzL,mBAAmB34L,EAAGkiB,GAChB,KAAN/X,EACTnK,EAAIoF,KAAKwzL,iBAAiB54L,EAAGkiB,GACpB,KAAQ/X,GAAKA,GAAK,IAC3BnK,EAAIoF,KAAKiyL,iBAAiBr3L,EAAGkiB,GACpB,KAAQ/X,GAAKA,GAAK,IAC3BnK,EAAIoF,KAAKyzL,aAAa74L,EAAGkiB,GACV,MAAN/X,EACTnK,EAAIoF,KAAK0zL,aAAa94L,EAAGkiB,GACV,MAAN/X,EACTnK,EAAIoF,KAAK2zL,cAAc/4L,EAAGkiB,GACX,MAAN/X,EACTnK,EAAIoF,KAAK4zL,eAAeh5L,EAAGkiB,GACZ,MAAN/X,EACTnK,EAAIoF,KAAK6zL,YAAYj5L,EAAGkiB,GACT,MAAN/X,EACTnK,EAAIoF,KAAK8zL,cAAcl5L,EAAGkiB,GACX,MAAN/X,EACTnK,EAAIoF,KAAK+zL,oBAAoBn5L,EAAGkiB,GACjB,MAAN/X,EACTnK,EAAIoF,KAAKg0L,iBAAiBp5L,EAAGkiB,GACd,MAAN/X,EACTnK,EAAIoF,KAAKi0L,YAAYr5L,EAAGkiB,GACT,MAAN/X,EACTnK,EAAIoF,KAAKk0L,eAAet5L,EAAGkiB,GACZ,MAAN/X,EACT+X,EAAU9c,KAAKwoI,MAAM5tI,EAAGkiB,GACT,IAAN/X,EAET+X,EAAQ+0K,cAAcJ,YACP,KAAN1sL,EAET+X,EAAQ+0K,cAAc3B,YACP,KAANnrL,EAET+X,EAAQ+0K,cAAc1B,gBAAiB,EACxB,KAANprL,EAET+X,EAAQ+0K,cAAc3B,YACP,MAANnrL,GAETnK,KAaN6zL,GAAahnL,UAAU+rL,iBAAmB,SAAU54L,EAAGkiB,GACrD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,IAAap4L,GAQrB,OANIm1L,GAAmBhrL,KACrBnK,EAAIoF,KAAKszL,WAAW14L,EAAGkiB,EAAS,CAC9Bq3K,YAAY,KAITv5L,GAUT6zL,GAAahnL,UAAU2sL,OAAS,SAAU/lF,GAExC,OAAOruG,KAAKuyL,iBAAiBK,QAAQ78K,KAAKG,MAAMm4F,EAAY,KAU9DogF,GAAahnL,UAAU4rL,YAAc,SAAU1B,EAAY/2L,GACzD,IAGIg3L,EAHAS,EAAc,UAAYV,EAC1BruL,EAAOtD,KAYX,OARIqyL,KAAeryL,KAAKsyL,mBACtBV,EAAW5xL,KAAKsyL,iBAAiBD,IAGnCryL,KAAKwyL,SAASb,GAAc,IAAID,GAAcC,EAAYC,EAAUtuL,GACpEtD,KAAKwyL,SAASb,GAAYrQ,KAAKthL,KAAKo0L,OAAOx5L,IAAI,SAAU+tL,GACvDrlL,EAAK+wL,eAAe1L,EAAKrlL,EAAKkvL,SAASb,OAElC3xL,KAAKwyL,SAASb,IAWvBlD,GAAahnL,UAAU6rL,WAAa,SAAU14L,EAAGkiB,EAASlT,GACxD,IAQI0qL,EAEAC,EAVAJ,EAAavqL,GAAWA,EAAQuqL,WAChCK,EAAc5qL,GAAWA,EAAQ4qL,YACjCxB,EAAahzL,KAAKuyL,iBAAiB14L,KACnC46L,EAAWN,EAAa,KAAS,EACjCO,EAAc1B,EAAWp4L,GACzB+5L,EAAW3B,EAAWp4L,EAAI,GAC1B08F,EAAMx6E,EAAQ+0K,cAyBlB,OAnBI/0K,EAAQo1K,eAAiBiC,GACvBK,GACFD,EAAgB,CAACG,EAAaC,GAC9B/5L,KAEA25L,EAAgB,CAACG,GAGnBJ,EAAQx3K,EAAQo1K,aAAaxrL,OAAO,IAAIpM,WAAWi6L,KAEnDD,EAAQzE,GAAmB4E,EAAWC,GAGpCp9F,EAAI64F,iBAAmB74F,EAAI/tF,WAC7B+tF,EAAIiQ,QAAQvnG,KAAKo0L,OAAOx5L,IAG1B08F,EAAI64F,gBAAiB,EACrB74F,EAAIk6F,QAAQ8C,GACL15L,GAWT6zL,GAAahnL,UAAU8rL,mBAAqB,SAAU34L,EAAGkiB,GACvD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnC+6L,EAAY5B,EAAWp4L,EAAI,GAC3Bi6L,EAAa7B,EAAWp4L,EAAI,GAQhC,OANIm1L,GAAmB6E,IAAc7E,GAAmB8E,KACtDj6L,EAAIoF,KAAKszL,aAAa14L,EAAGkiB,EAAS,CAChC03K,aAAa,KAIV55L,GAaT6zL,GAAahnL,UAAUwqL,iBAAmB,SAAUr3L,EAAGkiB,GACrD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,EAAWp4L,GACfq1L,EAAgB,EAAJlrL,EAEhB,OADA+X,EAAQm1K,iBAAiBhC,GAClBr1L,GAaT6zL,GAAahnL,UAAUgsL,aAAe,SAAU74L,EAAGkiB,GACjD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,EAAWp4L,GACfq1L,EAAgB,EAAJlrL,EAChB+X,EAAQm1K,iBAAiBhC,GACzB,IAAI34F,EAAMx6E,EAAQ+0K,cAiClB,OAhCA9sL,EAAIiuL,IAAap4L,GACjB08F,EAAIk5F,SAAe,GAAJzrL,IAAa,EAE5BuyF,EAAIm5F,SAAe,GAAJ1rL,IAAa,EAE5BuyF,EAAIo5F,YAAkB,EAAJ3rL,IAAa,EAE/BuyF,EAAI03D,SAAe,EAAJjqJ,EAEfA,EAAIiuL,IAAap4L,GACjB08F,EAAIq5F,qBAA2B,IAAJ5rL,IAAa,EAExCuyF,EAAIs5F,eAAqB,IAAJ7rL,EAErBA,EAAIiuL,IAAap4L,GACjB08F,EAAIu5F,iBAAmB9rL,EAEvBA,EAAIiuL,IAAap4L,GACjB08F,EAAIw5F,aAAmB,IAAJ/rL,IAAa,EAEhCuyF,EAAIy5F,SAAe,GAAJhsL,EAEfA,EAAIiuL,IAAap4L,GACjB08F,EAAI25F,YAAkB,GAAJlsL,EAElBA,EAAIiuL,IAAap4L,GACjB08F,EAAI45F,aAAmB,GAAJnsL,IAAa,EAEhCuyF,EAAI65F,SAAe,EAAJpsL,EAGfuyF,EAAI05F,gBAAkB15F,EAAIy5F,SAAW,EAC9Bn2L,GAaT6zL,GAAahnL,UAAUssL,oBAAsB,SAAUn5L,EAAGkiB,GACxD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,EAAWp4L,GACfw1L,EAAUtzK,EAAQ+0K,cAAczB,QAqCpC,OApCArrL,EAAIiuL,IAAap4L,GACjBw1L,EAAQ0E,aAAmB,IAAJ/vL,IAAa,EAEpCqrL,EAAQ2E,SAAe,GAAJhwL,IAAa,EAEhCqrL,EAAQ4E,WAAiB,GAAJjwL,IAAa,EAElCqrL,EAAQ6E,SAAe,EAAJlwL,EAEnBA,EAAIiuL,IAAap4L,GACjBw1L,EAAQ8E,YAAkB,IAAJnwL,IAAa,EAEnCqrL,EAAQ+E,WAAiB,GAAJpwL,IAAa,EAElCqrL,EAAQgF,aAAmB,GAAJrwL,IAAa,EAEpCqrL,EAAQiF,WAAiB,EAAJtwL,EAErBA,EAAIiuL,IAAap4L,GACjBw1L,EAAQ8E,aAAmB,IAAJnwL,IAAa,EAEpCqrL,EAAQkF,UAAgB,GAAJvwL,IAAa,EAEjCqrL,EAAQmF,gBAAsB,GAAJxwL,IAAa,EAEvCqrL,EAAQoF,iBAAuB,GAAJzwL,IAAa,EAExCqrL,EAAQqF,QAAc,EAAJ1wL,EAElBA,EAAIiuL,IAAap4L,GACjBw1L,EAAQsF,aAAmB,IAAJ3wL,IAAa,EAEpCqrL,EAAQuF,iBAAuB,GAAJ5wL,IAAa,EAExCqrL,EAAQwF,cAAoB,EAAJ7wL,EAEjBnK,GAUT6zL,GAAahnL,UAAU4sL,eAAiB,SAAU1L,EAAK7rK,GAIrD,IAHA,IAAI+4K,EAAgB,GAGXC,EAAQ,EAAGA,EAAQ,EAAGA,IACzBh5K,EAAQg1K,QAAQgE,GAAOtF,UAAY1zK,EAAQg1K,QAAQgE,GAAOvsL,WAC5DssL,EAAc56L,KAAK6hB,EAAQg1K,QAAQgE,GAAO1E,WAI9Ct0K,EAAQi5K,OAASpN,EACjB7rK,EAAQ9gB,KAAO65L,EAAchxL,KAAK,QAClC7E,KAAKg2L,YAAYl5K,GACjBA,EAAQk1K,SAAWrJ,GASrB8F,GAAahnL,UAAUuuL,YAAc,SAAUl5K,GACxB,KAAjBA,EAAQ9gB,OACVgE,KAAK8lG,QAAQ,OAAQ,CACnBksF,SAAUl1K,EAAQk1K,SAClB+D,OAAQj5K,EAAQi5K,OAChB/5L,KAAM8gB,EAAQ9gB,KACdknG,OAAQ,SAAWpmF,EAAQ60K,aAE7B70K,EAAQ9gB,KAAO,GACf8gB,EAAQk1K,SAAWl1K,EAAQi5K,SAc/BtH,GAAahnL,UAAUmsL,eAAiB,SAAUh5L,EAAGkiB,GACnD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,IAAap4L,GACjB+tL,EAAM3oL,KAAKo0L,OAAOx5L,GACtBoF,KAAKq0L,eAAe1L,EAAK7rK,GAEzB,IAAK,IAAIg5K,EAAQ,EAAGA,EAAQ,EAAGA,IACzB/wL,EAAI,GAAQ+wL,IACdh5K,EAAQg1K,QAAQgE,GAAOtF,QAAU,GAIrC,OAAO51L,GAaT6zL,GAAahnL,UAAUosL,YAAc,SAAUj5L,EAAGkiB,GAChD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,IAAap4L,GACjB+tL,EAAM3oL,KAAKo0L,OAAOx5L,GACtBoF,KAAKq0L,eAAe1L,EAAK7rK,GAEzB,IAAK,IAAIg5K,EAAQ,EAAGA,EAAQ,EAAGA,IACzB/wL,EAAI,GAAQ+wL,IACdh5K,EAAQg1K,QAAQgE,GAAOtF,QAAU,GAIrC,OAAO51L,GAaT6zL,GAAahnL,UAAUqsL,cAAgB,SAAUl5L,EAAGkiB,GAClD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,IAAap4L,GACjB+tL,EAAM3oL,KAAKo0L,OAAOx5L,GACtBoF,KAAKq0L,eAAe1L,EAAK7rK,GAEzB,IAAK,IAAIg5K,EAAQ,EAAGA,EAAQ,EAAGA,IACzB/wL,EAAI,GAAQ+wL,IACdh5K,EAAQg1K,QAAQgE,GAAOtF,SAAW,GAItC,OAAO51L,GAaT6zL,GAAahnL,UAAUisL,aAAe,SAAU94L,EAAGkiB,GACjD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,IAAap4L,GACjB+tL,EAAM3oL,KAAKo0L,OAAOx5L,GACtBoF,KAAKq0L,eAAe1L,EAAK7rK,GAEzB,IAAK,IAAIg5K,EAAQ,EAAGA,EAAQ,EAAGA,IACzB/wL,EAAI,GAAQ+wL,GACdh5K,EAAQg1K,QAAQgE,GAAO5F,YAI3B,OAAOt1L,GAaT6zL,GAAahnL,UAAUksL,cAAgB,SAAU/4L,EAAGkiB,GAClD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,IAAap4L,GACjB+tL,EAAM3oL,KAAKo0L,OAAOx5L,GACtBoF,KAAKq0L,eAAe1L,EAAK7rK,GAEzB,IAAK,IAAIg5K,EAAQ,EAAGA,EAAQ,EAAGA,IACzB/wL,EAAI,GAAQ+wL,GACdh5K,EAAQg1K,QAAQgE,GAAOttD,QAI3B,OAAO5tI,GAaT6zL,GAAahnL,UAAUusL,iBAAmB,SAAUp5L,EAAGkiB,GACrD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,EAAWp4L,GACfy1L,EAAUvzK,EAAQ+0K,cAAcxB,QAiBpC,OAhBAtrL,EAAIiuL,IAAap4L,GACjBy1L,EAAQ4F,SAAe,IAAJlxL,IAAa,EAEhCsrL,EAAQpqL,QAAc,GAAJlB,IAAa,EAE/BsrL,EAAQ6F,QAAc,EAAJnxL,EAElBA,EAAIiuL,IAAap4L,GACjBy1L,EAAQ8F,SAAe,IAAJpxL,IAAa,EAEhCsrL,EAAQ+F,WAAiB,GAAJrxL,IAAa,EAElCsrL,EAAQgG,UAAgB,GAAJtxL,IAAa,EAEjCsrL,EAAQiG,UAAgB,EAAJvxL,EAEbnK,GAaT6zL,GAAahnL,UAAUwsL,YAAc,SAAUr5L,EAAGkiB,GAChD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,EAAWp4L,GACf21L,EAAWzzK,EAAQ+0K,cAActB,SA0BrC,OAzBAxrL,EAAIiuL,IAAap4L,GACjB21L,EAASgG,WAAiB,IAAJxxL,IAAa,EAEnCwrL,EAASiG,OAAa,GAAJzxL,IAAa,EAE/BwrL,EAASkG,SAAe,GAAJ1xL,IAAa,EAEjCwrL,EAASmG,OAAa,EAAJ3xL,EAElBA,EAAIiuL,IAAap4L,GACjB21L,EAASoG,WAAiB,IAAJ5xL,IAAa,EAEnCwrL,EAASqG,OAAa,GAAJ7xL,IAAa,EAE/BwrL,EAASsG,SAAe,GAAJ9xL,IAAa,EAEjCwrL,EAASuG,OAAa,EAAJ/xL,EAElBA,EAAIiuL,IAAap4L,GACjB21L,EAASwG,SAAe,GAAJhyL,IAAa,EAEjCwrL,EAASyG,WAAiB,GAAJjyL,IAAa,EAEnCwrL,EAAS0G,SAAe,EAAJlyL,EAEbnK,GAaT6zL,GAAahnL,UAAUysL,eAAiB,SAAUt5L,EAAGkiB,GACnD,IAAIk2K,EAAahzL,KAAKuyL,iBAAiB14L,KACnCkL,EAAIiuL,EAAWp4L,GACf01L,EAASxzK,EAAQ+0K,cAAcvB,OASnC,OAPAxzK,EAAQ+0K,cAAc1B,gBAAiB,EACvCprL,EAAIiuL,IAAap4L,GACjB01L,EAAOtnL,IAAU,GAAJjE,EAEbA,EAAIiuL,IAAap4L,GACjB01L,EAAO4G,OAAa,GAAJnyL,EAETnK,GAaT6zL,GAAahnL,UAAU+gI,MAAQ,SAAU5tI,EAAGkiB,GAC1C,IAAI6rK,EAAM3oL,KAAKo0L,OAAOx5L,GAEtB,OADAoF,KAAKq0L,eAAe1L,EAAK7rK,GAClB9c,KAAKqzL,YAAYv2K,EAAQ60K,WAAY/2L,IAU9C,IAAIu8L,GAAwB,CAC1B,GAAM,IAEN,GAAM,IAEN,GAAM,IAEN,GAAM,IAEN,GAAM,IAEN,IAAM,IAEN,IAAM,IAEN,IAAM,IAEN,IAAM,IAEN,IAAM,KAEN,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,KAER,IAAQ,IAER,IAAQ,IAER,IAAQ,KAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,KAER,IAAQ,IAER,IAAQ,GAER,IAAQ,GAER,IAAQ,KAER,IAAQ,IAER,IAAQ,KAER,IAAQ,KAER,IAAQ,KAER,IAAQ,KAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,GAER,IAAQ,GAER,IAAQ,GAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,KAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,KAER,IAAQ,KAER,IAAQ,KAER,IAAQ,MAINC,GAAkB,SAAyBpqL,GAC7C,OAAa,OAATA,EACK,IAGTA,EAAOmqL,GAAsBnqL,IAASA,EAC/BpM,OAAOqD,aAAa+I,KAIzBqqL,GAAa,GAGbC,GAAO,CAAC,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAGxHC,GAAsB,WACxB,IAAIp9L,EAAS,GACTS,EAAIy8L,GAAa,EAErB,MAAOz8L,IACLT,EAAOc,KAAK,IAGd,OAAOd,GAGLo0L,GAAe,SAASA,EAAaiJ,EAAOC,GAC9ClJ,EAAa9mL,UAAU65K,KAAK1wK,KAAK5Q,MACjCA,KAAK03L,OAASF,GAAS,EACvBx3L,KAAK23L,aAAeF,GAAe,EACnCz3L,KAAKouH,MAAQ,MAAiD,GAAxCpuH,KAAK03L,QAAU,EAAI13L,KAAK23L,eAC9C33L,KAAK43L,eACL53L,KAAKwoI,QAELxoI,KAAK/E,KAAO,SAAUm0L,GACpB,IAAIv1L,EAAMg+L,EAAMC,EAAOC,EAAO/7L,EAI9B,GAFAnC,EAAuB,MAAhBu1L,EAAO3B,OAEV5zL,IAASmG,KAAKg4L,kBAelB,GATwB,QAAZ,MAAPn+L,GACHmG,KAAKg4L,iBAAmBn+L,EACfA,IAASmG,KAAKi4L,WACvBj4L,KAAKg4L,iBAAmB,MAG1BF,EAAQj+L,IAAS,EACjBk+L,EAAe,IAAPl+L,EAEJA,IAASmG,KAAKi4L,SAEX,GAAIp+L,IAASmG,KAAKk4L,wBACvBl4L,KAAKm4L,MAAQ,aACR,GAAIt+L,IAASmG,KAAKo4L,gBAKvBp4L,KAAKm4L,MAAQ,QACbn4L,KAAKq4L,gBAAgBjJ,EAAOzG,KAE5B3oL,KAAKq0L,eAAejF,EAAOzG,KAE3BkP,EAAO73L,KAAKs4L,WACZt4L,KAAKs4L,WAAat4L,KAAKu4L,cACvBv4L,KAAKu4L,cAAgBV,EAErB73L,KAAKw4L,UAAYpJ,EAAOzG,SACnB,GAAI9uL,IAASmG,KAAKy4L,gBACvBz4L,KAAK04L,YAAc,EACnB14L,KAAK24L,UAAUvJ,EAAOzG,UACjB,GAAI9uL,IAASmG,KAAK44L,gBACvB54L,KAAK04L,YAAc,EACnB14L,KAAK24L,UAAUvJ,EAAOzG,UACjB,GAAI9uL,IAASmG,KAAK64L,gBACvB74L,KAAK04L,YAAc,EACnB14L,KAAK24L,UAAUvJ,EAAOzG,UACjB,GAAI9uL,IAASmG,KAAK84L,iBACvB94L,KAAKq4L,gBAAgBjJ,EAAOzG,KAC5B3oL,KAAKq0L,eAAejF,EAAOzG,KAC3B3oL,KAAK+4L,eACL/4L,KAAKw4L,UAAYpJ,EAAOzG,SACnB,GAAI9uL,IAASmG,KAAKg5L,WACJ,UAAfh5L,KAAKm4L,MACPn4L,KAAKu4L,cAAcv4L,KAAKi5L,MAAQj5L,KAAKu4L,cAAcv4L,KAAKi5L,MAAMl8L,MAAM,GAAI,GAExEiD,KAAKs4L,WAAWt4L,KAAKi5L,MAAQj5L,KAAKs4L,WAAWt4L,KAAKi5L,MAAMl8L,MAAM,GAAI,QAE/D,GAAIlD,IAASmG,KAAKk5L,wBACvBl5L,KAAKq0L,eAAejF,EAAOzG,KAC3B3oL,KAAKs4L,WAAaf,UACb,GAAI19L,IAASmG,KAAKm5L,4BACvBn5L,KAAKu4L,cAAgBhB,UAChB,GAAI19L,IAASmG,KAAKo5L,0BACJ,YAAfp5L,KAAKm4L,QAGPn4L,KAAKq0L,eAAejF,EAAOzG,KAC3B3oL,KAAKs4L,WAAaf,MAGpBv3L,KAAKm4L,MAAQ,UACbn4L,KAAKw4L,UAAYpJ,EAAOzG,SACnB,GAAI3oL,KAAKq5L,mBAAmBvB,EAAOC,GAKxCD,GAAiB,EAARA,IAAiB,EAC1B97L,EAAOo7L,GAAgBU,EAAQC,GAC/B/3L,KAAKA,KAAKm4L,OAAO/I,EAAOzG,IAAK3sL,GAC7BgE,KAAKs5L,eACA,GAAIt5L,KAAKu5L,eAAezB,EAAOC,GAMjB,UAAf/3L,KAAKm4L,MACPn4L,KAAKu4L,cAAcv4L,KAAKi5L,MAAQj5L,KAAKu4L,cAAcv4L,KAAKi5L,MAAMl8L,MAAM,GAAI,GAExEiD,KAAKs4L,WAAWt4L,KAAKi5L,MAAQj5L,KAAKs4L,WAAWt4L,KAAKi5L,MAAMl8L,MAAM,GAAI,GAOpE+6L,GAAiB,EAARA,IAAiB,EAC1B97L,EAAOo7L,GAAgBU,EAAQC,GAC/B/3L,KAAKA,KAAKm4L,OAAO/I,EAAOzG,IAAK3sL,GAC7BgE,KAAKs5L,eACA,GAAIt5L,KAAKw5L,aAAa1B,EAAOC,GAElC/3L,KAAKq4L,gBAAgBjJ,EAAOzG,KAG5B3oL,KAAKA,KAAKm4L,OAAO/I,EAAOzG,IAAK,KAC7B3oL,KAAKs5L,UAEiB,MAAT,GAARvB,IACH/3L,KAAKy5L,cAAcrK,EAAOzG,IAAK,CAAC,MAGZ,KAAT,EAARoP,IACH/3L,KAAKy5L,cAAcrK,EAAOzG,IAAK,CAAC,WAG7B,GAAI3oL,KAAK05L,oBAAoB5B,EAAOC,GAKzC/3L,KAAKs5L,SAAmB,EAARvB,OACX,GAAI/3L,KAAK25L,MAAM7B,EAAOC,GAAQ,CAGnC,IAAI/uL,EAAMsuL,GAAKruL,QAAe,KAAPpP,GAEJ,WAAfmG,KAAKm4L,QAIHnvL,EAAMhJ,KAAK04L,YAAc,EAAI,IAC/B1vL,EAAMhJ,KAAK04L,YAAc,GAG3B14L,KAAK24L,UAAUvJ,EAAOzG,IAAK3/K,IAGzBA,IAAQhJ,KAAKi5L,OAEfj5L,KAAKq4L,gBAAgBjJ,EAAOzG,KAC5B3oL,KAAKi5L,KAAOjwL,GAKF,EAAR+uL,IAAkD,IAAnC/3L,KAAK45L,YAAY3wL,QAAQ,MAC1CjJ,KAAKy5L,cAAcrK,EAAOzG,IAAK,CAAC,MAGZ,MAAV,GAAP9uL,KAKHmG,KAAKs5L,QAAgC,IAAb,GAAPz/L,IAAe,IAG9BmG,KAAK65L,WAAW9B,IAKI,MAAT,GAARA,IACH/3L,KAAKy5L,cAAcrK,EAAOzG,IAAK,CAAC,WAI3B3oL,KAAK85L,aAAahC,KACb,IAAVC,IACFA,EAAQ,MAGV/7L,EAAOo7L,GAAgBU,GACvB97L,GAAQo7L,GAAgBW,GACxB/3L,KAAKA,KAAKm4L,OAAO/I,EAAOzG,IAAK3sL,GAC7BgE,KAAKs5L,SAAWt9L,EAAK4B,aA7KrBoC,KAAKg4L,iBAAmB,OAmL9BzJ,GAAa9mL,UAAY,IAAIy7F,EAG7BqrF,GAAa9mL,UAAU4sL,eAAiB,SAAU1L,GAChD,IAAInjE,EAAUxlH,KAAKs4L,WAClBt5L,KAAI,SAAUgK,EAAK/G,GAClB,IACE,OAAO+G,EAAIzL,OACX,MAAOyN,GAQP,OAJAhL,KAAK8lG,QAAQ,MAAO,CAClBmb,MAAO,OACPppB,QAAS,6CAA+C51F,EAAQ,MAE3D,MAERjC,MACF6E,KAAK,MACLrI,QAAQ,aAAc,IAEnBgpH,EAAQ5nH,QACVoC,KAAK8lG,QAAQ,OAAQ,CACnBksF,SAAUhyL,KAAKw4L,UACfzC,OAAQpN,EACR3sL,KAAMwpH,EACNtiB,OAAQljG,KAAKouH,SASnBmgE,GAAa9mL,UAAU+gI,MAAQ,WAC7BxoI,KAAKm4L,MAAQ,QAKbn4L,KAAK+5L,QAAU,EACf/5L,KAAKw4L,UAAY,EACjBx4L,KAAKs4L,WAAaf,KAClBv3L,KAAKu4L,cAAgBhB,KACrBv3L,KAAKg4L,iBAAmB,KAExBh4L,KAAKs5L,QAAU,EACft5L,KAAKi5L,KAAO5B,GACZr3L,KAAK04L,YAAc,EAEnB14L,KAAK45L,YAAc,IAOrBrL,GAAa9mL,UAAUmwL,aAAe,WAaV,IAAtB53L,KAAK23L,cACP33L,KAAKg6L,MAAQ,GACbh6L,KAAKi6L,KAAO,GACZj6L,KAAKk6L,UAAY,GAAOl6L,KAAK03L,SAAW,EACxC13L,KAAKm6L,QAAU,IACgB,IAAtBn6L,KAAK23L,eACd33L,KAAKg6L,MAAQ,GACbh6L,KAAKi6L,KAAO,GACZj6L,KAAKk6L,UAAY,GAAOl6L,KAAK03L,SAAW,EACxC13L,KAAKm6L,QAAU,IAOjBn6L,KAAKi4L,SAAW,EAEhBj4L,KAAKk4L,wBAA0C,GAAhBl4L,KAAKk6L,SACpCl6L,KAAKo4L,gBAAkC,GAAhBp4L,KAAKk6L,SAE5Bl6L,KAAKy4L,gBAAkC,GAAhBz4L,KAAKk6L,SAC5Bl6L,KAAK44L,gBAAkC,GAAhB54L,KAAKk6L,SAC5Bl6L,KAAK64L,gBAAkC,GAAhB74L,KAAKk6L,SAC5Bl6L,KAAK84L,iBAAmC,GAAhB94L,KAAKk6L,SAE7Bl6L,KAAKo5L,0BAA4C,GAAhBp5L,KAAKk6L,SAEtCl6L,KAAKg5L,WAA6B,GAAhBh5L,KAAKk6L,SACvBl6L,KAAKk5L,wBAA0C,GAAhBl5L,KAAKk6L,SACpCl6L,KAAKm5L,4BAA8C,GAAhBn5L,KAAKk6L,UAe1C3L,GAAa9mL,UAAU4xL,mBAAqB,SAAUvB,EAAOC,GAC3D,OAAOD,IAAU93L,KAAKi6L,MAAQlC,GAAS,IAAQA,GAAS,IAe1DxJ,GAAa9mL,UAAU8xL,eAAiB,SAAUzB,EAAOC,GACvD,OAAQD,IAAU93L,KAAKi6L,KAAO,GAAKnC,IAAU93L,KAAKi6L,KAAO,IAAMlC,GAAS,IAAQA,GAAS,IAe3FxJ,GAAa9mL,UAAU+xL,aAAe,SAAU1B,EAAOC,GACrD,OAAOD,IAAU93L,KAAKi6L,MAAQlC,GAAS,IAAQA,GAAS,IAe1DxJ,GAAa9mL,UAAUiyL,oBAAsB,SAAU5B,EAAOC,GAC5D,OAAOD,IAAU93L,KAAKm6L,SAAWpC,GAAS,IAAQA,GAAS,IAe7DxJ,GAAa9mL,UAAUkyL,MAAQ,SAAU7B,EAAOC,GAC9C,OAAOD,GAAS93L,KAAKg6L,OAASlC,EAAQ93L,KAAKg6L,MAAQ,GAAKjC,GAAS,IAAQA,GAAS,KAapFxJ,GAAa9mL,UAAUoyL,WAAa,SAAU9B,GAC5C,OAAOA,GAAS,IAAQA,GAAS,IAAQA,GAAS,IAAQA,GAAS,KAYrExJ,GAAa9mL,UAAUqyL,aAAe,SAAUM,GAC9C,OAAOA,GAAU,IAAQA,GAAU,KAWrC7L,GAAa9mL,UAAUkxL,UAAY,SAAUhQ,EAAK0R,GAWhD,GATmB,WAAfr6L,KAAKm4L,QACPn4L,KAAKi5L,KAAO5B,GACZr3L,KAAKm4L,MAAQ,SAEbn4L,KAAKq0L,eAAe1L,GACpB3oL,KAAKu4L,cAAgBhB,KACrBv3L,KAAKs4L,WAAaf,WAGD7sL,IAAf2vL,GAA4BA,IAAer6L,KAAKi5L,KAElD,IAAK,IAAIr+L,EAAI,EAAGA,EAAIoF,KAAK04L,YAAa99L,IACpCoF,KAAKs4L,WAAW+B,EAAaz/L,GAAKoF,KAAKs4L,WAAWt4L,KAAKi5L,KAAOr+L,GAC9DoF,KAAKs4L,WAAWt4L,KAAKi5L,KAAOr+L,GAAK,QAIlB8P,IAAf2vL,IACFA,EAAar6L,KAAKi5L,MAGpBj5L,KAAK+5L,QAAUM,EAAar6L,KAAK04L,YAAc,GAKjDnK,GAAa9mL,UAAUgyL,cAAgB,SAAU9Q,EAAKroK,GACpDtgB,KAAK45L,YAAc55L,KAAK45L,YAAYjoL,OAAO2O,GAC3C,IAAItkB,EAAOskB,EAAO9O,QAAO,SAAUxV,EAAMskB,GACvC,OAAOtkB,EAAO,IAAMskB,EAAS,MAC5B,IACHtgB,KAAKA,KAAKm4L,OAAOxP,EAAK3sL,IAKxBuyL,GAAa9mL,UAAU4wL,gBAAkB,SAAU1P,GACjD,GAAK3oL,KAAK45L,YAAYh8L,OAAtB,CAIA,IAAI5B,EAAOgE,KAAK45L,YAAYz5F,UAAU3uF,QAAO,SAAUxV,EAAMskB,GAC3D,OAAOtkB,EAAO,KAAOskB,EAAS,MAC7B,IACHtgB,KAAK45L,YAAc,GACnB55L,KAAKA,KAAKm4L,OAAOxP,EAAK3sL,KAIxBuyL,GAAa9mL,UAAU6yL,MAAQ,SAAU3R,EAAK3sL,GAC5C,IAAIu+L,EAAUv6L,KAAKu4L,cAAcv4L,KAAKi5L,MAEtCsB,GAAWv+L,EACXgE,KAAKu4L,cAAcv4L,KAAKi5L,MAAQsB,GAGlChM,GAAa9mL,UAAU+yL,OAAS,SAAU7R,EAAK3sL,GAC7C,IAAIu+L,EAAUv6L,KAAKs4L,WAAWt4L,KAAKi5L,MACnCsB,GAAWv+L,EACXgE,KAAKs4L,WAAWt4L,KAAKi5L,MAAQsB,GAG/BhM,GAAa9mL,UAAUsxL,aAAe,WACpC,IAAIn+L,EAEJ,IAAKA,EAAI,EAAGA,EAAIoF,KAAK+5L,QAASn/L,IAC5BoF,KAAKs4L,WAAW19L,GAAK,GAGvB,IAAKA,EAAIoF,KAAKi5L,KAAO,EAAGr+L,EAAIy8L,GAAa,EAAGz8L,IAC1CoF,KAAKs4L,WAAW19L,GAAK,GAIvB,IAAKA,EAAIoF,KAAK+5L,QAASn/L,EAAIoF,KAAKi5L,KAAMr+L,IACpCoF,KAAKs4L,WAAW19L,GAAKoF,KAAKs4L,WAAW19L,EAAI,GAI3CoF,KAAKs4L,WAAWt4L,KAAKi5L,MAAQ,IAG/B1K,GAAa9mL,UAAUgzL,QAAU,SAAU9R,EAAK3sL,GAC9C,IAAIu+L,EAAUv6L,KAAKs4L,WAAWt4L,KAAKi5L,MACnCsB,GAAWv+L,EACXgE,KAAKs4L,WAAWt4L,KAAKi5L,MAAQsB,GAI/B,IAAIG,GAAgB,CAClBxM,cAAeD,GACfM,aAAcA,GACdE,aAAcA,IASZkM,GAAc,CAChBC,iBAAkB,GAClBC,iBAAkB,GAClBC,qBAAsB,IAEpBC,GAAS,WACTC,GAAY,WACZC,GAAc,SAEdC,GAAmB,SAAwB9zL,EAAOkR,GACpD,IAAIylF,EAAY,EAEZ32F,EAAQkR,IAQVylF,GAAa,GAKf,MAAOhoF,KAAKkE,IAAI3B,EAAYlR,GAAS4zL,GACnC5zL,GAAS22F,EAAYg9F,GAGvB,OAAO3zL,GAGL+zL,GAA4B,SAASC,EAAwBv9L,GAC/D,IAAIw9L,EAASC,EACbF,EAAwB3zL,UAAU65K,KAAK1wK,KAAK5Q,MAI5CA,KAAKu7L,MAAQ19L,GAAQo9L,GAErBj7L,KAAK/E,KAAO,SAAUpB,GAGhBmG,KAAKu7L,QAAUN,IAAephM,EAAKgE,OAASmC,KAAKu7L,aAIhC7wL,IAAjB4wL,IACFA,EAAezhM,EAAK6uL,KAGtB7uL,EAAK6uL,IAAMwS,GAAiBrhM,EAAK6uL,IAAK4S,GACtCzhM,EAAK8uL,IAAMuS,GAAiBrhM,EAAK8uL,IAAK2S,GACtCD,EAAUxhM,EAAK6uL,IACf1oL,KAAK8lG,QAAQ,OAAQjsG,KAGvBmG,KAAKsjG,MAAQ,WACXg4F,EAAeD,EACfr7L,KAAK8lG,QAAQ,SAGf9lG,KAAKyhL,YAAc,WACjBzhL,KAAKsjG,QACLtjG,KAAK8lG,QAAQ,kBAGf9lG,KAAKka,cAAgB,WACnBohL,OAAe,EACfD,OAAU,GAGZr7L,KAAKwoI,MAAQ,WACXxoI,KAAKka,gBACLla,KAAK8lG,QAAQ,WAIjBq1F,GAA0B1zL,UAAY,IAAIy7F,EAC1C,IAiFIs4F,GAjFAC,GAA0B,CAC5BL,wBAAyBD,GACzBO,eAAgBR,IAGdS,GAAkB,SAAuBrzL,EAAOwJ,EAAOC,GACzD,IAAInX,EACAT,EAAS,GAEb,IAAKS,EAAIkX,EAAOlX,EAAImX,EAAKnX,IACvBT,GAAU,KAAO,KAAOmO,EAAM1N,GAAGkC,SAAS,KAAKC,OAAO,GAGxD,OAAO5C,GAITyhM,GAAY,SAAmBtzL,EAAOwJ,EAAOC,GAC3C,OAAOgvF,mBAAmB46F,GAAgBrzL,EAAOwJ,EAAOC,KAI1D8pL,GAAkB,SAAuBvzL,EAAOwJ,EAAOC,GACrD,OAAOtQ,SAASk6L,GAAgBrzL,EAAOwJ,EAAOC,KAE5C+pL,GAAyB,SAA8BjiM,GACzD,OAAOA,EAAK,IAAM,GAAKA,EAAK,IAAM,GAAKA,EAAK,IAAM,EAAIA,EAAK,IAEzDkiM,GAAa,CACfC,KAAM,SAAcn3K,GAClB,IAAIjqB,EAEJ,GAAoB,IAAhBiqB,EAAIhrB,KAAK,GAAb,CAKA,IAAKe,EAAI,EAAGA,EAAIiqB,EAAIhrB,KAAK+D,OAAQhD,IAC/B,GAAoB,IAAhBiqB,EAAIhrB,KAAKe,GAAU,CAErBiqB,EAAI82G,YAAcigE,GAAU/2K,EAAIhrB,KAAM,EAAGe,GAEzCiqB,EAAIzd,MAAQw0L,GAAU/2K,EAAIhrB,KAAMe,EAAI,EAAGiqB,EAAIhrB,KAAK+D,QAAQpB,QAAQ,OAAQ,IACxE,MAIJqoB,EAAIhrB,KAAOgrB,EAAIzd,QAEjB60L,KAAM,SAAcp3K,GAClB,IAAIjqB,EAEJ,GAAoB,IAAhBiqB,EAAIhrB,KAAK,GAKb,IAAKe,EAAI,EAAGA,EAAIiqB,EAAIhrB,KAAK+D,OAAQhD,IAC/B,GAAoB,IAAhBiqB,EAAIhrB,KAAKe,GAAU,CAErBiqB,EAAI82G,YAAcigE,GAAU/2K,EAAIhrB,KAAM,EAAGe,GACzCiqB,EAAIlZ,IAAMiwL,GAAU/2K,EAAIhrB,KAAMe,EAAI,EAAGiqB,EAAIhrB,KAAK+D,QAC9C,QAINs+L,KAAM,SAAcr3K,GAClB,IAAIjqB,EAEJ,IAAKA,EAAI,EAAGA,EAAIiqB,EAAIhrB,KAAK+D,OAAQhD,IAC/B,GAAoB,IAAhBiqB,EAAIhrB,KAAKe,GAAU,CAErBiqB,EAAIs3K,MAAQN,GAAgBh3K,EAAIhrB,KAAM,EAAGe,GACzC,MAIJiqB,EAAIu3K,YAAcv3K,EAAIhrB,KAAKU,SAASK,EAAI,GACxCiqB,EAAIhrB,KAAOgrB,EAAIu3K,cAKnBZ,GAAkB,SAAwB5xL,GACxC,IAYIhP,EAZAq+F,EAAW,CAIbg2D,WAAYrlJ,GAAWA,EAAQqlJ,YAGjCotC,EAAU,EAEVriM,EAAS,GAETsiM,EAAa,EASb,GANAd,GAAgB/zL,UAAU65K,KAAK1wK,KAAK5Q,MAIpCA,KAAKu8L,aAAe5B,GAAYG,qBAAqBh+L,SAAS,IAE1Dm8F,EAASg2D,WACX,IAAKr0J,EAAI,EAAGA,EAAIq+F,EAASg2D,WAAWrxJ,OAAQhD,IAC1CoF,KAAKu8L,eAAiB,KAAOtjG,EAASg2D,WAAWr0J,GAAGkC,SAAS,KAAKC,OAAO,GAI7EiD,KAAK/E,KAAO,SAAU2xG,GACpB,IAAI/nF,EAAK23K,EAAYC,EAAWtT,EAAOvuL,EAAG8hM,EAE1C,GAAmB,mBAAf9vF,EAAM/uG,KAaV,GANI+uG,EAAM+vF,yBACRL,EAAa,EACbtiM,EAAO4D,OAAS,GAII,IAAlB5D,EAAO4D,SAAiBgvG,EAAM/yG,KAAK+D,OAAS,IAAMgvG,EAAM/yG,KAAK,KAAO,IAAIuK,WAAW,IAAMwoG,EAAM/yG,KAAK,KAAO,IAAIuK,WAAW,IAAMwoG,EAAM/yG,KAAK,KAAO,IAAIuK,WAAW,IACnKpE,KAAK8lG,QAAQ,MAAO,CAClBmb,MAAO,OACPppB,QAAS,+CAqBb,GAfA79F,EAAOiB,KAAK2xG,GACZ0vF,GAAc1vF,EAAM/yG,KAAKK,WAEH,IAAlBF,EAAO4D,SAKTy+L,EAAUP,GAAuBlvF,EAAM/yG,KAAKU,SAAS,EAAG,KAGxD8hM,GAAW,MAITC,EAAaD,GAAjB,CAYA,IAPAx3K,EAAM,CACJhrB,KAAM,IAAIS,WAAW+hM,GACrB9T,OAAQ,GACRI,IAAK3uL,EAAO,GAAG2uL,IACfD,IAAK1uL,EAAO,GAAG0uL,KAGZ9tL,EAAI,EAAGA,EAAIyhM,GACdx3K,EAAIhrB,KAAKwxB,IAAIrxB,EAAO,GAAGH,KAAKU,SAAS,EAAG8hM,EAAUzhM,GAAIA,GACtDA,GAAKZ,EAAO,GAAGH,KAAKK,WACpBoiM,GAActiM,EAAO,GAAGH,KAAKK,WAC7BF,EAAOg1H,QAITwtE,EAAa,GAEK,GAAd33K,EAAIhrB,KAAK,KAEX2iM,GAAc,EAEdA,GAAcV,GAAuBj3K,EAAIhrB,KAAKU,SAAS,GAAI,KAE3D8hM,GAAWP,GAAuBj3K,EAAIhrB,KAAKU,SAAS,GAAI,MAK1D,EAAG,CAID,GAFAkiM,EAAYX,GAAuBj3K,EAAIhrB,KAAKU,SAASiiM,EAAa,EAAGA,EAAa,IAE9EC,EAAY,EAKd,YAJAz8L,KAAK8lG,QAAQ,MAAO,CAClBmb,MAAO,OACPppB,QAAS,gEAYb,GAPA6kG,EAAc97L,OAAOqD,aAAa4gB,EAAIhrB,KAAK2iM,GAAa33K,EAAIhrB,KAAK2iM,EAAa,GAAI33K,EAAIhrB,KAAK2iM,EAAa,GAAI33K,EAAIhrB,KAAK2iM,EAAa,IAClIrT,EAAQ,CACNtuK,GAAI6hL,EACJ7iM,KAAMgrB,EAAIhrB,KAAKU,SAASiiM,EAAa,GAAIA,EAAaC,EAAY,KAEpEtT,EAAMjgL,IAAMigL,EAAMtuK,GAEdkhL,GAAW5S,EAAMtuK,MACnBkhL,GAAW5S,EAAMtuK,IAAIsuK,GAGD,iDAAhBA,EAAMgT,OAA0D,CAClE,IAAIr8K,EAAIqpK,EAAMtvL,KACV0e,GAAe,EAAPuH,EAAE,KAAc,GAAKA,EAAE,IAAM,GAAKA,EAAE,IAAM,GAAKA,EAAE,IAAM,EAAIA,EAAE,KAAO,EAChFvH,GAAQ,EACRA,GAAe,EAAPuH,EAAE,GACVqpK,EAAMyT,UAAYrkL,OAKF7N,IAAZma,EAAI8jK,UAAiCj+K,IAAZma,EAAI6jK,MAC/B7jK,EAAI8jK,IAAMQ,EAAMyT,UAChB/3K,EAAI6jK,IAAMS,EAAMyT,WAGlB58L,KAAK8lG,QAAQ,YAAaqjF,GAI9BtkK,EAAI0jK,OAAOttL,KAAKkuL,GAChBqT,GAAc,GAEdA,GAAcC,QACPD,EAAaH,GAEtBr8L,KAAK8lG,QAAQ,OAAQjhF,MAIzB22K,GAAgB/zL,UAAY,IAAIy7F,EAChC,IAGI25F,GAAwBC,GAAuBC,GAH/CC,GAAiBxB,GACjBJ,GAA0BK,GAAwBL,wBAKlD6B,GAAuB,IAE3BC,GAAc,GAMdL,GAAyB,WACvB,IAAI7iM,EAAS,IAAIM,WAAW2iM,IACxBE,EAAgB,EAEpBN,GAAuBp1L,UAAU65K,KAAK1wK,KAAK5Q,MAO3CA,KAAK/E,KAAO,SAAUqN,GACpB,IAEI80L,EAFAtlL,EAAa,EACbU,EAAWykL,GAIXE,GACFC,EAAa,IAAI9iM,WAAWgO,EAAMpO,WAAaijM,GAC/CC,EAAW/xK,IAAIrxB,EAAOO,SAAS,EAAG4iM,IAClCC,EAAW/xK,IAAI/iB,EAAO60L,GACtBA,EAAgB,GAEhBC,EAAa90L,EAIf,MAAOkQ,EAAW4kL,EAAWljM,WAEvBkjM,EAAWtlL,KAAgBolL,IAAeE,EAAW5kL,KAAc0kL,IAYvEplL,IACAU,MAVExY,KAAK8lG,QAAQ,OAAQs3F,EAAW7iM,SAASud,EAAYU,IACrDV,GAAcmlL,GACdzkL,GAAYykL,IAcZnlL,EAAaslL,EAAWljM,aAC1BF,EAAOqxB,IAAI+xK,EAAW7iM,SAASud,GAAa,GAC5CqlL,EAAgBC,EAAWljM,WAAa4d,IAQ5C9X,KAAKsjG,MAAQ,WAIP65F,IAAkBF,IAAwBjjM,EAAO,KAAOkjM,KAC1Dl9L,KAAK8lG,QAAQ,OAAQ9rG,GACrBmjM,EAAgB,GAGlBn9L,KAAK8lG,QAAQ,SAGf9lG,KAAKyhL,YAAc,WACjBzhL,KAAKsjG,QACLtjG,KAAK8lG,QAAQ,kBAGf9lG,KAAKwoI,MAAQ,WACX20D,EAAgB,EAChBn9L,KAAK8lG,QAAQ,WAIjB+2F,GAAuBp1L,UAAY,IAAIy7F,EAMvC45F,GAAwB,WACtB,IAAIO,EAAUC,EAAUC,EAAUj6L,EAElCw5L,GAAsBr1L,UAAU65K,KAAK1wK,KAAK5Q,MAE1CsD,EAAOtD,KACPA,KAAKw9L,qBAAuB,GAC5Bx9L,KAAKy9L,qBAAkB/yL,EAEvB2yL,EAAW,SAAkBtY,EAAS52G,GACpC,IAAIloE,EAAS,EAOTkoE,EAAIuvH,4BACNz3L,GAAU8+K,EAAQ9+K,GAAU,GAGb,QAAbkoE,EAAItwE,KACNy/L,EAASvY,EAAQxqL,SAAS0L,GAASkoE,GAEnCovH,EAASxY,EAAQxqL,SAAS0L,GAASkoE,IAIvCmvH,EAAW,SAAkBvY,EAAS4Y,GACpCA,EAAIC,eAAiB7Y,EAAQ,GAE7B4Y,EAAIE,oBAAsB9Y,EAAQ,GAGlCzhL,EAAKw6L,QAAwB,GAAd/Y,EAAQ,MAAe,EAAIA,EAAQ,IAClD4Y,EAAIG,OAASx6L,EAAKw6L,QAYpBP,EAAW,SAAkBxY,EAASgZ,GACpC,IAAIC,EAAeC,EAAUC,EAAmBj4L,EAMhD,GAAmB,EAAb8+K,EAAQ,GAAd,CAKAzhL,EAAKm6L,gBAAkB,CACrB3hM,MAAO,KACPC,MAAO,KACP,iBAAkB,IAGpBiiM,GAA8B,GAAbjZ,EAAQ,KAAc,EAAIA,EAAQ,GACnDkZ,EAAW,EAAID,EAAgB,EAG/BE,GAAmC,GAAdnZ,EAAQ,MAAe,EAAIA,EAAQ,IAExD9+K,EAAS,GAAKi4L,EAEd,MAAOj4L,EAASg4L,EAAU,CACxB,IAAIE,EAAapZ,EAAQ9+K,GACrBm4L,GAA6B,GAAtBrZ,EAAQ9+K,EAAS,KAAc,EAAI8+K,EAAQ9+K,EAAS,GAI3Dk4L,IAAexD,GAAYC,kBAAmD,OAA/Bt3L,EAAKm6L,gBAAgB3hM,MACtEwH,EAAKm6L,gBAAgB3hM,MAAQsiM,EACpBD,IAAexD,GAAYE,kBAAmD,OAA/Bv3L,EAAKm6L,gBAAgB1hM,MAC7EuH,EAAKm6L,gBAAgB1hM,MAAQqiM,EACpBD,IAAexD,GAAYG,uBAEpCx3L,EAAKm6L,gBAAgB,kBAAkBW,GAAOD,GAKhDl4L,GAAsE,IAApC,GAAtB8+K,EAAQ9+K,EAAS,KAAc,EAAI8+K,EAAQ9+K,EAAS,IAIlE83L,EAAIN,gBAAkBn6L,EAAKm6L,kBAO7Bz9L,KAAK/E,KAAO,SAAUm0L,GACpB,IAAIj1L,EAAS,GACT8L,EAAS,EAgBb,GAfA9L,EAAOujM,6BAA2C,GAAZtO,EAAO,IAE7Cj1L,EAAOikM,IAAkB,GAAZhP,EAAO,GACpBj1L,EAAOikM,MAAQ,EACfjkM,EAAOikM,KAAOhP,EAAO,IAMJ,GAAZA,EAAO,MAAe,EAAI,IAC7BnpL,GAAUmpL,EAAOnpL,GAAU,GAIV,IAAf9L,EAAOikM,IACTjkM,EAAO0D,KAAO,MACdw/L,EAASjO,EAAO70L,SAAS0L,GAAS9L,GAClC6F,KAAK8lG,QAAQ,OAAQ3rG,QAChB,GAAIA,EAAOikM,MAAQp+L,KAAK89L,OAAQ,CACrC3jM,EAAO0D,KAAO,MACdw/L,EAASjO,EAAO70L,SAAS0L,GAAS9L,GAClC6F,KAAK8lG,QAAQ,OAAQ3rG,GAErB,MAAO6F,KAAKw9L,qBAAqB5/L,OAC/BoC,KAAKq+L,YAAYrjL,MAAMhb,KAAMA,KAAKw9L,qBAAqBxuE,mBAEvBtkH,IAAzB1K,KAAKy9L,gBAGdz9L,KAAKw9L,qBAAqBviM,KAAK,CAACm0L,EAAQnpL,EAAQ9L,IAEhD6F,KAAKq+L,YAAYjP,EAAQnpL,EAAQ9L,IAIrC6F,KAAKq+L,YAAc,SAAUjP,EAAQnpL,EAAQ9L,GAEvCA,EAAOikM,MAAQp+L,KAAKy9L,gBAAgB3hM,MACtC3B,EAAOgkM,WAAaxD,GAAYC,iBACvBzgM,EAAOikM,MAAQp+L,KAAKy9L,gBAAgB1hM,MAC7C5B,EAAOgkM,WAAaxD,GAAYE,iBAIhC1gM,EAAOgkM,WAAan+L,KAAKy9L,gBAAgB,kBAAkBtjM,EAAOikM,KAGpEjkM,EAAO0D,KAAO,MACd1D,EAAON,KAAOu1L,EAAO70L,SAAS0L,GAC9BjG,KAAK8lG,QAAQ,OAAQ3rG,KAIzB2iM,GAAsBr1L,UAAY,IAAIy7F,EACtC45F,GAAsBwB,aAAe,CACnCC,KAAM,GACNC,KAAM,IAWRzB,GAAoB,WAClB,IAeIU,EAfAn6L,EAAOtD,KACPy+L,GAAgB,EAEpB3iM,EAAQ,CACNjC,KAAM,GACN0e,KAAM,GAEJxc,EAAQ,CACVlC,KAAM,GACN0e,KAAM,GAEJmmL,EAAgB,CAClB7kM,KAAM,GACN0e,KAAM,GAGJomL,EAAW,SAAkB5Z,EAAS6Z,GACxC,IAAIC,EACAC,EAAc/Z,EAAQ,IAAM,GAAKA,EAAQ,IAAM,EAAIA,EAAQ,GAE/D6Z,EAAI/kM,KAAO,IAAIS,WAIK,IAAhBwkM,IAKJF,EAAIG,aAAe,GAAKha,EAAQ,IAAM,EAAIA,EAAQ,IAElD6Z,EAAIjC,uBAAiD,KAAV,EAAb5X,EAAQ,IAItC8Z,EAAc9Z,EAAQ,GASJ,IAAd8Z,IAIFD,EAAIjW,KAAoB,GAAb5D,EAAQ,KAAc,IAAoB,IAAdA,EAAQ,MAAe,IAAoB,IAAdA,EAAQ,MAAe,IAAoB,IAAdA,EAAQ,MAAe,GAAmB,IAAdA,EAAQ,OAAgB,EACrJ6Z,EAAIjW,KAAO,EAEXiW,EAAIjW,MAAsB,EAAd5D,EAAQ,OAAgB,EAEpC6Z,EAAIlW,IAAMkW,EAAIjW,IAEI,GAAdkW,IACFD,EAAIlW,KAAqB,GAAd3D,EAAQ,MAAe,IAAoB,IAAdA,EAAQ,MAAe,IAAoB,IAAdA,EAAQ,MAAe,IAAoB,IAAdA,EAAQ,MAAe,GAAmB,IAAdA,EAAQ,OAAgB,EACtJ6Z,EAAIlW,KAAO,EAEXkW,EAAIlW,MAAsB,EAAd3D,EAAQ,OAAgB,IAOxC6Z,EAAI/kM,KAAOkrL,EAAQxqL,SAAS,EAAIwqL,EAAQ,MAM1CkK,EAAc,SAAqB/rF,EAAQrlG,EAAMmhM,GAC/C,IAOIn6F,EAPAmuF,EAAa,IAAI14L,WAAW4oG,EAAO3qF,MACnC2uF,EAAQ,CACVrpG,KAAMA,GAEJjD,EAAI,EACJqL,EAAS,EACTg5L,GAAkB,EAItB,GAAK/7F,EAAOrpG,KAAK+D,UAAUslG,EAAO3qF,KAAO,GAAzC,CAMA,IAFA2uF,EAAMg4F,QAAUh8F,EAAOrpG,KAAK,GAAGukM,IAE1BxjM,EAAI,EAAGA,EAAIsoG,EAAOrpG,KAAK+D,OAAQhD,IAClCiqG,EAAW3B,EAAOrpG,KAAKe,GACvBo4L,EAAW3nK,IAAIw5E,EAAShrG,KAAMoM,GAC9BA,GAAU4+F,EAAShrG,KAAKK,WAI1BykM,EAAS3L,EAAY9rF,GAGrB+3F,EAA2B,UAATphM,GAAoBqpG,EAAM63F,cAAgB77F,EAAO3qF,MAE/DymL,GAAcC,KAChB/7F,EAAO3qF,KAAO,EACd2qF,EAAOrpG,KAAK+D,OAAS,GAKnBqhM,GACF37L,EAAKwiG,QAAQ,OAAQoB,KAIzB61F,GAAkBt1L,UAAU65K,KAAK1wK,KAAK5Q,MAOtCA,KAAK/E,KAAO,SAAUpB,IACpB,CACE8jM,IAAK,aAGLiB,IAAK,WACH,IAAI17F,EAAQi7F,EAEZ,OAAQtkM,EAAKskM,YACX,KAAKxD,GAAYC,iBACf13F,EAASpnG,EACTqiM,EAAa,QACb,MAEF,KAAKxD,GAAYE,iBACf33F,EAASnnG,EACToiM,EAAa,QACb,MAEF,KAAKxD,GAAYG,qBACf53F,EAASw7F,EACTP,EAAa,iBACb,MAEF,QAEE,OAKAtkM,EAAK6jM,2BACPzO,EAAY/rF,EAAQi7F,GAAY,GAKlCj7F,EAAOrpG,KAAKoB,KAAKpB,GACjBqpG,EAAO3qF,MAAQ1e,EAAKA,KAAKK,YAE3B6jM,IAAK,WACH,IAAI72F,EAAQ,CACVrpG,KAAM,WACN08H,OAAQ,IAEVkjE,EAAkB5jM,EAAK4jM,gBAEO,OAA1BA,EAAgB3hM,OAClBorG,EAAMqzB,OAAOt/H,KAAK,CAChBuxL,kBAAmB,CACjBxF,oBAAqB,GAEvBnsK,IAAK4iL,EAAgB3hM,MACrBS,MAAO,MACPsB,KAAM,UAIoB,OAA1B4/L,EAAgB1hM,OAClBmrG,EAAMqzB,OAAOt/H,KAAK,CAChBuxL,kBAAmB,CACjBxF,oBAAqB,GAEvBnsK,IAAK4iL,EAAgB1hM,MACrBQ,MAAO,OACPsB,KAAM,UAIV4gM,GAAgB,EAChBn7L,EAAKwiG,QAAQ,OAAQoB,MAEtBrtG,EAAKgE,SAGVmC,KAAKwoI,MAAQ,WACX1sI,EAAMyc,KAAO,EACbzc,EAAMjC,KAAK+D,OAAS,EACpB7B,EAAMwc,KAAO,EACbxc,EAAMlC,KAAK+D,OAAS,EACpBoC,KAAK8lG,QAAQ,UAaf9lG,KAAKm/L,cAAgB,WAGnBlQ,EAAYnzL,EAAO,SACnBmzL,EAAYlzL,EAAO,SACnBkzL,EAAYyP,EAAe,mBAG7B1+L,KAAKsjG,MAAQ,WAIX,IAAKm7F,GAAiBhB,EAAiB,CACrC,IAAIM,EAAM,CACRlgM,KAAM,WACN08H,OAAQ,IAGoB,OAA1BkjE,EAAgB3hM,OAClBiiM,EAAIxjE,OAAOt/H,KAAK,CACduxL,kBAAmB,CACjBxF,oBAAqB,GAEvBnsK,IAAK4iL,EAAgB3hM,MACrBS,MAAO,MACPsB,KAAM,UAIoB,OAA1B4/L,EAAgB1hM,OAClBgiM,EAAIxjE,OAAOt/H,KAAK,CACduxL,kBAAmB,CACjBxF,oBAAqB,GAEvBnsK,IAAK4iL,EAAgB1hM,MACrBQ,MAAO,OACPsB,KAAM,UAIVyF,EAAKwiG,QAAQ,OAAQi4F,GAGvBU,GAAgB,EAChBz+L,KAAKm/L,gBACLn/L,KAAK8lG,QAAQ,UAIjBi3F,GAAkBt1L,UAAY,IAAIy7F,EAClC,IAAIk8F,GAAO,CACTC,QAAS,EACTC,mBAAoBrC,GACpBsC,sBAAuB1C,GACvB2C,qBAAsB1C,GACtB2C,iBAAkB1C,GAClB3B,wBAAyBA,GACzBlN,cAAewM,GAAcxM,cAC7BK,aAAcmM,GAAcnM,aAC5BE,aAAciM,GAAcjM,aAC5BiR,eAAgB1C,IAGlB,IAAK,IAAIn/L,MAAQ88L,GACXA,GAAYlxL,eAAe5L,MAC7BuhM,GAAKvhM,IAAQ88L,GAAY98L,KAI7B,IAGI8hM,GAHAC,GAASR,GACTS,GAAqB3U,GAAMl7K,iBAI3B8vL,GAA8B,CAAC,KAAO,MAAO,KAAO,KAAO,MAAO,KAAO,KAAO,MAAO,KAAO,KAAO,MAAO,IAAM,MAUtHH,GAAc,SAAoBI,GAChC,IAAI/lM,EACAgmM,EAAW,EAEfL,GAAYl4L,UAAU65K,KAAK1wK,KAAK5Q,MAEhCA,KAAKigM,UAAY,SAAUnuL,EAAOC,GAChC/R,KAAK8lG,QAAQ,MAAO,CAClBmb,MAAO,OACPppB,QAAS,sBAAwB/lF,EAAQ,OAASC,EAAM,aAAeiuL,EAAW,uBAItFhgM,KAAK/E,KAAO,SAAUm0L,GACpB,IACI8Q,EACAC,EACAC,EACAC,EACAC,EALA1lM,EAAI,EAWR,GAJKmlM,IACHC,EAAW,GAGO,UAAhB5Q,EAAOvxL,KAAX,CAkBA,IAAI+tG,EAXA5xG,GAAUA,EAAO4D,QACnBwiM,EAAYpmM,EACZA,EAAS,IAAIM,WAAW8lM,EAAUlmM,WAAak1L,EAAOv1L,KAAKK,YAC3DF,EAAOqxB,IAAI+0K,GACXpmM,EAAOqxB,IAAI+jK,EAAOv1L,KAAMumM,EAAUlmM,aAElCF,EAASo1L,EAAOv1L,KAQlB,MAAOe,EAAI,EAAIZ,EAAO4D,OAEpB,GAAkB,MAAd5D,EAAOY,IAA0C,OAAV,IAAhBZ,EAAOY,EAAI,IAAtC,CA2BA,GAhBoB,kBAATgxG,IACT5rG,KAAKigM,UAAUr0F,EAAMhxG,GACrBgxG,EAAO,MAKTu0F,EAAgD,GAAR,GAAhBnmM,EAAOY,EAAI,IAInCslM,GAA+B,EAAhBlmM,EAAOY,EAAI,KAAc,GAAKZ,EAAOY,EAAI,IAAM,GAAqB,IAAhBZ,EAAOY,EAAI,KAAc,EAC5FylM,EAA6C,MAAL,GAAR,EAAhBrmM,EAAOY,EAAI,KAC3B0lM,EAAoBD,EAAcR,GAAqBC,IAA6C,GAAhB9lM,EAAOY,EAAI,MAAe,GAG1GZ,EAAOE,WAAaU,EAAIslM,EAC1B,MAIFlgM,KAAK8lG,QAAQ,OAAQ,CACnB6iF,IAAKyG,EAAOzG,IAAMqX,EAAWM,EAC7B5X,IAAK0G,EAAO1G,IAAMsX,EAAWM,EAC7BD,YAAaA,EACbpb,gBAAgD,GAA9BjrL,EAAOY,EAAI,KAAO,EAAI,GACxCuqL,cAA+B,EAAhBnrL,EAAOY,EAAI,KAAW,GAAqB,IAAhBZ,EAAOY,EAAI,MAAe,EACpEwqL,WAAY0a,IAA6C,GAAhB9lM,EAAOY,EAAI,MAAe,GACnEsqL,wBAAyC,GAAhBlrL,EAAOY,EAAI,MAAe,EAEnD4rL,WAAY,GAEZ3sL,KAAMG,EAAOO,SAASK,EAAI,EAAIulM,EAAqBvlM,EAAIslM,KAEzDF,IACAplM,GAAKslM,MA7CiB,kBAATt0F,IACTA,EAAOhxG,GAKTA,IA0CgB,kBAATgxG,IACT5rG,KAAKigM,UAAUr0F,EAAMhxG,GACrBgxG,EAAO,MAIT5xG,EAASA,EAAOO,SAASK,KAG3BoF,KAAKsjG,MAAQ,WACX08F,EAAW,EACXhgM,KAAK8lG,QAAQ,SAGf9lG,KAAKwoI,MAAQ,WACXxuI,OAAS,EACTgG,KAAK8lG,QAAQ,UAGf9lG,KAAKyhL,YAAc,WACjBznL,OAAS,EACTgG,KAAK8lG,QAAQ,mBAIjB65F,GAAYl4L,UAAY,IAAIy7F,EAC5B,IAQIq9F,GARA/B,GAAOmB,GAcXY,GAAY,SAAmBC,GAC7B,IACAC,EAAwBD,EAAYtmM,WAEpCwmM,EAAc,EAGdC,EAAuB,EAGvB3gM,KAAKpC,OAAS,WACZ,OAAO,EAAI6iM,GAIbzgM,KAAK4gM,cAAgB,WACnB,OAAO,EAAIH,EAAwBE,GAIrC3gM,KAAK6gM,SAAW,WACd,IAAInyK,EAAW8xK,EAAYtmM,WAAaumM,EACpCK,EAAe,IAAIxmM,WAAW,GAC9BymM,EAAiBhrL,KAAKM,IAAI,EAAGoqL,GAEjC,GAAuB,IAAnBM,EACF,MAAM,IAAI/2L,MAAM,sBAGlB82L,EAAaz1K,IAAIm1K,EAAYjmM,SAASm0B,EAAUA,EAAWqyK,IAC3DL,EAAc,IAAI3mM,SAAS+mM,EAAa9mM,QAAQU,UAAU,GAE1DimM,EAAwC,EAAjBI,EACvBN,GAAyBM,GAI3B/gM,KAAKghM,SAAW,SAAU/gL,GACxB,IAAIghL,EAEAN,EAAuB1gL,GACzBygL,IAAgBzgL,EAChB0gL,GAAwB1gL,IAExBA,GAAS0gL,EACTM,EAAYlrL,KAAKG,MAAM+J,EAAQ,GAC/BA,GAAqB,EAAZghL,EACTR,GAAyBQ,EACzBjhM,KAAK6gM,WACLH,IAAgBzgL,EAChB0gL,GAAwB1gL,IAK5BjgB,KAAKkhM,SAAW,SAAU3oL,GACxB,IAAI4oL,EAAOprL,KAAKM,IAAIsqL,EAAsBpoL,GAE1C6oL,EAAOV,IAAgB,GAAKS,EAa5B,OAVAR,GAAwBQ,EAEpBR,EAAuB,EACzBD,IAAgBS,EACPV,EAAwB,GACjCzgM,KAAK6gM,WAGPM,EAAO5oL,EAAO4oL,EAEVA,EAAO,EACFC,GAAQD,EAAOnhM,KAAKkhM,SAASC,GAG/BC,GAITphM,KAAKqhM,iBAAmB,WACtB,IAAIC,EAEJ,IAAKA,EAAmB,EAAGA,EAAmBX,IAAwBW,EACpE,GAAwD,KAAnDZ,EAAc,aAAeY,GAIhC,OAFAZ,IAAgBY,EAChBX,GAAwBW,EACjBA,EAMX,OADAthM,KAAK6gM,WACES,EAAmBthM,KAAKqhM,oBAIjCrhM,KAAKuhM,sBAAwB,WAC3BvhM,KAAKghM,SAAS,EAAIhhM,KAAKqhM,qBAIzBrhM,KAAKwhM,cAAgB,WACnBxhM,KAAKghM,SAAS,EAAIhhM,KAAKqhM,qBAIzBrhM,KAAKyhM,sBAAwB,WAC3B,IAAIC,EAAM1hM,KAAKqhM,mBAEf,OAAOrhM,KAAKkhM,SAASQ,EAAM,GAAK,GAIlC1hM,KAAK2hM,cAAgB,WACnB,IAAIP,EAAOphM,KAAKyhM,wBAEhB,OAAI,EAAOL,EAEF,EAAIA,IAAS,GAGd,GAAKA,IAAS,IAKxBphM,KAAK4hM,YAAc,WACjB,OAA4B,IAArB5hM,KAAKkhM,SAAS,IAIvBlhM,KAAK6hM,iBAAmB,WACtB,OAAO7hM,KAAKkhM,SAAS,IAGvBlhM,KAAK6gM,YAGP,IAEIiB,GAAaC,GAEbC,GAJAC,GAAY1B,GAShBwB,GAAiB,WACf,IACInnM,EACAZ,EAFAkoM,EAAY,EAIhBH,GAAet6L,UAAU65K,KAAK1wK,KAAK5Q,MAUnCA,KAAK/E,KAAO,SAAUpB,GACpB,IAAIsoM,EAECnoM,GAGHmoM,EAAa,IAAI7nM,WAAWN,EAAOE,WAAaL,EAAKA,KAAKK,YAC1DioM,EAAW92K,IAAIrxB,GACfmoM,EAAW92K,IAAIxxB,EAAKA,KAAMG,EAAOE,YACjCF,EAASmoM,GALTnoM,EAASH,EAAKA,KAkBhB,IAVA,IAAIuM,EAAMpM,EAAOE,WAUVgoM,EAAY97L,EAAM,EAAG87L,IAC1B,GAA8B,IAA1BloM,EAAOkoM,EAAY,GAAU,CAE/BtnM,EAAIsnM,EAAY,EAChB,MAIJ,MAAOtnM,EAAIwL,EAGT,OAAQpM,EAAOY,IACb,KAAK,EAEH,GAAsB,IAAlBZ,EAAOY,EAAI,GAAU,CACvBA,GAAK,EACL,MACK,GAAsB,IAAlBZ,EAAOY,EAAI,GAAU,CAC9BA,IACA,MAIEsnM,EAAY,IAAMtnM,EAAI,GACxBoF,KAAK8lG,QAAQ,OAAQ9rG,EAAOO,SAAS2nM,EAAY,EAAGtnM,EAAI,IAI1D,GACEA,UACqB,IAAdZ,EAAOY,IAAYA,EAAIwL,GAEhC87L,EAAYtnM,EAAI,EAChBA,GAAK,EACL,MAEF,KAAK,EAEH,GAAsB,IAAlBZ,EAAOY,EAAI,IAA8B,IAAlBZ,EAAOY,EAAI,GAAU,CAC9CA,GAAK,EACL,MAIFoF,KAAK8lG,QAAQ,OAAQ9rG,EAAOO,SAAS2nM,EAAY,EAAGtnM,EAAI,IACxDsnM,EAAYtnM,EAAI,EAChBA,GAAK,EACL,MAEF,QAGEA,GAAK,EACL,MAKNZ,EAASA,EAAOO,SAAS2nM,GACzBtnM,GAAKsnM,EACLA,EAAY,GAGdliM,KAAKwoI,MAAQ,WACXxuI,EAAS,KACTkoM,EAAY,EACZliM,KAAK8lG,QAAQ,UAGf9lG,KAAKsjG,MAAQ,WAEPtpG,GAAUA,EAAOE,WAAa,GAChC8F,KAAK8lG,QAAQ,OAAQ9rG,EAAOO,SAAS2nM,EAAY,IAInDloM,EAAS,KACTkoM,EAAY,EACZliM,KAAK8lG,QAAQ,SAGf9lG,KAAKyhL,YAAc,WACjBzhL,KAAKsjG,QACLtjG,KAAK8lG,QAAQ,mBAIjBi8F,GAAet6L,UAAY,IAAIy7F,EAI/B8+F,GAAkC,CAChCI,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,KAAK,EACLC,KAAK,EAGLC,KAAK,EACLC,KAAK,EACLC,KAAK,GAOPjB,GAAc,WACZ,IACIx+L,EACA47L,EACA8D,EACAC,EACAjV,EACAkV,EACAC,EAPAC,EAAgB,IAAIrB,GASxBD,GAAYr6L,UAAU65K,KAAK1wK,KAAK5Q,MAEhCsD,EAAOtD,KAaPA,KAAK/E,KAAO,SAAUm0L,GACA,UAAhBA,EAAOvxL,OAIXqhM,EAAU9P,EAAO8P,QACjB8D,EAAa5T,EAAOzG,IACpBsa,EAAa7T,EAAO1G,IACpB0a,EAAcnoM,KAAKm0L,KAYrBgU,EAAc19F,GAAG,QAAQ,SAAU7rG,GACjC,IAAIqtG,EAAQ,CACVg4F,QAASA,EACTvW,IAAKqa,EACLta,IAAKua,EACLppM,KAAMA,EACNwpM,gBAA2B,GAAVxpM,EAAK,IAGxB,OAAQqtG,EAAMm8F,iBACZ,KAAK,EACHn8F,EAAMuhF,YAAc,4CACpB,MAEF,KAAK,EACHvhF,EAAMuhF,YAAc,WACpBvhF,EAAMynF,YAAcX,EAAgCn0L,EAAKU,SAAS,IAClE,MAEF,KAAK,EACH2sG,EAAMuhF,YAAc,yBACpBvhF,EAAMynF,YAAcX,EAAgCn0L,EAAKU,SAAS,IAClE2sG,EAAM2K,OAASqxF,EAAyBh8F,EAAMynF,aAC9C,MAEF,KAAK,EACHznF,EAAMuhF,YAAc,yBACpB,MAEF,KAAK,EACHvhF,EAAMuhF,YAAc,6BACpB,MAIJnlL,EAAKwiG,QAAQ,OAAQoB,MAEvBk8F,EAAc19F,GAAG,QAAQ,WACvBpiG,EAAKwiG,QAAQ,WAEfs9F,EAAc19F,GAAG,eAAe,WAC9BpiG,EAAKwiG,QAAQ,kBAEfs9F,EAAc19F,GAAG,SAAS,WACxBpiG,EAAKwiG,QAAQ,YAEfs9F,EAAc19F,GAAG,iBAAiB,WAChCpiG,EAAKwiG,QAAQ,oBAGf9lG,KAAKsjG,MAAQ,WACX8/F,EAAc9/F,SAGhBtjG,KAAKwhL,aAAe,WAClB4hB,EAAc5hB,gBAGhBxhL,KAAKwoI,MAAQ,WACX46D,EAAc56D,SAGhBxoI,KAAKyhL,YAAc,WACjB2hB,EAAc3hB,eAahB0hB,EAAkB,SAAyBljL,EAAOqjL,GAChD,IAEIzyD,EACA0yD,EAHAC,EAAY,EACZC,EAAY,EAIhB,IAAK5yD,EAAI,EAAGA,EAAI5wH,EAAO4wH,IACH,IAAd4yD,IACFF,EAAaD,EAAiB3B,gBAC9B8B,GAAaD,EAAYD,EAAa,KAAO,KAG/CC,EAA0B,IAAdC,EAAkBD,EAAYC,GAa9CzV,EAAkC,SAAyCn0L,GACzE,IAGI8zL,EACAC,EAJAhwL,EAAS/D,EAAKK,WACd2zL,EAAoC,GACpCjzL,EAAI,EAIR,MAAOA,EAAIgD,EAAS,EACF,IAAZ/D,EAAKe,IAA4B,IAAhBf,EAAKe,EAAI,IAA4B,IAAhBf,EAAKe,EAAI,IACjDizL,EAAkC5yL,KAAKL,EAAI,GAC3CA,GAAK,GAELA,IAMJ,GAAiD,IAA7CizL,EAAkCjwL,OACpC,OAAO/D,EAIT8zL,EAAY/vL,EAASiwL,EAAkCjwL,OACvDgwL,EAAU,IAAItzL,WAAWqzL,GACzB,IAAIG,EAAc,EAElB,IAAKlzL,EAAI,EAAGA,EAAI+yL,EAAWG,IAAelzL,IACpCkzL,IAAgBD,EAAkC,KAEpDC,IAEAD,EAAkC7+D,SAGpC4+D,EAAQhzL,GAAKf,EAAKi0L,GAGpB,OAAOF,GAaTsV,EAA2B,SAAkCrpM,GAC3D,IAIIypM,EACApd,EACAE,EACAD,EACAud,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAC,EACArpM,EAjBAspM,EAAsB,EACtBC,EAAuB,EACvBC,EAAqB,EACrBC,EAAwB,EAYxBhe,EAAW,CAAC,EAAG,GAanB,GAVAid,EAAmB,IAAIrB,GAAUpoM,GACjCqsL,EAAaod,EAAiBzB,mBAE9B1b,EAAuBmd,EAAiBzB,mBAExCzb,EAAWkd,EAAiBzB,mBAE5ByB,EAAiB/B,wBAGbS,GAAgC9b,KAClCwd,EAAkBJ,EAAiB7B,wBAEX,IAApBiC,GACFJ,EAAiBtC,SAAS,GAG5BsC,EAAiB/B,wBAEjB+B,EAAiB/B,wBAEjB+B,EAAiBtC,SAAS,GAEtBsC,EAAiB1B,eAInB,IAFAoC,EAAuC,IAApBN,EAAwB,EAAI,GAE1C9oM,EAAI,EAAGA,EAAIopM,EAAkBppM,IAC5B0oM,EAAiB1B,eAGjBuB,EADEvoM,EAAI,EACU,GAEA,GAFI0oM,GAa9B,GAJAA,EAAiB/B,wBAEjBoC,EAAkBL,EAAiB7B,wBAEX,IAApBkC,EACFL,EAAiB7B,6BACZ,GAAwB,IAApBkC,EAST,IARAL,EAAiBtC,SAAS,GAE1BsC,EAAiB9B,gBAEjB8B,EAAiB9B,gBAEjBoC,EAAiCN,EAAiB7B,wBAE7C7mM,EAAI,EAAGA,EAAIgpM,EAAgChpM,IAC9C0oM,EAAiB9B,gBA0BrB,GAtBA8B,EAAiB/B,wBAEjB+B,EAAiBtC,SAAS,GAE1B6C,EAAsBP,EAAiB7B,wBACvCqC,EAA4BR,EAAiB7B,wBAC7CsC,EAAmBT,EAAiBpC,SAAS,GAEpB,IAArB6C,GACFT,EAAiBtC,SAAS,GAG5BsC,EAAiBtC,SAAS,GAEtBsC,EAAiB1B,gBAEnBsC,EAAsBZ,EAAiB7B,wBACvC0C,EAAuBb,EAAiB7B,wBACxC2C,EAAqBd,EAAiB7B,wBACtC4C,EAAwBf,EAAiB7B,yBAGvC6B,EAAiB1B,eAEf0B,EAAiB1B,cAAe,CAIlC,OAFAqC,EAAiBX,EAAiBzB,mBAE1BoC,GACN,KAAK,EACH5d,EAAW,CAAC,EAAG,GACf,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,GACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,GACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,GACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,GACHA,EAAW,CAAC,IAAK,IACjB,MAEF,KAAK,GACHA,EAAW,CAAC,EAAG,GACf,MAEF,KAAK,GACHA,EAAW,CAAC,EAAG,GACf,MAEF,KAAK,GACHA,EAAW,CAAC,EAAG,GACf,MAEF,KAAK,IAEDA,EAAW,CAACid,EAAiBzB,oBAAsB,EAAIyB,EAAiBzB,mBAAoByB,EAAiBzB,oBAAsB,EAAIyB,EAAiBzB,oBACxJ,MAIFxb,IACFA,EAAS,GAAKA,EAAS,IAK7B,MAAO,CACLH,WAAYA,EACZE,SAAUA,EACVD,qBAAsBA,EACtBjlL,MAAmC,IAA3B2iM,EAAsB,GAAgC,EAAtBK,EAAiD,EAAvBC,EAClEhjM,QAAS,EAAI4iM,IAAqBD,EAA4B,GAAK,GAA0B,EAArBM,EAAiD,EAAxBC,EAEjGhe,SAAUA,KAKhByb,GAAYr6L,UAAY,IAAIy7F,EAC5B,IAoKIohG,GApKA/F,GAAO,CACTgG,WAAYzC,GACZ0C,cAAezC,IAWb0C,GAA4B,CAAC,KAAO,MAAO,KAAO,KAAO,MAAO,KAAO,KAAO,MAAO,KAAO,KAAO,MAAO,IAAM,MAEhHC,GAAkB,SAAyBjd,EAAQp5E,GACrD,IAAI9lG,EAAak/K,EAAOp5E,EAAY,IAAM,GAAKo5E,EAAOp5E,EAAY,IAAM,GAAKo5E,EAAOp5E,EAAY,IAAM,EAAIo5E,EAAOp5E,EAAY,GACzHh0G,EAAQotL,EAAOp5E,EAAY,GAC3B7lG,GAAyB,GAARnO,IAAe,EAIpC,OAFAkO,EAAaA,GAAc,EAAIA,EAAa,EAExCC,EACKD,EAAa,GAGfA,EAAa,IAGlBE,GAAe,SAASA,EAAa5O,EAAMoM,GAC7C,OAAIpM,EAAK+D,OAASqI,EAAS,IAAMpM,EAAKoM,KAAY,IAAI7B,WAAW,IAAMvK,EAAKoM,EAAS,KAAO,IAAI7B,WAAW,IAAMvK,EAAKoM,EAAS,KAAO,IAAI7B,WAAW,GAC5I6B,GAGTA,GAAUy+L,GAAgB7qM,EAAMoM,GACzBwC,EAAa5O,EAAMoM,KAIxB0+L,GAAoB,SAAyB9qM,GAC/C,IAAIoM,EAASwC,GAAa5O,EAAM,GAChC,OAAOA,EAAK+D,QAAUqI,EAAS,GAA+B,OAAV,IAAfpM,EAAKoM,KAA0D,OAAV,IAAnBpM,EAAKoM,EAAS,KAEvD,MAAV,GAAnBpM,EAAKoM,EAAS,KAGb2+L,GAAuB,SAA8B/qM,GACvD,OAAOA,EAAK,IAAM,GAAKA,EAAK,IAAM,GAAKA,EAAK,IAAM,EAAIA,EAAK,IAKzDgrM,GAAgB,SAAuBv8L,EAAOwJ,EAAOC,GACvD,IAAInX,EACAT,EAAS,GAEb,IAAKS,EAAIkX,EAAOlX,EAAImX,EAAKnX,IACvBT,GAAU,KAAO,KAAOmO,EAAM1N,GAAGkC,SAAS,KAAKC,OAAO,GAGxD,OAAO5C,GAKL2qM,GAAgB,SAAuBx8L,EAAOwJ,EAAOC,GACvD,OAAOtQ,SAASojM,GAAcv8L,EAAOwJ,EAAOC,KAG1CgzL,GAAgB,SAAuBtd,EAAQp5E,GACjD,IAAI22F,GAAoC,IAAxBvd,EAAOp5E,EAAY,KAAc,EAC7CvU,EAAS2tF,EAAOp5E,EAAY,IAAM,EAClC42F,EAAkC,KAAxBxd,EAAOp5E,EAAY,GACjC,OAAO42F,EAAUnrG,EAASkrG,GAGxBE,GAAc,SAAmBzd,EAAQp5E,GAC3C,OAAIo5E,EAAOp5E,KAAe,IAAIjqG,WAAW,IAAMqjL,EAAOp5E,EAAY,KAAO,IAAIjqG,WAAW,IAAMqjL,EAAOp5E,EAAY,KAAO,IAAIjqG,WAAW,GAC9H,kBACsB,EAApBqjL,EAAOp5E,IAAiE,OAAV,IAAxBo5E,EAAOp5E,EAAY,IAC3D,QAGF,MAGL82F,GAAkB,SAAyB/V,GAC7C,IAAIx0L,EAAI,EAER,MAAOA,EAAI,EAAIw0L,EAAOxxL,OAAQ,CAC5B,GAAkB,MAAdwxL,EAAOx0L,IAA0C,OAAV,IAAhBw0L,EAAOx0L,EAAI,IAOtC,OAAO6pM,IAA2C,GAAhBrV,EAAOx0L,EAAI,MAAe,GAJ1DA,IAOJ,OAAO,MAGLwqM,GAAoB,SAA2BhW,GACjD,IAAIoN,EAAYC,EAAWtT,EAAOuT,EAElCF,EAAa,GAEG,GAAZpN,EAAO,KAEToN,GAAc,EAEdA,GAAcoI,GAAqBxV,EAAO70L,SAAS,GAAI,MAKzD,EAAG,CAID,GAFAkiM,EAAYmI,GAAqBxV,EAAO70L,SAASiiM,EAAa,EAAGA,EAAa,IAE1EC,EAAY,EACd,OAAO,KAKT,GAFAC,EAAc97L,OAAOqD,aAAamrL,EAAOoN,GAAapN,EAAOoN,EAAa,GAAIpN,EAAOoN,EAAa,GAAIpN,EAAOoN,EAAa,IAEtG,SAAhBE,EAAwB,CAC1BvT,EAAQiG,EAAO70L,SAASiiM,EAAa,GAAIA,EAAaC,EAAY,IAElE,IAAK,IAAI7hM,EAAI,EAAGA,EAAIuuL,EAAMjvL,WAAYU,IACpC,GAAiB,IAAbuuL,EAAMvuL,GAAU,CAClB,IAAIuhM,EAAQ2I,GAAc3b,EAAO,EAAGvuL,GAEpC,GAAc,iDAAVuhM,EAA0D,CAC5D,IAAIr8K,EAAIqpK,EAAM5uL,SAASK,EAAI,GACvB2d,GAAe,EAAPuH,EAAE,KAAc,GAAKA,EAAE,IAAM,GAAKA,EAAE,IAAM,GAAKA,EAAE,IAAM,EAAIA,EAAE,KAAO,EAGhF,OAFAvH,GAAQ,EACRA,GAAe,EAAPuH,EAAE,GACHvH,EAGT,OAKNikL,GAAc,GAEdA,GAAcC,QACPD,EAAapN,EAAOl1L,YAE7B,OAAO,MAGL29K,GAAQ,CACVwtB,gBAAiBV,GACjBD,gBAAiBA,GACjBK,cAAeA,GACfO,UAAWJ,GACXC,gBAAiBA,GACjBC,kBAAmBA,IASrBd,GAAa,WACX,IAAIlH,EAAa,IAAI9iM,WACjBsiM,EAAY,EAEhB0H,GAAW78L,UAAU65K,KAAK1wK,KAAK5Q,MAE/BA,KAAKulM,aAAe,SAAUp1L,GAC5BysL,EAAYzsL,GAGdnQ,KAAK/E,KAAO,SAAUqN,GACpB,IAEIk9L,EACA54F,EACAwiF,EACAqW,EALAhJ,EAAY,EACZpuF,EAAY,EAOZ+uF,EAAWx/L,QACb6nM,EAAarI,EAAWx/L,OACxBw/L,EAAa,IAAI9iM,WAAWgO,EAAMpO,WAAaurM,GAC/CrI,EAAW/xK,IAAI+xK,EAAW7iM,SAAS,EAAGkrM,IACtCrI,EAAW/xK,IAAI/iB,EAAOm9L,IAEtBrI,EAAa90L,EAGf,MAAO80L,EAAWx/L,OAASywG,GAAa,EACtC,GAAI+uF,EAAW/uF,KAAe,IAAIjqG,WAAW,IAAMg5L,EAAW/uF,EAAY,KAAO,IAAIjqG,WAAW,IAAMg5L,EAAW/uF,EAAY,KAAO,IAAIjqG,WAAW,GAuB5I,GAAuC,OAAV,IAAxBg5L,EAAW/uF,KAAsE,OAAV,IAA5B+uF,EAAW/uF,EAAY,IAyB9EA,QAzBO,CAGL,GAAI+uF,EAAWx/L,OAASywG,EAAY,EAClC,MAMF,GAHAouF,EAAY5kB,GAAMktB,cAAc3H,EAAY/uF,GAGxCA,EAAYouF,EAAYW,EAAWx/L,OACrC,MAGFwxL,EAAS,CACPvxL,KAAM,QACNhE,KAAMujM,EAAW7iM,SAAS8zG,EAAWA,EAAYouF,GACjD9T,IAAKiU,EACLlU,IAAKkU,GAEP58L,KAAK8lG,QAAQ,OAAQspF,GACrB/gF,GAAaouF,MA5Cf,CAGE,GAAIW,EAAWx/L,OAASywG,EAAY,GAClC,MAQF,GAJAouF,EAAY5kB,GAAM6sB,gBAAgBtH,EAAY/uF,GAI1CA,EAAYouF,EAAYW,EAAWx/L,OACrC,MAGFgvG,EAAQ,CACN/uG,KAAM,iBACNhE,KAAMujM,EAAW7iM,SAAS8zG,EAAWA,EAAYouF,IAEnDz8L,KAAK8lG,QAAQ,OAAQ8G,GACrByB,GAAaouF,EA8BjB+I,EAAYpI,EAAWx/L,OAASywG,EAG9B+uF,EADEoI,EAAY,EACDpI,EAAW7iM,SAAS8zG,GAEpB,IAAI/zG,YAIrB0F,KAAKwoI,MAAQ,WACX40D,EAAa,IAAI9iM,WACjB0F,KAAK8lG,QAAQ,UAGf9lG,KAAKyhL,YAAc,WACjB2b,EAAa,IAAI9iM,WACjB0F,KAAK8lG,QAAQ,mBAIjBw+F,GAAW78L,UAAY,IAAIy7F,EAC3B,IAUIwiG,GAAqBC,GAAqBC,GAAaC,GAVvDv2D,GAAMg1D,GAENwB,GAAmB,CAAC,kBAAmB,eAAgB,aAAc,yBAA0B,cAC/FC,GAAkBD,GAClBE,GAAmB,CAAC,QAAS,SAAU,aAAc,WAAY,uBAAwB,YACzFC,GAAkBD,GAClBzB,GAAahG,GAAKgG,WAClBc,GAAkBxtB,GAAMwtB,gBACxBa,GAAqBhb,GAAMl7K,iBAI3Bm2L,GAAqB,SAA4Bj9L,EAAKg+F,GACxDA,EAAMhE,OAASh6F,EACflJ,KAAK8lG,QAAQ,MAAOoB,IAGlBk/F,GAA2B,SAAkCC,EAAYC,GAG3E,IAFA,IAAI50L,EAAO1K,OAAO0K,KAAK40L,GAEd1rM,EAAI,EAAGA,EAAI8W,EAAK9T,OAAQhD,IAAK,CACpC,IAAIsO,EAAMwI,EAAK9W,GAGH,mBAARsO,GAA6Bo9L,EAASp9L,GAAKw8F,IAI/C4gG,EAASp9L,GAAKw8F,GAAG,MAAOygG,GAAmBp4L,KAAKs4L,EAAYn9L,MAQ5Dq9L,GAAc,SAAqB/gM,EAAGT,GACxC,IAAInK,EAEJ,GAAI4K,EAAE5H,SAAWmH,EAAEnH,OACjB,OAAO,EAIT,IAAKhD,EAAI,EAAGA,EAAI4K,EAAE5H,OAAQhD,IACxB,GAAI4K,EAAE5K,KAAOmK,EAAEnK,GACb,OAAO,EAIX,OAAO,GAGL4rM,GAA4B,SAAmCxf,EAAqByf,EAAUzU,EAAU0U,EAAQ3Q,EAAQ4Q,GAC1H,IAAIC,EAAmB5U,EAAWyU,EAC9BI,EAAiBH,EAASD,EAC1BK,EAAuB/Q,EAAS/D,EAKpC,MAAO,CACLlgL,MAAO,CACL42K,IAAK1B,EACL2B,IAAK3B,EAAsB4f,GAE7B70L,IAAK,CACH22K,IAAK1B,EAAsB6f,EAC3Ble,IAAK3B,EAAsB8f,GAE7BH,yBAA0BA,EAC1B3f,oBAAqBA,IAczB2e,GAAsB,SAA4B3oG,EAAOpzF,GACvD,IACIy7K,EADA2G,EAAa,GAEbC,EAAqB,EACrBX,EAAqB,EACrBC,EAA2B71K,IAC/B9L,EAAUA,GAAW,GACrBy7K,EAAiBz7K,EAAQm9L,qBAAuB,EAEhDpB,GAAoBl+L,UAAU65K,KAAK1wK,KAAK5Q,MAExCA,KAAK/E,KAAO,SAAUpB,GACpBizL,GAAgBP,eAAevvF,EAAOnjG,GAElCmjG,GACF+oG,GAAgB1oM,SAAQ,SAAUqwE,GAChCsvB,EAAMtvB,GAAQ7zE,EAAK6zE,MAKvBs+G,EAAW/wL,KAAKpB,IAGlBmG,KAAKgnM,eAAiB,SAAUC,GAC9Bhb,EAAqBgb,GAGvBjnM,KAAKknM,4BAA8B,SAAUlgB,GAC3CuE,EAA2BvE,GAG7BhnL,KAAKmnM,oBAAsB,SAAUh3L,GACnCm7K,EAAqBn7K,GAGvBnQ,KAAKsjG,MAAQ,WACX,IAAIilF,EAAQvG,EAAMH,EAAMnhF,EAAOirF,EAAe72K,EAAiBsyL,EAErC,IAAtBpb,EAAWpuL,QAKf2qL,EAAS8D,GAAgBN,4BAA4BC,EAAYhvF,EAAOivF,GACxEjvF,EAAMgqF,oBAAsB8F,GAAgBF,kCAAkC5vF,EAAOpzF,EAAQyG,wBAE7F+2L,EAAoC/a,GAAgBhB,kBAAkBruF,EAAOurF,EAAQ+C,EAAoBC,GAGzGvuF,EAAMuoF,QAAU8G,GAAgBxC,oBAAoBtB,GAEpD1G,EAAOmG,EAAanG,KAAKwK,GAAgBD,qBAAqB7D,IAC9DyD,EAAa,GACbhK,EAAOgG,EAAahG,KAAKqD,EAAgB,CAACroF,IAC1C0D,EAAQ,IAAIpmG,WAAW0nL,EAAK9nL,WAAa2nL,EAAK3nL,YAE9CmrL,IACA3kF,EAAMr1E,IAAI22J,GACVthF,EAAMr1E,IAAIw2J,EAAMG,EAAK9nL,YACrB4yL,GAAgBH,aAAa3vF,GAC7B2uF,EAAgB51K,KAAKC,KAA0B,KAArBkwL,GAA4BlpG,EAAMooF,YAKxDmD,EAAO3qL,SACTkX,EAAkByzK,EAAO3qL,OAAS+tL,EAClC3rL,KAAK8lG,QAAQ,oBAAqB0gG,GAGlCtb,GAAMr7K,iBAAiBmtF,EAAMgqF,oBAAqBhqF,EAAMooF,YACxDmD,EAAO,GAAGG,IAAKH,EAAO,GAAGI,IAAKJ,EAAO,GAAGG,IAAM5zK,EAAiByzK,EAAO,GAAGI,IAAM7zK,EAAiBsyL,GAAqC,IACrIpnM,KAAK8lG,QAAQ,aAAc,CACzBh0F,MAAOy2K,EAAO,GAAGI,IACjB52K,IAAKw2K,EAAO,GAAGI,IAAM7zK,KAIzB9U,KAAK8lG,QAAQ,OAAQ,CACnB9I,MAAOA,EACP0D,MAAOA,IAET1gG,KAAK8lG,QAAQ,OAAQ,uBA3CnB9lG,KAAK8lG,QAAQ,OAAQ,uBA8CzB9lG,KAAKwoI,MAAQ,WACXskD,GAAgBH,aAAa3vF,GAC7BgvF,EAAa,GACbhsL,KAAK8lG,QAAQ,WAIjB6/F,GAAoBl+L,UAAY,IAAIy7F,EAapCwiG,GAAsB,SAA4B1oG,EAAOpzF,GACvD,IAAIy7K,EAGAxzE,EACAk0E,EAHAqC,EAAW,GACXif,EAAkB,GAGtBz9L,EAAUA,GAAW,GACrBy7K,EAAiBz7K,EAAQm9L,qBAAuB,EAEhDrB,GAAoBj+L,UAAU65K,KAAK1wK,KAAK5Q,aAEjCg9F,EAAMsqG,OACbtnM,KAAKunM,UAAY,GAUjBvnM,KAAK/E,KAAO,SAAUusM,GACpB1a,GAAgBP,eAAevvF,EAAOwqG,GAEV,2BAAxBA,EAAQ/e,aAA6C52E,IACvDA,EAAS21F,EAAQ31F,OACjB7U,EAAM8oF,IAAM,CAAC0hB,EAAQ3tM,MACrBosM,GAAgB5oM,SAAQ,SAAUqwE,GAChCsvB,EAAMtvB,GAAQmkC,EAAOnkC,KACpB1tE,OAGuB,2BAAxBwnM,EAAQ/e,aAA6C1C,IACvDA,EAAMyhB,EAAQ3tM,KACdmjG,EAAM+oF,IAAM,CAACyhB,EAAQ3tM,OAIvBuuL,EAASntL,KAAKusM,IAQhBxnM,KAAKsjG,MAAQ,WACX,IAAIilF,EACAkf,EACA1e,EACA/G,EACAH,EACAnhF,EAEAgnG,EACAC,EAFAhB,EAA2B,EAK/B,MAAOve,EAASxqL,OAAQ,CACtB,GAAgC,+BAA5BwqL,EAAS,GAAGK,YACd,MAGFL,EAASp5D,QAIX,GAAwB,IAApBo5D,EAASxqL,OAGX,OAFAoC,KAAK4nM,oBACL5nM,KAAK8lG,QAAQ,OAAQ,sBAkDvB,GA3CAyiF,EAASqB,GAAWzB,oBAAoBC,GACxCW,EAAOa,GAAWf,oBAAoBN,GAmBjCQ,EAAK,GAAG,GAAGH,WAEd6e,EAAeznM,KAAK6nM,iBAAiBzf,EAAS,GAAIprF,GAE9CyqG,GAGFd,EAA2Bc,EAAa/yL,SACxCq0K,EAAK3uK,QAAQqtL,GAGb1e,EAAK7uL,YAAcutM,EAAavtM,WAChC6uL,EAAKP,UAAYif,EAAajf,SAC9BO,EAAKJ,IAAM8e,EAAa9e,IACxBI,EAAKL,IAAM+e,EAAa/e,IACxBK,EAAKr0K,UAAY+yL,EAAa/yL,UAG9Bq0K,EAAOa,GAAWZ,oBAAoBD,IAKtCse,EAAgBzpM,OAAQ,CAC1B,IAAIkqM,EAQJ,GALEA,EADEl+L,EAAQm+L,eACI/nM,KAAKgoM,gBAAgBjf,GAErB/oL,KAAKioM,kBAAkBlf,IAGlC+e,EAcH,OAZA9nM,KAAKunM,UAAUntL,QAAQ,CACrB8tL,IAAKnf,EAAKltF,MACVkqF,IAAK/oF,EAAM+oF,IACXD,IAAK9oF,EAAM8oF,MAGb9lL,KAAKunM,UAAU3pM,OAASmY,KAAKM,IAAI,EAAGrW,KAAKunM,UAAU3pM,QAEnDwqL,EAAW,GAEXpoL,KAAK4nM,oBACL5nM,KAAK8lG,QAAQ,OAAQ,sBAMvBgnF,GAAgBH,aAAa3vF,GAC7B+rF,EAAO+e,EAGThb,GAAgBP,eAAevvF,EAAO+rF,GAGtC/rF,EAAMuoF,QAAUqE,GAAWC,oBAAoBd,GAE/ClH,EAAOmG,EAAanG,KAAK+H,GAAWN,mBAAmBP,IACvD/rF,EAAMgqF,oBAAsB8F,GAAgBF,kCAAkC5vF,EAAOpzF,EAAQyG,wBAC7FrQ,KAAK8lG,QAAQ,oBAAqBijF,EAAK/pL,KAAI,SAAUkpM,GACnD,MAAO,CACLvf,IAAKuf,EAAIvf,IACTD,IAAKwf,EAAIxf,IACTxuL,WAAYguM,EAAIhuM,gBAGpBwtM,EAAW3e,EAAK,GAChB4e,EAAU5e,EAAKA,EAAKnrL,OAAS,GAC7BoC,KAAK8lG,QAAQ,oBAAqB0gG,GAA0BxpG,EAAMgqF,oBAAqB0gB,EAAShf,IAAKgf,EAAS/e,IAAKgf,EAAQjf,IAAMif,EAAQjzL,SAAUizL,EAAQhf,IAAMgf,EAAQjzL,SAAUiyL,IACnL3mM,KAAK8lG,QAAQ,aAAc,CACzBh0F,MAAOi3K,EAAK,GAAGJ,IACf52K,IAAKg3K,EAAKA,EAAKnrL,OAAS,GAAG+qL,IAAMI,EAAKA,EAAKnrL,OAAS,GAAG8W,WAGzD1U,KAAKunM,UAAUntL,QAAQ,CACrB8tL,IAAKnf,EAAKltF,MACVkqF,IAAK/oF,EAAM+oF,IACXD,IAAK9oF,EAAM8oF,MAGb9lL,KAAKunM,UAAU3pM,OAASmY,KAAKM,IAAI,EAAGrW,KAAKunM,UAAU3pM,QAEnDwqL,EAAW,GACXpoL,KAAK8lG,QAAQ,sBAAuB9I,EAAMgqF,qBAC1ChnL,KAAK8lG,QAAQ,oBAAqB9I,EAAMwvF,mBACxCxK,EAAOgG,EAAahG,KAAKqD,EAAgB,CAACroF,IAG1C0D,EAAQ,IAAIpmG,WAAW0nL,EAAK9nL,WAAa2nL,EAAK3nL,YAE9CmrL,IACA3kF,EAAMr1E,IAAI22J,GACVthF,EAAMr1E,IAAIw2J,EAAMG,EAAK9nL,YACrB8F,KAAK8lG,QAAQ,OAAQ,CACnB9I,MAAOA,EACP0D,MAAOA,IAET1gG,KAAK4nM,eAEL5nM,KAAK8lG,QAAQ,OAAQ,uBAGvB9lG,KAAKwoI,MAAQ,WACXxoI,KAAK4nM,eACLxf,EAAW,GACXpoL,KAAKunM,UAAU3pM,OAAS,EACxBypM,EAAgBzpM,OAAS,EACzBoC,KAAK8lG,QAAQ,UAGf9lG,KAAK4nM,aAAe,WAClB9a,GAAgBH,aAAa3vF,GAG7B6U,OAASnnG,EACTq7K,OAAMr7K,GAKR1K,KAAK6nM,iBAAmB,SAAUL,GAChC,IAKIW,EACAC,EACAtf,EACAuf,EACAztM,EATA0tM,EAAa,KAEjBC,EAAmB,IAEnBC,EAAkB9yL,IAOlB,IAAK9a,EAAI,EAAGA,EAAIoF,KAAKunM,UAAU3pM,OAAQhD,IACrCytM,EAAgBroM,KAAKunM,UAAU3sM,GAC/BkuL,EAAauf,EAAcH,IAErBlrG,EAAM+oF,KAAOwgB,GAAYvpG,EAAM+oF,IAAI,GAAIsiB,EAActiB,IAAI,KAAU/oF,EAAM8oF,KAAOygB,GAAYvpG,EAAM8oF,IAAI,GAAIuiB,EAAcviB,IAAI,MAK9HgD,EAAWJ,IAAM1rF,EAAMwvF,kBAAkB9D,MAK7Cyf,EAAcX,EAAQ9e,IAAMI,EAAWJ,IAAMI,EAAWp0K,SAGpDyzL,IAAgBI,GAAoBJ,GAAeG,KAGhDF,GAAiBI,EAAkBL,KACtCC,EAAgBC,EAChBG,EAAkBL,KAKxB,OAAIC,EACKA,EAAcF,IAGhB,MAKTloM,KAAKioM,kBAAoB,SAAUlf,GACjC,IAAI0f,EAAYC,EAAU78K,EAAOq8K,EAAKhuM,EAAYsuL,EAAU9zK,EAAUozL,EACtE5tM,EAAa6uL,EAAK7uL,WAClBsuL,EAAWO,EAAKP,SAChB9zK,EAAWq0K,EAAKr0K,SAChB+zL,EAAaC,EAAW,EAExB,MAAOD,EAAapB,EAAgBzpM,QAAU8qM,EAAW3f,EAAKnrL,OAAQ,CAIpE,GAHAiuB,EAAQw7K,EAAgBoB,GACxBP,EAAMnf,EAAK2f,GAEP78K,EAAM88J,MAAQuf,EAAIvf,IACpB,MAGEuf,EAAIvf,IAAM98J,EAAM88J,IAGlB8f,KAMFC,IACAxuM,GAAcguM,EAAIhuM,WAClBsuL,GAAY0f,EAAI1f,SAChB9zK,GAAYwzL,EAAIxzL,UAGlB,OAAiB,IAAbg0L,EAEK3f,EAGL2f,IAAa3f,EAAKnrL,OAEb,MAGTkqM,EAAc/e,EAAKhsL,MAAM2rM,GACzBZ,EAAY5tM,WAAaA,EACzB4tM,EAAYpzL,SAAWA,EACvBozL,EAAYtf,SAAWA,EACvBsf,EAAYnf,IAAMmf,EAAY,GAAGnf,IACjCmf,EAAYpf,IAAMof,EAAY,GAAGpf,IAC1Bof,IAKT9nM,KAAKgoM,gBAAkB,SAAUjf,GAC/B,IAAI0f,EAAYC,EAAU78K,EAAOq8K,EAAKS,EAAeC,EAkCjDC,EAjCJJ,EAAapB,EAAgBzpM,OAAS,EACtC8qM,EAAW3f,EAAKnrL,OAAS,EACzB+qM,EAAgB,KAChBC,GAAa,EAEb,MAAOH,GAAc,GAAKC,GAAY,EAAG,CAIvC,GAHA78K,EAAQw7K,EAAgBoB,GACxBP,EAAMnf,EAAK2f,GAEP78K,EAAM88J,MAAQuf,EAAIvf,IAAK,CACzBigB,GAAa,EACb,MAGE/8K,EAAM88J,IAAMuf,EAAIvf,IAClB8f,KAIEA,IAAepB,EAAgBzpM,OAAS,IAI1C+qM,EAAgBD,GAGlBA,KAGF,IAAKE,GAAgC,OAAlBD,EACjB,OAAO,KAWT,GALEE,EADED,EACUF,EAEAC,EAGI,IAAdE,EACF,OAAO9f,EAGT,IAAI+e,EAAc/e,EAAKhsL,MAAM8rM,GACzBnnE,EAAWomE,EAAYt2L,QAAO,SAAUs8F,EAAOo6F,GAIjD,OAHAp6F,EAAM5zG,YAAcguM,EAAIhuM,WACxB4zG,EAAMp5F,UAAYwzL,EAAIxzL,SACtBo5F,EAAM06E,UAAY0f,EAAI1f,SACf16E,IACN,CACD5zG,WAAY,EACZwa,SAAU,EACV8zK,SAAU,IAOZ,OALAsf,EAAY5tM,WAAawnI,EAASxnI,WAClC4tM,EAAYpzL,SAAWgtH,EAAShtH,SAChCozL,EAAYtf,SAAW9mD,EAAS8mD,SAChCsf,EAAYnf,IAAMmf,EAAY,GAAGnf,IACjCmf,EAAYpf,IAAMof,EAAY,GAAGpf,IAC1Bof,GAGT9nM,KAAK8oM,cAAgB,SAAUC,GAC7B1B,EAAkB0B,IAItBrD,GAAoBj+L,UAAY,IAAIy7F,EAUpC2iG,GAAkB,SAAwBj8L,EAASozL,GAIjDh9L,KAAKgpM,eAAiB,EACtBhpM,KAAKg9L,eAAiBA,EACtBpzL,EAAUA,GAAW,GAEQ,qBAAlBA,EAAQq/L,MACjBjpM,KAAKkpM,cAAgBt/L,EAAQq/L,MAE7BjpM,KAAKkpM,aAAc,EAGyB,mBAAnCt/L,EAAQyG,uBACjBrQ,KAAKqQ,uBAAyBzG,EAAQyG,uBAEtCrQ,KAAKqQ,wBAAyB,EAGhCrQ,KAAKmpM,cAAgB,GACrBnpM,KAAKopM,WAAa,KAClBppM,KAAKqpM,aAAe,GACpBrpM,KAAKspM,gBAAkB,GACvBtpM,KAAKupM,gBAAkB,GACvBvpM,KAAKwpM,aAAe,EACpBxpM,KAAKypM,cAAgB,EAErB5D,GAAgBp+L,UAAU65K,KAAK1wK,KAAK5Q,MAGpCA,KAAK/E,KAAO,SAAUyuM,GAGpB,OAAIA,EAAO1tM,KACFgE,KAAKspM,gBAAgBruM,KAAKyuM,GAI/BA,EAAOnhB,OACFvoL,KAAKupM,gBAAgBtuM,KAAKyuM,IAMnC1pM,KAAKmpM,cAAcluM,KAAKyuM,EAAO1sG,OAC/Bh9F,KAAKwpM,cAAgBE,EAAOhpG,MAAMxmG,WAOR,UAAtBwvM,EAAO1sG,MAAMn/F,OACfmC,KAAKopM,WAAaM,EAAO1sG,MACzBh9F,KAAKqpM,aAAapuM,KAAKyuM,EAAOhpG,aAGN,UAAtBgpG,EAAO1sG,MAAMn/F,OACfmC,KAAK2pM,WAAaD,EAAO1sG,MACzBh9F,KAAKqpM,aAAajvL,QAAQsvL,EAAOhpG,YAKvCmlG,GAAgBp+L,UAAY,IAAIy7F,EAEhC2iG,GAAgBp+L,UAAU67F,MAAQ,SAAUi+E,GAC1C,IAOIqoB,EACAC,EACAryL,EAEA5c,EAXAqL,EAAS,EACTihG,EAAQ,CACVpoF,SAAU,GACVgrL,eAAgB,GAChBpoE,SAAU,GACVrgB,KAAM,IAKJjxG,EAAmB,EAGvB,GAAIpQ,KAAKmpM,cAAcvrM,OAASoC,KAAKgpM,eAAgB,CACnD,GAAoB,uBAAhBznB,GAAwD,uBAAhBA,EAI1C,OACK,GAAIvhL,KAAKkpM,YAGd,OACK,GAAkC,IAA9BlpM,KAAKmpM,cAAcvrM,OAc5B,OAPAoC,KAAKypM,qBAEDzpM,KAAKypM,eAAiBzpM,KAAKgpM,iBAC7BhpM,KAAK8lG,QAAQ,QACb9lG,KAAKypM,cAAgB,IAmB3B,GAZIzpM,KAAKopM,YACPh5L,EAAmBpQ,KAAKopM,WAAW5c,kBAAkB7D,IACrDsd,GAAgB5oM,SAAQ,SAAUqwE,GAChCw5B,EAAMma,KAAK3zC,GAAQ1tE,KAAKopM,WAAW17H,KAClC1tE,OACMA,KAAK2pM,aACdv5L,EAAmBpQ,KAAK2pM,WAAWnd,kBAAkB7D,IACrDod,GAAgB1oM,SAAQ,SAAUqwE,GAChCw5B,EAAMma,KAAK3zC,GAAQ1tE,KAAK2pM,WAAWj8H,KAClC1tE,OAGDA,KAAKopM,YAAcppM,KAAK2pM,WAAY,CAiBtC,IAhBkC,IAA9B3pM,KAAKmpM,cAAcvrM,OACrBspG,EAAMrpG,KAAOmC,KAAKmpM,cAAc,GAAGtrM,KAEnCqpG,EAAMrpG,KAAO,WAGfmC,KAAKypM,eAAiBzpM,KAAKmpM,cAAcvrM,OACzC4Z,EAAcwwK,EAAaxwK,YAAYxX,KAAKmpM,eAE5CjiG,EAAM1vF,YAAc,IAAIld,WAAWkd,EAAYtd,YAG/CgtG,EAAM1vF,YAAY6T,IAAI7T,GAEtB0vF,EAAMrtG,KAAO,IAAIS,WAAW0F,KAAKwpM,cAE5B5uM,EAAI,EAAGA,EAAIoF,KAAKqpM,aAAazrM,OAAQhD,IACxCssG,EAAMrtG,KAAKwxB,IAAIrrB,KAAKqpM,aAAazuM,GAAIqL,GACrCA,GAAUjG,KAAKqpM,aAAazuM,GAAGV,WAKjC,IAAKU,EAAI,EAAGA,EAAIoF,KAAKspM,gBAAgB1rM,OAAQhD,IAC3CgvM,EAAU5pM,KAAKspM,gBAAgB1uM,GAC/BgvM,EAAQ99K,UAAYo/J,GAAMn7K,oBAAoB65L,EAAQ5X,SAAU5hL,EAAkBpQ,KAAKqQ,wBACvFu5L,EAAQ79K,QAAUm/J,GAAMn7K,oBAAoB65L,EAAQ7T,OAAQ3lL,EAAkBpQ,KAAKqQ,wBACnF62F,EAAM4iG,eAAeF,EAAQ1mG,SAAU,EACvCgE,EAAMpoF,SAAS7jB,KAAK2uM,GAKtB,IAAKhvM,EAAI,EAAGA,EAAIoF,KAAKupM,gBAAgB3rM,OAAQhD,IAC3CivM,EAAM7pM,KAAKupM,gBAAgB3uM,GAC3BivM,EAAIE,QAAU7e,GAAMn7K,oBAAoB85L,EAAIlhB,IAAKv4K,EAAkBpQ,KAAKqQ,wBACxE62F,EAAMw6B,SAASzmI,KAAK4uM,GAqBtB,IAhBA3iG,EAAMw6B,SAAS66D,aAAev8L,KAAKg9L,eAAeT,aAElDv8L,KAAKmpM,cAAcvrM,OAAS,EAC5BoC,KAAKopM,WAAa,KAClBppM,KAAKqpM,aAAazrM,OAAS,EAC3BoC,KAAKspM,gBAAgB1rM,OAAS,EAC9BoC,KAAKwpM,aAAe,EACpBxpM,KAAKupM,gBAAgB3rM,OAAS,EAI9BoC,KAAK8lG,QAAQ,OAAQoB,GAKhBtsG,EAAI,EAAGA,EAAIssG,EAAMpoF,SAASlhB,OAAQhD,IACrCgvM,EAAU1iG,EAAMpoF,SAASlkB,GACzBoF,KAAK8lG,QAAQ,UAAW8jG,GAO1B,IAAKhvM,EAAI,EAAGA,EAAIssG,EAAMw6B,SAAS9jI,OAAQhD,IACrCivM,EAAM3iG,EAAMw6B,SAAS9mI,GACrBoF,KAAK8lG,QAAQ,WAAY+jG,GAKzB7pM,KAAKypM,eAAiBzpM,KAAKgpM,iBAC7BhpM,KAAK8lG,QAAQ,QACb9lG,KAAKypM,cAAgB,IAIzB5D,GAAgBp+L,UAAUuiM,SAAW,SAAUxjL,GAC7CxmB,KAAKkpM,YAAc1iL,GAUrBo/K,GAAc,SAAoBh8L,GAChC,IAEIw/L,EACAO,EAHArmM,EAAOtD,KACPiqM,GAAa,EAIjBrE,GAAYn+L,UAAU65K,KAAK1wK,KAAK5Q,MAEhC4J,EAAUA,GAAW,GACrB5J,KAAKgnL,oBAAsBp9K,EAAQo9K,qBAAuB,EAC1DhnL,KAAKkqM,kBAAoB,GAEzBlqM,KAAKmqM,iBAAmB,WACtB,IAAI7D,EAAW,GACftmM,KAAKkqM,kBAAoB5D,EACzBA,EAASzoM,KAAO,MAChByoM,EAAStJ,eAAiB,IAAI4C,GAAOF,eAErC4G,EAAS8D,UAAY,IAAI96D,GACzBg3D,EAAS+D,6BAA+B,IAAIzK,GAAOxE,wBAAwB,SAC3EkL,EAASgE,qCAAuC,IAAI1K,GAAOxE,wBAAwB,kBACnFkL,EAASiE,WAAa,IAAI/L,GAC1B8H,EAASkE,eAAiB,IAAI3E,GAAgBj8L,EAAS08L,EAAStJ,gBAChEsJ,EAASmE,eAAiBnE,EAAS8D,UACnC9D,EAAS8D,UAAUjkG,KAAKmgG,EAAS+D,8BAA8BlkG,KAAKmgG,EAASiE,YAC7EjE,EAAS8D,UAAUjkG,KAAKmgG,EAASgE,sCAAsCnkG,KAAKmgG,EAAStJ,gBAAgB72F,KAAKmgG,EAASkE,gBACnHlE,EAAStJ,eAAet3F,GAAG,aAAa,SAAUyjF,GAChDmd,EAAS8D,UAAU7E,aAAapc,EAAMyT,cAExC0J,EAAS8D,UAAU1kG,GAAG,QAAQ,SAAU7rG,GACpB,mBAAdA,EAAKgE,MAA2C,UAAdhE,EAAKgE,MAAoByoM,EAASoE,qBAIxEf,EAAaA,GAAc,CACzBnd,kBAAmB,CACjBxF,oBAAqB1jL,EAAK0jL,qBAE5BzqL,MAAO,OACPsB,KAAM,SAGRyoM,EAASkE,eAAexB,iBACxB1C,EAASoE,mBAAqB,IAAI/E,GAAoBgE,EAAY//L,GAClE08L,EAASoE,mBAAmBhlG,GAAG,MAAOpiG,EAAKqnM,eAAe,uBAC1DrE,EAASoE,mBAAmBhlG,GAAG,aAAcpiG,EAAKwiG,QAAQ/3F,KAAKzK,EAAM,oBAErEgjM,EAASiE,WAAWpkG,KAAKmgG,EAASoE,oBAAoBvkG,KAAKmgG,EAASkE,gBAEpElnM,EAAKwiG,QAAQ,YAAa,CACxB8kG,WAAYjB,EACZkB,WAAYzB,QAIhB9C,EAASkE,eAAe9kG,GAAG,OAAQ1lG,KAAK8lG,QAAQ/3F,KAAK/N,KAAM,SAE3DsmM,EAASkE,eAAe9kG,GAAG,OAAQ1lG,KAAK8lG,QAAQ/3F,KAAK/N,KAAM,SAC3DomM,GAAyBpmM,KAAMsmM,IAGjCtmM,KAAK8qM,gBAAkB,WACrB,IAAIxE,EAAW,GACftmM,KAAKkqM,kBAAoB5D,EACzBA,EAASzoM,KAAO,KAChByoM,EAAStJ,eAAiB,IAAI4C,GAAOF,eAErC4G,EAASyE,aAAe,IAAInL,GAAOL,sBACnC+G,EAASh9F,YAAc,IAAIs2F,GAAOJ,qBAClC8G,EAAS0E,iBAAmB,IAAIpL,GAAOH,iBACvC6G,EAAS7K,wBAA0B,IAAImE,GAAOxE,wBAC9CkL,EAASiE,WAAa,IAAI/L,GAC1B8H,EAAS2E,WAAa,IAAI1G,GAC1B+B,EAAS5L,cAAgB,IAAIkF,GAAO1R,cAActkL,GAClD08L,EAASkE,eAAiB,IAAI3E,GAAgBj8L,EAAS08L,EAAStJ,gBAChEsJ,EAASmE,eAAiBnE,EAASyE,aAEnCzE,EAASyE,aAAa5kG,KAAKmgG,EAASh9F,aAAanD,KAAKmgG,EAAS0E,kBAAkB7kG,KAAKmgG,EAAS7K,yBAG/F6K,EAAS7K,wBAAwBt1F,KAAKmgG,EAAS2E,YAC/C3E,EAAS7K,wBAAwBt1F,KAAKmgG,EAASiE,YAC/CjE,EAAS7K,wBAAwBt1F,KAAKmgG,EAAStJ,gBAAgB72F,KAAKmgG,EAASkE,gBAE7ElE,EAAS2E,WAAW9kG,KAAKmgG,EAAS5L,eAAev0F,KAAKmgG,EAASkE,gBAC/DlE,EAAS0E,iBAAiBtlG,GAAG,QAAQ,SAAU7rG,GAC7C,IAAIe,EAEJ,GAAkB,aAAdf,EAAKgE,KAAqB,CAC5BjD,EAAIf,EAAK0gI,OAAO38H,OAEhB,MAAOhD,IACAwuM,GAAsC,UAAxBvvM,EAAK0gI,OAAO3/H,GAAGiD,KAGtB8rM,GAAsC,UAAxB9vM,EAAK0gI,OAAO3/H,GAAGiD,OACvC8rM,EAAa9vM,EAAK0gI,OAAO3/H,GACzB+uM,EAAWnd,kBAAkBxF,oBAAsB1jL,EAAK0jL,sBAJxDoiB,EAAavvM,EAAK0gI,OAAO3/H,GACzBwuM,EAAW5c,kBAAkBxF,oBAAsB1jL,EAAK0jL,qBAQxDoiB,IAAe9C,EAAS4E,qBAC1B5E,EAASkE,eAAexB,iBACxB1C,EAAS4E,mBAAqB,IAAIxF,GAAoB0D,EAAYx/L,GAClE08L,EAAS4E,mBAAmBxlG,GAAG,MAAOpiG,EAAKqnM,eAAe,uBAC1DrE,EAAS4E,mBAAmBxlG,GAAG,qBAAqB,SAAU8mF,GAKxDmd,IAAe//L,EAAQyG,yBACzBs5L,EAAWnd,kBAAoBA,EAK/B8Z,EAASoE,mBAAmB1D,eAAexa,EAAkB9D,IAAMplL,EAAK0jL,yBAG5Esf,EAAS4E,mBAAmBxlG,GAAG,oBAAqBpiG,EAAKwiG,QAAQ/3F,KAAKzK,EAAM,YAC5EgjM,EAAS4E,mBAAmBxlG,GAAG,oBAAqBpiG,EAAKwiG,QAAQ/3F,KAAKzK,EAAM,2BAC5EgjM,EAAS4E,mBAAmBxlG,GAAG,uBAAuB,SAAUshF,GAC1D2iB,GACFrD,EAASoE,mBAAmBxD,4BAA4BlgB,MAG5Dsf,EAAS4E,mBAAmBxlG,GAAG,aAAcpiG,EAAKwiG,QAAQ/3F,KAAKzK,EAAM,oBAErEgjM,EAAS2E,WAAW9kG,KAAKmgG,EAAS4E,oBAAoB/kG,KAAKmgG,EAASkE,iBAGlEb,IAAerD,EAASoE,qBAE1BpE,EAASkE,eAAexB,iBACxB1C,EAASoE,mBAAqB,IAAI/E,GAAoBgE,EAAY//L,GAClE08L,EAASoE,mBAAmBhlG,GAAG,MAAOpiG,EAAKqnM,eAAe,uBAC1DrE,EAASoE,mBAAmBhlG,GAAG,aAAcpiG,EAAKwiG,QAAQ/3F,KAAKzK,EAAM,oBACrEgjM,EAASoE,mBAAmBhlG,GAAG,oBAAqBpiG,EAAKwiG,QAAQ/3F,KAAKzK,EAAM,2BAE5EgjM,EAASiE,WAAWpkG,KAAKmgG,EAASoE,oBAAoBvkG,KAAKmgG,EAASkE,iBAItElnM,EAAKwiG,QAAQ,YAAa,CACxB8kG,WAAYjB,EACZkB,WAAYzB,QAKlB9C,EAASkE,eAAe9kG,GAAG,OAAQ1lG,KAAK8lG,QAAQ/3F,KAAK/N,KAAM,SAC3DsmM,EAASkE,eAAe9kG,GAAG,YAAY,SAAUylG,GAC/CA,EAAS5O,aAAe+J,EAAStJ,eAAeT,aAChDj5L,EAAKwiG,QAAQ,WAAYqlG,MAE3B7E,EAASkE,eAAe9kG,GAAG,UAAW1lG,KAAK8lG,QAAQ/3F,KAAK/N,KAAM,YAE9DsmM,EAASkE,eAAe9kG,GAAG,OAAQ1lG,KAAK8lG,QAAQ/3F,KAAK/N,KAAM,SAC3DomM,GAAyBpmM,KAAMsmM,IAIjCtmM,KAAKorM,uBAAyB,SAAUpkB,GACtC,IAAIsf,EAAWtmM,KAAKkqM,kBAEftgM,EAAQyG,yBACXrQ,KAAKgnL,oBAAsBA,GAGzB2iB,IACFA,EAAWnd,kBAAkB9D,SAAMh+K,EACnCi/L,EAAWnd,kBAAkB7D,SAAMj+K,EACnCoiL,GAAgBH,aAAagd,GAEzBrD,EAAS+D,8BACX/D,EAAS+D,6BAA6BnwL,iBAItCkvL,IACE9C,EAAS4E,qBACX5E,EAAS4E,mBAAmB3D,UAAY,IAG1C6B,EAAW5c,kBAAkB9D,SAAMh+K,EACnC0+L,EAAW5c,kBAAkB7D,SAAMj+K,EACnCoiL,GAAgBH,aAAayc,GAC7B9C,EAAS5L,cAAclyD,SAGrB89D,EAAS7K,yBACX6K,EAAS7K,wBAAwBvhL,iBAIrCla,KAAKmnM,oBAAsB,SAAUh3L,GAC/Bw5L,GACF3pM,KAAKkqM,kBAAkBQ,mBAAmBvD,oBAAoBh3L,IAIlEnQ,KAAKgqM,SAAW,SAAUxjL,GACxB,IAAI8/K,EAAWtmM,KAAKkqM,kBACpBtgM,EAAQq/L,MAAQziL,EAEZ8/K,GAAYA,EAASkE,gBACvBlE,EAASkE,eAAeR,SAASxjL,IAIrCxmB,KAAK8oM,cAAgB,SAAUzB,GACzB+B,GAAcppM,KAAKkqM,kBAAkBgB,oBACvClrM,KAAKkqM,kBAAkBgB,mBAAmBpC,cAAczB,IAI5DrnM,KAAK2qM,eAAiB,SAAUzhM,GAC9B,IAAI5F,EAAOtD,KACX,OAAO,SAAUknG,GACfA,EAAMhE,OAASh6F,EACf5F,EAAKwiG,QAAQ,MAAOoB,KAKxBlnG,KAAK/E,KAAO,SAAUpB,GACpB,GAAIowM,EAAY,CACd,IAAIoB,EAAQhG,GAAgBxrM,GAExBwxM,GAAyC,QAAhCrrM,KAAKkqM,kBAAkBrsM,KAClCmC,KAAKmqM,mBACKkB,GAAyC,OAAhCrrM,KAAKkqM,kBAAkBrsM,MAC1CmC,KAAK8qM,kBAGPb,GAAa,EAGfjqM,KAAKkqM,kBAAkBO,eAAexvM,KAAKpB,IAI7CmG,KAAKsjG,MAAQ,WACX2mG,GAAa,EAEbjqM,KAAKkqM,kBAAkBO,eAAennG,SAGxCtjG,KAAKyhL,YAAc,WACjBzhL,KAAKkqM,kBAAkBO,eAAehpB,eAGxCzhL,KAAKwoI,MAAQ,WACPxoI,KAAKkqM,kBAAkBO,gBACzBzqM,KAAKkqM,kBAAkBO,eAAejiE,SAK1CxoI,KAAKsrM,cAAgB,WACftrM,KAAKkqM,kBAAkBxP,eACzB16L,KAAKkqM,kBAAkBxP,cAAclyD,UAK3Co9D,GAAYn+L,UAAY,IAAIy7F,EAC5B,IA+QI5L,GA/QA+uG,GAAa,CACfkF,WAAY3F,GACZ4F,mBAAoB9F,GACpB+F,mBAAoB9F,GACpBG,iBAAkBC,GAClBC,iBAAkBC,GAElBO,0BAA2BA,IASzBkF,GAAe,SAAoBtkM,GACrC,OAAOA,IAAU,GAGfukM,GAAgB,SAAqBvkM,GACvC,OAAQ,KAAOA,EAAMtK,SAAS,KAAKC,OAAO,IAGxC8G,GAAM,CACR+nM,WAAYF,GACZr+F,YAAas+F,IAGXE,GAAc,SAAmB7xM,GACnC,IAAIG,EAAS,GAKb,OAJAA,GAAUyG,OAAOqD,aAAajK,EAAO,IACrCG,GAAUyG,OAAOqD,aAAajK,EAAO,IACrCG,GAAUyG,OAAOqD,aAAajK,EAAO,IACrCG,GAAUyG,OAAOqD,aAAajK,EAAO,IAC9BG,GAGL2xM,GAAcD,GACdE,GAAeloM,GAAI+nM,WAEnBI,GAAU,SAASA,EAAQnyM,EAAMsqG,GACnC,IACIvpG,EACA2d,EACA1a,EACAkU,EACAk6L,EALA7/B,EAAU,GAOd,IAAKjoE,EAAKvmG,OAER,OAAO,KAGT,IAAKhD,EAAI,EAAGA,EAAIf,EAAKK,YACnBqe,EAAOwzL,GAAalyM,EAAKe,IAAM,GAAKf,EAAKe,EAAI,IAAM,GAAKf,EAAKe,EAAI,IAAM,EAAIf,EAAKe,EAAI,IACpFiD,EAAOiuM,GAAYjyM,EAAKU,SAASK,EAAI,EAAGA,EAAI,IAC5CmX,EAAMwG,EAAO,EAAI3d,EAAI2d,EAAO1e,EAAKK,WAE7B2D,IAASsmG,EAAK,KACI,IAAhBA,EAAKvmG,OAGPwuK,EAAQnxK,KAAKpB,EAAKU,SAASK,EAAI,EAAGmX,KAGlCk6L,EAAaD,EAAQnyM,EAAKU,SAASK,EAAI,EAAGmX,GAAMoyF,EAAKpnG,MAAM,IAEvDkvM,EAAWruM,SACbwuK,EAAUA,EAAQz6J,OAAOs6L,MAK/BrxM,EAAImX,EAIN,OAAOq6J,GAGL8/B,GAAYF,GACZG,GAAetoM,GAAI+nM,WACnBQ,GAActoB,EAAQnqL,UAEtBgrL,GAAO,SAAc9qL,GACvB,IAAIM,EAAS,CACXC,QAASP,EAAK,GACdQ,MAAO,IAAIC,WAAWT,EAAKU,SAAS,EAAG,KASzC,OANuB,IAAnBJ,EAAOC,QACTD,EAAO6sL,oBAAsBolB,GAAYvyM,EAAKU,SAAS,IAEvDJ,EAAO6sL,oBAAsBmlB,GAAatyM,EAAK,IAAM,GAAKA,EAAK,IAAM,GAAKA,EAAK,IAAM,EAAIA,EAAK,IAGzFM,GAGLkyM,GAAY1nB,GAEZ2nB,GAAmB,SAA0BjyM,GAC/C,MAAO,CACLstL,WAAuB,GAAXttL,EAAM,MAAe,EACjCmrL,UAAsB,EAAXnrL,EAAM,GACjBorL,cAA0B,IAAXprL,EAAM,MAAe,EACpCqrL,eAA2B,GAAXrrL,EAAM,MAAe,EACrCutL,cAA0B,GAAXvtL,EAAM,MAAe,EACpCwtL,gBAA4B,EAAXxtL,EAAM,GACvBytL,oBAAqBztL,EAAM,IAAM,EAAIA,EAAM,KAI3CkyM,GAAqBD,GAErBznB,GAAO,SAAchrL,GACvB,IAqBI6tL,EArBAvtL,EAAS,CACXC,QAASP,EAAK,GACdQ,MAAO,IAAIC,WAAWT,EAAKU,SAAS,EAAG,IACvCgrL,QAAS,IAEPzrL,EAAO,IAAIC,SAASF,EAAKG,OAAQH,EAAKI,WAAYJ,EAAKK,YAE3DsyM,EAAsC,EAAlBryM,EAAOE,MAAM,GAEjCoyM,EAA4C,EAAlBtyM,EAAOE,MAAM,GAEvCqyM,EAA0C,EAAlBvyM,EAAOE,MAAM,GAErCsyM,EAAsC,EAAlBxyM,EAAOE,MAAM,GAEjCuyM,EAAuC,EAAlBzyM,EAAOE,MAAM,GAElCwyM,EAAuD,EAAlB1yM,EAAOE,MAAM,GAElDgmM,EAAcvmM,EAAKY,UAAU,GACzBuL,EAAS,EAGTumM,IAEFryM,EAAO0sL,WAAa/sL,EAAKgzM,SAAS7mM,GAClCA,GAAU,GAKRwmM,GAA2BpM,IAC7B3Y,EAAS,CACPrtL,MAAOkyM,GAAmB1yM,EAAKU,SAAS0L,EAAQA,EAAS,KAE3DA,GAAU,EAENymM,IACFhlB,EAAOhzK,SAAW5a,EAAKY,UAAUuL,GACjCA,GAAU,GAGR0mM,IACFjlB,EAAOnvK,KAAOze,EAAKY,UAAUuL,GAC7BA,GAAU,GAGR4mM,IACqB,IAAnB1yM,EAAOC,QACTstL,EAAOH,sBAAwBztL,EAAKgzM,SAAS7mM,GAE7CyhL,EAAOH,sBAAwBztL,EAAKY,UAAUuL,GAGhDA,GAAU,GAGZ9L,EAAOorL,QAAQtqL,KAAKysL,GACpB2Y,KAGF,MAAOA,IACL3Y,EAAS,GAELglB,IACFhlB,EAAOhzK,SAAW5a,EAAKY,UAAUuL,GACjCA,GAAU,GAGR0mM,IACFjlB,EAAOnvK,KAAOze,EAAKY,UAAUuL,GAC7BA,GAAU,GAGR2mM,IACFllB,EAAOrtL,MAAQkyM,GAAmB1yM,EAAKU,SAAS0L,EAAQA,EAAS,IACjEA,GAAU,GAGR4mM,IACqB,IAAnB1yM,EAAOC,QACTstL,EAAOH,sBAAwBztL,EAAKgzM,SAAS7mM,GAE7CyhL,EAAOH,sBAAwBztL,EAAKY,UAAUuL,GAGhDA,GAAU,GAGZ9L,EAAOorL,QAAQtqL,KAAKysL,GAGtB,OAAOvtL,GAGL4yM,GAAYloB,GAEZD,GAAO,SAAc/qL,GACvB,IAaIe,EAbAd,EAAO,IAAIC,SAASF,EAAKG,OAAQH,EAAKI,WAAYJ,EAAKK,YACvDC,EAAS,CACXC,QAASP,EAAK,GACdQ,MAAO,IAAIC,WAAWT,EAAKU,SAAS,EAAG,IACvC2kM,QAASplM,EAAKY,UAAU,IAEtBsyM,EAA0C,EAAlB7yM,EAAOE,MAAM,GACrC4yM,EAAkD,EAAlB9yM,EAAOE,MAAM,GAC7C6yM,EAAiD,EAAlB/yM,EAAOE,MAAM,GAC5C8yM,EAA6C,GAAlBhzM,EAAOE,MAAM,GACxC+yM,EAA8C,GAAlBjzM,EAAOE,MAAM,GACzCgzM,EAAoC,MAAlBlzM,EAAOE,MAAM,GAC/BizM,EAAsC,OAAlBnzM,EAAOE,MAAM,GAuCrC,OArCAO,EAAI,EAEAoyM,IACFpyM,GAAK,EAGLT,EAAOkvL,eAAiBvvL,EAAKY,UAAU,IACvCE,GAAK,GAGHqyM,IACF9yM,EAAOozM,uBAAyBzzM,EAAKY,UAAUE,GAC/CA,GAAK,GAGHsyM,IACF/yM,EAAOqzM,sBAAwB1zM,EAAKY,UAAUE,GAC9CA,GAAK,GAGHuyM,IACFhzM,EAAOszM,kBAAoB3zM,EAAKY,UAAUE,GAC1CA,GAAK,GAGHwyM,IACFjzM,EAAOuzM,mBAAqB5zM,EAAKY,UAAUE,IAGzCyyM,IACFlzM,EAAOkzM,iBAAkB,IAGtBL,GAAyBM,IAC5BnzM,EAAOwzM,sBAAuB,GAGzBxzM,GAGLyzM,GAAYhpB,GACZipB,GAAuC,qBAAfC,WAA6BA,WAA+B,qBAAXvqM,OAAyBA,OAA2B,qBAAXH,EAAyBA,EAAyB,qBAATE,KAAuBA,KAAO,GAI3Lg0F,GADoB,qBAAX/zF,OACHA,OAC6B,qBAAnBsqM,GACVA,GACmB,qBAATvqM,KACVA,KAEA,GAGR,IAidI3I,GAAWmxB,GAAWiiL,GAAsBC,GAAkBC,GAAWC,GAjdzEC,GAAW72G,GACX02F,GAAkCD,GAAoBC,gCACtDE,GAAgBwM,GAAcxM,cAY9BkgB,GAAc,SAAqBnoM,EAAQs/K,GAG7C,IAFA,IAAI8oB,EAAoBpoM,EAEfrL,EAAI,EAAGA,EAAI2qL,EAAQ3nL,OAAQhD,IAAK,CACvC,IAAI8sL,EAASnC,EAAQ3qL,GAErB,GAAIyzM,EAAoB3mB,EAAOnvK,KAC7B,OAAOmvK,EAGT2mB,GAAqB3mB,EAAOnvK,KAG9B,OAAO,MAkBL+1L,GAAc,SAAqBC,EAAWhpB,EAAS2Z,GACzD,IAKIsP,EACA5zM,EACAgD,EACA6wM,EARAC,EAAU,IAAI30M,SAASw0M,EAAUv0M,OAAQu0M,EAAUt0M,WAAYs0M,EAAUr0M,YACzEC,EAAS,CACXw0M,KAAM,GACNC,QAAS,IAOX,IAAKh0M,EAAI,EAAGA,EAAI,EAAI2zM,EAAU3wM,OAAQhD,GAAKgD,EAIzC,GAHAA,EAAS8wM,EAAQh0M,UAAUE,GAC3BA,GAAK,IAEDgD,GAAU,GAId,OAAuB,GAAf2wM,EAAU3zM,IAChB,KAAK,EACH,IAAIf,EAAO00M,EAAUh0M,SAASK,EAAI,EAAGA,EAAI,EAAIgD,GACzCixM,EAAiBT,GAAYxzM,EAAG2qL,GASpC,GARAipB,EAAS,CACP/lB,YAAa,WACblwK,KAAM3a,EACN/D,KAAMA,EACN80L,YAAaX,GAAgCn0L,GAC7CqlM,QAASA,GAGP2P,EACFL,EAAO7lB,IAAMkmB,EAAelmB,IAC5B6lB,EAAO9lB,IAAMmmB,EAAenmB,IAC5B+lB,EAAoBI,MACf,KAAIJ,EAKJ,CACLt0M,EAAOw0M,KAAK1zM,KAAK,CACfgmH,MAAO,OACPppB,QAAS,gDAAmDj9F,EAAI,gBAAkBskM,EAAU,sBAE9F,MAPAsP,EAAO7lB,IAAM8lB,EAAkB9lB,IAC/B6lB,EAAO9lB,IAAM+lB,EAAkB/lB,IASjCvuL,EAAOy0M,QAAQ3zM,KAAKuzM,GACpB,MAIN,OAAOr0M,GAiBL20M,GAAe,SAAsBC,EAAO/nB,EAAqBpC,GACnE,IAAIqe,EAAajc,EACbwmB,EAAwB5oB,EAAK4oB,uBAAyB,EACtDC,EAAoB7oB,EAAK6oB,mBAAqB,EAC9CvO,EAAUta,EAAKsa,QACf8P,EAAa,GAiCjB,OAhCAD,EAAM1xM,SAAQ,SAAUwnL,GAItB,IAAIoqB,EAAWlC,GAAUloB,GACrBU,EAAU0pB,EAAS1pB,QACvBA,EAAQloL,SAAQ,SAAUqqL,QACAh9K,IAApBg9K,EAAOhzK,WACTgzK,EAAOhzK,SAAW84L,QAGA9iM,IAAhBg9K,EAAOnvK,OACTmvK,EAAOnvK,KAAOk1L,GAGhB/lB,EAAOwX,QAAUA,EACjBxX,EAAOgB,IAAMua,OAEwBv4L,IAAjCg9K,EAAOH,wBACTG,EAAOH,sBAAwB,GAGP,kBAAf0b,GACTvb,EAAOiB,IAAMsa,EAAakL,GAASn6L,OAAO0zK,EAAOH,uBACjD0b,GAAckL,GAASn6L,OAAO0zK,EAAOhzK,YAErCgzK,EAAOiB,IAAMsa,EAAavb,EAAOH,sBACjC0b,GAAcvb,EAAOhzK,aAGzBs6L,EAAaA,EAAWr9L,OAAO4zK,MAE1BypB,GAYLE,GAAmB,SAA0Bv7L,EAASw7L,GAExD,IAAIC,EAAQlD,GAAUv4L,EAAS,CAAC,OAAQ,SAEpC07L,EAAQnD,GAAUv4L,EAAS,CAAC,SAC5B27L,EAAc,GACdC,EAAgB,GAsCpB,OApCAF,EAAMhyM,SAAQ,SAAUwkL,EAAM5/K,GAC5B,IAAIutM,EAAeJ,EAAMntM,GACzBstM,EAAct0M,KAAK,CACjB4mL,KAAMA,EACNe,KAAM4sB,OAGVD,EAAclyM,SAAQ,SAAUoyM,GAC9B,IAUIlqB,EACAprL,EAXA0nL,EAAO4tB,EAAK5tB,KACZe,EAAO6sB,EAAK7sB,KACZgC,EAAOsnB,GAAUtpB,EAAM,CAAC,SAExB8sB,EAAa9B,GAAUhpB,EAAK,IAC5Bsa,EAAUwQ,EAAWxQ,QACrBva,EAAOunB,GAAUtpB,EAAM,CAAC,SAExBoE,EAAsBrC,EAAK/mL,OAAS,EAAIyuM,GAAU1nB,EAAK,IAAIqC,oBAAsB,EACjF+nB,EAAQ7C,GAAUtpB,EAAM,CAAC,SAIzBusB,IAAiBjQ,GAAW6P,EAAMnxM,OAAS,IAC7C2nL,EAAUupB,GAAaC,EAAO/nB,EAAqB0oB,GACnDv1M,EAASm0M,GAAYzsB,EAAM0D,EAAS2Z,GAE/BoQ,EAAYpQ,KACfoQ,EAAYpQ,GAAW,CACrB0P,QAAS,GACTD,KAAM,KAIVW,EAAYpQ,GAAS0P,QAAUU,EAAYpQ,GAAS0P,QAAQj9L,OAAOxX,EAAOy0M,SAC1EU,EAAYpQ,GAASyP,KAAOW,EAAYpQ,GAASyP,KAAKh9L,OAAOxX,EAAOw0M,UAGjEW,GAoBLK,GAAwB,SAA+Bh8L,EAASurL,EAASvkM,GAC3E,IAAI20M,EAEJ,GAAgB,OAAZpQ,EACF,OAAO,KAGToQ,EAAcJ,GAAiBv7L,EAASurL,GACxC,IAAI0Q,EAAYN,EAAYpQ,IAAY,GACxC,MAAO,CACL0P,QAASgB,EAAUhB,QACnBD,KAAMiB,EAAUjB,KAChBh0M,UAAWA,IAQXk1M,GAAgB,WAClB,IACInV,EAEAoV,EAEA5Q,EAEAvkM,EAEAo1M,EAEAC,EAXAC,GAAgB,EAiBpBjwM,KAAKiwM,cAAgB,WACnB,OAAOA,GAQTjwM,KAAKshL,KAAO,SAAU13K,GACpB8wL,EAAgB,IAAIxM,GACpB+hB,GAAgB,EAChBD,IAAiBpmM,GAAUA,EAAQsmM,UAEnCxV,EAAch1F,GAAG,QAAQ,SAAUwB,GAEjCA,EAAMp7E,UAAYo7E,EAAM8qF,SAAWr3L,EACnCusG,EAAMn7E,QAAUm7E,EAAM6uF,OAASp7L,EAC/Bo1M,EAAejxL,SAAS7jB,KAAKisG,GAC7B6oG,EAAejG,eAAe5iG,EAAMhE,SAAU,KAEhDw3F,EAAch1F,GAAG,OAAO,SAAU7iG,GAChCktM,EAAepB,KAAK1zM,KAAK4H,OAU7B7C,KAAKmwM,UAAY,SAAUC,EAAeC,GACxC,QAAID,GAA0C,IAAzBA,EAAcxyM,QAAgByyM,GAAoC,kBAAfA,GAA8D,IAAnCrpM,OAAO0K,KAAK2+L,GAAYzyM,UAIpHshM,IAAYkR,EAAc,IAAMz1M,IAAc01M,EAAWnR,KAclEl/L,KAAK+K,MAAQ,SAAU4I,EAASy8L,EAAeC,GAC7C,IAAIC,EAEJ,IAAKtwM,KAAKiwM,gBACR,OAAO,KACF,IAAKG,IAAkBC,EAC5B,OAAO,KACF,GAAIrwM,KAAKmwM,UAAUC,EAAeC,GAGvCnR,EAAUkR,EAAc,GACxBz1M,EAAY01M,EAAWnR,QAGlB,GAAgB,OAAZA,IAAqBvkM,EAE9B,OADAm1M,EAAa70M,KAAK0Y,GACX,KAIT,MAAOm8L,EAAalyM,OAAS,EAAG,CAC9B,IAAI2yM,EAAgBT,EAAa9gF,QACjChvH,KAAK+K,MAAMwlM,EAAeH,EAAeC,GAS3C,OANAC,EAAaX,GAAsBh8L,EAASurL,EAASvkM,GAEjD21M,GAAcA,EAAW3B,OAC3BoB,EAAepB,KAAOoB,EAAepB,KAAKh9L,OAAO2+L,EAAW3B,OAG3C,OAAf2B,GAAwBA,EAAW1B,SAYvC5uM,KAAKwwM,SAASF,EAAW1B,SAEzB5uM,KAAKivL,cACE8gB,GAdDA,EAAepB,KAAK/wM,OACf,CACL+wM,KAAMoB,EAAepB,KACrB7vL,SAAU,GACVgrL,eAAgB,IAIb,MAgBX9pM,KAAKwwM,SAAW,SAAUC,GACxB,IAAKzwM,KAAKiwM,kBAAoBQ,GAAwB,IAAhBA,EAAK7yM,OACzC,OAAO,KAGT6yM,EAAKpzM,SAAQ,SAAUqzM,GACrBhW,EAAcz/L,KAAKy1M,OASvB1wM,KAAKivL,YAAc,WACjB,IAAKjvL,KAAKiwM,gBACR,OAAO,KAGJD,EAGHtV,EAAclZ,eAFdkZ,EAAcp3F,SAUlBtjG,KAAK2wM,oBAAsB,WACzBZ,EAAejxL,SAAW,GAC1BixL,EAAejG,eAAiB,GAChCiG,EAAepB,KAAO,IAQxB3uM,KAAK4wM,mBAAqB,WACxB,IAAK5wM,KAAKiwM,gBACR,OAAO,KAGTvV,EAAclyD,SAShBxoI,KAAK6wM,iBAAmB,WACtB7wM,KAAK2wM,sBACL3wM,KAAK4wM,sBAOP5wM,KAAKwoI,MAAQ,WACXsnE,EAAe,GACf5Q,EAAU,KACVvkM,EAAY,KAEPo1M,EAQH/vM,KAAK2wM,sBAPLZ,EAAiB,CACfjxL,SAAU,GAEVgrL,eAAgB,GAChB6E,KAAM,IAMV3uM,KAAK4wM,sBAGP5wM,KAAKwoI,SAGHsoE,GAAgBjB,GAChBjE,GAAa/nM,GAAI+nM,WACjBv+F,GAAcxpG,GAAIwpG,YAClB1zG,GAAYmqL,EAAQnqL,UAqBxBgB,GAAY,SAAmB2mL,GAC7B,IAAInnL,EAAS,GACT42M,EAAQ7E,GAAU5qB,EAAM,CAAC,OAAQ,SAErC,OAAOyvB,EAAMv/L,QAAO,SAAUrX,EAAQioL,GACpC,IAAIC,EAAMjoL,EAAS6H,EAAO4Y,EAAI0nK,EAG9B,OAFAF,EAAO6pB,GAAU9pB,EAAM,CAAC,SAAS,GAE5BC,GAILjoL,EAAUioL,EAAK,GACfpgL,EAAoB,IAAZ7H,EAAgB,GAAK,GAC7BygB,EAAK+wL,GAAWvpB,EAAKpgL,IAAU,GAAKogL,EAAKpgL,EAAQ,IAAM,GAAKogL,EAAKpgL,EAAQ,IAAM,EAAIogL,EAAKpgL,EAAQ,IAChGsgL,EAAO2pB,GAAU9pB,EAAM,CAAC,OAAQ,SAAS,GAEpCG,GAILnoL,EAAUmoL,EAAK,GACftgL,EAAoB,IAAZ7H,EAAgB,GAAK,GAC7BD,EAAO0gB,GAAM+wL,GAAWrpB,EAAKtgL,IAAU,GAAKsgL,EAAKtgL,EAAQ,IAAM,GAAKsgL,EAAKtgL,EAAQ,IAAM,EAAIsgL,EAAKtgL,EAAQ,IACjG9H,GANE,MATA,OAgBRA,IAoBL2xB,GAAY,SAAmBnxB,EAAWkqG,GACxC,IAAIuqG,EAEJA,EAAQlD,GAAUrnG,EAAU,CAAC,OAAQ,SAErC,IAAImsG,EAAa5B,EAAM59L,QAAO,SAAUkB,EAAKkwK,GAC3C,IAQIquB,EASAhhM,EAjBA20K,EAAOsnB,GAAUtpB,EAAM,CAAC,SAAS,GAEjC/nK,EAAK+wL,GAAWhnB,EAAK,IAAM,GAAKA,EAAK,IAAM,GAAKA,EAAK,IAAM,EAAIA,EAAK,IAEpEiI,EAAQlyL,EAAUkgB,IAAO,IAEzB8pK,EAAOunB,GAAUtpB,EAAM,CAAC,SAAS,GACjChjE,EAAK,IAAI7lH,SAAS4qL,EAAK3qL,OAAQ2qL,EAAK1qL,WAAY0qL,EAAKzqL,YA0BzD,OAtBE+2M,EADc,IAAZtsB,EAAK,GACIhrL,GAAUgrL,EAAKpqL,SAAS,EAAG,KAE3BqlH,EAAGllH,UAAU,GAMF,kBAAbu2M,EACThhM,EAAUghM,EAAW9C,GAASn6L,OAAO64K,GACR,kBAAbokB,GAA0B18L,MAAM08L,KAChDhhM,EAAUghM,EAAWpkB,GAGnB58K,EAAUpT,OAAOsX,mBACnBlE,EAAUpT,OAAOoT,IAGfA,EAAUyC,IACZA,EAAMzC,GAGDyC,IACNgD,KACH,MAA6B,kBAAfs7L,GAA2BnmG,SAASmmG,GAAcA,EAAa,GAuB/EjD,GAAuB,SAA8BsC,EAAYxrG,GAC/D,IAGIq6F,EAHAgS,EAAYhF,GAAUrnG,EAAU,CAAC,OAAQ,SACzCmiF,EAAsB,EACtBO,EAAwB,EAG5B,GAAI2pB,GAAaA,EAAUtzM,OAAQ,CAIjC,IAAIgnL,EAAOsnB,GAAUgF,EAAU,GAAI,CAAC,SAAS,GACzCrsB,EAAOqnB,GAAUgF,EAAU,GAAI,CAAC,SAAS,GACzCvsB,EAAOunB,GAAUgF,EAAU,GAAI,CAAC,SAAS,GAE7C,GAAItsB,EAAM,CACR,IAAIusB,EAAavD,GAAUhpB,GAC3Bsa,EAAUiS,EAAWjS,QAGvB,GAAIva,EAAM,CACR,IAAIysB,EAAa/E,GAAU1nB,GAC3BqC,EAAsBoqB,EAAWpqB,oBAGnC,GAAInC,EAAM,CACR,IAAIwsB,EAAatE,GAAUloB,GAEvBwsB,EAAW9rB,SAAW8rB,EAAW9rB,QAAQ3nL,SAC3C2pL,EAAwB8pB,EAAW9rB,QAAQ,GAAGgC,uBAAyB,IAO7E,IAAI5sL,EAAY01M,EAAWnR,IAAY,IAEJ,kBAAxBlY,IACTO,EAAwB4mB,GAASn6L,OAAOuzK,GACxC5sL,EAAYwzM,GAASn6L,OAAOrZ,IAG9B,IAAIR,GAAU6sL,EAAsBO,GAAyB5sL,EAM7D,MAJsB,kBAAXR,GAAuBA,EAAS0C,OAAOsX,mBAChDha,EAAS0C,OAAO1C,IAGXA,GAeT6zM,GAAmB,SAA0B1sB,GAC3C,IAAIyvB,EAAQ7E,GAAU5qB,EAAM,CAAC,OAAQ,SACjC8uB,EAAgB,GAmBpB,OAlBAW,EAAM1zM,SAAQ,SAAU+kL,GACtB,IAAIkvB,EAAQpF,GAAU9pB,EAAM,CAAC,OAAQ,SACjCmvB,EAAQrF,GAAU9pB,EAAM,CAAC,SAC7BkvB,EAAMj0M,SAAQ,SAAUmlL,EAAMvgL,GAC5B,IAEInI,EACAM,EACA8kM,EAJAsS,EAAc1F,GAAYtpB,EAAKjoL,SAAS,EAAG,KAC3C8nL,EAAOkvB,EAAMtvM,GAKG,SAAhBuvM,IACF13M,EAAO,IAAIC,SAASsoL,EAAKroL,OAAQqoL,EAAKpoL,WAAYooL,EAAKnoL,YACvDE,EAAUN,EAAK23M,SAAS,GACxBvS,EAAsB,IAAZ9kM,EAAgBN,EAAKY,UAAU,IAAMZ,EAAKY,UAAU,IAC9D01M,EAAcn1M,KAAKikM,UAIlBkR,GAGTlC,GAA8B,SAAqC3rB,GAEjE,IAAInoL,EAAUmoL,EAAK,GACftgL,EAAoB,IAAZ7H,EAAgB,GAAK,GACjC,OAAOwxM,GAAWrpB,EAAKtgL,IAAU,GAAKsgL,EAAKtgL,EAAQ,IAAM,GAAKsgL,EAAKtgL,EAAQ,IAAM,EAAIsgL,EAAKtgL,EAAQ,KAQpGgsM,GAAY,SAAmB3sB,GAC7B,IAAIyvB,EAAQ7E,GAAU5qB,EAAM,CAAC,OAAQ,SACjC/mD,EAAS,GAuFb,OAtFAw2E,EAAM1zM,SAAQ,SAAU+kL,GACtB,IAEItoL,EAAM43M,EAFN10G,EAAQ,GACRqlF,EAAO6pB,GAAU9pB,EAAM,CAAC,SAAS,GAGjCC,IACFvoL,EAAO,IAAIC,SAASsoL,EAAKroL,OAAQqoL,EAAKpoL,WAAYooL,EAAKnoL,YACvDw3M,EAAc53M,EAAK23M,SAAS,GAC5Bz0G,EAAMniF,GAAqB,IAAhB62L,EAAoB53M,EAAKY,UAAU,IAAMZ,EAAKY,UAAU,KAGrE,IAAI8nL,EAAO0pB,GAAU9pB,EAAM,CAAC,OAAQ,SAAS,GAE7C,GAAII,EAAM,CACR,IAAI3kL,EAAOiuM,GAAYtpB,EAAKjoL,SAAS,EAAG,KAGtCyiG,EAAMn/F,KADK,SAATA,EACW,QACK,SAATA,EACI,QAEAA,EAKjB,IAAI8kL,EAAOupB,GAAU9pB,EAAM,CAAC,OAAQ,OAAQ,OAAQ,SAAS,GAE7D,GAAIO,EAAM,CACR,IAAIgvB,EAAqBhvB,EAAKpoL,SAAS,GAEvCyiG,EAAMzgG,MAAQuvM,GAAY6F,EAAmBp3M,SAAS,EAAG,IACzD,IACIq3M,EAAaC,EADbC,EAAW5F,GAAUyF,EAAoB,CAAC30G,EAAMzgG,QAAQ,GAGxDu1M,IAEE,kBAAkBjzM,KAAKm+F,EAAMzgG,QAG/Bq1M,EAAcE,EAASv3M,SAAS,IAChCs3M,EAAkB/F,GAAY8F,EAAYr3M,SAAS,EAAG,IAE9B,SAApBs3M,GAA8BD,EAAYh0M,OAAS,IACrDo/F,EAAMzgG,OAAS,IAGfygG,EAAMzgG,OAAS8wG,GAAYukG,EAAY,IAEvC50G,EAAMzgG,OAAS8wG,GAAYukG,EAAY,KAEvC50G,EAAMzgG,OAAS8wG,GAAYukG,EAAY,MAIvC50G,EAAMzgG,MAAQ,eAEP,cAAcsC,KAAKm+F,EAAMzgG,QAElCq1M,EAAcE,EAASv3M,SAAS,IAChCs3M,EAAkB/F,GAAY8F,EAAYr3M,SAAS,EAAG,IAE9B,SAApBs3M,GAA8BD,EAAYh0M,OAAS,IAA0B,IAApBg0M,EAAY,KACvE50G,EAAMzgG,OAAS,IAAM8wG,GAAYukG,EAAY,KAE7C50G,EAAMzgG,OAAS,IAAM8wG,GAAYukG,EAAY,MAAQ,EAAI,IAAMp1M,QAAQ,KAAM,KAI7EwgG,EAAMzgG,MAAQ,aAIhBygG,EAAMzgG,MAAQygG,EAAMzgG,MAAMoB,eAKhC,IAAI4kL,EAAO2pB,GAAU9pB,EAAM,CAAC,OAAQ,SAAS,GAEzCG,IACFvlF,EAAMriG,UAAYuzM,GAA4B3rB,IAGhDhoD,EAAOt/H,KAAK+hG,MAEPu9B,GAGT,IAAIw3E,GAAU,CAEZ/F,QAASE,GACT5G,UAAWwG,GACXnxM,UAAWA,GACXmxB,UAAWA,GACXiiL,qBAAsBA,GACtBqC,cAAepC,GACfzzE,OAAQ0zE,GACRC,4BAA6BA,IAG3B8D,GAAW,SAAkB5iB,GAC/B,IAAIgP,EAAkB,GAAZhP,EAAO,GAGjB,OAFAgP,IAAQ,EACRA,GAAOhP,EAAO,GACPgP,GAGL6T,GAAiC,SAAwC7iB,GAC3E,SAAsB,GAAZA,EAAO,KAGf8iB,GAAqB,SAA4B9iB,GACnD,IAAInpL,EAAS,EAUb,OAJiB,GAAZmpL,EAAO,MAAe,EAAI,IAC7BnpL,GAAUmpL,EAAO,GAAK,GAGjBnpL,GAGLq/L,GAAY,SAAmBlW,EAAQ0O,GACzC,IAAIM,EAAM4T,GAAS5iB,GAEnB,OAAY,IAARgP,EACK,MACEA,IAAQN,EACV,MACEA,EACF,MAGF,MAGLR,GAAW,SAAkBlO,GAC/B,IAAI+iB,EAAOF,GAA+B7iB,GACtCnpL,EAAS,EAAIisM,GAAmB9iB,GAMpC,OAJI+iB,IACFlsM,GAAUmpL,EAAOnpL,GAAU,IAGC,GAAtBmpL,EAAOnpL,EAAS,MAAe,EAAImpL,EAAOnpL,EAAS,KAGzDs3L,GAAW,SAAkBnO,GAC/B,IAAIqO,EAAkB,GAClB0U,EAAOF,GAA+B7iB,GACtCgjB,EAAgB,EAAIF,GAAmB9iB,GAW3C,GATI+iB,IACFC,GAAiBhjB,EAAOgjB,GAAiB,GAQT,EAA5BhjB,EAAOgjB,EAAgB,GAA7B,CAIA,IAAIpU,EAAeC,EAAUC,EAE7BF,GAA6C,GAA5B5O,EAAOgjB,EAAgB,KAAc,EAAIhjB,EAAOgjB,EAAgB,GACjFnU,EAAW,EAAID,EAAgB,EAG/BE,GAAkD,GAA7B9O,EAAOgjB,EAAgB,MAAe,EAAIhjB,EAAOgjB,EAAgB,IAEtF,IAAInsM,EAAS,GAAKi4L,EAElB,MAAOj4L,EAASg4L,EAAU,CACxB,IAAIrjM,EAAIw3M,EAAgBnsM,EAExBw3L,GAAiC,GAAhBrO,EAAOx0L,EAAI,KAAc,EAAIw0L,EAAOx0L,EAAI,IAAMw0L,EAAOx0L,GAGtEqL,GAA0D,IAA9B,GAAhBmpL,EAAOx0L,EAAI,KAAc,EAAIw0L,EAAOx0L,EAAI,IAGtD,OAAO6iM,IAGL4U,GAAe,SAAsBjjB,EAAQqO,GAC/C,IAAIW,EAAM4T,GAAS5iB,GACfvxL,EAAO4/L,EAAgBW,GAE3B,OAAQvgM,GACN,KAAK88L,GAAYC,iBACf,MAAO,QAET,KAAKD,GAAYE,iBACf,MAAO,QAET,KAAKF,GAAYG,qBACf,MAAO,iBAET,QACE,OAAO,OAITwX,GAAe,SAAsBljB,GACvC,IAAI+iB,EAAOF,GAA+B7iB,GAE1C,IAAK+iB,EACH,OAAO,KAGT,IAAIlsM,EAAS,EAAIisM,GAAmB9iB,GAEpC,GAAInpL,GAAUmpL,EAAOl1L,WAWnB,OAAO,KAGT,IACI2kM,EADAD,EAAM,KAkCV,OA7BAC,EAAczP,EAAOnpL,EAAS,GASZ,IAAd44L,IACFD,EAAM,GAINA,EAAIjW,KAA4B,GAArByG,EAAOnpL,EAAS,KAAc,IAA4B,IAAtBmpL,EAAOnpL,EAAS,MAAe,IAA4B,IAAtBmpL,EAAOnpL,EAAS,MAAe,IAA4B,IAAtBmpL,EAAOnpL,EAAS,MAAe,GAA2B,IAAtBmpL,EAAOnpL,EAAS,OAAgB,EAC7L24L,EAAIjW,KAAO,EAEXiW,EAAIjW,MAA8B,EAAtByG,EAAOnpL,EAAS,OAAgB,EAE5C24L,EAAIlW,IAAMkW,EAAIjW,IAEI,GAAdkW,IACFD,EAAIlW,KAA6B,GAAtB0G,EAAOnpL,EAAS,MAAe,IAA4B,IAAtBmpL,EAAOnpL,EAAS,MAAe,IAA4B,IAAtBmpL,EAAOnpL,EAAS,MAAe,IAA4B,IAAtBmpL,EAAOnpL,EAAS,MAAe,GAA2B,IAAtBmpL,EAAOnpL,EAAS,OAAgB,EAC9L24L,EAAIlW,KAAO,EAEXkW,EAAIlW,MAA8B,EAAtB0G,EAAOnpL,EAAS,OAAgB,IAIzC24L,GAGL2T,GAAmB,SAA0B10M,GAC/C,OAAQA,GACN,KAAK,EACH,MAAO,4CAET,KAAK,EACH,MAAO,WAET,KAAK,EACH,MAAO,yBAET,KAAK,EACH,MAAO,yBAET,KAAK,EACH,MAAO,6BAET,QACE,OAAO,OAIT20M,GAA8B,SAAqCpjB,GAQrE,IAPA,IAKIqjB,EALAxsM,EAAS,EAAIisM,GAAmB9iB,GAChCsjB,EAActjB,EAAO70L,SAAS0L,GAC9B0sM,EAAS,EACTC,EAAiB,EACjBC,GAAgB,EAGbD,EAAiBF,EAAYx4M,WAAa,EAAG04M,IAClD,GAAwC,IAApCF,EAAYE,EAAiB,GAAU,CAEzCD,EAASC,EAAiB,EAC1B,MAIJ,MAAOD,EAASD,EAAYx4M,WAG1B,OAAQw4M,EAAYC,IAClB,KAAK,EAEH,GAAgC,IAA5BD,EAAYC,EAAS,GAAU,CACjCA,GAAU,EACV,MACK,GAAgC,IAA5BD,EAAYC,EAAS,GAAU,CACxCA,IACA,MAGEC,EAAiB,IAAMD,EAAS,IAClCF,EAAUF,GAAmD,GAAlCG,EAAYE,EAAiB,IAExC,8CAAZH,IACFI,GAAgB,IAKpB,GACEF,UAC+B,IAAxBD,EAAYC,IAAiBA,EAASD,EAAY90M,QAE3Dg1M,EAAiBD,EAAS,EAC1BA,GAAU,EACV,MAEF,KAAK,EAEH,GAAgC,IAA5BD,EAAYC,EAAS,IAAwC,IAA5BD,EAAYC,EAAS,GAAU,CAClEA,GAAU,EACV,MAGFF,EAAUF,GAAmD,GAAlCG,EAAYE,EAAiB,IAExC,8CAAZH,IACFI,GAAgB,GAGlBD,EAAiBD,EAAS,EAC1BA,GAAU,EACV,MAEF,QAGEA,GAAU,EACV,MAgBN,OAZAD,EAAcA,EAAYn4M,SAASq4M,GACnCD,GAAUC,EACVA,EAAiB,EAEbF,GAAeA,EAAYx4M,WAAa,IAC1Cu4M,EAAUF,GAAmD,GAAlCG,EAAYE,EAAiB,IAExC,8CAAZH,IACFI,GAAgB,IAIbA,GAGLC,GAAU,CACZxN,UAAWA,GACXhI,SAAUA,GACVC,SAAUA,GACV0U,+BAAgCA,GAChCI,aAAcA,GACdC,aAAcA,GACdE,4BAA6BA,IAE3B9W,GAAiBD,GAAwBC,eACzCqX,GAAQ,GACZA,GAAMl6G,GAAKi6G,GACXC,GAAMzjE,IAAMuoC,GACZ,IAAI7nK,GAAmBk7K,GAAMl7K,iBACzBsvL,GAAqB,IAEzB0T,GAAY,GAMRC,GAAY,SAAmB3qM,EAAOy1L,GACxC,IAEI3O,EACAvxL,EAHAia,EAAa,EACbU,EAAW8mL,GAIf,MAAO9mL,EAAWlQ,EAAMpO,WAEtB,GAAIoO,EAAMwP,KAAgBk7L,IAAa1qM,EAAMkQ,KAAcw6L,GA2B3Dl7L,IACAU,QA5BA,CAKE,OAHA42K,EAAS9mL,EAAM/N,SAASud,EAAYU,GACpC3a,EAAOk1M,GAAMl6G,GAAGysG,UAAUlW,EAAQ2O,EAAIK,KAE9BvgM,GACN,IAAK,MACHkgM,EAAIK,IAAM2U,GAAMl6G,GAAGykG,SAASlO,GAC5B,MAEF,IAAK,MACH,IAAI8jB,EAAQH,GAAMl6G,GAAG0kG,SAASnO,GAC9B2O,EAAImV,MAAQnV,EAAImV,OAAS,GACzBlsM,OAAO0K,KAAKwhM,GAAO71M,SAAQ,SAAU6L,GACnC60L,EAAImV,MAAMhqM,GAAOgqM,EAAMhqM,MAEzB,MAGJ4O,GAAcwnL,GACd9mL,GAAY8mL,KAiBd6T,GAAiB,SAAwB7qM,EAAOy1L,EAAK5jM,GACvD,IAEIi1L,EACAvxL,EACAu1M,EACAjB,EACAkB,EANAv7L,EAAa,EACbU,EAAW8mL,GAMXgU,GAAU,EAEd,MAAO96L,GAAYlQ,EAAMpO,WAEvB,GAAIoO,EAAMwP,KAAgBk7L,IAAc1qM,EAAMkQ,KAAcw6L,IAAax6L,IAAalQ,EAAMpO,WAmC5F4d,IACAU,QApCA,CAKE,OAHA42K,EAAS9mL,EAAM/N,SAASud,EAAYU,GACpC3a,EAAOk1M,GAAMl6G,GAAGysG,UAAUlW,EAAQ2O,EAAIK,KAE9BvgM,GACN,IAAK,MACHu1M,EAAUL,GAAMl6G,GAAGw5G,aAAajjB,EAAQ2O,EAAImV,OAC5Cf,EAAOY,GAAMl6G,GAAGo5G,+BAA+B7iB,GAE/B,UAAZgkB,GAAuBjB,IACzBkB,EAASN,GAAMl6G,GAAGy5G,aAAaljB,GAE3BikB,IACFA,EAAOx1M,KAAO,QACd1D,EAAO4B,MAAMd,KAAKo4M,GAClBC,GAAU,IAId,MAGJ,GAAIA,EACF,MAGFx7L,GAAcwnL,GACd9mL,GAAY8mL,GAYhB9mL,EAAWlQ,EAAMpO,WACjB4d,EAAaU,EAAW8mL,GACxBgU,GAAU,EAEV,MAAOx7L,GAAc,EAEnB,GAAIxP,EAAMwP,KAAgBk7L,IAAc1qM,EAAMkQ,KAAcw6L,IAAax6L,IAAalQ,EAAMpO,WAmC5F4d,IACAU,QApCA,CAKE,OAHA42K,EAAS9mL,EAAM/N,SAASud,EAAYU,GACpC3a,EAAOk1M,GAAMl6G,GAAGysG,UAAUlW,EAAQ2O,EAAIK,KAE9BvgM,GACN,IAAK,MACHu1M,EAAUL,GAAMl6G,GAAGw5G,aAAajjB,EAAQ2O,EAAImV,OAC5Cf,EAAOY,GAAMl6G,GAAGo5G,+BAA+B7iB,GAE/B,UAAZgkB,GAAuBjB,IACzBkB,EAASN,GAAMl6G,GAAGy5G,aAAaljB,GAE3BikB,IACFA,EAAOx1M,KAAO,QACd1D,EAAO4B,MAAMd,KAAKo4M,GAClBC,GAAU,IAId,MAGJ,GAAIA,EACF,MAGFx7L,GAAcwnL,GACd9mL,GAAY8mL,KAkBdiU,GAAiB,SAAwBjrM,EAAOy1L,EAAK5jM,GACvD,IAEIi1L,EACAvxL,EACAu1M,EACAjB,EACAkB,EACAlqB,EACAvuL,EACAgkM,EATA9mL,EAAa,EACbU,EAAW8mL,GASXgU,GAAU,EACVhrB,EAAe,CACjBzuL,KAAM,GACN0e,KAAM,GAGR,MAAOC,EAAWlQ,EAAMpO,WAEtB,GAAIoO,EAAMwP,KAAgBk7L,IAAa1qM,EAAMkQ,KAAcw6L,GAuE3Dl7L,IACAU,QAxEA,CAKE,OAHA42K,EAAS9mL,EAAM/N,SAASud,EAAYU,GACpC3a,EAAOk1M,GAAMl6G,GAAGysG,UAAUlW,EAAQ2O,EAAIK,KAE9BvgM,GACN,IAAK,MAIH,GAHAu1M,EAAUL,GAAMl6G,GAAGw5G,aAAajjB,EAAQ2O,EAAImV,OAC5Cf,EAAOY,GAAMl6G,GAAGo5G,+BAA+B7iB,GAE/B,UAAZgkB,IACEjB,IAASmB,IACXD,EAASN,GAAMl6G,GAAGy5G,aAAaljB,GAE3BikB,IACFA,EAAOx1M,KAAO,QACd1D,EAAO2B,MAAMb,KAAKo4M,GAClBC,GAAU,KAITn5M,EAAOq5M,eAAe,CACzB,GAAIrB,GACwB,IAAtB7pB,EAAa/vK,KAAY,CAC3B4wK,EAAQ,IAAI7uL,WAAWguL,EAAa/vK,MACpC3d,EAAI,EAEJ,MAAO0tL,EAAazuL,KAAK+D,OACvBghM,EAAMtW,EAAazuL,KAAKm1H,QACxBm6D,EAAM99J,IAAIuzK,EAAKhkM,GACfA,GAAKgkM,EAAI1kM,WAGX,GAAI64M,GAAMl6G,GAAG25G,4BAA4BrpB,GAAQ,CAC/C,IAAIqqB,EAAgBT,GAAMl6G,GAAGy5G,aAAanpB,GAItCqqB,GACFr5M,EAAOq5M,cAAgBA,EACvBr5M,EAAOq5M,cAAc31M,KAAO,SAG5B+E,QAAQsqB,KAAK,+RAIjBo7J,EAAa/vK,KAAO,EAIxB+vK,EAAazuL,KAAKoB,KAAKm0L,GACvB9G,EAAa/vK,MAAQ62K,EAAOl1L,WAIhC,MAGJ,GAAIo5M,GAAWn5M,EAAOq5M,cACpB,MAGF17L,GAAcwnL,GACd9mL,GAAY8mL,GAYhB9mL,EAAWlQ,EAAMpO,WACjB4d,EAAaU,EAAW8mL,GACxBgU,GAAU,EAEV,MAAOx7L,GAAc,EAEnB,GAAIxP,EAAMwP,KAAgBk7L,IAAa1qM,EAAMkQ,KAAcw6L,GAmC3Dl7L,IACAU,QApCA,CAKE,OAHA42K,EAAS9mL,EAAM/N,SAASud,EAAYU,GACpC3a,EAAOk1M,GAAMl6G,GAAGysG,UAAUlW,EAAQ2O,EAAIK,KAE9BvgM,GACN,IAAK,MACHu1M,EAAUL,GAAMl6G,GAAGw5G,aAAajjB,EAAQ2O,EAAImV,OAC5Cf,EAAOY,GAAMl6G,GAAGo5G,+BAA+B7iB,GAE/B,UAAZgkB,GAAuBjB,IACzBkB,EAASN,GAAMl6G,GAAGy5G,aAAaljB,GAE3BikB,IACFA,EAAOx1M,KAAO,QACd1D,EAAO2B,MAAMb,KAAKo4M,GAClBC,GAAU,IAId,MAGJ,GAAIA,EACF,MAGFx7L,GAAcwnL,GACd9mL,GAAY8mL,KAiBdmU,GAAmB,SAA0B/xL,EAAagyL,GAC5D,GAAIhyL,EAAY3lB,OAAS2lB,EAAY3lB,MAAM6B,OAAQ,CACjD,IAAI+1M,EAAqBD,GAES,qBAAvBC,GAAsCp/L,MAAMo/L,MACrDA,EAAqBjyL,EAAY3lB,MAAM,GAAG2sL,KAG5ChnK,EAAY3lB,MAAMsB,SAAQ,SAAUgkH,GAClCA,EAAKqnE,IAAMgT,GAAer6E,EAAKqnE,IAAKirB,GACpCtyF,EAAKsnE,IAAM+S,GAAer6E,EAAKsnE,IAAKgrB,GAEpCtyF,EAAKuyF,QAAUvyF,EAAKqnE,IAAM14K,GAC1BqxG,EAAKwyF,QAAUxyF,EAAKsnE,IAAM34K,MAI9B,GAAI0R,EAAY5lB,OAAS4lB,EAAY5lB,MAAM8B,OAAQ,CACjD,IAAIk2M,EAAqBJ,EAczB,IAZkC,qBAAvBI,GAAsCv/L,MAAMu/L,MACrDA,EAAqBpyL,EAAY5lB,MAAM,GAAG4sL,KAG5ChnK,EAAY5lB,MAAMuB,SAAQ,SAAUgkH,GAClCA,EAAKqnE,IAAMgT,GAAer6E,EAAKqnE,IAAKorB,GACpCzyF,EAAKsnE,IAAM+S,GAAer6E,EAAKsnE,IAAKmrB,GAEpCzyF,EAAKuyF,QAAUvyF,EAAKqnE,IAAM14K,GAC1BqxG,EAAKwyF,QAAUxyF,EAAKsnE,IAAM34K,MAGxB0R,EAAY8xL,cAAe,CAC7B,IAAIrqB,EAAQznK,EAAY8xL,cACxBrqB,EAAMT,IAAMgT,GAAevS,EAAMT,IAAKorB,GACtC3qB,EAAMR,IAAM+S,GAAevS,EAAMR,IAAKmrB,GAEtC3qB,EAAMyqB,QAAUzqB,EAAMT,IAAM14K,GAC5Bm5K,EAAM0qB,QAAU1qB,EAAMR,IAAM34K,MAS9B+jM,GAAc,SAAqBzrM,GACrC,IAMI8mL,EANAkkB,GAAU,EACVU,EAAa,EACb9jM,EAAa,KACbC,EAAY,KACZssL,EAAY,EACZpuF,EAAY,EAGhB,MAAO/lG,EAAM1K,OAASywG,GAAa,EAAG,CACpC,IAAIxwG,EAAOk1M,GAAMzjE,IAAIg2D,UAAUh9L,EAAO+lG,GAEtC,OAAQxwG,GACN,IAAK,iBAGH,GAAIyK,EAAM1K,OAASywG,EAAY,GAAI,CACjCilG,GAAU,EACV,MAMF,GAHA7W,EAAYsW,GAAMzjE,IAAIo1D,gBAAgBp8L,EAAO+lG,GAGzCouF,EAAYn0L,EAAM1K,OAAQ,CAC5B01M,GAAU,EACV,MAGgB,OAAdnjM,IACFi/K,EAAS9mL,EAAM/N,SAAS8zG,EAAWA,EAAYouF,GAC/CtsL,EAAY4iM,GAAMzjE,IAAI81D,kBAAkBhW,IAG1C/gF,GAAaouF,EACb,MAEF,IAAK,QAGH,GAAIn0L,EAAM1K,OAASywG,EAAY,EAAG,CAChCilG,GAAU,EACV,MAMF,GAHA7W,EAAYsW,GAAMzjE,IAAIy1D,cAAcz8L,EAAO+lG,GAGvCouF,EAAYn0L,EAAM1K,OAAQ,CAC5B01M,GAAU,EACV,MAGiB,OAAfpjM,IACFk/K,EAAS9mL,EAAM/N,SAAS8zG,EAAWA,EAAYouF,GAC/CvsL,EAAa6iM,GAAMzjE,IAAI61D,gBAAgB/V,IAGzC4kB,IACA3lG,GAAaouF,EACb,MAEF,QACEpuF,IACA,MAGJ,GAAIilG,EACF,OAAO,KAIX,GAAmB,OAAfpjM,GAAqC,OAAdC,EACzB,OAAO,KAGT,IAAI8jM,EAAiBjkM,GAAmBE,EACpC/V,EAAS,CACX4B,MAAO,CAAC,CACN8B,KAAM,QACN6qL,IAAKv4K,EACLw4K,IAAKx4K,GACJ,CACDtS,KAAM,QACN6qL,IAAKv4K,EAAyB,KAAb6jM,EAAoBC,EACrCtrB,IAAKx4K,EAAyB,KAAb6jM,EAAoBC,KAGzC,OAAO95M,GASL+5M,GAAa,SAAoB5rM,GACnC,IAAIy1L,EAAM,CACRK,IAAK,KACL8U,MAAO,MAEL/4M,EAAS,GAGb,IAAK,IAAIikM,KAFT6U,GAAU3qM,EAAOy1L,GAEDA,EAAImV,MAClB,GAAInV,EAAImV,MAAMzpM,eAAe20L,GAAM,CACjC,IAAIvgM,EAAOkgM,EAAImV,MAAM9U,GAErB,OAAQvgM,GACN,KAAK88L,GAAYC,iBACfzgM,EAAO2B,MAAQ,GACfy3M,GAAejrM,EAAOy1L,EAAK5jM,GAEC,IAAxBA,EAAO2B,MAAM8B,eACRzD,EAAO2B,MAGhB,MAEF,KAAK6+L,GAAYE,iBACf1gM,EAAO4B,MAAQ,GACfo3M,GAAe7qM,EAAOy1L,EAAK5jM,GAEC,IAAxBA,EAAO4B,MAAM6B,eACRzD,EAAO4B,MAGhB,OAKR,OAAO5B,GAYLg6M,GAAU,SAAiB7rM,EAAOorM,GACpC,IACIv5M,EADAi6M,EAAYrB,GAAMzjE,IAAI+1D,gBAAgB/8L,GAS1C,OALEnO,EADEi6M,EACOL,GAAYzrM,GAEZ4rM,GAAW5rM,GAGjBnO,IAAWA,EAAO4B,OAAU5B,EAAO2B,QAIxC23M,GAAiBt5M,EAAQu5M,GAClBv5M,GAJE,MAOPk6M,GAAc,CAChBF,QAASA,GACThB,eAAgBA,IAYdmB,GAAuB,SAA8BhxM,EAAM+iM,GAC7DA,EAAW3gG,GAAG,QAAQ,SAAU/xF,GAK9B,IAAI4gM,EAAY5gM,EAAQ6D,YACxB7D,EAAQ6D,YAAc,CACpB3d,KAAM06M,EAAUv6M,OAChBC,WAAYs6M,EAAUt6M,WACtBC,WAAYq6M,EAAUr6M,YAExB,IAAIs6M,EAAa7gM,EAAQ9Z,KACzB8Z,EAAQ9Z,KAAO26M,EAAWx6M,OAC1BsJ,EAAKmxM,YAAY,CACfC,OAAQ,OACR/gM,QAASA,EACT1Z,WAAYu6M,EAAWv6M,WACvBC,WAAYs6M,EAAWt6M,YACtB,CAACyZ,EAAQ9Z,UAEdwsM,EAAW3gG,GAAG,QAAQ,SAAU7rG,GAC9ByJ,EAAKmxM,YAAY,CACfC,OAAQ,YAGZrO,EAAW3gG,GAAG,WAAW,SAAUivG,GACjCrxM,EAAKmxM,YAAY,CACfC,OAAQ,UACRC,QAASA,OAGbtO,EAAW3gG,GAAG,0BAA0B,SAAUkvG,GAChD,IAAIC,EAAyB,CAC3B/iM,MAAO,CACLpL,OAAQwkL,GAAMv7K,iBAAiBilM,EAAW9iM,MAAM42K,KAChDosB,aAAc5pB,GAAMv7K,iBAAiBilM,EAAW9iM,MAAM62K,MAExD52K,IAAK,CACHrL,OAAQwkL,GAAMv7K,iBAAiBilM,EAAW7iM,IAAI22K,KAC9CosB,aAAc5pB,GAAMv7K,iBAAiBilM,EAAW7iM,IAAI42K,MAEtD3B,oBAAqBkE,GAAMv7K,iBAAiBilM,EAAW5tB,sBAGrD4tB,EAAWjO,2BACbkO,EAAuBlO,yBAA2Bzb,GAAMv7K,iBAAiBilM,EAAWjO,2BAGtFrjM,EAAKmxM,YAAY,CACfC,OAAQ,yBACRG,uBAAwBA,OAG5BxO,EAAW3gG,GAAG,0BAA0B,SAAUkvG,GAEhD,IAAIG,EAAyB,CAC3BjjM,MAAO,CACLpL,OAAQwkL,GAAMv7K,iBAAiBilM,EAAW9iM,MAAM42K,KAChDosB,aAAc5pB,GAAMv7K,iBAAiBilM,EAAW9iM,MAAM62K,MAExD52K,IAAK,CACHrL,OAAQwkL,GAAMv7K,iBAAiBilM,EAAW7iM,IAAI22K,KAC9CosB,aAAc5pB,GAAMv7K,iBAAiBilM,EAAW7iM,IAAI42K,MAEtD3B,oBAAqBkE,GAAMv7K,iBAAiBilM,EAAW5tB,sBAGrD4tB,EAAWjO,2BACboO,EAAuBpO,yBAA2Bzb,GAAMv7K,iBAAiBilM,EAAWjO,2BAGtFrjM,EAAKmxM,YAAY,CACfC,OAAQ,yBACRK,uBAAwBA,OAG5B1O,EAAW3gG,GAAG,YAAY,SAAUylG,GAClC7nM,EAAKmxM,YAAY,CACfC,OAAQ,WACRvJ,SAAUA,OAGd9E,EAAW3gG,GAAG,WAAW,SAAUkkG,GACjCtmM,EAAKmxM,YAAY,CACfC,OAAQ,UACR9K,QAASA,OAGbvD,EAAW3gG,GAAG,aAAa,SAAUsvG,GACnC1xM,EAAKmxM,YAAY,CACfC,OAAQ,YACRM,UAAWA,OAGf3O,EAAW3gG,GAAG,mBAAmB,SAAUuvG,GAEzC3xM,EAAKmxM,YAAY,CACfC,OAAQ,kBACRO,gBAAiB,CACfnjM,MAAOo5K,GAAMv7K,iBAAiBslM,EAAgBnjM,OAC9CC,IAAKm5K,GAAMv7K,iBAAiBslM,EAAgBljM,WAIlDs0L,EAAW3gG,GAAG,mBAAmB,SAAUwyE,GACzC50K,EAAKmxM,YAAY,CACfC,OAAQ,kBACRx8B,gBAAiB,CACfpmK,MAAOo5K,GAAMv7K,iBAAiBuoK,EAAgBpmK,OAC9CC,IAAKm5K,GAAMv7K,iBAAiBuoK,EAAgBnmK,WAIlDs0L,EAAW3gG,GAAG,OAAO,SAAU7iG,GAC7BS,EAAKmxM,YAAY,CACfC,OAAQ,MACR7xM,IAAKA,QAaPqyM,GAA+B,WACjC,SAASA,EAAgB5xM,EAAMsG,GAC7B5J,KAAK4J,QAAUA,GAAW,GAC1B5J,KAAKsD,KAAOA,EACZtD,KAAKshL,OAOP,IAAI77E,EAASyvG,EAAgBztM,UAiL7B,OA/KAg+F,EAAO67E,KAAO,WACRthL,KAAKqmM,YACPrmM,KAAKqmM,WAAWngG,UAGlBlmG,KAAKqmM,WAAa,IAAIA,GAAWkF,WAAWvrM,KAAK4J,SACjD0qM,GAAqBt0M,KAAKsD,KAAMtD,KAAKqmM,aAGvC5gG,EAAO0vG,gBAAkB,SAAyBt7M,GAC3CmG,KAAK8wM,gBACR9wM,KAAK8wM,cAAgB,IAAIA,GACzB9wM,KAAK8wM,cAAcxvB,QAGrB,IAAI3tK,EAAU,IAAIrZ,WAAWT,EAAKA,KAAMA,EAAKI,WAAYJ,EAAKK,YAC1Dm5M,EAASrzM,KAAK8wM,cAAc/lM,MAAM4I,EAAS9Z,EAAKu7M,SAAUv7M,EAAKw2M,YACnErwM,KAAKsD,KAAKmxM,YAAY,CACpBC,OAAQ,cACR51L,SAAUu0L,GAAUA,EAAOv0L,UAAY,GACvC6vL,KAAM0E,GAAUA,EAAO1E,MAAQ,GAC/B90M,KAAM8Z,EAAQ3Z,QACb,CAAC2Z,EAAQ3Z,UAGdyrG,EAAO4vG,kBAAoB,SAA2BjiM,GACpD,IAAIi9L,EAAaj9L,EAAKi9L,WAClBx2M,EAAOuZ,EAAKvZ,KACZiyB,EAAYimL,GAAQjmL,UAAUukL,EAAYx2M,GAC9CmG,KAAKsD,KAAKmxM,YAAY,CACpBC,OAAQ,oBACR5oL,UAAWA,EACXjyB,KAAMA,GACL,CAACA,EAAKG,UAGXyrG,EAAO6vG,eAAiB,SAAwBh8L,GAC9C,IAAIzf,EAAOyf,EAAMzf,KACb0gI,EAASw3E,GAAQx3E,OAAO1gI,GAC5BmG,KAAKsD,KAAKmxM,YAAY,CACpBC,OAAQ,iBACRn6E,OAAQA,EACR1gI,KAAMA,GACL,CAACA,EAAKG,UAiBXyrG,EAAO8vG,QAAU,SAAiB/7L,GAChC,IAAI3f,EAAO2f,EAAM3f,KACb27M,EAAgBh8L,EAAMg8L,cACtBC,EAAuC,kBAAlBD,GAA+BjhM,MAAMihM,QAA0D,EAAzCA,EAAgBtqB,GAAMl7K,iBACjG0lM,EAAWrB,GAAYF,QAAQt6M,EAAM47M,GACrCt7M,EAAS,KAETu7M,IACFv7M,EAAS,CAEP0wM,SAAU6K,EAAS55M,OAAmC,IAA1B45M,EAAS55M,MAAM8B,SAAgB,EAC3DgtM,SAAU8K,EAAS35M,OAAmC,IAA1B25M,EAAS35M,MAAM6B,SAAgB,GAGzDzD,EAAO0wM,WACT1wM,EAAOw7M,WAAaD,EAAS55M,MAAM,GAAG+3M,SAGpC15M,EAAOywM,WACTzwM,EAAOy7M,WAAaF,EAAS35M,MAAM,GAAG83M,UAI1C7zM,KAAKsD,KAAKmxM,YAAY,CACpBC,OAAQ,UACRv6M,OAAQA,EACRN,KAAMA,GACL,CAACA,EAAKG,UAGXyrG,EAAOowG,oBAAsB,WACvB71M,KAAK8wM,eACP9wM,KAAK8wM,cAAcD,oBAIvBprG,EAAOqwG,uBAAyB,WAC1B91M,KAAK8wM,eACP9wM,KAAK8wM,cAAcH,uBAWvBlrG,EAAOxqG,KAAO,SAAcpB,GAE1B,IAAI8Z,EAAU,IAAIrZ,WAAWT,EAAKA,KAAMA,EAAKI,WAAYJ,EAAKK,YAC9D8F,KAAKqmM,WAAWprM,KAAK0Y,IAQvB8xF,EAAO+iC,MAAQ,WACbxoI,KAAKqmM,WAAW79D,SAWlB/iC,EAAOswG,mBAAqB,SAA4Bl8M,GACtD,IAAIm8M,EAAkBn8M,EAAKm8M,iBAAmB,EAC9Ch2M,KAAKqmM,WAAW+E,uBAAuBr1L,KAAKiqF,MAAMkrF,GAAMz7K,iBAAiBumM,MAG3EvwG,EAAO0hG,oBAAsB,SAA6BttM,GACxDmG,KAAKqmM,WAAWc,oBAAoBpxL,KAAKC,KAAKk1K,GAAMz7K,iBAAiB5V,EAAKo8M,gBAG5ExwG,EAAOukG,SAAW,SAAkBnwM,GAClCmG,KAAKqmM,WAAW2D,SAASnwM,EAAKovM,QAUhCxjG,EAAOnC,MAAQ,SAAezpG,GAC5BmG,KAAKqmM,WAAW/iG,QAEhBhgG,KAAKmxM,YAAY,CACfC,OAAQ,OACR72M,KAAM,gBAIV4nG,EAAOg8E,YAAc,WACnBzhL,KAAKqmM,WAAW5kB,cAGhBn+K,KAAKmxM,YAAY,CACfC,OAAQ,gBACR72M,KAAM,gBAIV4nG,EAAOqjG,cAAgB,SAAuBjvM,GAC5CmG,KAAKqmM,WAAWyC,cAAcjvM,EAAKwtM,gBAAgBtqM,UAG9Cm4M,EA5L0B,GAuMnC5xM,KAAK4yM,UAAY,SAAUhvG,GACC,SAAtBA,EAAMrtG,KAAK66M,QAAqBxtG,EAAMrtG,KAAK+P,QAC7C5J,KAAKm2M,gBAAkB,IAAIjB,GAAgB5xM,KAAM4jG,EAAMrtG,KAAK+P,UAIzD5J,KAAKm2M,kBACRn2M,KAAKm2M,gBAAkB,IAAIjB,GAAgB5xM,OAGzC4jG,EAAMrtG,MAAQqtG,EAAMrtG,KAAK66M,QAAgC,SAAtBxtG,EAAMrtG,KAAK66M,QAC5C10M,KAAKm2M,gBAAgBjvG,EAAMrtG,KAAK66M,SAClC10M,KAAKm2M,gBAAgBjvG,EAAMrtG,KAAK66M,QAAQxtG,EAAMrtG,YAKlDu8M,GAAiB/yM,GAAQg+K,IAGzBg1B,GAAc,SAAqBnvG,EAAOovG,EAAgBzsM,GAC5D,IAAI0sM,EAAsBrvG,EAAMrtG,KAAK8Z,QACjC9V,EAAO04M,EAAoB14M,KAC3B2Z,EAAc++L,EAAoB/+L,YAClCsH,EAAWy3L,EAAoBz3L,SAC/BgrL,EAAiByM,EAAoBzM,eACrCpoE,EAAW60E,EAAoB70E,SAC/B80E,EAAoBD,EAAoBC,kBACxCC,EAAoBF,EAAoBE,kBAC5CH,EAAet8M,OAAOiB,KAAK,CACzB6jB,SAAUA,EACVgrL,eAAgBA,EAChBpoE,SAAUA,IAEZ,IAAIhhC,EAAQwG,EAAMrtG,KAAK8Z,QAAQ+sF,OAAS,CACtC7mG,KAAMqtG,EAAMrtG,KAAK8Z,QAAQ9Z,MAEvBM,EAAS,CACX0D,KAAMA,EAENhE,KAAM,IAAIS,WAAWomG,EAAM7mG,KAAM6mG,EAAM7mG,KAAKI,WAAYymG,EAAM7mG,KAAKK,YACnEsd,YAAa,IAAIld,WAAWkd,EAAY3d,KAAM2d,EAAYvd,WAAYud,EAAYtd,aAGnD,qBAAtBs8M,IACTr8M,EAAOq8M,kBAAoBA,GAGI,qBAAtBC,IACTt8M,EAAOs8M,kBAAoBA,GAG7B5sM,EAAS1P,IAGPu8M,GAAc,SAAqBtjM,GACrC,IAAIkjM,EAAiBljM,EAAKkjM,eACtBzsM,EAAWuJ,EAAKvJ,SAGpBysM,EAAet8M,OAAS,GAGxB6P,EAASysM,IAGPK,GAAiB,SAAwBzvG,EAAOovG,GAClDA,EAAe3B,QAAUztG,EAAMrtG,KAAK86M,SAGlCiC,GAAkB,SAAyBhtM,GAC7C,IAAIy8L,EAAaz8L,EAAQy8L,WACrB/9L,EAAQsB,EAAQtB,MAChBuuM,EAAmBjtM,EAAQitM,iBAC3BxP,EAAkBz9L,EAAQy9L,gBAC1B4B,EAAQr/L,EAAQq/L,MAChB6N,EAASltM,EAAQktM,OACjBC,EAAcntM,EAAQmtM,YACtBC,EAAoBptM,EAAQotM,kBAC5BC,EAAoBrtM,EAAQqtM,kBAC5BC,EAA2BttM,EAAQstM,yBACnCC,EAA2BvtM,EAAQutM,yBACnCC,EAAQxtM,EAAQwtM,MAChBC,EAAaztM,EAAQytM,WACrBC,EAAS1tM,EAAQ0tM,OACjBC,EAAkB3tM,EAAQ2tM,gBAC1BC,EAAkB5tM,EAAQ4tM,gBAC1BC,EAAkB7tM,EAAQ6tM,gBAC1BnB,EAAiB,CACnBt8M,OAAQ,IAEN09M,EAA4BD,EAE5BE,EAAgB,SAAuBzwG,GACrCm/F,EAAWuR,kBAAoBhuM,IAKT,SAAtBs9F,EAAMrtG,KAAK66M,QACb2B,GAAYnvG,EAAOovG,EAAgBQ,GAGX,cAAtB5vG,EAAMrtG,KAAK66M,QACbqC,EAAY7vG,EAAMrtG,KAAKm7M,WAGC,YAAtB9tG,EAAMrtG,KAAK66M,QACbiC,GAAezvG,EAAOovG,GAGE,oBAAtBpvG,EAAMrtG,KAAK66M,QACbsC,EAAkB9vG,EAAMrtG,KAAKo7M,iBAGL,oBAAtB/tG,EAAMrtG,KAAK66M,QACbuC,EAAkB/vG,EAAMrtG,KAAKq+K,iBAGL,2BAAtBhxE,EAAMrtG,KAAK66M,QACbwC,EAAyBhwG,EAAMrtG,KAAKg7M,wBAGZ,2BAAtB3tG,EAAMrtG,KAAK66M,QACbyC,EAAyBjwG,EAAMrtG,KAAKk7M,wBAGZ,aAAtB7tG,EAAMrtG,KAAK66M,QACb0C,EAAM,CAAClwG,EAAMrtG,KAAKsxM,UAAWjkG,EAAMrtG,KAAKsxM,SAAS5O,cAGzB,YAAtBr1F,EAAMrtG,KAAK66M,QACb2C,EAAWnwG,EAAMrtG,KAAK+vM,SAGE,kBAAtB1iG,EAAMrtG,KAAK66M,SACbgD,GAA4B,EAC5BH,KAGwB,QAAtBrwG,EAAMrtG,KAAK66M,QACb8C,EAAgBtwG,EAAMrtG,KAAKgJ,KAIL,eAApBqkG,EAAMrtG,KAAKgE,OAQX65M,IAIJrR,EAAW6P,UAAY,KACvBQ,GAAY,CACVJ,eAAgBA,EAChBzsM,SAAUytM,IAIZO,GAAQxR,OA4BV,GAxBAA,EAAW6P,UAAYyB,EAEnBd,GACFxQ,EAAWoO,YAAY,CACrBC,OAAQ,sBACRuB,YAAaY,IAKbn2M,MAAMyI,QAAQk+L,IAChBhB,EAAWoO,YAAY,CACrBC,OAAQ,gBACRrN,gBAAiBA,IAIA,qBAAV4B,GACT5C,EAAWoO,YAAY,CACrBC,OAAQ,WACRzL,MAAOA,IAIP3gM,EAAMpO,WAAY,CACpB,IAAIF,EAASsO,aAAiB2kG,YAAc3kG,EAAQA,EAAMtO,OACtDC,EAAaqO,aAAiB2kG,YAAc,EAAI3kG,EAAMrO,WAC1DosM,EAAWoO,YAAY,CACrBC,OAAQ,OAIR76M,KAAMG,EAGNC,WAAYA,EACZC,WAAYoO,EAAMpO,YACjB,CAACF,IAGFy9M,GACFpR,EAAWoO,YAAY,CACrBC,OAAQ,gBAMZrO,EAAWoO,YAAY,CACrBC,OAAQ,WAIRmD,GAAU,SAAiBxR,GAC7BA,EAAWuR,gBAAkB,KAEzBvR,EAAWyR,cAAcl6M,SAC3ByoM,EAAWuR,gBAAkBvR,EAAWyR,cAAc9oF,QAEZ,oBAA/Bq3E,EAAWuR,gBACpBvR,EAAWuR,kBAEXhB,GAAgBvQ,EAAWuR,mBAK7BG,GAAgB,SAAuB1R,EAAYqO,GACrDrO,EAAWoO,YAAY,CACrBC,OAAQA,IAEVmD,GAAQxR,IAGN2R,GAAgB,SAAuBtD,EAAQrO,GACjD,IAAKA,EAAWuR,gBAGd,OAFAvR,EAAWuR,gBAAkBlD,OAC7BqD,GAAc1R,EAAYqO,GAI5BrO,EAAWyR,cAAc78M,KAAK88M,GAAchqM,KAAK,KAAMs4L,EAAYqO,KAGjElsE,GAAQ,SAAe69D,GACzB2R,GAAc,QAAS3R,IAGrB5kB,GAAc,SAAqB4kB,GACrC2R,GAAc,cAAe3R,IAG3B4R,GAAW,SAAkBruM,GAC/B,IAAKA,EAAQy8L,WAAWuR,gBAGtB,OAFAhuM,EAAQy8L,WAAWuR,gBAAkBhuM,OACrCgtM,GAAgBhtM,GAIlBA,EAAQy8L,WAAWyR,cAAc78M,KAAK2O,IAGpCsuM,GAAmB,SAA0BtuM,GAC/C,IAAIy8L,EAAa,IAAI+P,GACrB/P,EAAWuR,gBAAkB,KAC7BvR,EAAWyR,cAAgB,GAC3B,IAAIK,EAAO9R,EAAWnlB,UAYtB,OAVAmlB,EAAWnlB,UAAY,WAGrB,OAFAmlB,EAAWuR,gBAAkB,KAC7BvR,EAAWyR,cAAcl6M,OAAS,EAC3Bu6M,EAAKvnM,KAAKy1L,IAGnBA,EAAWoO,YAAY,CACrBC,OAAQ,OACR9qM,QAASA,IAEJy8L,GAGL+R,GAAoB,CACtB5vE,MAAOA,GACPi5C,YAAaA,GACbw2B,SAAUA,GACVC,iBAAkBA,IAGhBG,GAAiB,SAAwBzuM,GAC3C,IAAIy8L,EAAaz8L,EAAQy8L,WACrBiS,EAAY1uM,EAAQ0uM,WAAa1uM,EAAQ8qM,OACzC7qM,EAAWD,EAAQC,SAEnBguF,EAAU,IAAS,GAAIjuF,EAAS,CAClC0uM,UAAW,KACXjS,WAAY,KACZx8L,SAAU,OAGR0uM,EAAoB,SAASA,EAAkBrxG,GAC7CA,EAAMrtG,KAAK66M,SAAW4D,IAI1BjS,EAAWj9E,oBAAoB,UAAWmvF,GAEtCrxG,EAAMrtG,KAAKA,OACbqtG,EAAMrtG,KAAKA,KAAO,IAAIS,WAAW4sG,EAAMrtG,KAAKA,KAAM+P,EAAQ3P,YAAc,EAAG2P,EAAQ1P,YAAcgtG,EAAMrtG,KAAKA,KAAKK,YAE7G0P,EAAQ/P,OACV+P,EAAQ/P,KAAOqtG,EAAMrtG,KAAKA,OAI9BgQ,EAASq9F,EAAMrtG,QAKjB,GAFAwsM,EAAWh9E,iBAAiB,UAAWkvF,GAEnC3uM,EAAQ/P,KAAM,CAChB,IAAI2+M,EAAgB5uM,EAAQ/P,gBAAgBozG,YAC5CpV,EAAQ59F,WAAau+M,EAAgB,EAAI5uM,EAAQ/P,KAAKI,WACtD49F,EAAQ39F,WAAa0P,EAAQ/P,KAAKK,WAClC,IAAIu+M,EAAY,CAACD,EAAgB5uM,EAAQ/P,KAAO+P,EAAQ/P,KAAKG,QAC7DqsM,EAAWoO,YAAY58G,EAAS4gH,QAEhCpS,EAAWoO,YAAY58G,IAIvB6gH,GAAiB,CACnBC,QAAS,EACTC,SAAU,IACVC,SAAU,KAQRC,GAAW,SAAkBC,GAC/BA,EAAW17M,SAAQ,SAAUgN,GAC3BA,EAAI0C,YAUJisM,GAAkB,SAAyBl6C,GAC7C,MAAO,CACLpjJ,UAAWojJ,EAAQpjJ,UACnBu0J,cAAenR,EAAQmR,eAAiB,EACxCiG,cAAepX,EAAQoX,eAAiB,IAWxC+iC,GAAmB,SAA0BC,GAC/C,IAAIp6C,EAAUo6C,EAAc7vL,OACxB6sJ,EAAgBryJ,KAAKlO,MAAQmpJ,EAAQqX,YACrCgjC,EAAQ,CACVz9L,UAAWhG,IACXu6J,cAAe,EACfiG,cAAeA,GAAiB,GAOlC,OALAijC,EAAMlpC,cAAgBipC,EAAc/9B,OAIpCg+B,EAAMz9L,UAAY3F,KAAKG,MAAMijM,EAAMlpC,cAAgBkpC,EAAMjjC,cAAgB,EAAI,KACtEijC,GAWLC,GAAe,SAAsBvpL,EAAOivI,GAC9C,OAAIA,EAAQuX,SACH,CACL7qK,OAAQszJ,EAAQtzJ,OAChBqsF,QAAS,iCAAmCinE,EAAQn1J,IACpDqD,KAAM0rM,GAAeE,QACrBvuM,IAAKy0J,GAILA,EAAQvzJ,QACH,CACLC,OAAQszJ,EAAQtzJ,OAChBqsF,QAAS,+BAAiCinE,EAAQn1J,IAClDqD,KAAM0rM,GAAeG,QACrBxuM,IAAKy0J,GAILjvI,EACK,CACLrkB,OAAQszJ,EAAQtzJ,OAChBqsF,QAAS,+BAAiCinE,EAAQn1J,IAClDqD,KAAM0rM,GAAeC,QACrBtuM,IAAKy0J,GAIoB,gBAAzBA,EAAQ5xJ,cAAkE,IAAhC4xJ,EAAQ50J,SAAShQ,WACtD,CACLsR,OAAQszJ,EAAQtzJ,OAChBqsF,QAAS,8BAAgCinE,EAAQn1J,IACjDqD,KAAM0rM,GAAeC,QACrBtuM,IAAKy0J,GAIF,MAcLu6C,GAAoB,SAA2B1lM,EAASrC,EAASgoM,GACnE,OAAO,SAAUzpL,EAAOivI,GACtB,IAAI50J,EAAW40J,EAAQ50J,SACnBqvM,EAAWH,GAAavpL,EAAOivI,GAEnC,GAAIy6C,EACF,OAAOD,EAAmBC,EAAU5lM,GAGtC,GAA4B,KAAxBzJ,EAAShQ,WACX,OAAOo/M,EAAmB,CACxB9tM,OAAQszJ,EAAQtzJ,OAChBqsF,QAAS,2BAA6BinE,EAAQn1J,IAC9CqD,KAAM0rM,GAAeC,QACrBtuM,IAAKy0J,GACJnrJ,GAML,IAHA,IAAI7Z,EAAO,IAAIC,SAASmQ,GACpB5B,EAAQ,IAAI4/F,YAAY,CAACpuG,EAAKY,UAAU,GAAIZ,EAAKY,UAAU,GAAIZ,EAAKY,UAAU,GAAIZ,EAAKY,UAAU,MAE5FE,EAAI,EAAGA,EAAI0W,EAAQ1T,OAAQhD,IAClC0W,EAAQ1W,GAAG0N,MAAQA,EAGrB,OAAOgxM,EAAmB,KAAM3lM,KAIhC6lM,GAAmB,SAA0B7lM,EAAS8lM,GACxD,IAAI57M,EAAO,eAAwB8V,EAAQ3U,IAAIsJ,OAG/C,GAAa,QAATzK,EAAgB,CAClB,IAAI8L,EAAMgK,EAAQ3U,IAAI4U,aAAeD,EAAQ3U,IAAI2K,IACjD,OAAO8vM,EAAU,CACf37B,UAAU,EACVjmF,QAAS,sBAAwBh6F,GAAQ,WAAa,iDAAmD8L,EACzGqD,KAAM0rM,GAAeC,UAIzBN,GAAe,CACb3D,OAAQ,iBACR76M,KAAM8Z,EAAQ3U,IAAIsJ,MAClB+9L,WAAY1yL,EAAQ0yL,WACpBx8L,SAAU,SAAkBuJ,GAC1B,IAAImnH,EAASnnH,EAAKmnH,OACd1gI,EAAOuZ,EAAKvZ,KAiBhB,OAfA8Z,EAAQ3U,IAAIsJ,MAAQzO,EACpB0gI,EAAOl9H,SAAQ,SAAU2/F,GACvBrpF,EAAQ3U,IAAIu7H,OAAS5mH,EAAQ3U,IAAIu7H,QAAU,GAEvC5mH,EAAQ3U,IAAIu7H,OAAOv9B,EAAMn/F,QAI7B8V,EAAQ3U,IAAIu7H,OAAOv9B,EAAMn/F,MAAQm/F,EAET,kBAAbA,EAAMniF,IAAmBmiF,EAAMriG,YACxCgZ,EAAQ3U,IAAIqxM,WAAa18L,EAAQ3U,IAAIqxM,YAAc,GACnD18L,EAAQ3U,IAAIqxM,WAAWrzG,EAAMniF,IAAMmiF,EAAMriG,eAGtC8+M,EAAU,UAcnBC,GAA4B,SAAmCpgM,GACjE,IAAI3F,EAAU2F,EAAM3F,QAChB2lM,EAAqBhgM,EAAMggM,mBAC/B,OAAO,SAAUzpL,EAAOivI,GACtB,IAAIy6C,EAAWH,GAAavpL,EAAOivI,GAEnC,GAAIy6C,EACF,OAAOD,EAAmBC,EAAU5lM,GAGtC,IAAIrL,EAAQ,IAAIhO,WAAWwkK,EAAQ50J,UAGnC,GAAIyJ,EAAQ3U,IAAIkK,IAEd,OADAyK,EAAQ3U,IAAI26M,eAAiBrxM,EACtBgxM,EAAmB,KAAM3lM,GAGlCA,EAAQ3U,IAAIsJ,MAAQA,EACpBkxM,GAAiB7lM,GAAS,SAAUimM,GAClC,GAAIA,EAGF,OAFAA,EAAWvvM,IAAMy0J,EACjB86C,EAAWpuM,OAASszJ,EAAQtzJ,OACrB8tM,EAAmBM,EAAYjmM,GAGxC2lM,EAAmB,KAAM3lM,QAgB3BkmM,GAAwB,SAA+BrgM,GACzD,IAAI7F,EAAU6F,EAAM7F,QAChB2lM,EAAqB9/L,EAAM8/L,mBAC3BpsM,EAAesM,EAAMtM,aACzB,OAAO,SAAU2iB,EAAOivI,GACtB,IAAIy6C,EAAWH,GAAavpL,EAAOivI,GAEnC,GAAIy6C,EACF,OAAOD,EAAmBC,EAAU5lM,GAGtC,IAAImmM,EAKa,gBAAjB5sM,GAAmC4xJ,EAAQn0J,aAAkC21K,GAAoBxhB,EAAQn0J,aAAa7M,UAAU6V,EAAQomM,iBAAmB,IAAjGj7C,EAAQ50J,SASlE,OARAyJ,EAAQwlM,MAAQH,GAAgBl6C,GAE5BnrJ,EAAQzK,IACVyK,EAAQgmM,eAAiB,IAAIr/M,WAAWw/M,GAExCnmM,EAAQrL,MAAQ,IAAIhO,WAAWw/M,GAG1BR,EAAmB,KAAM3lM,KAIhCqmM,GAAoB,SAA2BpgM,GACjD,IAAIjG,EAAUiG,EAAMjG,QAChBrL,EAAQsR,EAAMtR,MACd2xM,EAAcrgM,EAAMqgM,YACpBC,EAAetgM,EAAMsgM,aACrBC,EAA2BvgM,EAAMugM,yBACjCC,EAA2BxgM,EAAMwgM,yBACjCC,EAAQzgM,EAAMygM,MACdC,EAAa1gM,EAAM0gM,WACnB7C,EAAkB79L,EAAM69L,gBACxB8C,EAAkB3gM,EAAM2gM,gBACxBC,EAAS5gM,EAAM4gM,OACfC,EAAS7gM,EAAM6gM,OACfjD,EAAkB59L,EAAM49L,gBACxBkD,EAAa/mM,EAAQ3U,KAAO2U,EAAQ3U,IAAIu7H,QAAU,GAClDogF,EAAU75M,QAAQ45M,EAAW3+M,OAAS2+M,EAAW5+M,OAIjD8+M,EAAeV,EAAansM,KAAK,KAAM4F,EAAS,QAAS,SACzDknM,EAAaX,EAAansM,KAAK,KAAM4F,EAAS,QAAS,OACvDmnM,EAAeZ,EAAansM,KAAK,KAAM4F,EAAS,QAAS,SACzDonM,EAAab,EAAansM,KAAK,KAAM4F,EAAS,QAAS,OAEvDqnM,EAAS,WACX,OAAO/C,GAAS,CACd3vM,MAAOA,EACP+9L,WAAY1yL,EAAQ0yL,WACpBwQ,iBAAkBljM,EAAQkjM,iBAC1BxP,gBAAiB1zL,EAAQ0zL,gBACzB4B,MAAO0R,EACP7D,OAAQ,SAAgB38M,GACtBA,EAAO0D,KAAuB,aAAhB1D,EAAO0D,KAAsB,QAAU1D,EAAO0D,KAC5D28M,EAAO7mM,EAASxZ,IAElB48M,YAAa,SAAqB/B,GAC5BiF,IACEU,IACF3F,EAAU2F,SAAU,GAGtBV,EAAYtmM,EAASqhM,KAGzBgC,kBAAmB,SAA2B/B,GAExC2F,GAAiD,qBAA1B3F,EAAgBnjM,QACzC8oM,EAAa3F,EAAgBnjM,OAC7B8oM,EAAe,MAIbC,GAA6C,qBAAxB5F,EAAgBljM,KACvC8oM,EAAW5F,EAAgBljM,MAG/BklM,kBAAmB,SAA2B/+B,GAExC4iC,GAAiD,qBAA1B5iC,EAAgBpmK,QACzCgpM,EAAa5iC,EAAgBpmK,OAC7BgpM,EAAe,MAIbC,GAA6C,qBAAxB7iC,EAAgBnmK,KACvCgpM,EAAW7iC,EAAgBnmK,MAG/BmlM,yBAA0B,SAAkCrC,GAC1DsF,EAAyBtF,IAE3BsC,yBAA0B,SAAkCpC,GAC1DqF,EAAyBrF,IAE3BqC,MAAO,SAAe6D,EAAW1e,GAC/B8d,EAAM1mM,EAASsnM,EAAW1e,IAE5B8a,WAAY,SAAoBv4L,GAC9Bw7L,EAAW3mM,EAAS,CAACmL,KAEvB24L,gBAAiBA,EACjBF,gBAAiB,WACfgD,KAEF/C,gBAAiBA,EACjBF,OAAQ,SAAgBn9M,GACjBsgN,IAILtgN,EAAO0D,KAAuB,aAAhB1D,EAAO0D,KAAsB,QAAU1D,EAAO0D,KAC5D48M,EAAO,KAAM9mM,EAASxZ,QAQ5Bk+M,GAAe,CACb3D,OAAQ,UACRrO,WAAY1yL,EAAQ0yL,WACpBxsM,KAAMyO,EACNktM,cAAe7hM,EAAQ6hM,cACvB3rM,SAAU,SAAkBhQ,GAC1B8Z,EAAQrL,MAAQA,EAAQzO,EAAKA,KAC7B,IAAIqhN,EAAcrhN,EAAKM,OAEnB+gN,IACFjB,EAAYtmM,EAAS,CACnBi3L,SAAUsQ,EAAYtQ,SACtBC,SAAUqQ,EAAYrQ,SACtB8P,QAASA,IAEXV,EAAc,KAEViB,EAAYtQ,WAAa+P,GAC3BC,EAAaM,EAAYtF,YAGvBsF,EAAYrQ,UACdiQ,EAAaI,EAAYvF,YAG3BiF,EAAe,KACfE,EAAe,MAGjBE,QAKFG,GAAqB,SAA4B5gM,GACnD,IAAI5G,EAAU4G,EAAM5G,QAChBrL,EAAQiS,EAAMjS,MACd2xM,EAAc1/L,EAAM0/L,YACpBC,EAAe3/L,EAAM2/L,aACrBC,EAA2B5/L,EAAM4/L,yBACjCC,EAA2B7/L,EAAM6/L,yBACjCC,EAAQ9/L,EAAM8/L,MACdC,EAAa//L,EAAM+/L,WACnB7C,EAAkBl9L,EAAMk9L,gBACxB8C,EAAkBhgM,EAAMggM,gBACxBC,EAASjgM,EAAMigM,OACfC,EAASlgM,EAAMkgM,OACfjD,EAAkBj9L,EAAMi9L,gBACxB4D,EAAoB,IAAI9gN,WAAWgO,GAMvC,GAAI,eAAyB8yM,GAA7B,CACEznM,EAAQ0nM,QAAS,EACjB,IAAI9gF,EAAS5mH,EAAQ3U,IAAIu7H,OACrBy6E,EAAY,CACdqG,QAAQ,EACRxQ,WAAYtwE,EAAOz+H,MACnB8uM,WAAYrwE,EAAOx+H,OAIjBw+H,EAAOx+H,OAASw+H,EAAOx+H,MAAMQ,OAAgC,SAAvBg+H,EAAOx+H,MAAMQ,QACrDy4M,EAAUsG,WAAa/gF,EAAOx+H,MAAMQ,OAKlCg+H,EAAOz+H,OAASy+H,EAAOz+H,MAAMS,OAAgC,SAAvBg+H,EAAOz+H,MAAMS,QACrDy4M,EAAUuG,WAAahhF,EAAOz+H,MAAMS,OAGlCg+H,EAAOz+H,OAASy+H,EAAOx+H,QACzBi5M,EAAU2F,SAAU,GAKtBV,EAAYtmM,EAASqhM,GAOrB,IAAIwG,EAAgB,SAAuB18L,GAKzC07L,EAAO7mM,EAAS,CACd9Z,KAAMuhN,EACNv9M,KAAMm3M,EAAUpK,WAAaoK,EAAU2F,QAAU,QAAU,UAGzD77L,GAAYA,EAASlhB,QACvB08M,EAAW3mM,EAASmL,GAGtB27L,EAAO,KAAM9mM,EAAS,KAGxB0kM,GAAe,CACb3D,OAAQ,oBACRrE,WAAY18L,EAAQ3U,IAAIqxM,WACxBx2M,KAAMuhN,EACN/U,WAAY1yL,EAAQ0yL,WACpBx8L,SAAU,SAAkB+T,GAC1B,IAAI/jB,EAAO+jB,EAAM/jB,KACbiyB,EAAYlO,EAAMkO,UAEtBxjB,EAAQzO,EAAKG,OACb2Z,EAAQrL,MAAQ8yM,EAAoBvhN,EAEhCm7M,EAAUpK,WAAaoK,EAAU2F,SACnCT,EAAavmM,EAAS,QAAS,QAASmY,GAGtCkpL,EAAUnK,UACZqP,EAAavmM,EAAS,QAAS,QAASmY,GAKrCyuG,EAAOz+H,OAAUjC,EAAKK,YAAeyZ,EAAQ0yL,WAKlDgS,GAAe,CACb3D,OAAQ,kBACR4D,UAAW,cACXjS,WAAY1yL,EAAQ0yL,WACpBxsM,KAAMuhN,EACN/K,WAAY18L,EAAQ3U,IAAIqxM,WACxB+E,SAAU,CAAC76E,EAAOz+H,MAAM+e,IACxBhR,SAAU,SAAkBguF,GAE1BvvF,EAAQuvF,EAAQh+F,KAAKG,OACrB2Z,EAAQrL,MAAQ8yM,EAAoBvjH,EAAQh+F,KAC5Cg+F,EAAQ82G,KAAKtxM,SAAQ,SAAUwF,GAC7B20M,EAAgBrsE,GAAQmgC,aAAazoK,EAAK,CACxCqgG,OAAQ,yBAGZs4G,EAAc3jH,EAAQ/4E,aApBxB08L,YA6BR,GAAK7nM,EAAQ0yL,WAAb,CASA,GAJiC,qBAAtB1yL,EAAQzU,YACjByU,EAAQzU,UAAY,eAAwBk8M,IAGpB,OAAtBznM,EAAQzU,WAA4C,QAAtByU,EAAQzU,UAMxC,OALA+6M,EAAYtmM,EAAS,CACnBi3L,UAAU,EACVC,UAAU,SAEZ4P,EAAO,KAAM9mM,EAAS,IAKxBqmM,GAAkB,CAChBrmM,QAASA,EACTrL,MAAOA,EACP2xM,YAAaA,EACbC,aAAcA,EACdC,yBAA0BA,EAC1BC,yBAA0BA,EAC1BC,MAAOA,EACPC,WAAYA,EACZ7C,gBAAiBA,EACjB8C,gBAAiBA,EACjBC,OAAQA,EACRC,OAAQA,EACRjD,gBAAiBA,SA/BjBiD,EAAO,KAAM9mM,EAAS,KAmCtB8nM,GAAU,SAAiB39L,EAAOjU,GACpC,IAcI6xM,EAdA7gM,EAAKiD,EAAMjD,GACX3R,EAAM4U,EAAM5U,IACZywM,EAAiB77L,EAAM67L,eACvBgC,EAAmB79L,EAAM69L,iBAEzBC,EAAoB,SAASA,EAAkB10G,GACjD,GAAIA,EAAMrtG,KAAK4X,SAAWoJ,EAAI,CAC5B8gM,EAAiBvyF,oBAAoB,UAAWwyF,GAChD,IAAIC,EAAY30G,EAAMrtG,KAAKgiN,UAC3BhyM,EAAS,IAAIvP,WAAWuhN,EAAUvzM,MAAOuzM,EAAU5hN,WAAY4hN,EAAU3hN,eAI7EyhN,EAAiBtyF,iBAAiB,UAAWuyF,GAI3CF,EADExyM,EAAIZ,MAAMvL,MACDmM,EAAIZ,MAAMvL,QAEV,IAAImrG,YAAYxnG,MAAM+G,UAAU1K,MAAM6T,KAAK1H,EAAIZ,QAI5DqzM,EAAiBlH,YAAYp9B,GAA0B,CACrD5lK,OAAQoJ,EACRihM,UAAWnC,EACXzwM,IAAKwyM,EACL9wG,GAAI1hG,EAAI0hG,KACN,CAAC+uG,EAAe3/M,OAAQ0hN,EAAS1hN,UA4BnC+hN,GAAiB,SAAwB59L,GAC3C,IAAIw9L,EAAmBx9L,EAAMw9L,iBACzBhoM,EAAUwK,EAAMxK,QAChBsmM,EAAc97L,EAAM87L,YACpBC,EAAe/7L,EAAM+7L,aACrBC,EAA2Bh8L,EAAMg8L,yBACjCC,EAA2Bj8L,EAAMi8L,yBACjCC,EAAQl8L,EAAMk8L,MACdC,EAAan8L,EAAMm8L,WACnB7C,EAAkBt5L,EAAMs5L,gBACxB8C,EAAkBp8L,EAAMo8L,gBACxBC,EAASr8L,EAAMq8L,OACfC,EAASt8L,EAAMs8L,OACfjD,EAAkBr5L,EAAMq5L,gBAC5BiE,GAAQ,CACN5gM,GAAIlH,EAAQqoM,UACZ9yM,IAAKyK,EAAQzK,IACbywM,eAAgBhmM,EAAQgmM,eACxBgC,iBAAkBA,IACjB,SAAUM,GACXtoM,EAAQrL,MAAQ2zM,EAChBd,GAAmB,CACjBxnM,QAASA,EACTrL,MAAOqL,EAAQrL,MACf2xM,YAAaA,EACbC,aAAcA,EACdC,yBAA0BA,EAC1BC,yBAA0BA,EAC1BC,MAAOA,EACPC,WAAYA,EACZ7C,gBAAiBA,EACjB8C,gBAAiBA,EACjBC,OAAQA,EACRC,OAAQA,EACRjD,gBAAiBA,QAmCnB0E,GAAoB,SAA2B98L,GACjD,IAAI25L,EAAa35L,EAAM25L,WACnB4C,EAAmBv8L,EAAMu8L,iBACzB1B,EAAc76L,EAAM66L,YACpBC,EAAe96L,EAAM86L,aACrBC,EAA2B/6L,EAAM+6L,yBACjCC,EAA2Bh7L,EAAMg7L,yBACjCC,EAAQj7L,EAAMi7L,MACdC,EAAal7L,EAAMk7L,WACnB7C,EAAkBr4L,EAAMq4L,gBACxB8C,EAAkBn7L,EAAMm7L,gBACxBC,EAASp7L,EAAMo7L,OACfC,EAASr7L,EAAMq7L,OACfjD,EAAkBp4L,EAAMo4L,gBACxBv3L,EAAQ,EACRk8L,GAAW,EACf,OAAO,SAAUtsL,EAAOlc,GACtB,IAAIwoM,EAAJ,CAIA,GAAItsL,EAeF,OAdAssL,GAAW,EAEXrD,GAASC,GAYF0B,EAAO5qL,EAAOlc,GAKvB,GAFAsM,GAAS,EAELA,IAAU84L,EAAWn7M,OAAQ,CAC/B,IAAIw+M,EAAgB,WAClB,GAAIzoM,EAAQgmM,eACV,OAAOoC,GAAe,CACpBJ,iBAAkBA,EAClBhoM,QAASA,EACTsmM,YAAaA,EACbC,aAAcA,EACdC,yBAA0BA,EAC1BC,yBAA0BA,EAC1BC,MAAOA,EACPC,WAAYA,EACZ7C,gBAAiBA,EACjB8C,gBAAiBA,EACjBC,OAAQA,EACRC,OAAQA,EACRjD,gBAAiBA,IAKrB2D,GAAmB,CACjBxnM,QAASA,EACTrL,MAAOqL,EAAQrL,MACf2xM,YAAaA,EACbC,aAAcA,EACdC,yBAA0BA,EAC1BC,yBAA0BA,EAC1BC,MAAOA,EACPC,WAAYA,EACZ7C,gBAAiBA,EACjB8C,gBAAiBA,EACjBC,OAAQA,EACRC,OAAQA,EACRjD,gBAAiBA,KAOrB,GAFA7jM,EAAQ0oM,iBAAmBx4L,KAAKlO,MAE5BhC,EAAQ3U,KAAO2U,EAAQ3U,IAAI26M,iBAAmBhmM,EAAQ3U,IAAIsJ,MAC5D,OAAOmzM,GAAQ,CACbE,iBAAkBA,EAIlB9gM,GAAIlH,EAAQqoM,UAAY,QACxBrC,eAAgBhmM,EAAQ3U,IAAI26M,eAC5BzwM,IAAKyK,EAAQ3U,IAAIkK,MAChB,SAAU+yM,GACXtoM,EAAQ3U,IAAIsJ,MAAQ2zM,EACpBzC,GAAiB7lM,GAAS,SAAUimM,GAClC,GAAIA,EAEF,OADAd,GAASC,GACF0B,EAAOb,EAAYjmM,GAG5ByoM,UAKNA,QAaFE,GAAgB,SAAuBC,GACzC,IAAIC,EAAeD,EAAOC,aACtBC,EAAUF,EAAOE,QACrB,OAAO,SAAUv1G,GACf,IAAI43D,EAAU53D,EAAM79E,OAEhBy1I,EAAQvzJ,SAAWkxM,IAAYD,EAAaE,gBAC9CD,IACAD,EAAaE,eAAgB,KA+B/BC,GAAiB,SAAwBC,GAC3C,IAAIjpM,EAAUipM,EAAOjpM,QACjBkpM,EAAaD,EAAOC,WAUxB,OATAD,EAAO3C,YACP2C,EAAO1C,aACP0C,EAAOzC,yBACPyC,EAAOxC,yBACPwC,EAAOvC,MACPuC,EAAOtC,WACPsC,EAAOnF,gBACPmF,EAAOrC,gBACPqC,EAAOpC,OACA,SAAUtzG,GACf,IAAI43D,EAAU53D,EAAM79E,OAEpB,IAAIy1I,EAAQvzJ,QAUZ,OANAoI,EAAQwlM,MAAQhuE,GAAQmgC,aAAa33J,EAAQwlM,MAAOF,GAAiB/xG,KAEhEvzF,EAAQwlM,MAAM2D,sBAAwBnpM,EAAQwlM,MAAMlpC,gBACvDt8J,EAAQwlM,MAAM2D,qBAAuBj5L,KAAKlO,OAGrCknM,EAAW31G,EAAOvzF,KAyEzBopM,GAAsB,SAA6BC,GACrD,IAAI3yM,EAAM2yM,EAAO3yM,IACb4yM,EAAaD,EAAOC,WACpBtB,EAAmBqB,EAAOrB,iBAC1BhoM,EAAUqpM,EAAOrpM,QACjB8oM,EAAUO,EAAOP,QACjBI,EAAaG,EAAOH,WACpB5C,EAAc+C,EAAO/C,YACrBC,EAAe8C,EAAO9C,aACtBC,EAA2B6C,EAAO7C,yBAClCC,EAA2B4C,EAAO5C,yBAClCC,EAAQ2C,EAAO3C,MACfC,EAAa0C,EAAO1C,WACpB7C,EAAkBuF,EAAOvF,gBACzB8C,EAAkByC,EAAOzC,gBACzBC,EAASwC,EAAOxC,OAChBC,EAASuC,EAAOvC,OAChBjD,EAAkBwF,EAAOxF,gBACzBuB,EAAa,GACbO,EAAqB4C,GAAkB,CACzCnD,WAAYA,EACZ4C,iBAAkBA,EAClB1B,YAAaA,EACbC,aAAcA,EACdC,yBAA0BA,EAC1BC,yBAA0BA,EAC1BC,MAAOA,EACPC,WAAYA,EACZ7C,gBAAiBA,EACjB8C,gBAAiBA,EACjBC,OAAQA,EACRC,OAAQA,EACRjD,gBAAiBA,IAGnB,GAAI7jM,EAAQzK,MAAQyK,EAAQzK,IAAIZ,MAAO,CACrC,IAAIgJ,EAAU,CAACqC,EAAQzK,KAEnByK,EAAQ3U,MAAQ2U,EAAQ3U,IAAIsJ,OAASqL,EAAQ3U,IAAIkK,KAAOyK,EAAQ3U,IAAIkK,IAAI0K,cAAgBD,EAAQzK,IAAI0K,aACtGtC,EAAQrW,KAAK0Y,EAAQ3U,IAAIkK,KAG3B,IAAIg0M,EAAoB/xE,GAAQmgC,aAAa2xC,EAAY,CACvDtzM,IAAKgK,EAAQzK,IAAI0K,YACjB1G,aAAc,gBAEZiwM,EAAqB9D,GAAkB1lM,EAASrC,EAASgoM,GACzD8D,EAAS/yM,EAAI6yM,EAAmBC,GACpCpE,EAAW99M,KAAKmiN,GAIlB,GAAIzpM,EAAQ3U,MAAQ2U,EAAQ3U,IAAIsJ,MAAO,CACrC,IAAI+0M,EAAkB1pM,EAAQ3U,IAAIkK,OAASyK,EAAQzK,KAAOyK,EAAQzK,IAAI0K,cAAgBD,EAAQ3U,IAAIkK,IAAI0K,aAEtG,GAAIypM,EAAiB,CACnB,IAAIC,EAAuBnyE,GAAQmgC,aAAa2xC,EAAY,CAC1DtzM,IAAKgK,EAAQ3U,IAAIkK,IAAI0K,YACrB1G,aAAc,gBAEZqwM,EAAwBlE,GAAkB1lM,EAAS,CAACA,EAAQ3U,IAAIkK,KAAMowM,GACtEkE,EAAYnzM,EAAIizM,EAAsBC,GAC1CxE,EAAW99M,KAAKuiN,GAGlB,IAAIC,EAAqBtyE,GAAQmgC,aAAa2xC,EAAY,CACxDtzM,IAAKgK,EAAQ3U,IAAI4U,YACjB1G,aAAc,cACdnE,QAASiuK,GAAkBrjK,EAAQ3U,OAEjC0+M,EAA6BhE,GAA0B,CACzD/lM,QAASA,EACT2lM,mBAAoBA,IAElBqE,EAAiBtzM,EAAIozM,EAAoBC,GAC7C3E,EAAW99M,KAAK0iN,GAGlB,IAAIC,EAAwBzyE,GAAQmgC,aAAa2xC,EAAY,CAC3DtzM,IAAKgK,EAAQ21D,MAAQ31D,EAAQ21D,KAAK11D,aAAeD,EAAQC,YACzD1G,aAAc,cACdnE,QAASiuK,GAAkBrjK,KAEzBkqM,EAAyBhE,GAAsB,CACjDlmM,QAASA,EACT2lM,mBAAoBA,EACpBpsM,aAAc0wM,EAAsB1wM,eAElC4wM,EAAazzM,EAAIuzM,EAAuBC,GAC5CC,EAAWz0F,iBAAiB,WAAYszF,GAAe,CACrDhpM,QAASA,EACTkpM,WAAYA,EACZ5C,YAAaA,EACbC,aAAcA,EACdC,yBAA0BA,EAC1BC,yBAA0BA,EAC1BC,MAAOA,EACPC,WAAYA,EACZ7C,gBAAiBA,EACjB8C,gBAAiBA,EACjBC,OAAQA,KAEVzB,EAAW99M,KAAK6iN,GAGhB,IAAItB,EAAe,GAOnB,OANAzD,EAAW17M,SAAQ,SAAU0gN,GAC3BA,EAAU10F,iBAAiB,UAAWizF,GAAc,CAClDE,aAAcA,EACdC,QAASA,QAGN,WACL,OAAO3D,GAASC,KAShBiF,GAAUjyC,GAAO,cASjBkyC,GAAY,SAAmBt+L,GAGjC,IAAIu+L,EAAkBv+L,EAAMjhB,YAAc,GAE1C,GAAIw/M,EAAgBv/M,OAClB,OAAO,eAAYu/M,EAAgBv/M,SAInCw/M,GAAS,SAAgBjgN,EAAQyhB,GACnC,IAAIu+L,EAAkBv+L,EAAMjhB,YAAc,GAC1C,OAAOR,GAAUA,EAAOE,aAAeF,EAAOE,YAAYC,OAAS6/M,EAAgB7/M,OAASH,EAAOE,YAAYC,MAAM6/M,EAAgB7/M,QAGnIs8M,GAAU,SAAiBz8M,EAAQyhB,GACrC,IAAKw+L,GAAOjgN,EAAQyhB,GAClB,OAAO,EAGT,IAAIu+L,EAAkBv+L,EAAMjhB,YAAc,GACtCJ,EAAaJ,EAAOE,YAAYC,MAAM6/M,EAAgB7/M,OAE1D,IAAK,IAAI0zK,KAAWzzK,EAKlB,IAAKA,EAAWyzK,GAASpoK,MAAQrL,EAAWyzK,GAAStzK,UACnD,OAAO,EAIX,OAAO,GAGL2/M,GAAkB,SAAyBC,GAC7C,IAAIlhN,EAAS,GAiBb,OAhBAkhN,EAAUhhN,SAAQ,SAAU+V,GAC1B,IAAIpV,EAAYoV,EAAKpV,UACjBH,EAAOuV,EAAKvV,KACZE,EAAUqV,EAAKrV,QACnBZ,EAAOa,GAAab,EAAOa,IAAc,GACzCb,EAAOa,GAAW/C,KAAK,eAAqB,GAAK4C,EAAOE,OAE1DiJ,OAAO0K,KAAKvU,GAAQE,SAAQ,SAAUW,GACpC,GAAIb,EAAOa,GAAWJ,OAAS,EAG7B,OAFAogN,GAAQ,YAAchgN,EAAY,gCAAkCb,EAAOa,GAAW6G,KAAK,MAAQ,wGACnG1H,EAAOa,GAAa,MAItBb,EAAOa,GAAab,EAAOa,GAAW,MAEjCb,GAGLmhN,GAAa,SAAoBC,GACnC,IAAIt+L,EAAQ,EAUZ,OARIs+L,EAASxiN,OACXkkB,IAGEs+L,EAASziN,OACXmkB,IAGKA,GAgBLu+L,GAAoB,SAA2BtgN,EAAQyhB,GACzD,IAAIu+L,EAAkBv+L,EAAMjhB,YAAc,GACtC+/M,EAAYL,GAAgBH,GAAUt+L,IAAU,IAGpD,GAAIw+L,GAAOjgN,EAAQyhB,KAAW8+L,EAAU1iN,QACjC4+M,GAAQz8M,EAAQyhB,GAAQ,CAI3B,IAAI++L,EAAgBN,GAAgB,eAAkBlgN,EAAQggN,EAAgB7/M,QAAU,IAEpFqgN,EAAc3iN,QAChB0iN,EAAU1iN,MAAQ2iN,EAAc3iN,OAKtC,OAAO0iN,GAGLE,GAAQ5yC,GAAO,oBAEf6yC,GAAyB,SAAgCt5L,GAC3D,GAAKA,GAAmBA,EAAe1N,SAAvC,CAIA,IAAIA,EAAW0N,EAAe1N,SAC9B,OAAO9M,KAAKqB,UAAU,CACpB0O,GAAIjD,EAASiD,GACba,UAAW4J,EAAe5J,UAC1Bxa,MAAOokB,EAAepkB,MACtBC,OAAQmkB,EAAenkB,OACvBhE,OAAQya,EAASlZ,YAAckZ,EAASlZ,WAAWC,QAAU,OAgB7DkgN,GAAuB,SAA8BlsM,EAAImsM,GAC3D,IAAKnsM,EACH,MAAO,GAGT,IAAIxY,EAAS,IAAS2oH,iBAAiBnwG,GAEvC,OAAKxY,EAIEA,EAAO2kN,GAHL,IAcPC,GAAa,SAAoB11M,EAAO21M,GAC1C,IAAIC,EAAW51M,EAAMtM,QACrBsM,EAAMwP,MAAK,SAAU+gF,EAAMG,GACzB,IAAImlH,EAAMF,EAAOplH,EAAMG,GAEvB,OAAY,IAARmlH,EACKD,EAASh2M,QAAQ2wF,GAAQqlH,EAASh2M,QAAQ8wF,GAG5CmlH,MAePC,GAA2B,SAAkCvlH,EAAMG,GACrE,IAAIqlH,EACAC,EAaJ,OAXIzlH,EAAKl7F,WAAW+c,YAClB2jM,EAAgBxlH,EAAKl7F,WAAW+c,WAGlC2jM,EAAgBA,GAAiB,IAASviN,OAAOuzK,UAE7Cr2E,EAAMr7F,WAAW+c,YACnB4jM,EAAiBtlH,EAAMr7F,WAAW+c,WAGpC4jM,EAAiBA,GAAkB,IAASxiN,OAAOuzK,UAC5CgvC,EAAgBC,GAcrBC,GAA4B,SAAmC1lH,EAAMG,GACvE,IAAIwlH,EACAC,EAeJ,OAbI5lH,EAAKl7F,WAAW2e,YAAcu8E,EAAKl7F,WAAW2e,WAAWnc,QAC3Dq+M,EAAY3lH,EAAKl7F,WAAW2e,WAAWnc,OAGzCq+M,EAAYA,GAAa,IAAS1iN,OAAOuzK,UAErCr2E,EAAMr7F,WAAW2e,YAAc08E,EAAMr7F,WAAW2e,WAAWnc,QAC7Ds+M,EAAazlH,EAAMr7F,WAAW2e,WAAWnc,OAG3Cs+M,EAAaA,GAAc,IAAS3iN,OAAOuzK,UAGvCmvC,IAAcC,GAAc5lH,EAAKl7F,WAAW+c,WAAas+E,EAAMr7F,WAAW+c,UACrEm+E,EAAKl7F,WAAW+c,UAAYs+E,EAAMr7F,WAAW+c,UAG/C8jM,EAAYC,GAuBjBC,GAAiB,SAAwBvhN,EAAQwhN,EAAiBC,EAAapnD,EAAcqnD,EAAkCC,GAEjI,GAAK3hN,EAAL,CAIA,IAAI0L,EAAU,CACZ8R,UAAWgkM,EACXx+M,MAAOy+M,EACPx+M,OAAQo3J,EACRqnD,iCAAkCA,GAEhCnhN,EAAYP,EAAOO,UAEnBiyK,GAASn1J,YAAYrd,KACvBO,EAAYohN,EAAyBC,0BAGrCl2M,EAAQ8T,WAAY,GAItB,IAAIqiM,EAAqBthN,EAAUO,KAAI,SAAU4Y,GAC/C,IAAI8D,EACAxa,EAAQ0W,EAASlZ,YAAckZ,EAASlZ,WAAW2e,YAAczF,EAASlZ,WAAW2e,WAAWnc,MAChGC,EAASyW,EAASlZ,YAAckZ,EAASlZ,WAAW2e,YAAczF,EAASlZ,WAAW2e,WAAWlc,OAGrG,OAFAua,EAAY9D,EAASlZ,YAAckZ,EAASlZ,WAAW+c,UACvDC,EAAYA,GAAa,IAAS7e,OAAOuzK,UAClC,CACL10J,UAAWA,EACXxa,MAAOA,EACPC,OAAQA,EACRyW,SAAUA,MAGdmnM,GAAWgB,GAAoB,SAAUnmH,EAAMG,GAC7C,OAAOH,EAAKl+E,UAAYq+E,EAAMr+E,aAIhCqkM,EAAqBA,EAAmB7nM,QAAO,SAAU8nM,GACvD,OAAQtvC,GAASf,eAAeqwC,EAAIpoM,aAItC,IAAIqoM,EAAsBF,EAAmB7nM,QAAO,SAAU8nM,GAC5D,OAAOtvC,GAASd,UAAUowC,EAAIpoM,aAG3BqoM,EAAoBriN,SAIvBqiN,EAAsBF,EAAmB7nM,QAAO,SAAU8nM,GACxD,OAAQtvC,GAASZ,WAAWkwC,EAAIpoM,cAMpC,IAAIsoM,EAAwBD,EAAoB/nM,QAAO,SAAU8nM,GAC/D,OAAOA,EAAItkM,UAAYgkK,GAAOM,mBAAqB0/B,KAEjDS,EAA+BD,EAAsBA,EAAsBtiN,OAAS,GAGpFwiN,EAAmBF,EAAsBhoM,QAAO,SAAU8nM,GAC5D,OAAOA,EAAItkM,YAAcykM,EAA6BzkM,aACrD,GAEH,IAAyC,IAArCkkM,EAA4C,CAC9C,IAAIS,EAAaD,GAAoBH,EAAoB,IAAMF,EAAmB,GAElF,GAAIM,GAAcA,EAAWzoM,SAAU,CACrC,IAAI/Z,EAAO,qBAWX,OATIuiN,IACFviN,EAAO,oBAGLoiN,EAAoB,KACtBpiN,EAAO,uBAGT8gN,GAAM,YAAcC,GAAuByB,GAAc,UAAYxiN,EAAO,gBAAiB+L,GACtFy2M,EAAWzoM,SAIpB,OADA+mM,GAAM,2CAA4C/0M,GAC3C,KAIT,IAAI02M,EAAiBJ,EAAsBhoM,QAAO,SAAU8nM,GAC1D,OAAOA,EAAI9+M,OAAS8+M,EAAI7+M,UAG1B49M,GAAWuB,GAAgB,SAAU1mH,EAAMG,GACzC,OAAOH,EAAK14F,MAAQ64F,EAAM74F,SAG5B,IAAIq/M,EAAwBD,EAAepoM,QAAO,SAAU8nM,GAC1D,OAAOA,EAAI9+M,QAAUy+M,GAAeK,EAAI7+M,SAAWo3J,KAErD4nD,EAA+BI,EAAsBA,EAAsB3iN,OAAS,GAEpF,IAGI4iN,EACAC,EACAC,EAmBAC,EAxBAC,EAAoBL,EAAsBroM,QAAO,SAAU8nM,GAC7D,OAAOA,EAAItkM,YAAcykM,EAA6BzkM,aACrD,GA0BH,GApBKklM,IACHJ,EAAwBF,EAAepoM,QAAO,SAAU8nM,GACtD,OAAOA,EAAI9+M,MAAQy+M,GAAeK,EAAI7+M,OAASo3J,KAGjDkoD,EAA4BD,EAAsBtoM,QAAO,SAAU8nM,GACjE,OAAOA,EAAI9+M,QAAUs/M,EAAsB,GAAGt/M,OAAS8+M,EAAI7+M,SAAWq/M,EAAsB,GAAGr/M,UAIjGg/M,EAA+BM,EAA0BA,EAA0B7iN,OAAS,GAC5F8iN,EAAuBD,EAA0BvoM,QAAO,SAAU8nM,GAChE,OAAOA,EAAItkM,YAAcykM,EAA6BzkM,aACrD,IAODmkM,EAAyBgB,mCAAoC,CAE/D,IAAIC,EAAqBR,EAAethN,KAAI,SAAUghN,GAEpD,OADAA,EAAIe,UAAYhrM,KAAKkE,IAAI+lM,EAAI9+M,MAAQy+M,GAAe5pM,KAAKkE,IAAI+lM,EAAI7+M,OAASo3J,GACnEynD,KAGTjB,GAAW+B,GAAoB,SAAUlnH,EAAMG,GAE7C,OAAIH,EAAKmnH,YAAchnH,EAAMgnH,UACpBhnH,EAAMr+E,UAAYk+E,EAAKl+E,UAGzBk+E,EAAKmnH,UAAYhnH,EAAMgnH,aAEhCJ,EAAoBG,EAAmB,GAIzC,IAAIE,EAAYL,GAAqBD,GAAwBE,GAAqBR,GAAoBH,EAAoB,IAAMF,EAAmB,GAEnJ,GAAIiB,GAAaA,EAAUppM,SAAU,CACnC,IAAIqpM,EAAQ,qBAeZ,OAbIN,EACFM,EAAQ,oBACCP,EACTO,EAAQ,uBACCL,EACTK,EAAQ,oBACCb,EACTa,EAAQ,mBACChB,EAAoB,KAC7BgB,EAAQ,uBAGVtC,GAAM,YAAcC,GAAuBoC,GAAa,UAAYC,EAAQ,gBAAiBr3M,GACtFo3M,EAAUppM,SAInB,OADA+mM,GAAM,2CAA4C/0M,GAC3C,OAcLs3M,GAAwB,WAC1B,IAAIC,EAAanhN,KAAKohN,qBAAsB,IAASC,kBAAwB,EAC7E,OAAO5B,GAAez/M,KAAKvB,UAAUP,OAAQ8B,KAAKshN,gBAAiBrtM,SAAS4qM,GAAqB7+M,KAAKkjI,MAAMvwH,KAAM,SAAU,IAAMwuM,EAAYltM,SAAS4qM,GAAqB7+M,KAAKkjI,MAAMvwH,KAAM,UAAW,IAAMwuM,EAAYnhN,KAAK4/M,iCAAkC5/M,KAAKuhN,4BAkBpQC,GAAiC,SAAwCC,GAC3E,IAAIC,GAAW,EACXC,GAAuB,EAE3B,GAAIF,EAAQ,GAAKA,EAAQ,EACvB,MAAM,IAAIz3M,MAAM,2DAGlB,OAAO,WACL,IAAIm3M,EAAanhN,KAAKohN,qBAAsB,IAASC,kBAAwB,EAiB7E,OAfIK,EAAU,IACZA,EAAU1hN,KAAKshN,gBACfK,EAAsB3hN,KAAKshN,iBAQzBthN,KAAKshN,gBAAkB,GAAKthN,KAAKshN,kBAAoBK,IACvDD,EAAUD,EAAQzhN,KAAKshN,iBAAmB,EAAIG,GAASC,EACvDC,EAAsB3hN,KAAKshN,iBAGtB7B,GAAez/M,KAAKvB,UAAUP,OAAQwjN,EAASztM,SAAS4qM,GAAqB7+M,KAAKkjI,MAAMvwH,KAAM,SAAU,IAAMwuM,EAAYltM,SAAS4qM,GAAqB7+M,KAAKkjI,MAAMvwH,KAAM,UAAW,IAAMwuM,EAAYnhN,KAAK4/M,iCAAkC5/M,KAAKuhN,6BAiCzPK,GAAkC,SAAyC3oH,GAC7E,IAAI/6F,EAAS+6F,EAAS/6F,OAClBmmI,EAAcprC,EAASorC,YACvB3oH,EAAYu9E,EAASv9E,UACrBhH,EAAWukF,EAASvkF,SACpBI,EAAkBmkF,EAASnkF,gBAC3Bi4J,EAAoB9zE,EAAS8zE,kBAC7BljE,EAAkB5Q,EAAS4Q,gBAC3Bg4G,EAAiB5oH,EAAS4oH,eAG1BC,EAAsB5jN,EAAOO,UAAUyZ,QAAO,SAAUN,GAC1D,OAAQ84J,GAASf,eAAe/3J,MAI9BmqM,EAAmBD,EAAoB5pM,OAAOw4J,GAASd,WAEtDmyC,EAAiBnkN,SAIpBmkN,EAAmBD,EAAoB5pM,QAAO,SAAUN,GACtD,OAAQ84J,GAASZ,WAAWl4J,OAIhC,IAAIoqM,EAAqBD,EAAiB7pM,OAAOw4J,GAASvyD,aAAapwG,KAAK,KAAM,cAC9Ek0M,EAAuBD,EAAmBhjN,KAAI,SAAU4Y,GAC1D,IAAIsqL,EAAY2f,EAAeK,aAAatqM,EAAUlD,EAAUm1F,EAAiBw6B,GAG7E89E,EAAcjgB,EAAY,EAAI,EAC9BkgB,EAAsB1xC,GAASV,2BAA2Bl7J,EAAiB4G,EAAW9D,GACtFyqM,EAAoBD,EAAsBD,EAAcp1C,EAC5D,MAAO,CACLn1J,SAAUA,EACVyqM,kBAAmBA,MAGnBC,EAAyBL,EAAqB/pM,QAAO,SAAUqqM,GACjE,OAAOA,EAASF,mBAAqB,KAOvC,OAJAtD,GAAWuD,GAAwB,SAAU98M,EAAGT,GAC9C,OAAOo6M,GAAyBp6M,EAAE6S,SAAUpS,EAAEoS,aAG5C0qM,EAAuB1kN,OAClB0kN,EAAuB,IAGhCvD,GAAWkD,GAAsB,SAAUz8M,EAAGT,GAC5C,OAAOS,EAAE68M,kBAAoBt9M,EAAEs9M,qBAE1BJ,EAAqB,IAAM,OAehCO,GAAyC,WAC3C,IAAIj8G,EAAQvmG,KAIRvB,EAAYuB,KAAKvB,UAAUP,OAAOO,UAAUyZ,OAAOw4J,GAASd,WAEhEmvC,GAAWtgN,GAAW,SAAU+G,EAAGT,GACjC,OAAOo6M,GAAyB35M,EAAGT,MAOrC,IAAI09M,EAAqBhkN,EAAUyZ,QAAO,SAAUN,GAClD,QAAS4mM,GAAkBj4G,EAAM9nG,UAAUP,OAAQ0Z,GAAU9b,SAE/D,OAAO2mN,EAAmB,IAAM,MAW9BC,GAAiB,SAAwBC,GAC3C,IACI5zG,EADA9oG,EAAS,EAYb,OATI08M,EAAWr6M,QACbymG,EAAa,IAAIz0G,WAAWqoN,EAAWr6M,OAEvCq6M,EAAW3rM,SAAS3Z,SAAQ,SAAUsW,GACpCo7F,EAAW1jF,IAAI1X,EAAS1N,GACxBA,GAAU0N,EAAQzZ,eAIf60G,GAgBL6zG,GAAiC,SAAwCC,EAAkBzoF,EAAMsgE,GACnG,IAAKmoB,EAAiBnoB,GAAgB,CACpCtgE,EAAKt0B,QAAQ,CACXjoG,KAAM,QACNL,KAAM,YAER48H,EAAKt0B,QAAQ,CACXjoG,KAAM,QACNL,KAAM,YAER,IAAIwf,EAAa09K,EAEb,UAAU77L,KAAK67L,KACjB19K,EAAa,UAAY09K,EAAct9L,MAAM,KAAK,IAGpD,IAAI4/F,EAAQo9B,EAAKK,aAAakE,aAAa3hH,GAE3C,GAAIggF,EAIF6lH,EAAiBnoB,GAAiB19F,MAC7B,CAGL,IAAIrgF,EAAkBy9G,EAAKxI,SAASoiD,KAAO55C,EAAKxI,SAASoiD,IAAIr3J,iBAAmB,GAC5EvD,EAAQshL,EACRt+K,EAAWs+K,EACXooB,GAAM,EACNC,EAAiBpmM,EAAgBK,GAEjC+lM,IACF3pM,EAAQ2pM,EAAe3pM,MACvBgD,EAAW2mM,EAAe3mM,SAC1B0mM,EAAMC,EAAe,YAKvBF,EAAiBnoB,GAAiBtgE,EAAKQ,mBAAmB,CACxDmF,KAAM,WACNllH,GAAImC,EAEJ,QAAW8lM,EACX1pM,MAAOA,EACPgD,SAAUA,IACT,GAAO4gF,SAeZgmH,GAAiB,SAAwB5vM,GAC3C,IAAIyvM,EAAmBzvM,EAAKyvM,iBACxBI,EAAe7vM,EAAK6vM,aACpBjN,EAAkB5iM,EAAK4iM,gBAE3B,GAAKiN,EAAL,CAIA,IAAIC,EAAM,IAASC,eAAiB,IAASv7M,OAC7Cq7M,EAAa5lN,SAAQ,SAAUusM,GAC7B,IAAI5sG,EAAQ4sG,EAAQ1mG,OACpB2/G,EAAiB7lH,GAAO69B,OAAO,IAAIqoF,EAAItZ,EAAQ99K,UAAYkqL,EAAiBpM,EAAQ79K,QAAUiqL,EAAiBpM,EAAQ5tM,YAavHonN,GAAkB,SAAyB3qH,GAC7CzxF,OAAO+lB,iBAAiB0rE,EAAI0wF,MAAO,CACjCtuK,GAAI,CACFuQ,IAAK,WAEH,OADA+/G,GAAQtoI,IAAIqqB,KAAK,0DACVurE,EAAIrxF,MAAM8B,MAGrB9B,MAAO,CACLgkB,IAAK,WAEH,OADA+/G,GAAQtoI,IAAIqqB,KAAK,8DACVurE,EAAIrxF,MAAMvN,OAGrBuiM,YAAa,CACXhxK,IAAK,WAEH,OADA+/G,GAAQtoI,IAAIqqB,KAAK,oEACVurE,EAAIrxF,MAAMvN,UAiBrBwpN,GAAc,SAAqB/pM,GACrC,IAAIupM,EAAmBvpM,EAAMupM,iBACzBS,EAAgBhqM,EAAMgqM,cACtBtN,EAAkB18L,EAAM08L,gBACxBuN,EAAgBjqM,EAAMiqM,cAE1B,GAAKD,EAAL,CAIA,IAAIJ,EAAM,IAASC,eAAiB,IAASv7M,OACzC47M,EAAgBX,EAAiBY,eAErC,GAAKD,IAILF,EAAcjmN,SAAQ,SAAUqkI,GAC9B,IAAI9qH,EAAO8qH,EAASqoE,QAAUiM,IAKV,kBAATp/L,GAAqB,IAASrC,MAAMqC,IAASA,EAAO,IAAOA,EAAOlB,KAI7EgsH,EAAS6mD,OAAOlrL,SAAQ,SAAU8rL,GAChC,IAAI1wF,EAAM,IAAIyqH,EAAItsM,EAAMA,EAAMuyK,EAAM/hL,OAAS+hL,EAAMx9K,KAAOw9K,EAAMtvL,MAAQ,IACxE4+F,EAAI0wF,MAAQA,EACZ1wF,EAAIrxF,MAAQ+hL,EACZi6B,GAAgB3qH,GAChB+qH,EAAc3oF,OAAOpiC,SAIpB+qH,EAAcliH,MAASkiH,EAAcliH,KAAK1jG,QAA/C,CAWA,IAJA,IAAI0jG,EAAOkiH,EAAcliH,KACrBoiH,EAAY,GAGP9oN,EAAI,EAAGA,EAAI0mG,EAAK1jG,OAAQhD,IAC3B0mG,EAAK1mG,IACP8oN,EAAUzoN,KAAKqmG,EAAK1mG,IAKxB,IAAI+oN,EAAyBD,EAAUlyM,QAAO,SAAUhI,EAAKivF,GAC3D,IAAImrH,EAAWp6M,EAAIivF,EAAI3sE,YAAc,GAGrC,OAFA83L,EAAS3oN,KAAKw9F,GACdjvF,EAAIivF,EAAI3sE,WAAa83L,EACdp6M,IACN,IAECq6M,EAAmB78M,OAAO0K,KAAKiyM,GAAwB9qM,MAAK,SAAUrT,EAAGT,GAC3E,OAAOlI,OAAO2I,GAAK3I,OAAOkI,MAG5B8+M,EAAiBxmN,SAAQ,SAAUyuB,EAAWojK,GAC5C,IAAI40B,EAAWH,EAAuB73L,GAClCi4L,EAAWlnN,OAAOgnN,EAAiB30B,EAAM,KAAOq0B,EAEpDO,EAASzmN,SAAQ,SAAUo7F,GACzBA,EAAI1sE,QAAUg4L,WAchBC,GAAiC,SAAwCnB,EAAkBtmB,EAAcniE,GACvGyoF,EAAiBY,iBAIrBZ,EAAiBY,eAAiBrpF,EAAKQ,mBAAmB,CACxDmF,KAAM,WACN3mH,MAAO,mBACN,GAAO4jF,MACV6lH,EAAiBY,eAAeQ,gCAAkC1nB,IAYhE2nB,GAAsB,SAA6BpyM,EAAOC,EAAKirF,GACjE,IAAIpiG,EACA69F,EAEJ,GAAKuE,GAIAA,EAAMsE,KAAX,CAIA1mG,EAAIoiG,EAAMsE,KAAK1jG,OAEf,MAAOhD,IACL69F,EAAMuE,EAAMsE,KAAK1mG,GAEb69F,EAAI3sE,WAAaha,GAAS2mF,EAAI1sE,SAAWha,GAC3CirF,EAAM0nC,UAAUjsC,KAalB0rH,GAA+B,SAAsCnnH,GACvE,IAAIsE,EAAOtE,EAAMsE,KAEjB,GAAKA,EAIL,IAAK,IAAI1mG,EAAI,EAAGA,EAAI0mG,EAAK1jG,OAAQhD,IAAK,CAIpC,IAHA,IAAIwpN,EAAa,GACbC,EAAc,EAETxzE,EAAI,EAAGA,EAAIvvC,EAAK1jG,OAAQizI,IAC3BvvC,EAAK1mG,GAAGkxB,YAAcw1E,EAAKuvC,GAAG/kH,WAAaw1E,EAAK1mG,GAAGmxB,UAAYu1E,EAAKuvC,GAAG9kH,SAAWu1E,EAAK1mG,GAAGoB,OAASslG,EAAKuvC,GAAG70I,OAC7GqoN,IAEIA,EAAc,GAChBD,EAAWnpN,KAAKqmG,EAAKuvC,KAKvBuzE,EAAWxmN,QACbwmN,EAAW/mN,SAAQ,SAAUinN,GAC3B,OAAOtnH,EAAM0nC,UAAU4/E,QAoB3BC,GAAsB,SAA6BvqN,EAAQqqI,EAAamgF,GAC1E,GAA2B,qBAAhBngF,GAA+C,OAAhBA,IAAyBrqI,EAAO4D,OACxE,MAAO,GAIT,IACIhD,EADA6pN,EAAiB1uM,KAAKC,MAAMquH,EAAcmgF,EAAU,GAAK,uBAG7D,IAAK5pN,EAAI,EAAGA,EAAIZ,EAAO4D,OAAQhD,IAC7B,GAAIZ,EAAOY,GAAG+tL,IAAM87B,EAClB,MAIJ,OAAOzqN,EAAO+C,MAAMnC,IAkBlB8pN,GAAkB,SAAyB1qN,EAAQ+uL,EAAMvsL,GAC3D,IAAKusL,EAAKnrL,OACR,OAAO5D,EAGT,GAAIwC,EAKF,OAAOusL,EAAKhsL,QAGd,IAAI+U,EAAQi3K,EAAK,GAAGJ,IAChB/tL,EAAI,EAER,IAAKA,EAAGA,EAAIZ,EAAO4D,OAAQhD,IACzB,GAAIZ,EAAOY,GAAG+tL,KAAO72K,EACnB,MAIJ,OAAO9X,EAAO+C,MAAM,EAAGnC,GAAG+W,OAAOo3K,IAgB/B47B,GAAkB,SAAyB3qN,EAAQ8X,EAAOC,EAAKyyM,GACjE,IAAIxyB,EAAWj8K,KAAKC,MAAMlE,EAAQ0yM,GAAW,uBACzCzuB,EAAShgL,KAAKC,MAAMjE,EAAMyyM,GAAW,uBACrCI,EAAgB5qN,EAAO+C,QACvBnC,EAAIZ,EAAO4D,OAEf,MAAOhD,IACL,GAAIZ,EAAOY,GAAG+tL,KAAOoN,EACnB,MAIJ,IAAW,IAAPn7L,EAEF,OAAOgqN,EAGT,IAAI/zE,EAAIj2I,EAAI,EAEZ,MAAOi2I,IACL,GAAI72I,EAAO62I,GAAG83C,KAAOqJ,EACnB,MAOJ,OAFAnhD,EAAI96H,KAAKK,IAAIy6H,EAAG,GAChB+zE,EAAc/+G,OAAOgrC,EAAGj2I,EAAIi2I,EAAI,GACzB+zE,GAGLC,GAAe,SAAsBr/M,EAAGT,GAI1C,IAAKS,IAAMT,IAAMS,GAAKT,GAAKS,IAAMT,EAC/B,OAAO,EAIT,GAAIS,IAAMT,EACR,OAAO,EAKT,IAAI+/M,EAAQ99M,OAAO0K,KAAKlM,GAAGqT,OACvBksM,EAAQ/9M,OAAO0K,KAAK3M,GAAG8T,OAE3B,GAAIisM,EAAMlnN,SAAWmnN,EAAMnnN,OACzB,OAAO,EAGT,IAAK,IAAIhD,EAAI,EAAGA,EAAIkqN,EAAMlnN,OAAQhD,IAAK,CACrC,IAAIsO,EAAM47M,EAAMlqN,GAEhB,GAAIsO,IAAQ67M,EAAMnqN,GAChB,OAAO,EAIT,GAAI4K,EAAE0D,KAASnE,EAAEmE,GACf,OAAO,EAIX,OAAO,GAIL87M,GAAqB,GAWrBC,GAA0B,SAAiCp7G,EAAiB7yF,EAAUkuM,GACxFluM,EAAWA,GAAY,GAIvB,IAHA,IAAImuM,EAAmB,GACnBvuM,EAAO,EAEFhc,EAAI,EAAGA,EAAIoc,EAASpZ,OAAQhD,IAAK,CACxC,IAAI+Y,EAAUqD,EAASpc,GAEvB,GAAIivG,IAAoBl2F,EAAQgD,WAC9BwuM,EAAiBlqN,KAAKL,GACtBgc,GAAQjD,EAAQe,SAEZkC,EAAOsuM,GACT,OAAOtqN,EAKb,OAAgC,IAA5BuqN,EAAiBvnN,OACZ,EAIFunN,EAAiBA,EAAiBvnN,OAAS,IAOhDwnN,GAAkB,EAElBC,GAAqB,IAErBC,GAAS,SAAgBxiJ,GAC3B,MAAsB,kBAARA,GAAoB+nC,SAAS/nC,IAMzCyiJ,GAAqC,EAAI,GAEzCC,GAAqB,SAA4BC,EAAYC,EAAe1Q,GAG9E,MAAmB,SAAfyQ,GAA0BC,GAAkB1Q,EAI3CA,EAAUpK,UAAaoK,EAAUnK,SAIlC6a,EAAc7a,WAAamK,EAAUnK,SAChC,6LAGJ6a,EAAc7a,UAAYmK,EAAUnK,SAChC,kMAGF,KAXE,4CAJA,MAgCP8a,GAAyB,SAAgC/3E,EAAUvJ,EAAa1oH,GAMlF,IAAIiqM,EAAWvhF,EAAcq7C,GAAOG,mBAEhCjyC,EAAShwI,SAGXgoN,EAAW7vM,KAAKK,IAAIwvM,EAAUh4E,EAAS97H,MAAM,KAK/C,IAAI+zM,EAAcxhF,EAAc1oH,EAChC,OAAO5F,KAAKM,IAAIwvM,EAAaD,IAG3BE,GAAoB,SAA2BpkM,GACjD,IAAI22J,EAAiB32J,EAAY22J,eAC7B3jK,EAAWgN,EAAYhN,SACvBf,EAAU+N,EAAY/N,QACtB21D,EAAO5nD,EAAY4nD,KACnBy8I,EAAwBrkM,EAAY9J,SACpCs7K,EAAM6yB,EAAsB1tM,cAC5BwC,EAAKkrM,EAAsBlrM,GAC3BmrM,EAAyBD,EAAsB/uM,SAC/CA,OAAsC,IAA3BgvM,EAAoC,GAAKA,EACpD/jN,EAAQyf,EAAYukM,WACpBl6G,EAAYrqF,EAAYqqF,UACxBp1F,EAAW+K,EAAY/K,SACvBuvM,EAAalvM,EAASpZ,OAAS,EAC/BuoN,EAAY,iCAEZzkM,EAAYqtJ,oBACdo3C,EAAY,wBAA0BzkM,EAAYqtJ,oBAAsB,IAC/DrtJ,EAAY0kM,gBACrBD,EAAY,2CAGVzkM,EAAY2kM,cACdF,GAAa,qBAAuBzkM,EAAY2kM,aAGlD,IAAIC,EAAoC,kBAAdv6G,EACtBvuG,EAAOkkB,EAAY/N,QAAQhK,IAAM,UAAY,cAC7C48M,EAAqBD,EAAe54C,GAAkB,CACxDzjE,eAAgBt2F,IACb,EAAI,EACT,OAAOnW,EAAO,MAAQ01L,EAAMjxL,GAAS,KAAOixL,EAAMgzB,GAAc,KAAOI,EAAe,UAAYv6G,EAAY,IAAMw6G,EAAqB,IAAM,IAAO,uBAAyB5yM,EAAQ7B,MAAQ,OAAS6B,EAAQ5B,IAAM,KAAQu0M,EAAe,oBAAsBh9I,EAAKx3D,MAAQ,OAASw3D,EAAKv3D,IAAM,IAAM,IAAO,oBAAsBsmK,EAAhU76K,eAAyWkX,EAAzWlX,eAA4YmZ,EAA5YnZ,kBAAkb2oN,EAAlb3oN,eAAsdqd,EAAK,KAGhe2rM,GAA6B,SAAoCxoN,GACnE,OAAOA,EAAY,cAuBjByoN,GAA4B,SAAmCrzM,GACjE,IAAIoM,EAAkBpM,EAAKoM,gBACvBqqF,EAAkBz2F,EAAKy2F,gBACvBwuE,EAAiBjlK,EAAKilK,eACtBh/C,EAAWjmH,EAAKimH,SAChBqtF,EAAgBtzM,EAAKszM,cAOzB,OAAKA,GAAiBlnM,IAAoBqqF,EA4BtCrqF,EAAkBqqF,EACbwuE,EAQFh/C,EAASz7H,OAASy7H,EAAStnH,IAAIsnH,EAASz7H,OAAS,GAAKy6K,EApCpD,MAuIPsuC,GAA8B,SAAqCrtM,GACrE,IAAIstM,EAA2BttM,EAAMstM,yBACjC/8G,EAAkBvwF,EAAMuwF,gBACxBrqF,EAAkBlG,EAAMkG,gBACxBimM,EAAansM,EAAMmsM,WACnBoB,EAAgBvtM,EAAMutM,cAE1B,GAAIh9G,IAAoBrqF,EACtB,OAAO,EAGT,GAAmB,UAAfimM,EAAwB,CAC1B,IAAIqB,EAAyBF,EAAyBG,mBAAmB,CACvElpN,KAAM,SAMR,OAAQipN,GAA0BA,EAAuB12F,KAAO5wG,EAOlE,GAAmB,SAAfimM,GAAyBoB,EAAe,CAC1C,IAAIG,EAA6BJ,EAAyBK,sBAAsB,CAC9EppN,KAAM,UAoBR,OAAImpN,GAA8BA,EAA2B52F,KAAO5wG,EAOtE,OAAO,GAGL0nM,GAAgB,SAAuBC,GACzC,IAAIC,EAAc,EA4BlB,MA3BA,CAAC,QAAS,SAAS/pN,SAAQ,SAAUQ,GACnC,IAAIwpN,EAAiBF,EAAYtpN,EAAO,cAExC,GAAKwpN,EAAL,CAIA,IAEI3yM,EAFA5C,EAAQu1M,EAAev1M,MACvBC,EAAMs1M,EAAet1M,IAGJ,kBAAVD,GAAqC,kBAARC,EACtC2C,EAAW,IAASV,OAAOjC,GAAO,IAASiC,OAAOlC,GACxB,kBAAVA,GAAqC,kBAARC,IAC7C2C,EAAW3C,EAAMD,GAGK,qBAAb4C,GAA4BA,EAAW0yM,IAChDA,EAAc1yM,OAKS,kBAAhB0yM,GAA4BA,EAAcvqN,OAAOsX,mBAC1DizM,EAAcvqN,OAAOuqN,IAGhBA,GAGLE,GAAiB,SAAwB9tM,GAC3C,IAAI1E,EAAkB0E,EAAM1E,gBACxBsyM,EAAc5tM,EAAM4tM,YAGxB,QAAKtyM,GAeEiB,KAAKiqF,MAAMlrF,GAAmBsyM,EAAcp7C,IAGjDu7C,GAAuC,SAA8C7lM,EAAa8lM,GAGpG,GAAmB,QAAfA,EACF,OAAO,KAGT,IAAI1yM,EAAkBoyM,GAAc,CAClCjS,gBAAiBvzL,EAAYuzL,gBAC7B/8B,gBAAiBx2J,EAAYw2J,kBAM/B,IAAKpjK,EACH,OAAO,KAGT,IAAI6G,EAAiB+F,EAAY9J,SAAS+D,eACtC8rM,EAAsBH,GAAe,CACvCxyM,gBAAiBA,EACjBsyM,YAA8B,EAAjBzrM,IAEX+rM,EAA2BJ,GAAe,CAC5CxyM,gBAAiBA,EACjBsyM,YAAazrM,IAEXgsM,EAAwB,sBAAwBjmM,EAAYukM,WAApC,kBAA2EvkM,EAAY9J,SAASiD,GAAhG,sBAAoI/F,EAApI,kCAAiM4M,EAAYhN,SAA7M,+BAAgQiH,EAAhQ,4PAE5B,OAAI8rM,GAAuBC,EAClB,CACLE,SAAUH,EAAsB,OAAS,OACzC5vH,QAAS8vH,GAIN,MAWLE,GAA6B,SAAUC,GAGzC,SAASD,EAAc5uH,EAAUrvF,GAC/B,IAAI28F,EAIJ,GAFAA,EAAQuhH,EAAqBl3M,KAAK5Q,OAASA,MAEtCi5F,EACH,MAAM,IAAI3vE,UAAU,wCAGtB,GAAoC,oBAAzB2vE,EAASorC,YAClB,MAAM,IAAI/6G,UAAU,mCAGtB,IAAK2vE,EAAS8uH,YACZ,MAAM,IAAIz+L,UAAU,4BAsJtB,OAlJAi9E,EAAM7qF,UAAYu9E,EAASv9E,UAC3B6qF,EAAMyhH,WAAa,CACjBrgE,KAAM,EACN1nI,MAAO,GAETsmF,EAAM0hH,UAAY70D,IAElB7sD,EAAM2hH,cAEN3hH,EAAM0/G,WAAa,KACnB1/G,EAAMwF,UAAY,KAElBxF,EAAM4hH,WAAalvH,EAASmvH,UAC5B7hH,EAAMw2C,aAAe9jD,EAASorC,YAC9B99B,EAAM8hH,UAAYpvH,EAAS20C,SAC3BrnC,EAAM+hH,SAAWrvH,EAASqjE,QAC1B/1D,EAAMyhC,UAAY/uC,EAASvkF,SAC3B6xF,EAAMgiH,aAAetvH,EAAS8uH,YAC9BxhH,EAAM8tE,KAAOp7E,EAAS+6E,IACtBztE,EAAMiiH,YAAcvvH,EAASwsH,WAC7Bl/G,EAAMkiH,uBAAoB,EAC1BliH,EAAMmiH,wBAAqB,EAC3BniH,EAAMoiH,sBAAwB1vH,EAAS2vH,qBACvCriH,EAAMsiH,kBAAoB5vH,EAAS6vH,iBACnCviH,EAAMwiH,YAAc9vH,EAASuuH,WAC7BjhH,EAAMyiH,eAAiB/vH,EAASgwH,cAChC1iH,EAAM2iH,kBAAoBjwH,EAAS4pH,iBACnCt8G,EAAM4iH,OAAS,OACf5iH,EAAM6iH,0BAA4BnwH,EAAS2tH,yBAC3CrgH,EAAM8iH,8BAA+B,EACrC9iH,EAAM4nF,kBAAoBl1F,EAASm1F,iBACnC7nF,EAAM+iH,0BAA4BrwH,EAASswH,yBAC3ChjH,EAAMijH,iBAAmBvwH,EAASt8E,gBAClC4pF,EAAM2oE,iCAAmCj2E,EAASi2E,iCAElD3oE,EAAMkjH,oBAAsB,KAC5BljH,EAAMmiC,YAAS,EACfniC,EAAMmjH,kBAAoB,EAC1BnjH,EAAMojH,gBAAkB,KACxBpjH,EAAMqjH,YAAc,KACpBrjH,EAAMsjH,iBAAmB,GACzBtjH,EAAMujH,gBAAiB,EACvBvjH,EAAMwjH,2BAA4B,EAElCxjH,EAAMyjH,WAAa,GACnBzjH,EAAM0jH,aAAe,EACrB1jH,EAAM2jH,YAAc/+E,GAAQvmB,QAAQX,YAAc,GAClD1d,EAAM4jH,mBAAqB,CACzBpuN,OAAO,EACPD,OAAO,GAETyqG,EAAM6jH,2BAA6B,CACjCruN,MAAO,KACPD,MAAO,MAETyqG,EAAM8jH,WAAa,GAMnB9jH,EAAM+jH,WAAa,GACnB/jH,EAAMgkH,eAAiB,CACrB1gB,IAAK,GACLD,QAAS,IAEXrjG,EAAMikH,kBAAmB,EACzBjkH,EAAMkkH,gCAAkC,KAExClkH,EAAMmkH,qBAAuB,KAC7BnkH,EAAMokH,cAAgB,GAEtBpkH,EAAMqkH,qBAAuB3xH,EAAS4xH,oBACtCtkH,EAAMukH,UAAY,GAClBvkH,EAAMwkH,WAAa9xH,EAAS+xH,UAI5BzkH,EAAM0kH,gBAAkBhyH,EAAS4oH,eACjCt7G,EAAM2kH,WAAa,CACjBp/G,aAAc,EACdl1F,KAAM,GAER2vF,EAAM4kH,YAAc5kH,EAAM6kH,oBAE1B7kH,EAAM8kH,uBAAyB,WAC7B,OAAO9kH,EAAMT,QAAQ,mBAGvBS,EAAM0kH,gBAAgBvlH,GAAG,iBAAkBa,EAAM8kH,wBAEjD9kH,EAAMgiH,aAAal/F,iBAAiB,cAAc,WAC3C9iB,EAAM+kH,mBACT/kH,EAAMglH,QAAS,MAKnBhlH,EAAMilH,gBAAiB,EACvBjlH,EAAM0tE,QAAUlI,GAAO,iBAAmBxlE,EAAMiiH,YAAc,KAC9DxhN,OAAOC,eAAe,IAAuBs/F,GAAQ,QAAS,CAC5Dn7E,IAAK,WACH,OAAOprB,KAAKmpN,QAEd99L,IAAK,SAAaogM,GACZA,IAAazrN,KAAKmpN,SACpBnpN,KAAKi0K,QAAQj0K,KAAKmpN,OAAS,OAASsC,GACpCzrN,KAAKmpN,OAASsC,EACdzrN,KAAK8lG,QAAQ,mBAKnBS,EAAMyiH,eAAetjH,GAAG,SAAS,WAC3Ba,EAAMmlH,0BACRnlH,EAAMolH,uBAQgB,SAAtBplH,EAAMiiH,aACRjiH,EAAM6iH,0BAA0B1jH,GAAG,yBAAyB,WACtDa,EAAMmlH,0BACRnlH,EAAMolH,uBAQc,UAAtBplH,EAAMiiH,aACRjiH,EAAM6iH,0BAA0B1jH,GAAG,kBAAkB,WAC/Ca,EAAMqlH,wBACRrlH,EAAMslH,oBAGJtlH,EAAMmlH,0BACRnlH,EAAMolH,uBAKLplH,EAtKT,IAAeshH,EAAeC,GAyK9B,IAAIriH,EAASoiH,EAAcpgN,UA87E3B,OA57EAg+F,EAAO2lH,kBAAoB,WACzB,OAAOhT,GAAkBF,iBAAiB,CACxCjP,OAAO,EACPlB,eAAgB/nM,KAAKkqN,YACrB75M,wBAAwB,EACxB+9K,iBAAkBpuL,KAAKmuL,kBACvBxxK,gBAAiB3c,KAAKwpN,oBAU1B/jH,EAAOyiH,YAAc,WACnBloN,KAAK8rN,sBAAwB,EAC7B9rN,KAAK+rN,cAAgB,EACrB/rN,KAAKgsN,qBAAuB,EAC5BhsN,KAAKisN,sBAAwB,EAC7BjsN,KAAKksN,qBAAuB,EAC5BlsN,KAAKmsN,sBAAwB,EAC7BnsN,KAAKosN,mBAAqB,EAC1BpsN,KAAKqsN,aAAe,GAOtB5mH,EAAOS,QAAU,WACflmG,KAAK8lG,QAAQ,WACb9lG,KAAKgiG,MAAQ,WACbhiG,KAAKqC,QACLrC,KAAKssN,SAEDtsN,KAAKmrN,aACPnrN,KAAKmrN,YAAYjqC,YAGnBlhL,KAAKkoN,cAEDloN,KAAKypN,qBACP,IAASt+M,aAAanL,KAAKypN,qBAGzBzpN,KAAKirN,iBAAmBjrN,KAAKqrN,wBAC/BrrN,KAAKirN,gBAAgBrlH,IAAI,iBAAkB5lG,KAAKqrN,wBAGlDrrN,KAAK4lG,OAGPH,EAAO8mH,SAAW,SAAkBvqG,GAClChiH,KAAK8pN,gBAAkB9nG,EAEnBA,EACFhiH,KAAKmqN,mBAAmBpuN,OAAQ,EAGhCiE,KAAKgpN,eAAewD,YAAY,EAAGxsN,KAAKgoI,cAS5CviC,EAAO14F,MAAQ,WACM,YAAf/M,KAAKgiG,OAQThiG,KAAKssN,SAKLtsN,KAAKgiG,MAAQ,QAGRhiG,KAAKk8H,UACRl8H,KAAKysN,kBAhBDzsN,KAAK2pN,kBACP3pN,KAAK2pN,gBAAkB,OAyB7BlkH,EAAO6mH,OAAS,WACVtsN,KAAK2pN,iBAAmB3pN,KAAK2pN,gBAAgB+C,eAC/C1sN,KAAK2pN,gBAAgB+C,gBAIvB1sN,KAAK2pN,gBAAkB,KACvB3pN,KAAKqqN,WAAa,GAClBrqN,KAAKsqN,WAAa,GAClBtqN,KAAKuqN,eAAe1gB,IAAM,GAC1B7pM,KAAKuqN,eAAe3gB,QAAU,GAC9B5pM,KAAKopN,0BAA0BuD,2BAA2B3sN,KAAKwoN,aAC/DxoN,KAAKwqN,kBAAmB,EACxB,IAASr/M,aAAanL,KAAKyqN,iCAC3BzqN,KAAKyqN,gCAAkC,MAGzChlH,EAAOmnH,eAAiB,SAAwB5Q,GAG9C,MAAmB,cAAfh8M,KAAKgiG,OAA0BhiG,KAAK2pN,iBAKnC3pN,KAAK2pN,iBAAmB3pN,KAAK2pN,gBAAgB3N,YAAcA,GAJ9Dh8M,KAAKgiG,MAAQ,SACN,IAiBXyD,EAAO51E,MAAQ,SAAeg9L,GAO5B,MANsB,qBAAXA,IACT7sN,KAAKi0K,QAAQ,kBAAmB44C,GAChC7sN,KAAK0oI,OAASmkF,GAGhB7sN,KAAK2pN,gBAAkB,KAChB3pN,KAAK0oI,QAGdjjC,EAAOqnH,YAAc,WACnB9sN,KAAKurN,QAAS,EAEVvrN,KAAKmrN,aAEP/S,GAAkB5vE,MAAMxoI,KAAKmrN,aAG/BnrN,KAAKgqN,WAAWpsN,OAAS,EACzBoC,KAAKqC,QACLrC,KAAK8lG,QAAQ,UAUfL,EAAOsnH,UAAY,WACjB,IAAI/X,EAAYh1M,KAAKgtN,gBAErB,IAAKhtN,KAAKgpN,iBAAmBhU,EAC3B,OAAO7pE,GAAQhS,mBAGjB,GAAyB,SAArBn5H,KAAKwoN,YAAwB,CAC/B,IAAI5d,EAAWoK,EAAUpK,SACrBC,EAAWmK,EAAUnK,SACrB8P,EAAU3F,EAAU2F,QAExB,GAAI9P,GAAYD,IAAa5qM,KAAK8pN,iBAAmBnP,EACnD,OAAO36M,KAAKgpN,eAAe3vF,WAG7B,GAAIwxE,EACF,OAAO7qM,KAAKgpN,eAAeiE,gBAM/B,OAAOjtN,KAAKgpN,eAAekE,iBAc7BznH,EAAO0nH,kBAAoB,SAA2BnuN,EAAKqsB,GAKzD,QAJY,IAARA,IACFA,GAAM,IAGHrsB,EACH,OAAO,KAGT,IAAI6b,EAAK08J,GAAcv4K,GACnBouN,EAAYptN,KAAK2qN,cAAc9vM,GAYnC,OAVIwQ,IAAQ+hM,GAAapuN,EAAIsJ,QAC3BtI,KAAK2qN,cAAc9vM,GAAMuyM,EAAY,CACnCx5M,YAAa5U,EAAI4U,YACjBQ,UAAWpV,EAAIoV,UACf9L,MAAOtJ,EAAIsJ,MACXiyH,OAAQv7H,EAAIu7H,OACZ81E,WAAYrxM,EAAIqxM,aAIb+c,GAAapuN,GActBymG,EAAO4nH,WAAa,SAAoBnkN,EAAKmiB,GAK3C,QAJY,IAARA,IACFA,GAAM,IAGHniB,EACH,OAAO,KAGT,IAAI2R,EAAK28J,GAAatuK,GAClBokN,EAAYttN,KAAK8qN,UAAUjwM,GAG3B7a,KAAK4qN,sBAAwBv/L,IAAQiiM,GAAapkN,EAAIZ,QACxDtI,KAAK8qN,UAAUjwM,GAAMyyM,EAAY,CAC/B15M,YAAa1K,EAAI0K,YACjBtL,MAAOY,EAAIZ,QAIf,IAAInO,EAAS,CACXyZ,aAAc05M,GAAapkN,GAAK0K,aAOlC,OAJI05M,IACFnzN,EAAOmO,MAAQglN,EAAUhlN,OAGpBnO,GAUTsrG,EAAO8nH,mBAAqB,WAC1B,OAAOvtN,KAAKwtN,YAAcxtN,KAAKk8H,UAOjCz2B,EAAO6/B,KAAO,WAKZ,GAHAtlI,KAAKysN,iBAGAzsN,KAAKwtN,UAKV,MAAmB,SAAfxtN,KAAKgiG,OAAoBhiG,KAAKutN,qBACzBvtN,KAAKytN,cAKTztN,KAAKutN,sBAAuC,UAAfvtN,KAAKgiG,OAAoC,SAAfhiG,KAAKgiG,QAIjEhiG,KAAKgiG,MAAQ,WAWfyD,EAAOgoH,MAAQ,WAKb,OAJAztN,KAAKgiG,MAAQ,QAGbhiG,KAAK0tN,kBACE1tN,KAAKysN,kBASdhnH,EAAO7tF,SAAW,SAAkB+1M,EAAa/jN,GAK/C,QAJgB,IAAZA,IACFA,EAAU,IAGP+jN,EAAL,CAIA,IAAI9zM,EAAc7Z,KAAKwtN,UACnB9rM,EAAc1hB,KAAK2pN,gBACvB3pN,KAAKwtN,UAAYG,EACjB3tN,KAAK4pN,YAAchgN,EAQA,SAAf5J,KAAKgiG,QACP2rH,EAAYC,SAAW,CACrBv1M,cAAes1M,EAAYt1M,cAC3BzB,KAAM,GAUiB,SAArB5W,KAAKwoN,aACPxoN,KAAKirN,gBAAgB4C,2BAA2BF,IAIpD,IAAIG,EAAQ,KAgBZ,GAdIj0M,IACEA,EAAYgB,GACdizM,EAAQj0M,EAAYgB,GACXhB,EAAYlQ,MACrBmkN,EAAQj0M,EAAYlQ,MAIxB3J,KAAKi0K,QAAQ,oBAAsB65C,EAAQ,QAAUH,EAAY9yM,IAAM8yM,EAAYhkN,KAAO,KAG1F3J,KAAK8lG,QAAQ,kBAGM,SAAf9lG,KAAKgiG,OAAoBhiG,KAAKutN,qBAChC,OAAOvtN,KAAKytN,QAGd,IAAK5zM,GAAeA,EAAYlQ,MAAQgkN,EAAYhkN,IAoBlD,OAnBwB,OAApB3J,KAAKimN,aASF0H,EAAYv1M,QAGfpY,KAAK+tN,eAFL/tN,KAAKguN,eAMThuN,KAAKyoN,uBAAoB,OACzBzoN,KAAK8lG,QAAQ,kBAOf,IAAImoH,EAAoBN,EAAYt1M,cAAgBwB,EAAYxB,cAKhE,GAJArY,KAAKi0K,QAAQ,sBAAwBg6C,EAAoB,KAIjC,OAApBjuN,KAAKimN,WAKP,GAJAjmN,KAAKimN,YAAcgI,EAIfjuN,KAAKimN,WAAa,EACpBjmN,KAAKimN,WAAa,KAClBjmN,KAAK+rG,UAAY,SACZ,CACL,IAAIp4F,EAAU3T,KAAKwtN,UAAUx2M,SAAShX,KAAKimN,YAI3C,GAAIjmN,KAAK+rG,aAAep4F,EAAQsxF,QAAUtxF,EAAQsxF,MAAMrnG,SAAW+V,EAAQsxF,MAAMjlG,KAAK+rG,YAAa,CACjG,IAAIk6G,EAAajmN,KAAKimN,WACtBjmN,KAAKi0K,QAAQ,oCAAsCj0K,KAAK+rG,UAAY,uBACpE/rG,KAAKguN,cAILhuN,KAAKimN,WAAaA,GAQpBvkM,IACFA,EAAYukM,YAAcgI,EAEtBvsM,EAAYukM,WAAa,GAC3BvkM,EAAYukM,WAAa,KACzBvkM,EAAYqqF,UAAY,OAKpBrqF,EAAYukM,YAAc,IAC5BvkM,EAAY/N,QAAUg6M,EAAY32M,SAAS0K,EAAYukM,aAGrDvkM,EAAYqqF,WAAa,GAAKrqF,EAAY/N,QAAQsxF,QACpDvjF,EAAY4nD,KAAO5nD,EAAY/N,QAAQsxF,MAAMvjF,EAAYqqF,cAK/D/rG,KAAKirN,gBAAgBiD,uBAAuBr0M,EAAa8zM,KAU3DloH,EAAOpjG,MAAQ,WACTrC,KAAKypN,sBACP,IAASt+M,aAAanL,KAAKypN,qBAC3BzpN,KAAKypN,oBAAsB,OAU/BhkH,EAAOy2B,OAAS,WACd,OAAoC,OAA7Bl8H,KAAKypN,qBAUdhkH,EAAOioH,gBAAkB,SAAyB1uC,GAChDh/K,KAAKurN,QAAS,EACdvrN,KAAK0qN,qBAAuB,KAC5B1qN,KAAKmqN,mBAAqB,CACxBpuN,OAAO,EACPD,OAAO,GAETkE,KAAKguN,cAILhuN,KAAKg4G,OAAO,EAAGtiG,IAAUspK,GAErBh/K,KAAKmrN,cACPnrN,KAAKmrN,YAAY1W,YAAY,CAC3BC,OAAQ,wBAGV10M,KAAKmrN,YAAY1W,YAAY,CAC3BC,OAAQ,YAYdjvG,EAAOuoH,YAAc,WACnBhuN,KAAKwrN,gBAAiB,EACtBxrN,KAAK+tN,gBAQPtoH,EAAOsoH,aAAe,WAChB/tN,KAAKmrN,aAEP/S,GAAkB5vE,MAAMxoI,KAAKmrN,aAG/BnrN,KAAKimN,WAAa,KAClBjmN,KAAK+rG,UAAY,KACjB/rG,KAAKkrN,WAAa,KAClBlrN,KAAK+pN,2BAA4B,EACjC/pN,KAAKqqN,WAAa,GAClBrqN,KAAKsqN,WAAa,GAClBtqN,KAAKuqN,eAAe1gB,IAAM,GAC1B7pM,KAAKuqN,eAAe3gB,QAAU,GAC9B5pM,KAAK+M,QAED/M,KAAKmrN,aACPnrN,KAAKmrN,YAAY1W,YAAY,CAC3BC,OAAQ,4BAedjvG,EAAOuS,OAAS,SAAgBlmG,EAAOC,EAAKitK,EAAMmvC,GAmBhD,QAlBa,IAATnvC,IACFA,EAAO,mBAGK,IAAVmvC,IACFA,GAAQ,GAMNp8M,IAAQ2D,MACV3D,EAAM/R,KAAKgoI,aAMTj2H,GAAOD,EACT9R,KAAKi0K,QAAQ,gEAIf,GAAKj0K,KAAKgpN,gBAAmBhpN,KAAKgtN,gBAAlC,CAOA,IAAIoB,EAAmB,EAEnBC,EAAiB,WACnBD,IAEyB,IAArBA,GACFpvC,KAwBJ,IAAK,IAAIhiF,KApBLmxH,GAAUnuN,KAAK8pN,iBACjBsE,IACApuN,KAAKgpN,eAAewD,YAAY16M,EAAOC,EAAKs8M,KAW1CF,GAA8B,SAArBnuN,KAAKwoN,eAChBxoN,KAAKgqN,WAAarF,GAAgB3kN,KAAKgqN,WAAYl4M,EAAOC,EAAK/R,KAAKiqN,cACpEmE,IACApuN,KAAKgpN,eAAesF,YAAYx8M,EAAOC,EAAKs8M,IAI5BruN,KAAKkpN,kBACrBhF,GAAoBpyM,EAAOC,EAAK/R,KAAKkpN,kBAAkBlsH,IAGzDknH,GAAoBpyM,EAAOC,EAAK/R,KAAK2oN,uBAErC0F,SA1CEruN,KAAKi0K,QAAQ,qEAmDjBxuE,EAAOgnH,eAAiB,WAClBzsN,KAAKypN,qBACP,IAASt+M,aAAanL,KAAKypN,qBAG7BzpN,KAAKypN,oBAAsB,IAASl/M,WAAWvK,KAAKuuN,mBAAmBxgN,KAAK/N,MAAO,IAUrFylG,EAAO8oH,mBAAqB,WACP,UAAfvuN,KAAKgiG,OACPhiG,KAAKwuN,cAGHxuN,KAAKypN,qBACP,IAASt+M,aAAanL,KAAKypN,qBAG7BzpN,KAAKypN,oBAAsB,IAASl/M,WAAWvK,KAAKuuN,mBAAmBxgN,KAAK/N,MAAOqlN,KAarF5/G,EAAO+oH,YAAc,WAGnB,IAAIxuN,KAAKgpN,eAAeyF,WAAxB,CAKA,IAAI/sM,EAAc1hB,KAAK0uN,qBAElBhtM,IAIsC,kBAAhCA,EAAYs0L,kBACrBh2M,KAAK+pN,2BAA4B,EACjC/pN,KAAKopN,0BAA0BnC,sBAAsB,CACnDppN,KAAMmC,KAAKwoN,YACX7hN,KAAM3G,KAAK0pN,iBACXt5F,GAAI1uG,EAAY/K,YAIpB3W,KAAK2uN,aAAajtM,MAapB+jF,EAAO6lH,eAAiB,SAAwBrF,EAAYruM,EAAUm0F,GAapE,QAZmB,IAAfk6G,IACFA,EAAajmN,KAAKimN,iBAGH,IAAbruM,IACFA,EAAW5X,KAAKwtN,gBAGA,IAAdzhH,IACFA,EAAY/rG,KAAK+rG,YAGdn0F,IAAa5X,KAAKuoN,aACrB,OAAO,EAGT,IAAI50M,EAAgC,kBAAfsyM,GAA2BruM,EAASZ,SAASivM,GAE9D2I,EAAsB3I,EAAa,IAAMruM,EAASZ,SAASpZ,OAE3DixN,GAAoBl7M,IAAYA,EAAQsxF,OAAS8G,EAAY,IAAMp4F,EAAQsxF,MAAMrnG,OAIrF,OAAOga,EAASQ,SAA4C,SAAjCpY,KAAKuoN,aAAaj+M,YAAyBskN,GAAuBC,GAS/FppH,EAAOipH,mBAAqB,WAC1B,IAAIr1F,EAAWr5H,KAAK+sN,YAChBjyE,EAAcqyB,GAAgB9zC,IAAa,EAC3Cy1F,EAAe1hD,GAAY/zC,EAAUr5H,KAAK+8I,gBAC1CgyE,GAAa/uN,KAAKmoN,cAAgB2G,GAAgB,EAClDE,EAAmBF,GAAgB9uN,KAAK6oN,oBACxC7xM,EAAWhX,KAAKwtN,UAAUx2M,SAK9B,IAAKA,EAASpZ,QAAUmxN,GAAaC,EACnC,OAAO,KAGThvN,KAAKkrN,WAAalrN,KAAKkrN,YAAclrN,KAAKirN,gBAAgB/I,aAAaliN,KAAKwtN,UAAWxtN,KAAKgoI,YAAahoI,KAAK0pN,iBAAkB1pN,KAAK+8I,gBACrI,IAAIzpC,EAAO,CACTvH,UAAW,KACXk6G,WAAY,KACZ5tC,eAAgB,KAChBzgK,SAAU5X,KAAKwtN,UACfpH,cAAetlN,SAASd,KAAKkrN,aAG/B,GAAI53G,EAAK8yG,cACP9yG,EAAK2yG,WAAahB,GAAwBjlN,KAAK0pN,iBAAkB1yM,EAAU8jI,QACtE,GAAwB,OAApB96I,KAAKimN,WAAqB,CACnC,IAAItyM,EAAUqD,EAAShX,KAAKimN,YACxBl6G,EAAsC,kBAAnB/rG,KAAK+rG,UAAyB/rG,KAAK+rG,WAAa,EACvEuH,EAAK+kE,eAAiB1kK,EAAQ5B,IAAM4B,EAAQ5B,IAAM+oI,EAE9CnnI,EAAQsxF,OAAStxF,EAAQsxF,MAAM8G,EAAY,IAC7CuH,EAAK2yG,WAAajmN,KAAKimN,WACvB3yG,EAAKvH,UAAYA,EAAY,GAE7BuH,EAAK2yG,WAAajmN,KAAKimN,WAAa,MAEjC,CAEL,IAAIgJ,EAAwBv+C,GAAS3B,oBAAoB,CACvDG,iCAAkClvK,KAAKkvK,iCACvCt3J,SAAU5X,KAAKwtN,UACfnpF,YAAarkI,KAAKwrN,eAAiB1wE,EAAc96I,KAAK+8I,eACtDkyB,kBAAmBjvK,KAAKkrN,WAAWn/G,UACnCijE,qBAAsBhvK,KAAKkrN,WAAWp/G,aACtChgF,UAAW9rB,KAAKkrN,WAAWt0M,OAEzBk1F,EAAemjH,EAAsBnjH,aACrChgF,EAAYmjM,EAAsBnjM,UAClCojM,EAAaD,EAAsBljH,UAEvCuH,EAAKy7D,oBAAsB/uK,KAAKwrN,eAAiB,eAAiB1wE,EAAc,eAAiB96I,KAAK+8I,eACtGzpC,EAAK2yG,WAAan6G,EAClBwH,EAAK+kE,eAAiBvsJ,EACtBwnF,EAAKvH,UAAYmjH,EAGnB,IAAIC,EAAcn4M,EAASs8F,EAAK2yG,YAC5B5zC,EAAW88C,GAAyC,kBAAnB77G,EAAKvH,WAA0BojH,EAAYlqH,OAASkqH,EAAYlqH,MAAMqO,EAAKvH,WAGhH,IAAKojH,GAAyC,kBAAnB77G,EAAKvH,YAA2BsmE,EACzD,OAAO,KAcT,GAT8B,kBAAnB/+D,EAAKvH,WAA0BojH,EAAYlqH,QACpDqO,EAAKvH,UAAY,EACjBsmE,EAAW88C,EAAYlqH,MAAM,KAO1B6pH,GAAgBz8C,IAAaA,EAASg0C,YACzC,GAAuB,IAAnB/yG,EAAKvH,UAAiB,CACxB,IAAI0hE,EAAcz2J,EAASs8F,EAAK2yG,WAAa,GACzCmJ,EAAsB3hD,EAAYxoE,OAASwoE,EAAYxoE,MAAMrnG,QAAU6vK,EAAYxoE,MAAMwoE,EAAYxoE,MAAMrnG,OAAS,GAEpHwxN,GAAuBA,EAAoB/I,cAC7C/yG,EAAK2yG,YAAc,EACnB3yG,EAAKvH,UAAY0hE,EAAYxoE,MAAMrnG,OAAS,EAC5C01G,EAAK+yG,YAAc,yBAEZ8I,EAAYlqH,MAAMqO,EAAKvH,UAAY,GAAGs6G,cAC/C/yG,EAAKvH,WAAa,EAClBuH,EAAK+yG,YAAc,iBAIvB,IAAIv4E,EAAQ9tI,KAAKuoN,cAAiD,UAAjCvoN,KAAKuoN,aAAaj+M,WAKnD,OAAIgpG,EAAK2yG,YAAcjvM,EAASpZ,OAAS,GAAKkwI,IAAU9tI,KAAKsoN,WACpD,KAGFtoN,KAAKqvN,qBAAqB/7G,IAGnC7N,EAAO4pH,qBAAuB,SAA8BzlN,GAC1D,IAAIy8M,EAAcz8M,EAAQy8M,YACtBzuM,EAAWhO,EAAQgO,SACnBquM,EAAar8M,EAAQq8M,WACrB5tC,EAAiBzuK,EAAQyuK,eACzB+tC,EAAgBx8M,EAAQw8M,cACxBr6G,EAAYniG,EAAQmiG,UACpBujH,EAAuB1lN,EAAQ0lN,qBAC/BvgD,EAAsBnlK,EAAQmlK,oBAC9Bp7J,EAAUiE,EAASZ,SAASivM,GAC5B38I,EAA4B,kBAAdyiC,GAA0Bp4F,EAAQsxF,MAAM8G,GACtDrqF,EAAc,CAChBs6L,UAAW,kBAAoBjmM,KAAKw5M,SAEpC5lN,IAAK2/D,GAAQA,EAAK11D,aAAeD,EAAQC,YAEzCqyM,WAAYA,EACZl6G,UAAWziC,EAAOyiC,EAAY,KAG9Bq6G,cAAeA,EACf/tC,eAAgBA,EAEhBzgK,SAAUA,EAEVtP,MAAO,KAEPqxM,eAAgB,KAGhB3D,gBAAiB,KAEjBr/L,SAAUhD,EAAQgD,SAElBjC,SAAU40D,GAAQA,EAAK50D,UAAYf,EAAQe,SAE3Cf,QAASA,EACT21D,KAAMA,EACNpvE,WAAY,EACZmsM,WAAYrmM,KAAKmrN,YAEjBp8C,oBAAqBA,EACrBs3C,YAAaA,GAEXK,EAAgD,qBAAzB4I,EAAuCA,EAAuBtvN,KAAK+pN,0BAC9FroM,EAAYs0L,gBAAkBh2M,KAAKwvN,2BAA2B,CAC5DhwM,gBAAiB7L,EAAQgD,SACzBkzF,gBAAiB7pG,KAAK0pN,iBACtBrxC,eAAgBA,EAChBh/C,SAAUr5H,KAAK+sN,YACfrG,cAAeA,IAEjB,IAAI+I,EAAmBtiD,GAAgBntK,KAAKgpN,eAAekE,iBAc3D,MAZgC,kBAArBuC,IAGT/tM,EAAYm1L,iBAAmB4Y,EAAmBzvN,KAAKgpN,eAAe0G,wBAGpE1vN,KAAKgpN,eAAeiE,gBAAgBrvN,SACtC8jB,EAAY2lL,gBAAkBkd,GAAoBvkN,KAAKgqN,WAEvDhqN,KAAK+8I,eAAiB/8I,KAAKgpN,eAAe2G,uBAAwB3vN,KAAKiqN,eAGlEvoM,GAMT+jF,EAAO+pH,2BAA6B,SAAoC5lN,GACtE,OAAO68M,GAA0B78M,IAanC67F,EAAOmqH,sBAAwB,SAA+BzW,GAC5D,IAAIn5M,KAAKq0K,KAAKnxC,MAAMhH,UAGnBl8H,KAAK4pN,YAAY98M,SACjB9M,KAAKwtN,UAAU9uN,WAAW+c,aAOvBoI,KAAKlO,OAASwjM,EAAM2D,sBAAwBj5L,KAAKlO,OAAS,KAA9D,CAIA,IAAI0uH,EAAcrkI,KAAK+8I,eACnB8yE,EAAoB1W,EAAMz9L,UAC1B5G,EAAkB9U,KAAK2pN,gBAAgBj1M,SACvCo7M,EAAuBp/C,GAASV,2BAA2Bl7J,EAAiB+6M,EAAmB7vN,KAAKwtN,UAAWrU,EAAMlpC,eAIrH8/C,EAAsBhjD,GAAkB/sK,KAAK+sN,YAAa1oF,EAAarkI,KAAKq0K,KAAKnxC,MAAM0kB,gBAAkB,EAG7G,KAAIkoE,GAAwBC,GAA5B,CAIA,IAAIC,EAAkBpO,GAAgC,CACpD1jN,OAAQ8B,KAAKq0K,KAAK51K,UAAUP,OAC5BmmI,YAAaA,EACb3oH,UAAWm0M,EACXn7M,SAAU1U,KAAKgoI,YACflzH,gBAAiBA,EACjBi4J,kBAAmBgjD,EACnBlmH,gBAAiB7pG,KAAK0pN,iBACtB7H,eAAgB7hN,KAAKirN,kBAGvB,GAAK+E,EAAL,CAIA,IAAI3N,EAAoByN,EAAuBC,EAC3CE,EAAuB5N,EAAoB2N,EAAgB3N,kBAC3D6N,EAAoB,GAIpBH,GAAuB/jD,KACzBkkD,EAAoB,IAGjBF,EAAgBp4M,UAAYo4M,EAAgBp4M,SAASjO,MAAQ3J,KAAKwtN,UAAU7jN,KAAOsmN,EAAuBC,IAO/GlwN,KAAK0b,UAAYs0M,EAAgBp4M,SAASlZ,WAAW+c,UAAYikK,GAAOM,mBAAqB,EAC7FhgL,KAAK8lG,QAAQ,mBAGfL,EAAO0qH,aAAe,SAAsBzuM,GAC1C1hB,KAAKi0K,QAAQ,YAAc6xC,GAAkBpkM,IAC7C1hB,KAAKgsN,sBAAwB,GAa/BvmH,EAAO2qH,gBAAkB,SAAyBlpH,EAAOmpH,GACvDrwN,KAAK4vN,sBAAsBS,EAAclX,OAErCn5M,KAAK4sN,eAAeyD,EAAcrU,YAItCh8M,KAAK8lG,QAAQ,aAGfL,EAAO6qH,iBAAmB,SAA0BD,EAAerb,GACjEh1M,KAAK4vN,sBAAsBS,EAAclX,OAErCn5M,KAAK4sN,eAAeyD,EAAcrU,YAIlCh8M,KAAKuwN,2BAA2Bvb,KAIpCA,EAAYA,GAAa,GAIpB6P,GAAa7kN,KAAKyoN,kBAAmBzT,KACxCh1M,KAAKmqN,mBAAqB,CACxBpuN,OAAO,EACPD,OAAO,GAETkE,KAAK0oN,mBAAqB1T,EAC1Bh1M,KAAKyoN,kBAAoBzT,EACzBh1M,KAAKi0K,QAAQ,mBAAoB+gC,GACjCh1M,KAAK8lG,QAAQ,cAKX9lG,KAAK4sN,eAAeyD,EAAcrU,aAMtCh8M,KAAK2pN,gBAAgB3U,UAAYA,EAE7Bh1M,KAAK0rN,0BACP1rN,KAAK2rN,uBAITlmH,EAAO+qH,kBAAoB,SAA2BH,EAAeryN,EAAWyyN,EAAU75M,GAGxF,GAFA5W,KAAK4vN,sBAAsBS,EAAclX,QAErCn5M,KAAK4sN,eAAeyD,EAAcrU,WAAtC,CAIA,IAAIt6L,EAAc1hB,KAAK2pN,gBACnB+G,EAAqBlK,GAA2BxoN,GACpD0jB,EAAYgvM,GAAsBhvM,EAAYgvM,IAAuB,GACrEhvM,EAAYgvM,GAAoBD,GAAY75M,EAC5C5W,KAAKi0K,QAAQ,eAAiBj2K,EAAY,MAAQyyN,EAAW,MAAQ75M,GAEjE5W,KAAK0rN,0BACP1rN,KAAK2rN,sBAITlmH,EAAOkrH,gBAAkB,SAAyBN,EAAeO,GAC/D,IAAIzpH,EAASnnG,KAIb,GAFAA,KAAK4vN,sBAAsBS,EAAclX,QAErCn5M,KAAK4sN,eAAeyD,EAAcrU,WAMtC,GAA2B,IAAvB4U,EAAYhzN,OAAhB,CAKA,IAAI8jB,EAAc1hB,KAAK2pN,gBAGvB,GAAKjoM,EAAYmvM,iBAAjB,CAKA,IAAI7a,EAAiE,OAA/Ch2M,KAAKgpN,eAAe2G,uBAAkC3vN,KAAKgpN,eAAe0G,uBAAyB1vN,KAAKgpN,eAAe2G,uBACzImB,EAAgB,GAEpBF,EAAYvzN,SAAQ,SAAUusM,GAG5BknB,EAAclnB,EAAQ1mG,QAAU4tH,EAAclnB,EAAQ1mG,SAAW,CAE/Dp3E,UAAWpW,IACXoJ,SAAU,GAEViN,QAAS,GAEX,IAAIglM,EAAeD,EAAclnB,EAAQ1mG,QACzC6tH,EAAajlM,UAAY/V,KAAKM,IAAI06M,EAAajlM,UAAW89K,EAAQ99K,UAAYkqL,GAC9E+a,EAAahlM,QAAUhW,KAAKK,IAAI26M,EAAahlM,QAAS69K,EAAQ79K,QAAUiqL,GACxE+a,EAAajyM,SAAS7jB,KAAK2uM,MAE7B5iM,OAAO0K,KAAKo/M,GAAezzN,SAAQ,SAAU2zN,GAC3C,IAAIC,EAAwBH,EAAcE,GACtCllM,EAAYmlM,EAAsBnlM,UAClCC,EAAUklM,EAAsBllM,QAChCjN,EAAWmyM,EAAsBnyM,SACjC+jM,EAAmB17G,EAAO+hH,kBAE9B/hH,EAAO8sE,QAAQ,oBAAsBnoJ,EAAY,OAASC,EAAU,QAAUilM,GAE9EpO,GAA+BC,EAAkB17G,EAAOktE,KAAKnxC,MAAO8tF,GAKpE9M,GAAoBp4L,EAAWC,EAAS82L,EAAiBmO,IACzDhO,GAAe,CACbC,aAAcnkM,EACd+jM,iBAAkBA,EAClB7M,gBAAiBA,OAKjBh2M,KAAKmrN,aACPnrN,KAAKmrN,YAAY1W,YAAY,CAC3BC,OAAQ,gCA/CV10M,KAAKuqN,eAAe3gB,QAAQ3uM,KAAK+E,KAAK2wN,gBAAgB5iN,KAAK/N,KAAMqwN,EAAeO,SARhF5wN,KAAKi0K,QAAQ,4DA4DjBxuE,EAAOyrH,WAAa,SAAoBb,EAAepV,EAAW1e,GAGhE,GAFAv8L,KAAK4vN,sBAAsBS,EAAclX,QAErCn5M,KAAK4sN,eAAeyD,EAAcrU,WAAtC,CAIA,IAAIt6L,EAAc1hB,KAAK2pN,gBAEvB,GAAKjoM,EAAYmvM,iBAAjB,CAKA,IAAI7a,EAAiE,OAA/Ch2M,KAAKgpN,eAAe2G,uBAAkC3vN,KAAKgpN,eAAe0G,uBAAyB1vN,KAAKgpN,eAAe2G,uBAI7I3L,GAA+BhkN,KAAKkpN,kBAAmB3sB,EAAcv8L,KAAKq0K,KAAKnxC,OAC/EmgF,GAAY,CACVR,iBAAkB7iN,KAAKkpN,kBACvB5F,cAAerI,EACfjF,gBAAiBA,EACjBuN,cAAevjN,KAAKgoI,mBAbpBhoI,KAAKuqN,eAAe1gB,IAAI5uM,KAAK+E,KAAKkxN,WAAWnjN,KAAK/N,KAAMqwN,EAAepV,EAAW1e,MAiBtF92F,EAAO0rH,sBAAwB,WAC7BnxN,KAAKuqN,eAAe1gB,IAAIxsM,SAAQ,SAAUixB,GACxC,OAAOA,OAETtuB,KAAKuqN,eAAe3gB,QAAQvsM,SAAQ,SAAUixB,GAC5C,OAAOA,OAETtuB,KAAKuqN,eAAe1gB,IAAM,GAC1B7pM,KAAKuqN,eAAe3gB,QAAU,IAGhCnkG,EAAOkmH,kBAAoB,WACzB,IAAIyF,EAAYpxN,KAAKqqN,WAIrBrqN,KAAKqqN,WAAa,GAClB+G,EAAU/zN,SAAQ,SAAUg0N,GAC1B,OAAOA,QAIX5rH,EAAOomH,kBAAoB,WACzB,IAAIyF,EAAYtxN,KAAKsqN,WAIrBtqN,KAAKsqN,WAAa,GAClBgH,EAAUj0N,SAAQ,SAAUg0N,GAC1B,OAAOA,QAWX5rH,EAAOmmH,qBAAuB,WAG5B,GAAyB,UAArB5rN,KAAKwoN,YACP,OAAO,EAGT,IAAI9mM,EAAc1hB,KAAK2pN,gBAGvB,QAAKjoM,KAQA1hB,KAAKuxN,yBAmBV5K,GAA4B,CAC1BC,yBAA0B5mN,KAAKopN,0BAC/Bv/G,gBAAiB7pG,KAAK0pN,iBACtBlqM,gBAAiBkC,EAAY/K,SAC7B8uM,WAAYzlN,KAAKwoN,YACjB3B,cAAe7mN,KAAK8pN,mBAQxBrkH,EAAO8rH,qBAAuB,SAA8B7vM,GAK1D,YAJoB,IAAhBA,IACFA,EAAc1hB,KAAK2pN,iBAGdjoM,GAAeA,EAAYszL,WAAah1M,KAAKyoN,mBAGtDhjH,EAAOunH,cAAgB,SAAuBtrM,GAK5C,YAJoB,IAAhBA,IACFA,EAAc1hB,KAAK2pN,iBAGd3pN,KAAKuxN,qBAAqB7vM,IAAgB1hB,KAAK0oN,oBAGxDjjH,EAAO+rH,0BAA4B,WACjC,OAAOxxN,KAAK2pN,gBAAkB3pN,KAAK2pN,gBAAgB/xM,SAAW,MAGhE6tF,EAAOimH,uBAAyB,WAC9B,IAAK1rN,KAAKgpN,eAAex3F,QACvB,OAAO,EAKT,GAAIxxH,KAAKwqN,kBAAoBxqN,KAAKyqN,gCAChC,OAAO,EAGT,IAAI/oM,EAAc1hB,KAAK2pN,gBACnB3U,EAAYh1M,KAAKuxN,uBAIrB,IAAK7vM,IAAgBszL,EACnB,OAAO,EAGT,IAAIpK,EAAWoK,EAAUpK,SACrBC,EAAWmK,EAAUnK,SACrB8P,EAAU3F,EAAU2F,QAExB,QAAI9P,IAAanpL,EAAYw2J,qBAKzB0yB,IAAa5qM,KAAK8pN,iBAAmBnP,IAAYj5L,EAAYuzL,mBAI7D0R,GAA4B,CAC9BC,yBAA0B5mN,KAAKopN,0BAC/Bv/G,gBAAiB7pG,KAAK0pN,iBACtBlqM,gBAAiBkC,EAAY/K,SAC7B8uM,WAAYzlN,KAAKwoN,YACjB3B,cAAe7mN,KAAK8pN,mBAQxBrkH,EAAO4wG,YAAc,SAAqBga,EAAel2N,GAGvD,GAFA6F,KAAK4vN,sBAAsBS,EAAclX,QAErCn5M,KAAK4sN,eAAeyD,EAAcrU,WAMtC,IAAIh8M,KAAKqqN,WAAWzsN,QAAWoC,KAAK0rN,yBAApC,CAKA,IAAIhqM,EAAc1hB,KAAK2pN,gBAUvB,GARA3pN,KAAKyxN,gBAAgB/vM,EAAY/K,UAEjC3W,KAAK0xN,0BAA0BhwM,EAAY4nD,MAAQ5nD,EAAY/N,SAM1B,WAAjC3T,KAAKuoN,aAAaj+M,WAAtB,CAoBA,GAdI+lN,EAAcrxN,MAChBqxN,EAAcrxN,IAAMgB,KAAKmtN,kBAAkBkD,EAAcrxN,KAAK,GAE9D0iB,EAAY/N,QAAQ3U,IAAMqxN,EAAcrxN,KAItCqxN,EAAcnnN,KAChBlJ,KAAKqtN,WAAWgD,EAAcnnN,KAAK,GAGrCwY,EAAY25L,OAASgV,EAAchV,OACnC35L,EAAYkzL,WAAalzL,EAAYkzL,YAAc,GAE/ClzL,EAAY25L,OACdr7M,KAAK8lG,QAAQ,QACbpkF,EAAYkzL,WAAW9iM,MAAQ4P,EAAY8kM,GAA2BrsN,EAAO0D,OAAOiU,UAC/E,CACL,IAEI6/M,EAFA3c,EAAYh1M,KAAKuxN,uBACjBK,EAA0C,SAArB5xN,KAAKwoN,aAA0BxT,GAAaA,EAAUnK,SAG3E+mB,IACFD,EAA6BjwM,EAAYw2J,gBAAgBpmK,OAM3D4P,EAAYkzL,WAAW9iM,MAAQ9R,KAAK6xN,kBAAkB,CACpDC,aAAcpwM,EAAYkzL,WAAW9iM,MACrC8F,SAAU8J,EAAY9J,SACtBquM,WAAYvkM,EAAYukM,WACxB8L,4BAA6B/xN,KAAKgpN,eAAe2G,uBACjDiC,mBAAoBA,EACpBD,2BAA4BA,EAC5Bz5C,gBAAiBx2J,EAAYw2J,gBAC7B+8B,gBAAiBvzL,EAAYuzL,kBAcjC,GAPAj1M,KAAKgyN,8BAA8BtwM,EAAavnB,EAAO0D,MAIvDmC,KAAKiyN,mCAAmCvwM,GAGpCA,EAAY0kM,cAAe,CAI7BpmN,KAAKkyN,qBAAqBxwM,GAC1B1hB,KAAKirN,gBAAgBkH,sBAAsB,CACzCzwM,YAAaA,EACb0wM,0BAAgD,SAArBpyN,KAAKwoN,cAElC,IAAIl1G,EAAOtzG,KAAK0uN,qBAGhB,GAAIp7G,EAAK2yG,aAAevkM,EAAYukM,YAAc3yG,EAAKvH,YAAcrqF,EAAYqqF,UAE/E,YADA/rG,KAAKi0K,QAAQ,6CAKfj0K,KAAKi0K,QAAQ,uCAOfvyJ,EAAYmvM,kBAAmB,EAE/B7wN,KAAKmxN,wBACLnxN,KAAKqyN,YAAY3wM,EAAavnB,SAnG5B6F,KAAKqqN,WAAWpvN,KAAK+E,KAAKq2M,YAAYtoM,KAAK/N,KAAMqwN,EAAel2N,KAsGpEsrG,EAAOusH,8BAAgC,SAAuCtwM,EAAa7jB,GAEhE,SAArBmC,KAAKwoN,aAAiE,kBAAhC9mM,EAAYs0L,iBAErDt0L,EAAY4wM,yBAGXtyN,KAAKmqN,mBAAqB,CACxBpuN,OAAO,EACPD,OAAO,IAIPkE,KAAKoqN,2BAA2BvsN,KAAU6jB,EAAY9J,WAGxD5X,KAAKmqN,mBAAmBtsN,IAAQ,IAIpC4nG,EAAO8sH,8BAAgC,SAAuC34M,GAC5E,IAAI/b,EAAO+b,EAAM/b,KACb2Z,EAAcoC,EAAMpC,YACpBxY,EAAM4a,EAAM5a,IACZ4Y,EAAWgC,EAAMhC,SAMrB,GAAI5Y,EAAK,CACP,IAAI6b,EAAK08J,GAAcv4K,GAEvB,GAAIgB,KAAK0qN,uBAAyB7vM,EAEhC,OAAO,KAOTrD,EAAcxX,KAAKmtN,kBAAkBnuN,GAAK,GAAMsJ,MAChDtI,KAAK0qN,qBAAuB7vM,EAQ9B,OAAIrD,GAAexX,KAAKmqN,mBAAmBtsN,IAIzCmC,KAAKoqN,2BAA2BvsN,GAAQ+Z,EAExC5X,KAAKmqN,mBAAmBtsN,IAAQ,EAGhCmC,KAAK0qN,qBAAuB,KACrBlzM,GAGF,MAGTiuF,EAAO+sH,0BAA4B,SAAmCj4M,EAAOsV,GAC3E,IAAIy4E,EAAStoG,KAET0hB,EAAcnH,EAAMmH,YACpB7jB,EAAO0c,EAAM1c,KACbyK,EAAQiS,EAAMjS,MACd4kN,EAAgBltN,KAAKgpN,eAAekE,gBACpCD,EAAgBjtN,KAAKgpN,eAAeiE,gBAIpCC,EAActvN,OAAS,GACzBoC,KAAKi0K,QAAQ,0DAA4DjH,GAAkBkgD,GAAeroN,KAAK,OAG7GooN,EAAcrvN,OAAS,GACzBoC,KAAKi0K,QAAQ,0DAA4DjH,GAAkBigD,GAAepoN,KAAK,OAGjH,IAAI4tN,EAAmBvF,EAActvN,OAASsvN,EAAcp7M,MAAM,GAAK,EACnE4gN,EAAiBxF,EAActvN,OAASsvN,EAAcn7M,IAAIm7M,EAActvN,OAAS,GAAK,EACtF+0N,EAAmB1F,EAAcrvN,OAASqvN,EAAcn7M,MAAM,GAAK,EACnE8gN,EAAiB3F,EAAcrvN,OAASqvN,EAAcl7M,IAAIk7M,EAAcrvN,OAAS,GAAK,EAE1F,GAAI80N,EAAiBD,GAAoBrN,IAAmBwN,EAAiBD,GAAoBvN,GAW/F,OANAplN,KAAKi0K,QAAQ,mHAAgI3rK,EAAMpO,WAAtI,mBAA+K8yK,GAAkBkgD,GAAeroN,KAAK,MAArN,mBAAyPmoK,GAAkBigD,GAAepoN,KAAK,MAAQ,MACpT7E,KAAK6vB,MAAM,CACTgoE,QAAS,kEACT63E,aAAch6J,WAEhB1V,KAAK8lG,QAAQ,SAgBf9lG,KAAKwqN,kBAAmB,EACxBxqN,KAAKqqN,WAAWpvN,KAAK+E,KAAK6yN,sBAAsB9kN,KAAK/N,KAAM,CACzD0hB,YAAaA,EACb7jB,KAAMA,EACNyK,MAAOA,KAET,IAAI+7H,EAAcrkI,KAAK+8I,eAGnB+1E,EAAoBzuF,EAAc+gF,GACtCplN,KAAKi0K,QAAQ,yDAA2D6+C,GACxE9yN,KAAKg4G,OAAO,EAAG86G,GAAmB,WAChCxqH,EAAO2rE,QAAQ,6CAA+CmxC,GAAkB,KAEhF98G,EAAOkiH,kBAAmB,EAG1BliH,EAAOmiH,gCAAkC,IAASlgN,YAAW,WAC3D+9F,EAAO2rE,QAAQ,mDAEf3rE,EAAOmiH,gCAAkC,KAEzCniH,EAAOqjH,sBACY,IAAlBvG,OACF,IAGL3/G,EAAOstH,mBAAqB,SAA4Bn1M,EAAOiS,GAC7D,IAAInO,EAAc9D,EAAM8D,YACpB7jB,EAAO+f,EAAM/f,KACbyK,EAAQsV,EAAMtV,MAEbunB,IAIDA,EAAM7iB,OAASg4M,IAWnBhlN,KAAKi0K,QAAQ,4CAA6CpkJ,GAC1D7vB,KAAK6vB,MAAMhyB,EAAO,cAAgByK,EAAM1K,OAA7BC,yBAAuE6jB,EAAYukM,WAAa,gBAAkBvkM,EAAY9J,SAASiD,IAMlJ7a,KAAK8lG,QAAQ,gBAjBX9lG,KAAKwyN,0BAA0B,CAC7B9wM,YAAaA,EACb7jB,KAAMA,EACNyK,MAAOA,MAiBbm9F,EAAOotH,sBAAwB,SAA+B/0M,GAC5D,IAAI4D,EAAc5D,EAAM4D,YACpB7jB,EAAOigB,EAAMjgB,KACb2Z,EAAcsG,EAAMtG,YACpB3d,EAAOikB,EAAMjkB,KACbyO,EAAQwV,EAAMxV,MAElB,IAAKA,EAAO,CACV,IAAI0O,EAAW,CAACnd,GACZK,EAAaL,EAAKK,WAElBsd,IAGFR,EAASoD,QAAQ5C,GACjBtd,GAAcsd,EAAYtd,YAK5BoO,EAAQo6M,GAAe,CACrBp6M,MAAOpO,EACP8c,SAAUA,IAIdhX,KAAKgpN,eAAegK,aAAa,CAC/BtxM,YAAaA,EACb7jB,KAAMA,EACNyK,MAAOA,GACNtI,KAAK+yN,mBAAmBhlN,KAAK/N,KAAM,CACpC0hB,YAAaA,EACb7jB,KAAMA,EACNyK,MAAOA,MAIXm9F,EAAOwtH,yBAA2B,SAAkCp1N,EAAMm+M,EAAWkX,GACnF,GAAKlzN,KAAK2pN,iBAAmB3N,IAAch8M,KAAK2pN,gBAAgB3N,UAAhE,CAIA,IAAIroM,EAAU3T,KAAK2pN,gBAAgBh2M,QAC/B+8M,EAAqB7yN,EAAO,aAE3B8V,EAAQ+8M,KACX/8M,EAAQ+8M,GAAsB,IAGhC/8M,EAAQ+8M,GAAoBz4C,2BAA6Bi7C,EAAkBvsB,0BAA4B,EACvGhzL,EAAQ+8M,GAAoBt4C,4BAA8B86C,EAAkBphN,MAAMgjM,aAClFnhM,EAAQ+8M,GAAoByC,sBAAwBD,EAAkBphN,MAAMpL,OAC5EiN,EAAQ+8M,GAAoBj4C,0BAA4By6C,EAAkBnhN,IAAI+iM,aAC9EnhM,EAAQ+8M,GAAoB0C,oBAAsBF,EAAkBnhN,IAAIrL,OAExEiN,EAAQ+8M,GAAoB1pC,oBAAsBksC,EAAkBlsC,sBAGtEvhF,EAAO4sH,YAAc,SAAqB3wM,EAAavnB,GACrD,IAAI0D,EAAO1D,EAAO0D,KACdhE,EAAOM,EAAON,KAElB,GAAKA,GAASA,EAAKK,aAIN,UAAT2D,IAAoBmC,KAAK8pN,gBAA7B,CAIA,IAAItyM,EAAcxX,KAAKuyN,8BAA8B,CACnD10N,KAAMA,EACN2Z,YAAard,EAAOqd,YACpBI,SAAU8J,EAAY9J,SACtB5Y,IAAK0iB,EAAY25L,OAAS35L,EAAY/N,QAAQ3U,IAAM,OAEtDgB,KAAK6yN,sBAAsB,CACzBnxM,YAAaA,EACb7jB,KAAMA,EACN2Z,YAAaA,EACb3d,KAAMA,MAUV4rG,EAAOkpH,aAAe,SAAsBjtM,GAC1C,IAAI81G,EAASx3H,KAEbA,KAAKgiG,MAAQ,UACbhiG,KAAK2pN,gBAAkBjoM,EACvB1hB,KAAKqzN,gBAAgB3xM,GAEsB,kBAAhCA,EAAYs0L,iBACjBh2M,KAAKmrN,aACPnrN,KAAKmrN,YAAY1W,YAAY,CAC3BC,OAAQ,wBAKT10M,KAAK4rN,uBAiBV5rN,KAAKszN,mCAAmC5xM,GAhBtC1hB,KAAKsqN,WAAWrvN,MAAK,WAGnB,IAAI2O,EAAU,IAAS,GAAI8X,EAAa,CACtC4tM,sBAAsB,IAGxB,IAAS5tM,EAAa81G,EAAO63F,qBAAqBzlN,IAElD4tH,EAAOuyF,2BAA4B,EAEnCvyF,EAAO87F,mCAAmC5xM,OAQhD+jF,EAAO6tH,mCAAqC,SAA4C5xM,GACtF,IAAIi2G,EAAS33H,KAOTA,KAAKuzN,uCAAuC7xM,EAAYs0L,mBAC1Dh2M,KAAKgqN,WAAWpsN,OAAS,EAEzB8jB,EAAY2lL,gBAAkB,GAC9BrnM,KAAKiqN,aAAe,EAEpBjqN,KAAKmrN,YAAY1W,YAAY,CAC3BC,OAAQ,UAEV10M,KAAKmrN,YAAY1W,YAAY,CAC3BC,OAAQ,qBACRsB,gBAAiBt0L,EAAYs0L,mBAIjC,IAAIqa,EAAgBrwN,KAAKwzN,4BAA4B9xM,GACjD+xM,EAAgBzzN,KAAKsrN,eAAe5pM,EAAYukM,WAAYvkM,EAAY9J,SAAU8J,EAAYqqF,WAC9F2nH,EAAuC,OAApB1zN,KAAKimN,WACxB0N,EAAkBjyM,EAAY/K,WAAa3W,KAAK0pN,kBAEpDhoM,EAAY/K,SAAW,EACnB8gM,EAAkBgc,GAAiBC,GAAoBC,EAC3D3zN,KAAKi0K,QAAQ,cAAgB6xC,GAAkBpkM,IAM3C2uM,EAAcrxN,MAAQqxN,EAAcrxN,IAAIsJ,QAC1CtI,KAAKi0K,QAAQ,kCACbj0K,KAAKmqN,mBAAqB,CACxBruN,OAAO,EACPC,OAAO,IAIX2lB,EAAYgrM,cAAgB3P,GAAoB,CAC9C1yM,IAAKrK,KAAKq0K,KAAKhqK,IACf4yM,WAAYj9M,KAAK4pN,YACjBjO,iBAAkB37M,KAAK+qN,WACvBp3M,QAAS08M,EACT5T,QAASz8M,KAAKmwN,aAAapiN,KAAK/N,KAAM0hB,GACtCm7L,WAAY78M,KAAKowN,gBAAgBriN,KAAK/N,MACtCi6M,YAAaj6M,KAAKswN,iBAAiBviN,KAAK/N,MACxCk6M,aAAcl6M,KAAKwwN,kBAAkBziN,KAAK/N,MAC1Cm6M,yBAA0Bn6M,KAAKizN,yBAAyBllN,KAAK/N,KAAM,QAAS0hB,EAAYs6L,WACxF5B,yBAA0Bp6M,KAAKizN,yBAAyBllN,KAAK/N,KAAM,QAAS0hB,EAAYs6L,WACxF1B,WAAYt6M,KAAK2wN,gBAAgB5iN,KAAK/N,MACtCy3M,gBAAiBA,EACjB8C,gBAAiB,WACf5iF,EAAOs8C,QAAQ,oCAEjBomC,MAAOr6M,KAAKkxN,WAAWnjN,KAAK/N,MAC5Bw6M,OAAQx6M,KAAKq2M,YAAYtoM,KAAK/N,MAC9By6M,OAAQz6M,KAAK4zN,wBAAwB7lN,KAAK/N,MAC1Cw3M,gBAAiB,SAAyBr5L,GACxC,IAAI05E,EAAU15E,EAAM05E,QAChBopB,EAAQ9iG,EAAM8iG,MACd/d,EAAS/kF,EAAM+kF,OAEnBy0B,EAAOs8C,QAAQ6xC,GAAkBpkM,GAAe,kCAAoCwhF,EAAS,SAAW+d,EAAQ,KAAOppB,OAc7H4N,EAAO4tH,gBAAkB,SAAyB3xM,GAChD,IAAImyM,EAAelO,GAAuB3lN,KAAKqoN,YAAaroN,KAAK+8I,eAAgB/8I,KAAKwtN,UAAU7xM,gBAAkB,IAM9Gk4M,EAAe,GACjB7zN,KAAKg4G,OAAO,EAAG67G,IAcnBpuH,EAAO+tH,4BAA8B,SAAqC9xM,GACxE,IAAI/N,EAAU+N,EAAY/N,QACtB21D,EAAO5nD,EAAY4nD,KACnB+mJ,EAAgB,CAClBz8M,YAAa01D,EAAOA,EAAK11D,YAAcD,EAAQC,YAC/CQ,UAAWk1D,EAAOA,EAAKl1D,UAAYT,EAAQS,UAC3C4nM,UAAWt6L,EAAYs6L,UACvB3V,WAAY3kL,EAAY2kL,WACxBwQ,iBAAkBn1L,EAAYm1L,iBAC9BxP,gBAAiB3lL,EAAY2lL,gBAC7B/9H,KAAM5nD,EAAY4nD,MAEhBwqJ,EAAkBpyM,EAAY9J,SAASZ,SAAS0K,EAAYukM,WAAa,GAkB7E,GAhBI6N,GAAmBA,EAAgBn9M,WAAahD,EAAQgD,WAStDm9M,EAAgB57C,gBAClBm4C,EAAc7a,cAAgBse,EAAgB57C,gBAAgBk7C,oBACrDU,EAAgB7e,kBACzBob,EAAc7a,cAAgBse,EAAgB7e,gBAAgBme,sBAI9Dz/M,EAAQzK,IAAK,CAGf,IAAI0hG,EAAKj3F,EAAQzK,IAAI0hG,IAAM,IAAI1C,YAAY,CAAC,EAAG,EAAG,EAAGxmF,EAAYukM,WAAavkM,EAAY9J,SAASS,gBACnGg4M,EAAcnnN,IAAMlJ,KAAKqtN,WAAW15M,EAAQzK,KAC5CmnN,EAAcnnN,IAAI0hG,GAAKA,EAOzB,OAJIj3F,EAAQ3U,MACVqxN,EAAcrxN,IAAMgB,KAAKmtN,kBAAkBx5M,EAAQ3U,MAG9CqxN,GAGT5qH,EAAOsuH,mBAAqB,SAA4B5a,GAGtDn5M,KAAK+rN,eAAiB,EAElB5S,IACFn5M,KAAK8rN,uBAAyB3S,EAAMlpC,cACpCjwK,KAAKmsN,uBAAyBhT,EAAMjjC,gBAIxCzwE,EAAOuuH,2BAA6B,SAAoCt/M,EAAUykM,GAIhFn5M,KAAK2pN,gBAAgBzvN,WAAai/M,EAAMlpC,cAEpCv7J,EAAW6wM,GACbvlN,KAAKi0K,QAAQ,wDAA0Dv/J,EAAY,mCAAqC6wM,KAI1HvlN,KAAK0b,UAAYy9L,EAAMz9L,UACvB1b,KAAKioN,UAAY9O,EAAMjjC,gBAGzBzwE,EAAOwuH,eAAiB,WAGtBj0N,KAAKisN,uBAAyB,EAC9BjsN,KAAK0b,UAAY,EACjB1b,KAAKioN,UAAY70D,IACjBpzJ,KAAK8lG,QAAQ,mBACb9lG,KAAK8lG,QAAQ,YAUfL,EAAOmuH,wBAA0B,SAAiC/jM,EAAOwgM,EAAel2N,GAKtF,GAAI6F,KAAKqqN,WAAWzsN,OAClBoC,KAAKqqN,WAAWpvN,KAAK+E,KAAK4zN,wBAAwB7lN,KAAK/N,KAAM6vB,EAAOwgM,EAAel2N,SAMrF,GAFA6F,KAAK+zN,mBAAmB1D,EAAclX,OAEjCn5M,KAAK2pN,iBAQN0G,EAAcrU,YAAch8M,KAAK2pN,gBAAgB3N,UAArD,CAKA,GAAInsL,EAAO,CAIT,GAHA7vB,KAAK2pN,gBAAkB,KACvB3pN,KAAKgiG,MAAQ,QAETnyE,EAAM7iB,OAAS0rM,GAAeG,QAChC,OAOF,OAJA74M,KAAKqC,QAIDwtB,EAAM7iB,OAAS0rM,GAAeE,aAChC54M,KAAKi0N,kBAMPj0N,KAAKksN,sBAAwB,EAC7BlsN,KAAK6vB,MAAMA,QACX7vB,KAAK8lG,QAAQ,UAIf,IAAIpkF,EAAc1hB,KAAK2pN,gBAGvB3pN,KAAKg0N,2BAA2BtyM,EAAYhN,SAAU27M,EAAclX,OACpEz3L,EAAY26L,iBAAmBgU,EAAchU,iBAEzCliN,EAAOw6M,UACT30M,KAAKgqN,WAAatF,GAAgB1kN,KAAKgqN,WAAY7vN,EAAOw6M,QAAS30M,KAAKkqN,cAK1ElqN,KAAKgiG,MAAQ,YAEbhiG,KAAK8lG,QAAQ,aACb9lG,KAAKk0N,0BAA0BxyM,KAGjC+jF,EAAOgsH,gBAAkB,SAAyB96M,GAChD,IAAIw9M,EAAkBn0N,KAAKirN,gBAAgBmJ,mBAAmBz9M,GAEtC,OAApBw9M,IACFn0N,KAAKiqN,aAAekK,IAIxB1uH,EAAOisH,0BAA4B,SAAmC/9M,GACvC,kBAAlBA,EAAQ7B,OAA6C,kBAAhB6B,EAAQ5B,IACtD/R,KAAKosN,oBAAsBz4M,EAAQ5B,IAAM4B,EAAQ7B,MAEjD9R,KAAKosN,oBAAsBz4M,EAAQe,UAIvC+wF,EAAO8tH,uCAAyC,SAAgDvd,GAC9F,OAAwB,OAApBA,IAMqB,SAArBh2M,KAAKwoN,aAA0BxS,IAAoBh2M,KAAKgpN,eAAe2G,yBAItE3vN,KAAK8pN,gBAAkB9T,IAAoBh2M,KAAKgpN,eAAe0G,yBAOtEjqH,EAAOosH,kBAAoB,SAA2BzyM,GACpD,IAAI0yM,EAAe1yM,EAAM0yM,aACrBl6M,EAAWwH,EAAMxH,SACjBquM,EAAa7mM,EAAM6mM,WACnB0L,EAA6BvyM,EAAMuyM,2BACnCI,EAA8B3yM,EAAM2yM,4BACpCH,EAAqBxyM,EAAMwyM,mBAC3B15C,EAAkB94J,EAAM84J,gBACxB+8B,EAAkB71L,EAAM61L,gBAE5B,GAA4B,qBAAjB6c,EAET,OAAOA,EAGT,IAAKF,EACH,OAAO3c,EAAgBnjM,MAGzB,IAAIgiN,EAAkBl8M,EAASZ,SAASivM,EAAa,GAMrD,OAAmB,IAAfA,GAAqB6N,GAAoD,qBAA1BA,EAAgBhiN,OAAyBgiN,EAAgB/hN,MAAQ4/M,EAA6BI,EAI1I75C,EAAgBpmK,MAHd6/M,GAMXlsH,EAAOyuH,0BAA4B,SAAmCxyM,GACpE,IAAIszL,EAAYh1M,KAAKuxN,qBAAqB7vM,GAE1C,IAAKszL,EAMH,OALAh1M,KAAK6vB,MAAM,CACTgoE,QAAS,yEACTkmF,kBAAmBroK,WAErB1V,KAAK8lG,QAAQ,SAOf,IAAI8kG,EAAWoK,EAAUpK,SACrBC,EAAWmK,EAAUnK,SACrB8P,EAAU3F,EAAU2F,QACpB0Z,EAAoC,SAArBr0N,KAAKwoN,aAA0B3d,EAC9CypB,GAAgBt0N,KAAK8pN,gBAAkBlf,IAAa+P,EAGxD,GAFAj5L,EAAY6yM,iBAAmB,GAE1B7yM,EAAYmvM,iBA6Bf,OA5BKnvM,EAAYkzL,YAAqD,kBAAhClzL,EAAYs0L,kBAShDh2M,KAAK+pN,2BAA4B,GAInCroM,EAAYkzL,WAAa,CACvB9iM,MAAO,GAET4P,EAAY6yM,mBAEPv0N,KAAK+pN,4BAER/pN,KAAKiyN,mCAAmCvwM,GAGxC1hB,KAAKmxN,8BAIPnxN,KAAKw0N,kBAAkB9yM,GAKrB2yM,GACF3yM,EAAY6yM,mBAGVD,GACF5yM,EAAY6yM,mBAGVF,GACFr0N,KAAKgpN,eAAeyL,mBAAmBz0N,KAAKw0N,kBAAkBzmN,KAAK/N,KAAM0hB,IAGvE4yM,GACFt0N,KAAKgpN,eAAe0L,mBAAmB10N,KAAKw0N,kBAAkBzmN,KAAK/N,KAAM0hB,KAI7E+jF,EAAO+uH,kBAAoB,SAA2B9yM,GAChD1hB,KAAK4sN,eAAelrM,EAAYs6L,aAIpCt6L,EAAY6yM,mBAEyB,IAAjC7yM,EAAY6yM,kBACdv0N,KAAK20N,uBAITlvH,EAAO8qH,2BAA6B,SAAoCvb,GACtE,IAAI4f,EAA0BpP,GAAmBxlN,KAAKwoN,YAAaxoN,KAAKuxN,uBAAwBvc,GAEhG,QAAI4f,IACF50N,KAAK6vB,MAAM,CACTgoE,QAAS+8H,EACT72C,kBAAmBroK,MAErB1V,KAAK8lG,QAAQ,UACN,IAMXL,EAAOwsH,mCAAqC,SAA4CvwM,GACtF,GAAoC,OAAhCA,EAAYs0L,iBAEwB,kBAAjCt0L,EAAYkzL,WAAW9iM,QAC9B4P,EAAY4wM,wBACS,SAArBtyN,KAAKwoN,YAJL,CAQA,IAAIqM,GAAY,EAKhBnzM,EAAYs0L,iBAAmBh2M,KAAK80N,kDAAkD,CACpF58C,gBAAiBx2J,EAAY/N,QAAQukK,gBACrC+8B,gBAAiBvzL,EAAY/N,QAAQshM,gBACrCL,WAAYlzL,EAAYkzL,aAK1BlzL,EAAY4wM,wBAAyB,EAEjC5wM,EAAYs0L,kBAAoBh2M,KAAKgpN,eAAe2G,yBACtD3vN,KAAKgpN,eAAe2G,qBAAqBjuM,EAAYs0L,iBACrD6e,GAAY,GAGVnzM,EAAYs0L,kBAAoBh2M,KAAKgpN,eAAe0G,yBACtD1vN,KAAKgpN,eAAe0G,qBAAqBhuM,EAAYs0L,iBACrD6e,GAAY,GAGVA,GACF70N,KAAK8lG,QAAQ,qBAIjBL,EAAOqvH,kDAAoD,SAA2DvY,GACpH,IAAIrkC,EAAkBqkC,EAAOrkC,gBACzB+8B,EAAkBsH,EAAOtH,gBACzBL,EAAa2H,EAAO3H,WAExB,OAAK50M,KAAKspN,0BAINpxC,GAAoE,kBAA1CA,EAAgBi7C,sBACrCj7C,EAAgBi7C,sBAIrBle,GAAoE,kBAA1CA,EAAgBke,sBACrCle,EAAgBke,sBAIlBve,EAAW9iM,MAbT8iM,EAAW9iM,OAgBtB2zF,EAAOysH,qBAAuB,SAA8BxwM,GAC1DA,EAAYkzL,WAAalzL,EAAYkzL,YAAc,GACnD,IAAII,EAAYh1M,KAAKgtN,gBACjB4E,EAA0C,SAArB5xN,KAAKwoN,aAA0BxT,GAAaA,EAAUnK,SAC3EkqB,EAAwBnD,GAAsBlwM,EAAYw2J,gBAAkBx2J,EAAYw2J,gBAAkBx2J,EAAYuzL,gBAErH8f,IAILrzM,EAAYkzL,WAAW7iM,IAA2C,kBAA9BgjN,EAAsBhjN,IAG1DgjN,EAAsBhjN,IAAMgjN,EAAsBjjN,MAAQ4P,EAAYhN,WAWxE+wF,EAAOkvH,mBAAqB,WAM1B,GAJI30N,KAAK2pN,iBACP3pN,KAAK8lG,QAAQ,gBAGV9lG,KAAK2pN,gBAQR,OAPA3pN,KAAKgiG,MAAQ,aAGRhiG,KAAKk8H,UACRl8H,KAAKysN,kBAMT,IAAI/qM,EAAc1hB,KAAK2pN,gBAIvB3pN,KAAKkyN,qBAAqBxwM,GAEtB1hB,KAAKqpN,8BAkBPrpN,KAAKirN,gBAAgBkH,sBAAsB,CACzCzwM,YAAaA,EACb0wM,0BAAgD,SAArBpyN,KAAKwoN,cAIpC,IAAIwM,EAAyBzN,GAAqC7lM,EAAa1hB,KAAK+oN,aAcpF,GAZIiM,IACsC,SAApCA,EAAuBpN,SACzBz8E,GAAQtoI,IAAIqqB,KAAK8nM,EAAuBn9H,SAExC73F,KAAKi0K,QAAQ+gD,EAAuBn9H,UAIxC73F,KAAKi1N,kBAAkBvzM,GACvB1hB,KAAK2pN,gBAAkB,KACvB3pN,KAAKgiG,MAAQ,SAETtgF,EAAY0kM,gBACdpmN,KAAK8lG,QAAQ,kBAKRpkF,EAAYmvM,kBANnB,CAYA7wN,KAAKi0K,QAAQ,YAAc6xC,GAAkBpkM,IAC7C1hB,KAAKk1N,uBAAuBxzM,GAC5B1hB,KAAKwrN,gBAAiB,EAElBxrN,KAAK0pN,mBAAqBhoM,EAAY/K,WACxC3W,KAAKopN,0BAA0BrC,mBAAmB,CAChDlpN,KAAMmC,KAAKwoN,YACX7hN,KAAM3G,KAAK0pN,iBACXt5F,GAAI1uG,EAAY/K,WAKO,SAArB3W,KAAKwoN,aAA2BxoN,KAAK8pN,gBACvC9pN,KAAKopN,0BAA0BrC,mBAAmB,CAChDlpN,KAAM,QACN8I,KAAM3G,KAAK0pN,iBACXt5F,GAAI1uG,EAAY/K,YAKtB3W,KAAK0pN,iBAAmBhoM,EAAY/K,SAKpC3W,KAAK8lG,QAAQ,kBACb,IAAInyF,EAAU+N,EAAY/N,QACtB21D,EAAO5nD,EAAY4nD,KACnB6rJ,EAAkBxhN,EAAQ5B,KAAO/R,KAAK+8I,eAAiBppI,EAAQ5B,IAA4C,EAAtC2P,EAAY9J,SAAS+D,eAC1Fy5M,EAAe9rJ,GAAQA,EAAKv3D,KAAO/R,KAAK+8I,eAAiBzzE,EAAKv3D,IAAgD,EAA1C2P,EAAY9J,SAASoxF,mBAK7F,GAAImsH,GAAmBC,EAGrB,OAFAp1N,KAAKi0K,QAAQ,QAAUkhD,EAAkB,UAAY,QAAU,IAAMrP,GAAkBpkM,SACvF1hB,KAAK0tN,kBAIP,IAAIgG,EAAuC,OAApB1zN,KAAKimN,WAGxByN,GACF1zN,KAAK8lG,QAAQ,mBAGf9lG,KAAK8lG,QAAQ,YACb9lG,KAAKimN,WAAavkM,EAAYukM,WAC9BjmN,KAAK+rG,UAAYrqF,EAAYqqF,UAIzB/rG,KAAKsrN,eAAe5pM,EAAYukM,WAAYvkM,EAAY9J,SAAU8J,EAAYqqF,YAChF/rG,KAAK8sN,cAIP9sN,KAAK8lG,QAAQ,YAETpkF,EAAYmvM,kBACd7wN,KAAKqsN,eAGFrsN,KAAKk8H,UACRl8H,KAAKysN,sBAxEHzsN,KAAKi0K,QAAQ,0CAA4C6xC,GAAkBpkM,KAsFjF+jF,EAAOwvH,kBAAoB,SAA2BvzM,GACpD,GAAIA,EAAYhN,SAAW6wM,GACzBvlN,KAAKi0K,QAAQ,yDAA2DvyJ,EAAYhN,SAAY,mCAAqC6wM,QADvI,CAKA,IAAI59D,EAAO3nJ,KAAKgoN,WAAWrgE,KAGvB0tE,EAAwBxxM,KAAKlO,MAAQ+L,EAAY26L,iBAAmB,EAEpEiZ,EAA8Bv/M,KAAKG,MAAMwL,EAAYxnB,WAAam7N,EAAwB,EAAI,KAGlGr1N,KAAKgoN,WAAWrgE,OAAS2tE,EAA8B3tE,KAAU3nJ,KAAKgoN,WAAW/nM,QAanFwlF,EAAOyvH,uBAAyB,SAAgCxzM,GAC9D,GAAK1hB,KAAK2oN,sBAAV,CAIA,IAAIh1M,EAAU+N,EAAY/N,QACtB7B,EAAQ6B,EAAQ7B,MAChBC,EAAM4B,EAAQ5B,IAElB,GAAKuzM,GAAOxzM,IAAWwzM,GAAOvzM,GAA9B,CAIAmyM,GAAoBpyM,EAAOC,EAAK/R,KAAK2oN,uBACrC,IAAIzF,EAAM,IAASC,eAAiB,IAASv7M,OACzCR,EAAQ,CACVslG,OAAQ/4F,EAAQ+4F,OAChB1E,eAAgBr0F,EAAQq0F,eACxBD,eAAgBp0F,EAAQo0F,eACxBrsF,UAAWgG,EAAY9J,SAASlZ,WAAW+c,UAC3CqsF,WAAYpmF,EAAY9J,SAASlZ,WAAW2e,WAC5ClgB,OAAQukB,EAAY9J,SAASlZ,WAAWC,OACxCzE,WAAYwnB,EAAYxnB,WACxByP,IAAK+X,EAAY/X,IACjBgN,SAAU+K,EAAY/K,SACtBiB,SAAU8J,EAAY9J,SAASiD,GAC/B/I,MAAOA,EACPC,IAAKA,GAEHlY,EAAOiR,KAAKqB,UAAU/E,GACtBqxF,EAAM,IAAIyqH,EAAIpxM,EAAOC,EAAKlY,GAG9B4+F,EAAIrxF,MAAQA,EACZpH,KAAK2oN,sBAAsB9tF,OAAOpiC,MAG7BovH,EAxmFwB,CAymF/B18E,GAAQugC,aAEV,SAASj+J,MAET,IAusHI8nN,GAvsHAC,GAAc,SAAqBjnH,GACrC,MAAsB,kBAAXA,EACFA,EAGFA,EAAO/xG,QAAQ,KAAK,SAAUg0H,GACnC,OAAOA,EAAE9iH,kBAIT+nN,GAAc,CAAC,QAAS,SAExBC,GAAY,SAAkB73N,EAAMorN,GACtC,IAAI0M,EAAe1M,EAAcprN,EAAO,UACxC,OAAO83N,GAAgBA,EAAalH,UAAYxF,EAAc2M,aAAa/3N,IAGzEg4N,GAAuB,SAA8Bh4N,EAAMsjK,GAC7D,IAAK,IAAIvmK,EAAI,EAAGA,EAAIumK,EAAMvjK,OAAQhD,IAAK,CACrC,IAAIk7N,EAAa30D,EAAMvmK,GAEvB,GAAwB,gBAApBk7N,EAAWj4N,KAGb,OAAO,KAGT,GAAIi4N,EAAWj4N,OAASA,EACtB,OAAOjD,EAIX,OAAO,MAGLm7N,GAAa,SAASA,EAAWl4N,EAAMorN,GACzC,GAAmC,IAA/BA,EAAc9nD,MAAMvjK,OAAxB,CAIA,IAAIo4N,EAAa,EACbF,EAAa7M,EAAc9nD,MAAM60D,GAErC,GAAwB,gBAApBF,EAAWj4N,MAsBf,GAAa,gBAATA,GAWCorN,EAAcz3F,SAAoD,WAAzCy3F,EAAclB,YAAYz9M,aAA2BorN,GAAU73N,EAAMorN,GAAnG,CAIA,GAAI6M,EAAWj4N,OAASA,EAAM,CAG5B,GAFAm4N,EAAaH,GAAqBh4N,EAAMorN,EAAc9nD,OAEnC,OAAf60D,EAIF,OAGFF,EAAa7M,EAAc9nD,MAAM60D,GAcnC,OAXA/M,EAAc9nD,MAAMt7D,OAAOmwH,EAAY,GAQvC/M,EAAc2M,aAAa/3N,GAAQi4N,EACnCA,EAAWphB,OAAO72M,EAAMorN,GAEnB6M,EAAWrb,YAAhB,GAEEwO,EAAc2M,aAAa/3N,GAAQ,UACnCk4N,EAAWl4N,EAAMorN,UA/DZA,EAAcwF,YAAuD,WAAzCxF,EAAclB,YAAYz9M,aACzD2+M,EAAc9nD,MAAMnyC,QACpB8mG,EAAWphB,OAAOuU,GAEd6M,EAAWrb,QACbqb,EAAWrb,SAMbsb,EAAW,QAAS9M,GACpB8M,EAAW,QAAS9M,MAwDtBgN,GAAgB,SAAuBp4N,EAAMorN,GAC/C,IAAIjvN,EAASivN,EAAcprN,EAAO,UAC9Bq4N,EAAYV,GAAY33N,GAEvB7D,IAILA,EAAOovH,oBAAoB,YAAa6/F,EAAc,KAAOiN,EAAY,eACzEl8N,EAAOovH,oBAAoB,QAAS6/F,EAAc,KAAOiN,EAAY,WACrEjN,EAAc9rN,OAAOU,GAAQ,KAC7BorN,EAAcprN,EAAO,UAAY,OAG/Bs4N,GAAkB,SAAyBpO,EAAa4N,GAC1D,OAAO5N,GAAe4N,IAA2F,IAA3Ej1N,MAAM+G,UAAUwB,QAAQ2H,KAAKm3M,EAAYqO,cAAeT,IAG5FU,GAAU,CACZrD,aAAc,SAAsB1qN,EAAOoZ,EAAa40M,GACtD,OAAO,SAAUz4N,EAAMorN,GACrB,IAAI0M,EAAe1M,EAAcprN,EAAO,UAGxC,GAAKs4N,GAAgBlN,EAAclB,YAAa4N,GAAhD,CAIA1M,EAAch1C,QAAQ,qBAAuBvyJ,EAAYukM,WAAa,MAAQ39M,EAAM1K,OAAS,aAAeC,EAAO,UAEnH,IACE83N,EAAa3C,aAAa1qN,GAC1B,MAAO0C,GACPi+M,EAAch1C,QAAQ,mBAAqBjpK,EAAEgC,KAAO,KAAOhC,EAAEgC,OAASg4M,GAAqB,wBAA0B,IAAO,0BAA4BtjM,EAAYukM,WAAa,OAASpoN,EAAO,UACjMorN,EAAc2M,aAAa/3N,GAAQ,KACnCy4N,EAAQtrN,OAIdgtG,OAAQ,SAAgBlmG,EAAOC,GAC7B,OAAO,SAAUlU,EAAMorN,GACrB,IAAI0M,EAAe1M,EAAcprN,EAAO,UAGxC,GAAKs4N,GAAgBlN,EAAclB,YAAa4N,GAAhD,CAIA1M,EAAch1C,QAAQ,YAAcniK,EAAQ,OAASC,EAAM,SAAWlU,EAAO,UAE7E,IACE83N,EAAa39G,OAAOlmG,EAAOC,GAC3B,MAAO/G,GACPi+M,EAAch1C,QAAQ,UAAYniK,EAAQ,OAASC,EAAM,SAAWlU,EAAO,qBAIjFm4M,gBAAiB,SAAyB/vM,GACxC,OAAO,SAAUpI,EAAMorN,GACrB,IAAI0M,EAAe1M,EAAcprN,EAAO,UAGnCs4N,GAAgBlN,EAAclB,YAAa4N,KAIhD1M,EAAch1C,QAAQ,WAAap2K,EAAO,sBAAwBoI,GAClE0vN,EAAa3f,gBAAkB/vM,KAGnC4D,SAAU,SAAkB4vM,GAC1B,OAAO,SAAU57M,EAAMorN,GACrBxP,MAGJqT,YAAa,SAAqBj9L,GAChC,OAAO,SAAUo5L,GACf,GAA6C,SAAzCA,EAAclB,YAAYz9M,WAA9B,CAIA2+M,EAAch1C,QAAQ,oCAAsCpkJ,GAAS,IAAM,KAE3E,IACEo5L,EAAclB,YAAY+E,YAAYj9L,GACtC,MAAO7kB,GACPmgI,GAAQtoI,IAAIqqB,KAAK,0CAA2CliB,OAIlE0J,SAAU,SAAkB6hN,GAC1B,OAAO,SAAUtN,GACfA,EAAch1C,QAAQ,mCAAqCsiD,GAE3D,IACEtN,EAAclB,YAAYrzM,SAAW6hN,EACrC,MAAOvrN,GACPmgI,GAAQtoI,IAAIqqB,KAAK,sCAAuCliB,MAI9D+B,MAAO,WACL,OAAO,SAAUlP,EAAMorN,GACrB,GAA6C,SAAzCA,EAAclB,YAAYz9M,WAA9B,CAIA,IAAIqrN,EAAe1M,EAAcprN,EAAO,UAGxC,GAAKs4N,GAAgBlN,EAAclB,YAAa4N,GAAhD,CAIA1M,EAAch1C,QAAQ,oBAAsBp2K,EAAO,UAEnD,IACE83N,EAAa5oN,QACb,MAAO/B,GACPmgI,GAAQtoI,IAAIqqB,KAAK,sBAAwBrvB,EAAO,SAAUmN,QAIhEwrN,gBAAiB,SAAyB34N,EAAMtB,GAC9C,OAAO,SAAU0sN,GACf,IAAIiN,EAAYV,GAAY33N,GACxB44N,EAAO,eAAgBl6N,GAC3B0sN,EAAch1C,QAAQ,UAAYp2K,EAAO,qBAAuBtB,EAAQ,mBACxE,IAAIo5N,EAAe1M,EAAclB,YAAYyO,gBAAgBC,GAC7Dd,EAAatsG,iBAAiB,YAAa4/F,EAAc,KAAOiN,EAAY,eAC5EP,EAAatsG,iBAAiB,QAAS4/F,EAAc,KAAOiN,EAAY,WACxEjN,EAAc9rN,OAAOU,GAAQtB,EAC7B0sN,EAAcprN,EAAO,UAAY83N,IAGrCe,mBAAoB,SAA4B74N,GAC9C,OAAO,SAAUorN,GACf,IAAI0M,EAAe1M,EAAcprN,EAAO,UAIxC,GAHAo4N,GAAcp4N,EAAMorN,GAGfkN,GAAgBlN,EAAclB,YAAa4N,GAAhD,CAIA1M,EAAch1C,QAAQ,YAAcp2K,EAAO,qBAAuBorN,EAAc9rN,OAAOU,GAAQ,qBAE/F,IACEorN,EAAclB,YAAY2O,mBAAmBf,GAC7C,MAAO3qN,GACPmgI,GAAQtoI,IAAIqqB,KAAK,gCAAkCrvB,EAAO,SAAUmN,OAI1E2rN,WAAY,SAAoBp6N,GAC9B,OAAO,SAAUsB,EAAMorN,GACrB,IAAI0M,EAAe1M,EAAcprN,EAAO,UACpC44N,EAAO,eAAgBl6N,GAGtB45N,GAAgBlN,EAAclB,YAAa4N,IAK5C1M,EAAc9rN,OAAOU,KAAUtB,IAInC0sN,EAAch1C,QAAQ,YAAcp2K,EAAO,qBAAuBorN,EAAc9rN,OAAOU,GAAQ,OAAStB,GACxGo5N,EAAagB,WAAWF,GACxBxN,EAAc9rN,OAAOU,GAAQtB,MAK/Bq6N,GAAY,SAAmBxjN,GACjC,IAAIvV,EAAOuV,EAAKvV,KACZorN,EAAgB71M,EAAK61M,cACrBvU,EAASthM,EAAKshM,OACd+F,EAASrnM,EAAKqnM,OACdj9M,EAAO4V,EAAK5V,KAChByrN,EAAc9nD,MAAMlmK,KAAK,CACvB4C,KAAMA,EACN62M,OAAQA,EACR+F,OAAQA,EACRj9M,KAAMA,IAERu4N,GAAWl4N,EAAMorN,IAGf4N,GAAc,SAAqBh5N,EAAMorN,GAC3C,OAAO,SAAUj+M,GAOf,GAAIi+M,EAAc2M,aAAa/3N,GAAO,CACpC,IAAI48M,EAASwO,EAAc2M,aAAa/3N,GAAM48M,OAC9CwO,EAAc2M,aAAa/3N,GAAQ,KAE/B48M,GAEFA,EAAOwO,EAAcprN,EAAO,WAIhCk4N,GAAWl4N,EAAMorN,KAejB6N,GAA6B,SAAUhP,GAGzC,SAASgP,EAAc/O,GACrB,IAAIxhH,EAuCJ,OArCAA,EAAQuhH,EAAqBl3M,KAAK5Q,OAASA,KAC3CumG,EAAMwhH,YAAcA,EAEpBxhH,EAAMwwH,oBAAsB,WAC1B,OAAOhB,GAAW,cAAe,IAAuBxvH,KAG1DA,EAAMwhH,YAAY1+F,iBAAiB,aAAc9iB,EAAMwwH,qBAEvDxwH,EAAM0tE,QAAUlI,GAAO,iBAEvBxlE,EAAMywH,sBAAwB,EAC9BzwH,EAAM0wH,sBAAwB,EAC9B1wH,EAAM46D,MAAQ,GACd56D,EAAMqvH,aAAe,CACnB75N,MAAO,KACPD,MAAO,MAETyqG,EAAM2wH,yBAA2B,GACjC3wH,EAAM4wH,oBAAqB,EAC3B5wH,EAAMppG,OAAS,GACfopG,EAAM6wH,kBAAoBP,GAAY,QAAS,IAAuBtwH,IACtEA,EAAM8wH,kBAAoBR,GAAY,QAAS,IAAuBtwH,IAEtEA,EAAM+wH,cAAgB,SAAUtsN,GAE9Bu7F,EAAMgxH,YAAcvsN,GAGtBu7F,EAAMixH,cAAgB,SAAUxsN,GAE9Bu7F,EAAMkxH,YAAczsN,GAGtBu7F,EAAMmxH,uBAAwB,EAC9BnxH,EAAMoxH,iBAAkB,EACxBpxH,EAAMqxH,iBAAkB,EACjBrxH,EA1CT,IAAeuwH,EAAehP,GA6C9B,IAAIriH,EAASqxH,EAAcrvN,UA6iB3B,OA3iBAg+F,EAAOoyH,eAAiB,WACtB73N,KAAK23N,iBAAkB,EACvB33N,KAAK60H,gBAGPpvB,EAAOqyH,wBAA0B,WAG/B,OAAO93N,KAAK03N,uBAGdjyH,EAAOsyH,qBAAuB,WAC5B,OAAO/3N,KAAK23N,iBAGdlyH,EAAO+rB,MAAQ,WACb,OAAOxxH,KAAK83N,2BAA6B93N,KAAK+3N,wBAGhDtyH,EAAOuyH,oBAAsB,SAA6B76N,GACpD6C,KAAK83N,4BAOT93N,KAAKi4N,yBAAyB96N,GAC9B6C,KAAK03N,uBAAwB,EAC7B13N,KAAK8lG,QAAQ,wBACb9lG,KAAK60H,iBAGPpvB,EAAOovB,aAAe,WAOhB70H,KAAKwxH,UAAYxxH,KAAK43N,kBACxB53N,KAAK43N,iBAAkB,EACvB53N,KAAK8lG,QAAQ,WAcjBL,EAAO+wH,gBAAkB,SAAyB34N,EAAMtB,GACtDq6N,GAAU,CACR/4N,KAAM,cACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQG,gBAAgB34N,EAAMtB,GACtCiB,KAAM,qBAWVioG,EAAO14F,MAAQ,SAAelP,GAC5B+4N,GAAU,CACR/4N,KAAMA,EACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQtpN,MAAMlP,GACtBL,KAAM,WAYVioG,EAAOixH,mBAAqB,SAA4B74N,GACjDmC,KAAKk4N,wBAKVtB,GAAU,CACR/4N,KAAM,cACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQK,mBAAmB74N,GACnCL,KAAM,uBARN2tI,GAAQtoI,IAAIgtB,MAAM,yCAoBtB41E,EAAOyyH,sBAAwB,WAK7B,OAAQ/sF,GAAQvmB,QAAQX,aAAeknB,GAAQvmB,QAAQf,YAAc,IAASxkH,aAAe,IAASA,YAAYoI,WAA0E,oBAAtD,IAASpI,YAAYoI,UAAUivN,oBAWvKI,EAAcqB,cAAgB,WAC5B,OAAO,IAASC,cAAgB,IAASA,aAAa3wN,WAAmE,oBAA/C,IAAS2wN,aAAa3wN,UAAUkvN,YAW5GlxH,EAAO0yH,cAAgB,WACrB,OAAOn4N,KAAK2O,YAAYwpN,iBAa1B1yH,EAAOkxH,WAAa,SAAoB94N,EAAMtB,GACvCyD,KAAKm4N,gBAKVvB,GAAU,CACR/4N,KAAMA,EACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQM,WAAWp6N,GAC3BiB,KAAM,eARN2tI,GAAQtoI,IAAIgtB,MAAM,iCAoBtB41E,EAAOwyH,yBAA2B,SAAkC96N,GAClE,IAAIgqG,EAASnnG,KAEb,IAAK7C,GAA4B,kBAAXA,GAAsD,IAA/B6J,OAAO0K,KAAKvU,GAAQS,OAC/D,MAAM,IAAIoM,MAAM,uDAGlBhD,OAAO0K,KAAKvU,GAAQE,SAAQ,SAAUQ,GACpC,IAAItB,EAAQY,EAAOU,GAEnB,IAAKspG,EAAO2wH,0BACV,OAAO3wH,EAAOqvH,gBAAgB34N,EAAMtB,GAGlC4qG,EAAOgxH,iBACThxH,EAAOwvH,WAAW94N,EAAMtB,OAa9BkpG,EAAOutH,aAAe,SAAsBppN,EAAS6wM,GACnD,IAAInyG,EAAStoG,KAET0hB,EAAc9X,EAAQ8X,YACtB7jB,EAAO+L,EAAQ/L,KACfyK,EAAQsB,EAAQtB,MAGpB,GAFAtI,KAAKq4N,kBAAmB,EAEX,UAATx6N,GAAoBmC,KAAKs4N,cAAgBt4N,KAAKm3N,mBAGhD,OAFAn3N,KAAKk3N,yBAAyBj8N,KAAK,CAAC2O,EAAS6wM,SAC7Cz6M,KAAKi0K,QAAQ,2BAA6B3rK,EAAM1K,OAAS,uBAQ3D,IAAI04N,EAAU7b,EAWd,GAVAmc,GAAU,CACR/4N,KAAMA,EACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQrD,aAAa1qN,EAAOoZ,GAAe,CACjDukM,YAAa,GACZqQ,GACH7b,OAAQA,EACRj9M,KAAM,iBAGK,UAATK,EAAkB,CAGpB,GAFAmC,KAAKm3N,oBAAqB,GAErBn3N,KAAKk3N,yBAAyBt5N,OACjC,OAGF,IAAIujK,EAAQnhK,KAAKk3N,yBAAyBn6N,QAC1CiD,KAAKi0K,QAAQ,yBAA2B9S,EAAMvjK,OAAS,kBACvDoC,KAAKk3N,yBAAyBt5N,OAAS,EACvCujK,EAAM9jK,SAAQ,SAAUk7N,GACtBjwH,EAAO0qH,aAAah4M,MAAMstF,EAAQiwH,QAYxC9yH,EAAOynH,cAAgB,WAGrB,OAAKiJ,GAAgBn2N,KAAK+nN,YAAa/nN,KAAKw4N,cAIrCx4N,KAAKw4N,YAAYn/F,SAAWr5H,KAAKw4N,YAAYn/F,SAH3C8R,GAAQsgC,mBAanBhmE,EAAOwnH,cAAgB,WAGrB,OAAKkJ,GAAgBn2N,KAAK+nN,YAAa/nN,KAAKs4N,cAIrCt4N,KAAKs4N,YAAYj/F,SAAWr5H,KAAKs4N,YAAYj/F,SAH3C8R,GAAQsgC,mBAanBhmE,EAAO4zB,SAAW,WAChB,IAAIv9H,EAAQq6N,GAAgBn2N,KAAK+nN,YAAa/nN,KAAKs4N,aAAet4N,KAAKs4N,YAAc,KACjFv8N,EAAQo6N,GAAgBn2N,KAAK+nN,YAAa/nN,KAAKw4N,aAAex4N,KAAKw4N,YAAc,KAErF,OAAIz8N,IAAUD,EACLkE,KAAKktN,gBAGVpxN,IAAUC,EACLiE,KAAKitN,gBAGPzgD,GAAmBxsK,KAAKktN,gBAAiBltN,KAAKitN,kBAavDxnH,EAAOgzH,YAAc,SAAqB/jN,EAAU+lM,QACnC,IAAXA,IACFA,EAAShtM,IAOXmpN,GAAU,CACR/4N,KAAM,cACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQ3hN,SAASA,GACzBlX,KAAM,WACNi9M,OAAQA,KAeZh1G,EAAOqnH,YAAc,SAAqBj9L,EAAO4qL,QACjC,IAAV5qL,IACFA,EAAQ,WAGK,IAAX4qL,IACFA,EAAShtM,IAGU,kBAAVoiB,IACTA,OAAQnlB,GAOVksN,GAAU,CACR/4N,KAAM,cACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQvJ,YAAYj9L,GAC5BryB,KAAM,cACNi9M,OAAQA,KAcZh1G,EAAO+mH,YAAc,SAAqB16M,EAAOC,EAAKitK,QACvC,IAATA,IACFA,EAAOvxK,IAGJzN,KAAKktN,gBAAgBtvN,QAA0C,IAAhCoC,KAAKktN,gBAAgBn7M,IAAI,GAK7D6kN,GAAU,CACR/4N,KAAM,QACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQr+G,OAAOlmG,EAAOC,GAC9B0oM,OAAQz7B,EACRxhL,KAAM,WATNwhL,KAuBJv5E,EAAO6oH,YAAc,SAAqBx8M,EAAOC,EAAKitK,QACvC,IAATA,IACFA,EAAOvxK,IAGJzN,KAAKitN,gBAAgBrvN,QAA0C,IAAhCoC,KAAKitN,gBAAgBl7M,IAAI,GAK7D6kN,GAAU,CACR/4N,KAAM,QACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQr+G,OAAOlmG,EAAOC,GAC9B0oM,OAAQz7B,EACRxhL,KAAM,WATNwhL,KAmBJv5E,EAAOgpH,SAAW,WAEhB,SAAIiH,GAAU,QAAS11N,QAAS01N,GAAU,QAAS11N,QAarDylG,EAAOiqH,qBAAuB,SAA8BzpN,GAY1D,MAXsB,qBAAXA,GAA0BjG,KAAKw4N,aAC1Cx4N,KAAKg3N,wBAA0B/wN,IAC7B2wN,GAAU,CACR/4N,KAAM,QACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQrgB,gBAAgB/vM,GAChCzI,KAAM,oBAERwC,KAAKg3N,sBAAwB/wN,GAGxBjG,KAAKg3N,uBASdvxH,EAAOkqH,qBAAuB,SAA8B1pN,GAY1D,MAXsB,qBAAXA,GAA0BjG,KAAKs4N,aAC1Ct4N,KAAK2vN,uBAAyB1pN,IAC5B2wN,GAAU,CACR/4N,KAAM,QACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQrgB,gBAAgB/vM,GAChCzI,KAAM,oBAERwC,KAAKi3N,sBAAwBhxN,GAGxBjG,KAAKi3N,uBAWdxxH,EAAOivH,mBAAqB,SAA4B7qN,GACjD7J,KAAKw4N,aAIV5B,GAAU,CACR/4N,KAAM,QACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQxsN,SAASA,GACzBrM,KAAM,cAYVioG,EAAOgvH,mBAAqB,SAA4B5qN,GACjD7J,KAAKs4N,aAIV1B,GAAU,CACR/4N,KAAM,QACNorN,cAAejpN,KACf00M,OAAQ2hB,GAAQxsN,SAASA,GACzBrM,KAAM,cAQVioG,EAAOS,QAAU,WACf,IAAIsxB,EAASx3H,KAEbA,KAAK8lG,QAAQ,WACb2vH,GAAYp4N,SAAQ,SAAUQ,GAC5B25H,EAAOzqH,MAAMlP,GAET25H,EAAO0gG,wBACT1gG,EAAOk/F,mBAAmB74N,GAE1B25H,EAAO35H,EAAO,kBAAiB,WAC7B,OAAOo4N,GAAcp4N,EAAM25H,SAIjCx3H,KAAKm3N,oBAAqB,EAC1Bn3N,KAAKk3N,yBAAyBt5N,OAAS,EAEnCoC,KAAK+2N,qBACP/2N,KAAK+nN,YAAY3+F,oBAAoB,aAAcppH,KAAK+2N,qBAG1D/2N,KAAK4lG,OAGAkxH,EA3lBwB,CA4lB/B3rF,GAAQugC,aAENgtD,GAAc,SAAqBC,GACrC,OAAO53H,mBAAmByN,OAAO5tG,OAAOqD,aAAa+W,MAAM,KAAM29M,MAG/DC,GAAuB,IAAIt+N,WAAW,OAAO8C,MAAM,IAAI4B,KAAI,SAAU65N,GACvE,OAAOA,EAAOz0N,WAAW,OAGvB00N,GAA4B,SAAUC,GAGxC,SAASD,IACP,OAAOC,EAAOnoN,KAAK5Q,KAAM,2FAA6FA,KAGxH,OANA,IAAe84N,EAAcC,GAMtBD,EAPuB,CAQhB,IAAiB9uN,QAU7BgvN,GAAgC,SAAUC,GAG5C,SAASD,EAAiB//H,EAAUrvF,GAClC,IAAI28F,EAiBJ,YAfgB,IAAZ38F,IACFA,EAAU,IAGZ28F,EAAQ0yH,EAAeroN,KAAK5Q,KAAMi5F,EAAUrvF,IAAY5J,KAGxDumG,EAAMgiH,aAAe,KACrBhiH,EAAM2yH,gBAAkB,KACxB3yH,EAAMiiH,YAAc,WACpBjiH,EAAM4yH,0BAA4BlgI,EAASmuC,yBAC3C7gC,EAAM6yH,UAAYngI,EAASmgI,UAG3B7yH,EAAM8iH,8BAA+B,EAC9B9iH,EApBT,IAAeyyH,EAAkBC,GAuBjC,IAAIxzH,EAASuzH,EAAiBvxN,UAkc9B,OAhcAg+F,EAAO2lH,kBAAoB,WAEzB,OAAO,MAUT3lH,EAAOsnH,UAAY,WACjB,IAAK/sN,KAAKk5N,kBAAoBl5N,KAAKk5N,gBAAgB53H,OAASthG,KAAKk5N,gBAAgB53H,KAAK1jG,OACpF,OAAOutI,GAAQhS,mBAGjB,IAAI73B,EAAOthG,KAAKk5N,gBAAgB53H,KAC5BxvF,EAAQwvF,EAAK,GAAGx1E,UAChB/Z,EAAMuvF,EAAKA,EAAK1jG,OAAS,GAAGkuB,UAChC,OAAOq/G,GAAQhS,iBAAiB,CAAC,CAACrnH,EAAOC,MAc3C0zF,EAAO0nH,kBAAoB,SAA2BnuN,EAAKqsB,GAKzD,QAJY,IAARA,IACFA,GAAM,IAGHrsB,EACH,OAAO,KAGT,IAAI6b,EAAK08J,GAAcv4K,GACnBouN,EAAYptN,KAAK2qN,cAAc9vM,GAEnC,GAAIwQ,IAAQ+hM,GAAapuN,EAAIsJ,MAAO,CAKlC,IAAI+wN,EAAqBT,GAAqB1+N,WAAa8E,EAAIsJ,MAAMpO,WACjEo/N,EAAkB,IAAIh/N,WAAW++N,GACrCC,EAAgBjuM,IAAIrsB,EAAIsJ,OACxBgxN,EAAgBjuM,IAAIutM,GAAsB55N,EAAIsJ,MAAMpO,YACpD8F,KAAK2qN,cAAc9vM,GAAMuyM,EAAY,CACnCx5M,YAAa5U,EAAI4U,YACjBQ,UAAWpV,EAAIoV,UACf9L,MAAOgxN,GAIX,OAAOlM,GAAapuN,GAUtBymG,EAAO8nH,mBAAqB,WAC1B,OAAOvtN,KAAKwtN,WAAaxtN,KAAKk5N,kBAAoBl5N,KAAKk8H,UAWzDz2B,EAAOgoH,MAAQ,WAGb,OAFAztN,KAAKgiG,MAAQ,QACbhiG,KAAK0tN,kBACE1tN,KAAKysN,kBAYdhnH,EAAOzI,MAAQ,SAAe43C,GAC5B,MAAsB,qBAAXA,IAIX50I,KAAKk5N,gBAAkBtkF,EAGJ,SAAf50I,KAAKgiG,OAAoBhiG,KAAKutN,sBAChCvtN,KAAKytN,SAPEztN,KAAKk5N,iBAoBhBzzH,EAAOuS,OAAS,SAAgBlmG,EAAOC,GACrCmyM,GAAoBpyM,EAAOC,EAAK/R,KAAKk5N,kBAavCzzH,EAAO+oH,YAAc,WACnB,IAAIrnH,EAASnnG,KAGT0hB,EAAc1hB,KAAK0uN,qBAEvB,GAAKhtM,EAAL,CAIA,GAA8E,OAA1E1hB,KAAKirN,gBAAgBsO,2BAA2B73M,EAAY/K,UAAoB,CAGlF,IAAI6iN,EAAuB,WACzBryH,EAAOnF,MAAQ,QAEVmF,EAAO+0B,UAEV/0B,EAAOslH,kBAMX,OAFAzsN,KAAKirN,gBAAgBp+F,IAAI,kBAAmB2sG,QAC5Cx5N,KAAKgiG,MAAQ,uBAIfhiG,KAAK2uN,aAAajtM,KAIpB+jF,EAAO+pH,2BAA6B,WAClC,OAAO,MAGT/pH,EAAOipH,mBAAqB,WAC1B,OAAO1uN,KAAKy5N,mBAAmBR,EAAexxN,UAAUinN,mBAAmB99M,KAAK5Q,QAclFylG,EAAOg0H,mBAAqB,SAA4B/3M,GACtD,MAAOA,GAAeA,EAAY/N,QAAQ49B,MAAO,CAE/C,GAAI7vB,EAAYukM,WAAa,GAAKvkM,EAAY9J,SAASZ,SAASpZ,OAAQ,CACtE8jB,EAAc,KACd,MAGFA,EAAc1hB,KAAKqvN,qBAAqB,CACtCz3M,SAAU8J,EAAY9J,SACtBquM,WAAYvkM,EAAYukM,WAAa,EACrC5tC,eAAgB32J,EAAY22J,eAAiB32J,EAAYhN,SACzD0xM,cAAe1kM,EAAY0kM,gBAI/B,OAAO1kM,GAGT+jF,EAAOi0H,aAAe,SAAsB7pM,GAC1C7vB,KAAK6vB,MAAMA,GACX7vB,KAAKgiG,MAAQ,QACbhiG,KAAKqC,QACLrC,KAAK8lG,QAAQ,UASfL,EAAOmuH,wBAA0B,SAAiC/jM,EAAOwgM,EAAel2N,GACtF,IAAImuG,EAAStoG,KAEb,GAAKA,KAAKk5N,gBAAV,CAOA,GAFAl5N,KAAK+zN,mBAAmB1D,EAAclX,QAEjCn5M,KAAK2pN,gBAGR,OAFA3pN,KAAKgiG,MAAQ,aACbhiG,KAAKgsN,sBAAwB,GAI/B,GAAIn8L,EAYF,OAXIA,EAAM7iB,OAAS0rM,GAAeE,SAChC54M,KAAKi0N,iBAGHpkM,EAAM7iB,OAAS0rM,GAAeG,QAChC74M,KAAKgsN,sBAAwB,EAE7BhsN,KAAKksN,sBAAwB,OAG/BlsN,KAAK05N,aAAa7pM,GAIpB,IAAInO,EAAc1hB,KAAK2pN,gBAGvB3pN,KAAKg0N,2BAA2BtyM,EAAYhN,SAAU27M,EAAclX,OAEhEkX,EAAcnnN,KAChBlJ,KAAKqtN,WAAWgD,EAAcnnN,KAAK,GAGrClJ,KAAKgiG,MAAQ,YAEbhiG,KAAK8lG,QAAQ,aACb,IAAInyF,EAAU+N,EAAY/N,QAQ1B,GANIA,EAAQ3U,MACV2U,EAAQ3U,IAAIsJ,MAAQ+nN,EAAcrxN,IAAIsJ,OAGxCoZ,EAAYpZ,MAAQ+nN,EAAc/nN,MAEH,oBAApB,IAASX,QAAmD,oBAAnB3H,KAAKo5N,UAWvD,OAVAp5N,KAAKgiG,MAAQ,wBAGbhiG,KAAKo5N,YAAY12N,MAAK,WACpB,OAAO4lG,EAAOsrH,wBAAwB/jM,EAAOwgM,EAAel2N,MAC3D,WACD,OAAOmuG,EAAOoxH,aAAa,CACzB7hI,QAAS,4BAMflkF,EAAQgmN,WAAY,EAEpB,IACE35N,KAAK45N,cAAcl4M,GACnB,MAAO1W,GAIP,YAHAhL,KAAK05N,aAAa,CAChB7hI,QAAS7sF,EAAE6sF,UAmBf,GAdA73F,KAAK65N,mBAAmBn4M,EAAa1hB,KAAKirN,gBAAgB6O,UAAUp4M,EAAY/K,UAAW3W,KAAKwtN,WAE5F9rM,EAAY4/E,KAAK1jG,OACnB8jB,EAAYkzL,WAAa,CACvB9iM,MAAO4P,EAAY4/E,KAAK,GAAGx1E,UAC3B/Z,IAAK2P,EAAY4/E,KAAK5/E,EAAY4/E,KAAK1jG,OAAS,GAAGmuB,SAGrDrK,EAAYkzL,WAAa,CACvB9iM,MAAO4P,EAAY22J,eACnBtmK,IAAK2P,EAAY22J,eAAiB32J,EAAYhN,UAI9CgN,EAAY0kM,cAId,OAHApmN,KAAK8lG,QAAQ,kBACb9lG,KAAK2pN,gBAAkB,UACvB3pN,KAAKgiG,MAAQ,SAIftgF,EAAYxnB,WAAawnB,EAAYpZ,MAAMpO,WAC3C8F,KAAKosN,oBAAsBz4M,EAAQe,SAGnCgN,EAAY4/E,KAAKjkG,SAAQ,SAAUo7F,GACjC6P,EAAO4wH,gBAAgBr+F,OAAOvyB,EAAO6wH,0BAA4B,IAAI,IAASvxN,OAAO6wF,EAAI3sE,UAAW2sE,EAAI1sE,QAAS0sE,EAAIz8F,MAAQy8F,MAM/H0rH,GAA6BnkN,KAAKk5N,iBAClCl5N,KAAK20N,0BAzGH30N,KAAKgiG,MAAQ,SA4GjByD,EAAO4wG,YAAc,aAIrB5wG,EAAOysH,qBAAuB,aAa9BzsH,EAAOm0H,cAAgB,SAAuBl4M,GAC5C,IAAIqgF,EACAg4H,GAAsB,EAE1B,GAA+B,oBAApB,IAASpyN,OAElB,MAAM,IAAImxN,GAGwB,oBAAzB,IAASruM,YAClBs3E,EAAU,IAAI,IAASt3E,YAAY,SAEnCs3E,EAAU,IAASp6F,OAAOm5F,gBAC1Bi5H,GAAsB,GAGxB,IAAIzxM,EAAS,IAAI,IAAS3gB,OAAOm6F,OAAO,IAAU,IAASp6F,MAAOq6F,GAgBlE,GAfArgF,EAAY4/E,KAAO,GACnB5/E,EAAYs4M,aAAe,CACzBC,OAAQ,EACRC,MAAO,GAET5xM,EAAO+6E,MAAQ3hF,EAAY4/E,KAAKrmG,KAAK8S,KAAK2T,EAAY4/E,MAEtDh5E,EAAO06E,eAAiB,SAAUhkG,GAChC0iB,EAAYs4M,aAAeh7N,GAG7BspB,EAAO45E,eAAiB,SAAUryE,GAChCs7G,GAAQtoI,IAAIqqB,KAAK,wCAA0C2C,EAAMgoE,UAG/Dn2E,EAAY/N,QAAQ3U,IAAK,CAC3B,IAAIm7N,EAAUz4M,EAAY/N,QAAQ3U,IAAIsJ,MAElCyxN,IACFI,EAAUzB,GAAYyB,IAGxB7xM,EAAOvd,MAAMovN,GAGf,IAAIC,EAAc14M,EAAYpZ,MAE1ByxN,IACFK,EAAc1B,GAAY0B,IAG5B9xM,EAAOvd,MAAMqvN,GACb9xM,EAAOg7E,SAiBTmC,EAAOo0H,mBAAqB,SAA4Bn4M,EAAa24M,EAAYziN,GAC/E,IAAIjE,EAAU+N,EAAY/N,QAE1B,GAAK0mN,EAOL,GAAK34M,EAAY4/E,KAAK1jG,OAAtB,CAQA,IAAIo8N,EAAet4M,EAAYs4M,aAC3BM,EAAON,EAAaC,OAAS,sBAAmBD,EAAaE,MAAQG,EAAW7V,QAOpF,GANA9iM,EAAY4/E,KAAKjkG,SAAQ,SAAUo7F,GAEjCA,EAAI3sE,WAAawuM,EACjB7hI,EAAI1sE,SAAWuuM,MAGZ1iN,EAASg2M,SAAU,CACtB,IAAI2M,EAAa74M,EAAY4/E,KAAK,GAAGx1E,UACjC0uM,EAAY94M,EAAY4/E,KAAK5/E,EAAY4/E,KAAK1jG,OAAS,GAAGkuB,UAC9DlU,EAASg2M,SAAW,CAClBv1M,cAAeT,EAASS,cAAgBqJ,EAAYukM,WACpDrvM,KAAMb,KAAKM,IAAIkkN,EAAYC,EAAY7mN,EAAQe,iBAjBjDf,EAAQ49B,OAAQ,GAsBbynL,EA1d2B,CA2dlCnR,IAmBE4S,GAAY,SAAmBz9H,EAAO09H,GAGxC,IAFA,IAAIp5H,EAAOtE,EAAMsE,KAER1mG,EAAI,EAAGA,EAAI0mG,EAAK1jG,OAAQhD,IAAK,CACpC,IAAI69F,EAAM6I,EAAK1mG,GAEf,GAAI8/N,GAAajiI,EAAIkiI,aAAeD,GAAajiI,EAAImiI,UACnD,OAAOniI,EAIX,OAAO,MAGLoiI,GAAe,SAAsBl7M,EAAOq9E,EAAO/2F,GAKrD,QAJe,IAAXA,IACFA,EAAS,GAGN0Z,EAAM3I,SAOX,IAHA,IACIyhF,EADAiiI,EAAYz0N,EAGPrL,EAAI,EAAGA,EAAI+kB,EAAM3I,SAASpZ,OAAQhD,IAAK,CAC9C,IAAI+Y,EAAUgM,EAAM3I,SAASpc,GAU7B,GARK69F,IAKHA,EAAMgiI,GAAUz9H,EAAO09H,EAAY/mN,EAAQe,SAAW,IAGpD+jF,EAAK,CACP,GAAI,UAAW9kF,EAAS,CAEtB8kF,EAAI1sE,QAAU2uM,EACdjiI,EAAImiI,UAAYF,EAChBA,GAAa/mN,EAAQe,SACrB+jF,EAAM,KACN,SAGF,GAAIiiI,EAAYjiI,EAAI1sE,QAAS,CAE3B2uM,GAAa/mN,EAAQe,SACrB,SAIF+jF,EAAI1sE,SAAWpY,EAAQe,cAWvB,GATI,WAAYf,IACd8kF,EAAM,IAAI,IAAS7wF,OAAO8yN,EAAWA,EAAY/mN,EAAQe,SAAUf,EAAQ83F,QAC3EhT,EAAIkiI,YAAcD,EAGlBjiI,EAAImiI,UAAYF,EAAYj4M,WAAW9O,EAAQ83F,QAC/CzO,EAAM69B,OAAOpiC,IAGX,eAAgB9kF,EAAS,CAI3B,IAAImnN,EAAwBnnN,EAAQ+3F,WAAWtuG,MAAM,KAAK4B,IAAIyjB,YAC1Ds4M,EAAWD,EAAsB,GACjCE,EAAUF,EAAsB,GAEpCriI,EAAM,IAAI,IAAS7wF,OAAO8yN,EAAWA,EAAY/mN,EAAQe,SAAU,IACnE+jF,EAAIkiI,YAAcD,EAAYK,EAC9BtiI,EAAImiI,UAAYniI,EAAIkiI,YAAcK,EAClCh+H,EAAM69B,OAAOpiC,GAIjBiiI,GAAa/mN,EAAQe,WAQrBumN,GAAmC,MACnCC,GAAsB,CAE1B,CACE19N,KAAM,MACN29N,IAAK,SAAatZ,EAAgBjqM,EAAUlD,EAAUm1F,EAAiBw6B,GACrE,GAAI3vH,IAAagB,IAAU,CACzB,IAAIwsL,EAAY,CACdtrL,KAAM,EACNk1F,aAAc,EACdC,UAAW,MAEb,OAAOm2F,EAGT,OAAO,OAGX,CACE1kM,KAAM,kBACN29N,IAAK,SAAatZ,EAAgBjqM,EAAUlD,EAAUm1F,EAAiBw6B,GACrE,IAAKr9H,OAAO0K,KAAKmwM,EAAeuZ,4BAA4Bx9N,OAC1D,OAAO,KAGT,IAAIskM,EAAY,KACZm5B,EAAe,KACflsD,EAAmB7B,GAAoB11J,GAC3CysH,EAAcA,GAAe,EAE7B,IAAK,IAAIzpI,EAAI,EAAGA,EAAIu0K,EAAiBvxK,OAAQhD,IAAK,CAGhD,IAAIqH,EAAQ2V,EAASQ,SAA2B,IAAhBisH,EAAoBzpI,EAAIu0K,EAAiBvxK,QAAUhD,EAAI,GACnFw0K,EAAiBD,EAAiBltK,GAClC0R,EAAUy7J,EAAez7J,QACzB2nN,EAAkBzZ,EAAeuZ,2BAA2BznN,EAAQgD,UAExE,GAAK2kN,GAAoB3nN,EAAQq0F,eAAjC,CAIA,IAAIhoF,EAAcrM,EAAQq0F,eAAeuwE,UAAY,IACjDzmK,EAAQkO,EAAcs7M,EAE1B,GAAI3nN,EAAQsxF,OAA6C,kBAA7BmqE,EAAerjE,UACzC,IAAK,IAAIwvH,EAAI,EAAGA,EAAInsD,EAAerjE,UAAWwvH,IAC5CzpN,GAAS6B,EAAQsxF,MAAMs2H,GAAG7mN,SAI9B,IAAI4oI,EAAWvnI,KAAKkE,IAAIoqH,EAAcvyH,GAGtC,GAAqB,OAAjBupN,IAAuC,IAAb/9E,GAAkB+9E,EAAe/9E,GAC7D,MAGF+9E,EAAe/9E,EACf4kD,EAAY,CACVtrL,KAAM9E,EACNg6F,aAAcsjE,EAAetjE,aAC7BC,UAAWqjE,EAAerjE,YAI9B,OAAOm2F,IAIX,CACE1kM,KAAM,UACN29N,IAAK,SAAatZ,EAAgBjqM,EAAUlD,EAAUm1F,EAAiBw6B,GACrE,IAAI69D,EAAY,KACZm5B,EAAe,KACnBh3F,EAAcA,GAAe,EAG7B,IAFA,IAAI8qC,EAAmB7B,GAAoB11J,GAElChd,EAAI,EAAGA,EAAIu0K,EAAiBvxK,OAAQhD,IAAK,CAGhD,IAAIqH,EAAQ2V,EAASQ,SAA2B,IAAhBisH,EAAoBzpI,EAAIu0K,EAAiBvxK,QAAUhD,EAAI,GACnFw0K,EAAiBD,EAAiBltK,GAClC0R,EAAUy7J,EAAez7J,QACzB7B,EAAQs9J,EAAe9lG,MAAQ8lG,EAAe9lG,KAAKx3D,OAAS6B,GAAWA,EAAQ7B,MAEnF,GAAI6B,EAAQgD,WAAakzF,GAAoC,qBAAV/3F,EAAuB,CACxE,IAAIwrI,EAAWvnI,KAAKkE,IAAIoqH,EAAcvyH,GAGtC,GAAqB,OAAjBupN,GAAyBA,EAAe/9E,EAC1C,QAGG4kD,GAA8B,OAAjBm5B,GAAyBA,GAAgB/9E,KACzD+9E,EAAe/9E,EACf4kD,EAAY,CACVtrL,KAAM9E,EACNg6F,aAAcsjE,EAAetjE,aAC7BC,UAAWqjE,EAAerjE,aAMlC,OAAOm2F,IAIX,CACE1kM,KAAM,gBACN29N,IAAK,SAAatZ,EAAgBjqM,EAAUlD,EAAUm1F,EAAiBw6B,GACrE,IAAI69D,EAAY,KAGhB,GAFA79D,EAAcA,GAAe,EAEzBzsH,EAASuC,qBAAuBvC,EAASuC,oBAAoBvc,OAG/D,IAFA,IAAIy9N,EAAe,KAEVzgO,EAAI,EAAGA,EAAIgd,EAASuC,oBAAoBvc,OAAQhD,IAAK,CAC5D,IAAIkxG,EAAel0F,EAASuC,oBAAoBvf,GAC5Csf,EAAgBtC,EAAS+B,sBAAwB/e,EAAI,EACrD4gO,EAAoB3Z,EAAe4Z,gBAAgBvhN,GAEvD,GAAIshN,EAAmB,CACrB,IAAIl+E,EAAWvnI,KAAKkE,IAAIoqH,EAAcm3F,EAAkB5kN,MAGxD,GAAqB,OAAjBykN,GAAyBA,EAAe/9E,EAC1C,QAGG4kD,GAA8B,OAAjBm5B,GAAyBA,GAAgB/9E,KACzD+9E,EAAe/9E,EACf4kD,EAAY,CACVtrL,KAAM4kN,EAAkB5kN,KACxBk1F,aAAcA,EACdC,UAAW,QAOrB,OAAOm2F,IAIX,CACE1kM,KAAM,WACN29N,IAAK,SAAatZ,EAAgBjqM,EAAUlD,EAAUm1F,EAAiBw6B,GACrE,GAAIzsH,EAASg2M,SAAU,CACrB,IAAI1rB,EAAY,CACdtrL,KAAMgB,EAASg2M,SAASh3M,KACxBk1F,aAAcl0F,EAASg2M,SAASv1M,cAAgBT,EAASS,cACzD0zF,UAAW,MAEb,OAAOm2F,EAGT,OAAO,QAIPw5B,GAA8B,SAAU5T,GAG1C,SAAS4T,EAAe9xN,GACtB,IAAI28F,EAQJ,OANAA,EAAQuhH,EAAqBl3M,KAAK5Q,OAASA,KAE3CumG,EAAMuzH,UAAY,GAClBvzH,EAAMk1H,gBAAkB,GACxBl1H,EAAM60H,2BAA6B,GACnC70H,EAAM0tE,QAAUlI,GAAO,kBAChBxlE,EAXT,IAAem1H,EAAgB5T,GA8B/B,IAAIriH,EAASi2H,EAAej0N,UA6W5B,OA3WAg+F,EAAOy8G,aAAe,SAAsBtqM,EAAUlD,EAAUm1F,EAAiBw6B,GAC/E,IAAIs3F,EAAa37N,KAAK47N,eAAehkN,EAAUlD,EAAUm1F,EAAiBw6B,GAE1E,OAAKs3F,EAAW/9N,OAUToC,KAAK67N,iBAAiBF,EAAY,CACvCzyN,IAAK,OACL9B,MAAOi9H,IARA,MAwBX5+B,EAAOq2H,eAAiB,SAAwBlkN,EAAUlD,GACxD,IAAKkD,IAAaA,EAASZ,SACzB,OAAO,KAGT,IAAI2kN,EAAa37N,KAAK47N,eAAehkN,EAAUlD,EAAUkD,EAAS+B,sBAAuB,GAEzF,IAAKgiN,EAAW/9N,OACd,OAAO,KAGT,IAAIskM,EAAYliM,KAAK67N,iBAAiBF,EAAY,CAChDzyN,IAAK,eACL9B,MAAO,IAQT,OAJI86L,EAAUp2F,aAAe,IAC3Bo2F,EAAUtrL,OAAS,GAGdb,KAAKkE,IAAIioL,EAAUtrL,KAAO23J,GAAa,CAC5CC,gBAAiB52J,EAAS+D,eAC1B8yJ,aAAc72J,EAASZ,SACvBc,WAAYoqL,EAAUp2F,aACtBtzF,SAAU,MAmBditF,EAAOm2H,eAAiB,SAAwBhkN,EAAUlD,EAAUm1F,EAAiBw6B,GAGnF,IAFA,IAAIs3F,EAAa,GAER/gO,EAAI,EAAGA,EAAIsgO,GAAoBt9N,OAAQhD,IAAK,CACnD,IAAImhO,EAAWb,GAAoBtgO,GAC/BsnM,EAAY65B,EAASZ,IAAIn7N,KAAM4X,EAAUlD,EAAUm1F,EAAiBw6B,GAEpE69D,IACFA,EAAU65B,SAAWA,EAASv+N,KAC9Bm+N,EAAW1gO,KAAK,CACd8gO,SAAUA,EAASv+N,KACnB0kM,UAAWA,KAKjB,OAAOy5B,GAmBTl2H,EAAOo2H,iBAAmB,SAA0BF,EAAYtyM,GAK9D,IAJA,IAAI2yM,EAAgBL,EAAW,GAAGz5B,UAC9B+5B,EAAelmN,KAAKkE,IAAI0hN,EAAW,GAAGz5B,UAAU74K,EAAOngB,KAAOmgB,EAAOjiB,OACrE80N,EAAeP,EAAW,GAAGI,SAExBnhO,EAAI,EAAGA,EAAI+gO,EAAW/9N,OAAQhD,IAAK,CAC1C,IAAIuhO,EAAcpmN,KAAKkE,IAAI0hN,EAAW/gO,GAAGsnM,UAAU74K,EAAOngB,KAAOmgB,EAAOjiB,OAEpE+0N,EAAcF,IAChBA,EAAeE,EACfH,EAAgBL,EAAW/gO,GAAGsnM,UAC9Bg6B,EAAeP,EAAW/gO,GAAGmhO,UAKjC,OADA/7N,KAAKi0K,QAAQ,kBAAoB5qJ,EAAOngB,IAAM,KAAOmgB,EAAOjiB,MAA/C,2BAA0F80N,EAAe,YAAcF,EAAcplN,KAArI,kBAAuKolN,EAAclwH,cAAoD,kBAA5BkwH,EAAcjwH,UAAyB,cAAgBiwH,EAAcjwH,UAAY,IAAM,KAC1SiwH,GAYTv2H,EAAOyoH,uBAAyB,SAAgCr0M,EAAa8zM,GAC3E,IAAIM,EAAoBN,EAAYt1M,cAAgBwB,EAAYxB,cAEhE,GAAI41M,EAAoBgN,GACtB9vF,GAAQtoI,IAAIqqB,KAAK,uDAAyD+gM,EAAoB,uBAMhG,IAAK,IAAIrzN,EAAIqzN,EAAoB,EAAGrzN,GAAK,EAAGA,IAAK,CAC/C,IAAIwhO,EAAqBviN,EAAY7C,SAASpc,GAE9C,GAAIwhO,GAA0D,qBAA7BA,EAAmBtqN,MAAuB,CACzE67M,EAAYC,SAAW,CACrBv1M,cAAewB,EAAYxB,cAAgBzd,EAC3Cgc,KAAMwlN,EAAmBtqN,OAE3B9R,KAAKi0K,QAAQ,gCAAkC05C,EAAYC,SAASh3M,KAAvD,oBAA0F+2M,EAAYC,SAASv1M,cAAgB,KAC5IrY,KAAK8lG,QAAQ,kBACb,SAYNL,EAAOooH,2BAA6B,SAAoCj2M,GAOtE,GAFA5X,KAAKo7N,2BAA6B,GAE9BxjN,EAASZ,UAAYY,EAASZ,SAASpZ,QAAUga,EAASZ,SAAS,GAAGgxF,eAAgB,CACxF,IAAIq0H,EAAezkN,EAASZ,SAAS,GACjCslN,EAAoBD,EAAar0H,eAAeuwE,UAAY,IAChEv4K,KAAKo7N,2BAA2BiB,EAAa1lN,WAAa2lN,IAiB9D72H,EAAO0sH,sBAAwB,SAA+B/+M,GAC5D,IAAIsO,EAActO,EAAKsO,YACnB0wM,EAA4Bh/M,EAAKg/M,0BACjCmK,EAAiCv8N,KAAKw8N,6BAA6B96M,EAAaA,EAAYkzL,WAAYwd,GACxGz+M,EAAU+N,EAAY/N,QAEtB4oN,IACFv8N,KAAKy8N,2BAA2B/6M,GAG3BA,EAAY9J,SAASg2M,WACxBlsM,EAAY9J,SAASg2M,SAAW,CAC9Bv1M,cAAeqJ,EAAY9J,SAASS,cAAgBqJ,EAAYukM,WAChErvM,KAAMjD,EAAQ7B,SAKpB,IAAI4qN,EAAW/oN,EAAQq0F,eAEnBr0F,EAAQuG,eAAiBk4M,GAA6BsK,IACxD18N,KAAKo7N,2BAA2BznN,EAAQgD,WAAc+lN,EAASnkD,UAAY,MAI/E9yE,EAAO8zH,2BAA6B,SAAoC5iN,GACtE,MAAwC,qBAA7B3W,KAAK85N,UAAUnjN,GACjB,KAGF3W,KAAK85N,UAAUnjN,GAAUC,MAGlC6uF,EAAO2uH,mBAAqB,SAA4Bz9M,GACtD,MAAwC,qBAA7B3W,KAAK85N,UAAUnjN,GACjB,KAGF3W,KAAK85N,UAAUnjN,GAAU6tM,SAmBlC/+G,EAAO+2H,6BAA+B,SAAsC96M,EAAakzL,EAAYwd,GAEnG,IAGItgN,EACAC,EAJA4B,EAAU+N,EAAY/N,QACtB21D,EAAO5nD,EAAY4nD,KACnB+wJ,EAAar6N,KAAK85N,UAAUp4M,EAAY/K,UAI5C,GAA2C,kBAAhC+K,EAAYs0L,gBACrBqkB,EAAa,CACXzjN,KAAM8K,EAAY22J,eAClBmsC,QAAS9iM,EAAY22J,eAAiBu8B,EAAW9iM,OAG/CsgN,IACFpyN,KAAK85N,UAAUp4M,EAAY/K,UAAY0jN,EACvCr6N,KAAK8lG,QAAQ,mBACb9lG,KAAKi0K,QAAQ,6BAA+BvyJ,EAAY/K,SAA3C,YAA0E0jN,EAAWzjN,KAAO,eAAiByjN,EAAW7V,QAAU,MAGjJ1yM,EAAQ4P,EAAY22J,eACpBtmK,EAAM6iM,EAAW7iM,IAAMsoN,EAAW7V,YAC7B,KAAI6V,EAIT,OAAO,EAHPvoN,EAAQ8iM,EAAW9iM,MAAQuoN,EAAW7V,QACtCzyM,EAAM6iM,EAAW7iM,IAAMsoN,EAAW7V,QAoBpC,OAfIl7I,IACFA,EAAKx3D,MAAQA,EACbw3D,EAAKv3D,IAAMA,KAQR4B,EAAQ7B,OAASA,EAAQ6B,EAAQ7B,SACpC6B,EAAQ7B,MAAQA,GAGlB6B,EAAQ5B,IAAMA,GACP,GAYT0zF,EAAOg3H,2BAA6B,SAAoC/6M,GACtE,IAAI9J,EAAW8J,EAAY9J,SACvBjE,EAAU+N,EAAY/N,QAI1B,GAAIA,EAAQuG,cACVla,KAAKy7N,gBAAgB9nN,EAAQgD,UAAY,CACvCC,KAAMjD,EAAQ7B,MACd6qN,SAAU,QAEP,GAAI/kN,EAASuC,qBAAuBvC,EAASuC,oBAAoBvc,OAGtE,IAAK,IAAIhD,EAAI,EAAGA,EAAIgd,EAASuC,oBAAoBvc,OAAQhD,IAAK,CAC5D,IAAIkxG,EAAel0F,EAASuC,oBAAoBvf,GAC5Csf,EAAgBtC,EAAS+B,sBAAwB/e,EAAI,EACrDgiO,EAAiB9wH,EAAepqF,EAAYukM,WAC5C0W,EAAW5mN,KAAKkE,IAAI2iN,GAExB,IAAK58N,KAAKy7N,gBAAgBvhN,IAAkBla,KAAKy7N,gBAAgBvhN,GAAeyiN,SAAWA,EAAU,CACnG,IAAI/lN,OAAO,EAGTA,EADEgmN,EAAiB,EACZjpN,EAAQ7B,MAAQy8J,GAAa,CAClCC,gBAAiB52J,EAAS+D,eAC1B8yJ,aAAc72J,EAASZ,SACvBc,WAAY4J,EAAYukM,WACxBztM,SAAUszF,IAGLn4F,EAAQ5B,IAAMw8J,GAAa,CAChCC,gBAAiB52J,EAAS+D,eAC1B8yJ,aAAc72J,EAASZ,SACvBc,WAAY4J,EAAYukM,WAAa,EACrCztM,SAAUszF,IAId9rG,KAAKy7N,gBAAgBvhN,GAAiB,CACpCtD,KAAMA,EACN+lN,SAAUA,MAOpBl3H,EAAOS,QAAU,WACflmG,KAAK8lG,QAAQ,WACb9lG,KAAK4lG,OAGA81H,EA5YyB,CA6YhCvwF,GAAQugC,aAYNmxD,GAAwC,SAAU/U,GAGpD,SAAS+U,IACP,IAAIt2H,EAKJ,OAHAA,EAAQuhH,EAAqBl3M,KAAK5Q,OAASA,KAC3CumG,EAAMu2H,wBAA0B,GAChCv2H,EAAMw2H,qBAAuB,GACtBx2H,EART,IAAes2H,EAA0B/U,GAWzC,IAAIriH,EAASo3H,EAAyBp1N,UAiDtC,OA/CAg+F,EAAOknH,2BAA6B,SAAoC9uN,GACtEmC,KAAK88N,wBAAwBj/N,GAAQ,KACrCmC,KAAK8lG,QAAQ,0BAGfL,EAAOwhH,sBAAwB,SAA+B7zM,GAC5D,IAAIvV,EAAOuV,EAAKvV,KACZ8I,EAAOyM,EAAKzM,KACZypH,EAAKh9G,EAAKg9G,GAWd,MAToB,kBAATzpH,GAAmC,kBAAPypH,IACrCpwH,KAAK88N,wBAAwBj/N,GAAQ,CACnCA,KAAMA,EACN8I,KAAMA,EACNypH,GAAIA,GAENpwH,KAAK8lG,QAAQ,0BAGR9lG,KAAK88N,wBAAwBj/N,IAGtC4nG,EAAOshH,mBAAqB,SAA4BztM,GACtD,IAAIzb,EAAOyb,EAAMzb,KACb8I,EAAO2S,EAAM3S,KACbypH,EAAK92G,EAAM82G,GAYf,MAVoB,kBAATzpH,GAAmC,kBAAPypH,IACrCpwH,KAAK+8N,qBAAqBl/N,GAAQ,CAChCA,KAAMA,EACN8I,KAAMA,EACNypH,GAAIA,UAECpwH,KAAK88N,wBAAwBj/N,GACpCmC,KAAK8lG,QAAQ,mBAGR9lG,KAAK+8N,qBAAqBl/N,IAGnC4nG,EAAOS,QAAU,WACflmG,KAAK8lG,QAAQ,WACb9lG,KAAK88N,wBAA0B,GAC/B98N,KAAK+8N,qBAAuB,GAC5B/8N,KAAK4lG,OAGAi3H,EA7DmC,CA8D1C1xF,GAAQugC,aAINsxD,GAAaz1G,GAAU65D,IAAgB,WACzC,IAAIysB,EAAuC,qBAAfC,WAA6BA,WAA+B,qBAAXvqM,OAAyBA,OAA2B,qBAAXH,EAAyBA,EAAyB,qBAATE,KAAuBA,KAAO,GAE7L,SAAS25N,EAAqB3uM,EAAI4uM,EAAS1hO,GACzC,OAAOA,EAAS,CACd2oG,KAAM+4H,EACNzhO,QAAS,GACT6S,QAAS,SAAiB61F,EAAMviF,GAC9B,OAAOu7M,EAAgBh5H,OAAez5F,IAATkX,GAA+B,OAATA,EAAgBpmB,EAAO2oG,KAAOviF,KAElF0M,EAAG9yB,EAAQA,EAAOC,SAAUD,EAAOC,QAGxC,SAAS0hO,IACP,MAAM,IAAInzN,MAAM,2EAGlB,IAAIozN,EAAcH,GAAqB,SAAUzhO,GAC/C,SAAS6hO,EAAkBh0M,EAAQ5oB,GACjC,IAAK,IAAI7F,EAAI,EAAGA,EAAI6F,EAAM7C,OAAQhD,IAAK,CACrC,IAAIq0J,EAAaxuJ,EAAM7F,GACvBq0J,EAAW5nJ,WAAa4nJ,EAAW5nJ,aAAc,EACjD4nJ,EAAW1nJ,cAAe,EACtB,UAAW0nJ,IAAYA,EAAW3nJ,UAAW,GACjDN,OAAOC,eAAeoiB,EAAQ4lI,EAAW/lJ,IAAK+lJ,IAIlD,SAASquE,EAAatqM,EAAauqM,EAAYC,GAG7C,OAFID,GAAYF,EAAkBrqM,EAAYvrB,UAAW81N,GACrDC,GAAaH,EAAkBrqM,EAAawqM,GACzCxqM,EAGTx3B,EAAOC,QAAU6hO,EACjB9hO,EAAOC,QAAQ,WAAaD,EAAOC,QAASD,EAAOC,QAAQwS,YAAa,KAEtEJ,EAAiBovN,GAAqB,SAAUzhO,GAClD,SAAS4S,EAAgBR,EAAGS,GAO1B,OANA7S,EAAOC,QAAU2S,EAAkBpH,OAAO6G,gBAAkB,SAAyBD,EAAGS,GAEtF,OADAT,EAAEI,UAAYK,EACPT,GAGTpS,EAAOC,QAAQ,WAAaD,EAAOC,QAASD,EAAOC,QAAQwS,YAAa,EACjEG,EAAgBR,EAAGS,GAG5B7S,EAAOC,QAAU2S,EACjB5S,EAAOC,QAAQ,WAAaD,EAAOC,QAASD,EAAOC,QAAQwS,YAAa,KAEtEwvN,EAAgBR,GAAqB,SAAUzhO,GACjD,SAAS+S,EAAeC,EAAUC,GAChCD,EAAS/G,UAAYT,OAAO0H,OAAOD,EAAWhH,WAC9C+G,EAAS/G,UAAUkH,YAAcH,EACjCX,EAAeW,EAAUC,GAG3BjT,EAAOC,QAAU8S,EACjB/S,EAAOC,QAAQ,WAAaD,EAAOC,QAASD,EAAOC,QAAQwS,YAAa,KAYtEs3F,EAAsB,WACxB,SAASA,IACPvlG,KAAKwlG,UAAY,GAWnB,IAAIC,EAASF,EAAO99F,UA+FpB,OA7FAg+F,EAAOC,GAAK,SAAY7nG,EAAM8nG,GACvB3lG,KAAKwlG,UAAU3nG,KAClBmC,KAAKwlG,UAAU3nG,GAAQ,IAGzBmC,KAAKwlG,UAAU3nG,GAAM5C,KAAK0qG,IAY5BF,EAAOG,IAAM,SAAa/nG,EAAM8nG,GAC9B,IAAK3lG,KAAKwlG,UAAU3nG,GAClB,OAAO,EAGT,IAAIoE,EAAQjC,KAAKwlG,UAAU3nG,GAAMoL,QAAQ08F,GAWzC,OAFA3lG,KAAKwlG,UAAU3nG,GAAQmC,KAAKwlG,UAAU3nG,GAAMd,MAAM,GAClDiD,KAAKwlG,UAAU3nG,GAAMgoG,OAAO5jG,EAAO,GAC5BA,GAAS,GAUlBwjG,EAAOK,QAAU,SAAiBjoG,GAChC,IAAIkoG,EAAY/lG,KAAKwlG,UAAU3nG,GAE/B,GAAKkoG,EAQL,GAAyB,IAArB10F,UAAUzT,OAGZ,IAFA,IAAIA,EAASmoG,EAAUnoG,OAEdhD,EAAI,EAAGA,EAAIgD,IAAUhD,EAC5BmrG,EAAUnrG,GAAGgW,KAAK5Q,KAAMqR,UAAU,SAMpC,IAHA,IAAI0hB,EAAOryB,MAAM+G,UAAU1K,MAAM6T,KAAKS,UAAW,GAC7C20F,EAAUD,EAAUnoG,OAEfqoG,EAAK,EAAGA,EAAKD,IAAWC,EAC/BF,EAAUE,GAAIjrF,MAAMhb,KAAM+yB,IAShC0yE,EAAOS,QAAU,WACflmG,KAAKwlG,UAAY,IAYnBC,EAAOU,KAAO,SAAcC,GAC1BpmG,KAAK0lG,GAAG,QAAQ,SAAU7rG,GACxBusG,EAAYnrG,KAAKpB,OAId0rG,EA5GiB;;AAyH1B,SAASm4H,EAAMC,GACb,OAAOA,EAAOpjO,SAAS,EAAGojO,EAAOzjO,WAAayjO,EAAOA,EAAOzjO,WAAa;6DAkD3E,IA0XIo9F,EA1XAsmI,EAAa,WACf,IAKIhjO,EACAsX,EACA2rN,EAGAC,EACAC,EACAC,EACAp5M,EACAq5M,EACAC,EAfAC,EAAS,CAAC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,GAAI,KACjDC,EAAWD,EAAO,GAClBE,EAAWF,EAAO,GAClBG,EAAOF,EAAS,GAChBG,EAAUF,EAAS,GAInBv+M,EAAI,GACJ0+M,EAAK,GAQT,IAAK5jO,EAAI,EAAGA,EAAI,IAAKA,IACnB4jO,GAAI1+M,EAAEllB,GAAKA,GAAK,EAAe,KAAVA,GAAK,IAAYA,GAAKA,EAG7C,IAAKsX,EAAI2rN,EAAO,GAAIS,EAAKpsN,GAAIA,GAAK4rN,GAAM,EAAGD,EAAOW,EAAGX,IAAS,EAW5D,IATAj5M,EAAIi5M,EAAOA,GAAQ,EAAIA,GAAQ,EAAIA,GAAQ,EAAIA,GAAQ,EACvDj5M,EAAIA,GAAK,EAAQ,IAAJA,EAAU,GACvB05M,EAAKpsN,GAAK0S,EACV25M,EAAQ35M,GAAK1S,EAEb8rN,EAAKl+M,EAAEi+M,EAAKj+M,EAAEg+M,EAAKh+M,EAAE5N,KACrBgsN,EAAY,SAALF,EAAsB,MAALD,EAAoB,IAALD,EAAiB,SAAJ5rN,EACpD+rN,EAAc,IAAPn+M,EAAE8E,GAAiB,SAAJA,EAEjBhqB,EAAI,EAAGA,EAAI,EAAGA,IACjBwjO,EAASxjO,GAAGsX,GAAK+rN,EAAOA,GAAQ,GAAKA,IAAS,EAC9CI,EAASzjO,GAAGgqB,GAAKs5M,EAAOA,GAAQ,GAAKA,IAAS,EAKlD,IAAKtjO,EAAI,EAAGA,EAAI,EAAGA,IACjBwjO,EAASxjO,GAAKwjO,EAASxjO,GAAGmC,MAAM,GAChCshO,EAASzjO,GAAKyjO,EAASzjO,GAAGmC,MAAM,GAGlC,OAAOohO,GAGLM,EAAY,KASZC,EAAmB,WACrB,SAASA,EAAIx1N,GAqBX,IAAItO,EACAi2I,EACA8tF,EARCF,IACHA,EAAYb,KAId59N,KAAK4+N,QAAU,CAAC,CAACH,EAAU,GAAG,GAAG1hO,QAAS0hO,EAAU,GAAG,GAAG1hO,QAAS0hO,EAAU,GAAG,GAAG1hO,QAAS0hO,EAAU,GAAG,GAAG1hO,QAAS0hO,EAAU,GAAG,GAAG1hO,SAAU,CAAC0hO,EAAU,GAAG,GAAG1hO,QAAS0hO,EAAU,GAAG,GAAG1hO,QAAS0hO,EAAU,GAAG,GAAG1hO,QAAS0hO,EAAU,GAAG,GAAG1hO,QAAS0hO,EAAU,GAAG,GAAG1hO,UAIpQ,IAAIuhO,EAAOt+N,KAAK4+N,QAAQ,GAAG,GACvBP,EAAWr+N,KAAK4+N,QAAQ,GACxBC,EAAS31N,EAAItL,OACbkhO,EAAO,EAEX,GAAe,IAAXD,GAA2B,IAAXA,GAA2B,IAAXA,EAClC,MAAM,IAAI70N,MAAM,wBAGlB,IAAI+0N,EAAS71N,EAAInM,MAAM,GACnBiiO,EAAS,GAGb,IAFAh/N,KAAKuR,KAAO,CAACwtN,EAAQC,GAEhBpkO,EAAIikO,EAAQjkO,EAAI,EAAIikO,EAAS,GAAIjkO,IACpC+jO,EAAMI,EAAOnkO,EAAI,IAEbA,EAAIikO,IAAW,GAAgB,IAAXA,GAAgBjkO,EAAIikO,IAAW,KACrDF,EAAML,EAAKK,IAAQ,KAAO,GAAKL,EAAKK,GAAO,GAAK,MAAQ,GAAKL,EAAKK,GAAO,EAAI,MAAQ,EAAIL,EAAW,IAANK,GAE1F/jO,EAAIikO,IAAW,IACjBF,EAAMA,GAAO,EAAIA,IAAQ,GAAKG,GAAQ,GACtCA,EAAOA,GAAQ,EAAkB,KAAbA,GAAQ,KAIhCC,EAAOnkO,GAAKmkO,EAAOnkO,EAAIikO,GAAUF,EAInC,IAAK9tF,EAAI,EAAGj2I,EAAGi2I,IAAKj2I,IAClB+jO,EAAMI,EAAW,EAAJluF,EAAQj2I,EAAIA,EAAI,GAG3BokO,EAAOnuF,GADLj2I,GAAK,GAAKi2I,EAAI,EACJ8tF,EAEAN,EAAS,GAAGC,EAAKK,IAAQ,KAAON,EAAS,GAAGC,EAAKK,GAAO,GAAK,MAAQN,EAAS,GAAGC,EAAKK,GAAO,EAAI,MAAQN,EAAS,GAAGC,EAAW,IAANK,IAmB5I,IAAIl5H,EAASi5H,EAAIj3N,UA8CjB,OA5CAg+F,EAAOg2G,QAAU,SAAiBwjB,EAAYC,EAAYC,EAAYC,EAAYC,EAAKp5N,GACrF,IAMIN,EACA86F,EACA6+H,EAGA1kO,EAXAsO,EAAMlJ,KAAKuR,KAAK,GAEhB/L,EAAIy5N,EAAa/1N,EAAI,GACrBnE,EAAIq6N,EAAal2N,EAAI,GACrBjK,EAAIkgO,EAAaj2N,EAAI,GACrB4W,EAAIo/M,EAAah2N,EAAI,GAKrBq2N,EAAer2N,EAAItL,OAAS,EAAI,EAEhC4hO,EAAS,EACTtsB,EAAQlzM,KAAK4+N,QAAQ,GAErBa,EAASvsB,EAAM,GACfwsB,EAASxsB,EAAM,GACfysB,EAASzsB,EAAM,GACf0sB,EAAS1sB,EAAM,GACforB,EAAOprB,EAAM,GAEjB,IAAKt4M,EAAI,EAAGA,EAAI2kO,EAAc3kO,IAC5B+K,EAAK85N,EAAOj6N,IAAM,IAAMk6N,EAAO36N,GAAK,GAAK,KAAO46N,EAAO1gO,GAAK,EAAI,KAAO2gO,EAAW,IAAJ9/M,GAAW5W,EAAIs2N,GAC7F/+H,EAAKg/H,EAAO16N,IAAM,IAAM26N,EAAOzgO,GAAK,GAAK,KAAO0gO,EAAO7/M,GAAK,EAAI,KAAO8/M,EAAW,IAAJp6N,GAAW0D,EAAIs2N,EAAS,GACtGF,EAAKG,EAAOxgO,IAAM,IAAMygO,EAAO5/M,GAAK,GAAK,KAAO6/M,EAAOn6N,GAAK,EAAI,KAAOo6N,EAAW,IAAJ76N,GAAWmE,EAAIs2N,EAAS,GACtG1/M,EAAI2/M,EAAO3/M,IAAM,IAAM4/M,EAAOl6N,GAAK,GAAK,KAAOm6N,EAAO56N,GAAK,EAAI,KAAO66N,EAAW,IAAJ3gO,GAAWiK,EAAIs2N,EAAS,GACrGA,GAAU,EACVh6N,EAAIG,EACJZ,EAAI07F,EACJxhG,EAAIqgO,EAIN,IAAK1kO,EAAI,EAAGA,EAAI,EAAGA,IACjBykO,GAAK,GAAKzkO,GAAKqL,GAAUq4N,EAAK94N,IAAM,KAAO,GAAK84N,EAAKv5N,GAAK,GAAK,MAAQ,GAAKu5N,EAAKr/N,GAAK,EAAI,MAAQ,EAAIq/N,EAAS,IAAJx+M,GAAW5W,EAAIs2N,KAC1H75N,EAAKH,EACLA,EAAIT,EACJA,EAAI9F,EACJA,EAAI6gB,EACJA,EAAIna,GAID+4N,EA7Hc,GAwInBmB,EAA2B,SAAUx5H,GAGvC,SAASw5H,IACP,IAAIt5H,EAMJ,OAJAA,EAAQF,EAAQz1F,KAAK5Q,KAAMulG,IAAWvlG,KACtCumG,EAAMu5H,KAAO,GACbv5H,EAAMgvE,MAAQ,EACdhvE,EAAMw5H,SAAW,KACVx5H,EATTk3H,EAAcoC,EAAax5H,GAkB3B,IAAIZ,EAASo6H,EAAYp4N,UA0BzB,OAxBAg+F,EAAOu6H,YAAc,WACnBhgO,KAAK8/N,KAAK9wG,OAAVhvH,GAEIA,KAAK8/N,KAAKliO,OACZoC,KAAK+/N,SAAWx1N,WAAWvK,KAAKggO,YAAYjyN,KAAK/N,MAAOA,KAAKu1K,OAE7Dv1K,KAAK+/N,SAAW,MAUpBt6H,EAAOxqG,KAAO,SAAcglO,GAC1BjgO,KAAK8/N,KAAK7kO,KAAKglO,GAEVjgO,KAAK+/N,WACR//N,KAAK+/N,SAAWx1N,WAAWvK,KAAKggO,YAAYjyN,KAAK/N,MAAOA,KAAKu1K,SAI1DsqD,EA7CsB,CA8C7Bt6H,GAOE26H,EAAO,SAAcC,GACvB,OAAOA,GAAQ,IAAa,MAAPA,IAAkB,GAAY,SAAPA,IAAoB,EAAIA,IAAS,IAiB3E1kB,EAAU,SAAiBK,EAAW5yM,EAAKk3N,GAE7C,IAOIC,EACAC,EACAC,EACAC,EACAvB,EACAC,EACAC,EACAC,EAEAqB,EAhBAC,EAAc,IAAIC,WAAW7kB,EAAU9hN,OAAQ8hN,EAAU7hN,WAAY6hN,EAAU5hN,YAAc,GAC7F0mO,EAAW,IAAIlC,EAAIh+N,MAAM+G,UAAU1K,MAAM6T,KAAK1H,IAE9C2yM,EAAY,IAAIvhN,WAAWwhN,EAAU5hN,YACrC2mO,EAAc,IAAIF,WAAW9kB,EAAU7hN,QAqB3C,IANAqmO,EAAQD,EAAW,GACnBE,EAAQF,EAAW,GACnBG,EAAQH,EAAW,GACnBI,EAAQJ,EAAW,GAGdK,EAAS,EAAGA,EAASC,EAAY9iO,OAAQ6iO,GAAU,EAGtDxB,EAAaiB,EAAKQ,EAAYD,IAC9BvB,EAAagB,EAAKQ,EAAYD,EAAS,IACvCtB,EAAae,EAAKQ,EAAYD,EAAS,IACvCrB,EAAac,EAAKQ,EAAYD,EAAS,IAEvCG,EAASnlB,QAAQwjB,EAAYC,EAAYC,EAAYC,EAAYyB,EAAaJ,GAG9EI,EAAYJ,GAAUP,EAAKW,EAAYJ,GAAUJ,GACjDQ,EAAYJ,EAAS,GAAKP,EAAKW,EAAYJ,EAAS,GAAKH,GACzDO,EAAYJ,EAAS,GAAKP,EAAKW,EAAYJ,EAAS,GAAKF,GACzDM,EAAYJ,EAAS,GAAKP,EAAKW,EAAYJ,EAAS,GAAKD,GAEzDH,EAAQpB,EACRqB,EAAQpB,EACRqB,EAAQpB,EACRqB,EAAQpB,EAGV,OAAOvjB,GAeLilB,EAAyB,WAC3B,SAASA,EAAUhlB,EAAW5yM,EAAKk3N,EAAYphD,GAC7C,IAAIj/E,EAAO+gI,EAAUC,KACjBL,EAAc,IAAIC,WAAW7kB,EAAU9hN,QACvC6hN,EAAY,IAAIvhN,WAAWwhN,EAAU5hN,YACrCU,EAAI,EAKR,IAJAoF,KAAKghO,aAAe,IAAInB,EAExB7/N,KAAKghO,aAAa/lO,KAAK+E,KAAKihO,cAAcP,EAAYnmO,SAASK,EAAGA,EAAImlG,GAAO72F,EAAKk3N,EAAYvkB,IAEzFjhN,EAAImlG,EAAMnlG,EAAI8lO,EAAY9iO,OAAQhD,GAAKmlG,EAC1CqgI,EAAa,IAAIl4H,YAAY,CAACg4H,EAAKQ,EAAY9lO,EAAI,IAAKslO,EAAKQ,EAAY9lO,EAAI,IAAKslO,EAAKQ,EAAY9lO,EAAI,IAAKslO,EAAKQ,EAAY9lO,EAAI,MACjIoF,KAAKghO,aAAa/lO,KAAK+E,KAAKihO,cAAcP,EAAYnmO,SAASK,EAAGA,EAAImlG,GAAO72F,EAAKk3N,EAAYvkB,IAIhG77M,KAAKghO,aAAa/lO,MAAK,WAErB+jL,EAAK,KAAM0+C,EAAM7hB,OAUrB,IAAIp2G,EAASq7H,EAAUr5N,UAmBvB,OAdAg+F,EAAOw7H,cAAgB,SAAuBnlB,EAAW5yM,EAAKk3N,EAAYvkB,GACxE,OAAO,WACL,IAAIvzM,EAAQmzM,EAAQK,EAAW5yM,EAAKk3N,GACpCvkB,EAAUxwL,IAAI/iB,EAAOwzM,EAAU7hN,cAInCmjO,EAAY0D,EAAW,KAAM,CAAC,CAC5B53N,IAAK,OACLkiB,IAAK,WAEH,OAAO,SAGJ01M,EA/CoB,GAqD3BxpI,EADoB,qBAAX/zF,OACHA,OAC6B,qBAAnBsqM,EACVA,EACmB,qBAATvqM,KACVA,KAEA,GAGR,IAAI6qM,EAAW72G,EAEX0V,EAAoB,SAA2BxjG,GACjD,MAA2B,aAAvByjG,YAAYC,OACPD,YAAYC,OAAO1jG,GAGrBA,GAAOA,EAAIxP,kBAAkBizG,aAGlCj5F,EAASm6L,EAASn6L,QAAUnX,OAC/BmX,EAAO,OAAQA,EAAO,SAAUA,EAAO,WAAYA,EAAO,aAAcA,EAAO,eAAgBA,EAAO,iBAAkBA,EAAO,mBAAoBA,EAAO,qBAAsBA,EAAO,uBAaxL,IAAIqjK,EAA4B,SAAmCx/E,GACjE,IAAIy/E,EAAe,GAcnB,OAbAtwK,OAAO0K,KAAKmmF,GAASx6F,SAAQ,SAAU6L,GACrC,IAAI9B,EAAQywF,EAAQ3uF,GAEhB8jG,EAAkB5lG,GACpBkwK,EAAapuK,GAAO,CAClBZ,MAAOlB,EAAMpN,OACbC,WAAYmN,EAAMnN,WAClBC,WAAYkN,EAAMlN,YAGpBo9K,EAAapuK,GAAO9B,KAGjBkwK,GAWTh0K,KAAK4yM,UAAY,SAAUhvG,GACzB,IAAIrtG,EAAOqtG,EAAMrtG,KACbiiN,EAAY,IAAIxhN,WAAWT,EAAKiiN,UAAUxzM,MAAOzO,EAAKiiN,UAAU7hN,WAAYJ,EAAKiiN,UAAU5hN,YAC3FgP,EAAM,IAAIg/F,YAAYruG,EAAKqP,IAAIZ,MAAOzO,EAAKqP,IAAIjP,WAAYJ,EAAKqP,IAAIhP,WAAa,GACjF0wG,EAAK,IAAI1C,YAAYruG,EAAK+wG,GAAGtiG,MAAOzO,EAAK+wG,GAAG3wG,WAAYJ,EAAK+wG,GAAG1wG,WAAa,GAGjF,IAAI4mO,EAAUhlB,EAAW5yM,EAAK0hG,GAAI,SAAU9nG,EAAKwF,GAC/ChF,KAAKmxM,YAAYp9B,EAA0B,CACzC5lK,OAAQ5X,EAAK4X,OACboqM,UAAWvzM,IACT,CAACA,EAAMtO,iBAKb8mO,GAAYz9N,GAAQ25N,IASpBkE,GAAkB,SAAyBhoN,GAC7C,IAAI6mH,EAAO7mH,EAAW,WAAa,OAAS,cAM5C,OAJIA,EAAWiyF,iBAAmBjyF,EAAWiyF,gBAAgBliG,QAAQ,yCAA2C,IAC9G82H,EAAO,aAGFA,GAaLohG,GAAc,SAAqBC,EAAepjO,GACpDojO,EAAcr0N,QACdq0N,EAAc/+N,QAEVrE,GAAaA,EAAUqjO,uBACzBrjO,EAAUqjO,qBAAqBh/N,QAC/BrE,EAAUqjO,qBAAuB,OAcjCC,GAAe,SAAsBC,EAAgBvjO,GAGvDA,EAAUqjO,qBAAuBE,EACjCA,EAAej8F,QAmBbk8F,GAAiB,SAAwB3jO,EAAMo7F,GACjD,OAAO,WACL,IAAIwoI,EAAwBxoI,EAASyoI,eACjCN,EAAgBK,EAAsB5jO,GACtC8jO,EAAoBF,EAAsBvgG,KAC1CljI,EAAYi7F,EAAS78F,WAAWyB,GAChC+jO,EAAc5jO,EAAU4jO,cACxBC,EAAc7jO,EAAU8jO,iBACxBC,EAAuB/jO,EAAUqjO,qBACjCW,EAAYhkO,EAAUikO,WAEtBJ,GAAeG,GAAaH,EAAYhnN,KAAOmnN,EAAUnnN,KAI7D7c,EAAUikO,WAAaJ,EACvB7jO,EAAUkkO,WAAaN,EACvBT,GAAYC,EAAepjO,GAEtB6jO,IAAeA,EAAYM,mBAK3BN,EAAYN,gBAajBH,EAAcrT,eACduT,GAAaO,EAAYN,eAAgBvjO,IAbnC+jO,GAKFJ,EAAkBjU,sBAYtB0U,GAAkB,SAAyBvkO,EAAMo7F,GACnD,OAAO,WACL,IAAImoI,EAAgBnoI,EAASyoI,eAAe7jO,GACxCG,EAAYi7F,EAAS78F,WAAWyB,GACpCG,EAAUikO,WAAa,KACvBb,EAAcr0N,QACdq0N,EAAc/+N,UAmBdggO,GAAiB,SAAwBxkO,EAAMo7F,GACjD,OAAO,WACL,IAAIkkF,EAAuBlkF,EAASkkF,qBAChCmlD,EAAyBrpI,EAASyoI,eAClCN,EAAgBkB,EAAuBzkO,GACvC8jO,EAAoBW,EAAuBphG,KAC3CljI,EAAYi7F,EAAS78F,WAAWyB,GAChC+jO,EAAc5jO,EAAU4jO,cACxBC,EAAc7jO,EAAU8jO,iBACxBC,EAAuB/jO,EAAUqjO,qBACjCkB,EAAYvkO,EAAUkkO,WAE1B,KAAIK,IAAaX,GAAeW,EAAU1nN,KAAO+mN,EAAY/mN,MAI7D7c,EAAUikO,WAAaJ,EACvB7jO,EAAUkkO,WAAaN,EACvBT,GAAYC,EAAepjO,GAEtB6jO,GAAL,CAKA,GAAIA,EAAYM,iBAAkB,CAEhC,IAAKP,IAAgBW,GAAaX,EAAY/mN,KAAO0nN,EAAU1nN,GAC7D,OAGF,IAAI2nN,EAAMvpI,EAAS+6E,IAAIutC,0BACnBoM,EAAc6U,EAAIC,iBAEtB,GAAID,EAAI7iN,UAAYguM,EAClB,OAOF,OAJA3vN,EAAUi2K,QAAQ,6CAA+CsuD,EAAU1nN,GAAK,OAAS+mN,EAAY/mN,IACrGsiK,EAAqB96K,QACrBs/N,EAAkBjU,uBAClB8U,EAAIE,mBAAmB/U,GAIzB,GAAa,UAAT9vN,EAAkB,CACpB,IAAKgkO,EAAYN,eAQf,OAJAI,EAAkBpV,UAAS,QAG3BoV,EAAkBjU,kBAOpB0T,EAAc7U,UAAS,GACvBoV,EAAkBpV,UAAS,GAGzBwV,IAAyBF,EAAYN,gBAQrCH,EAAcpkI,OAEhBokI,EAAcpkI,MAAM4kI,GAItBR,EAAc1T,kBACd4T,GAAaO,EAAYN,eAAgBvjO,IAXvCsjO,GAAaO,EAAYN,eAAgBvjO,MAe3Cs4N,GAAU,CAcZj4N,MAAO,SAAeR,EAAMo7F,GAC1B,OAAO,WACL,IAAImoI,EAAgBnoI,EAASyoI,eAAe7jO,GACxCG,EAAYi7F,EAAS78F,WAAWyB,GAChC8kO,EAA2B1pI,EAAS0pI,yBACxCxB,GAAYC,EAAepjO,GAE3B,IAAI4jO,EAAc5jO,EAAU4jO,cACxBC,EAAc7jO,EAAU6jO,cACxBhnN,GAAMgnN,EAAY3pN,QAAO,SAAUiB,GACrC,OAAOA,EAAM,cACZ,IAAM0oN,EAAY,IAAIhnN,GACrB+nN,EAAe5kO,EAAUu8H,OAAO1/G,GAEpC,GAAI+mN,IAAgBgB,EAApB,CAWA,IAAK,IAAI1jC,KAFT/zD,GAAQtoI,IAAIqqB,KAAK,oFAEGlvB,EAAUu8H,OAC5Bv8H,EAAUu8H,OAAO2kE,GAASjgE,QAAUjhI,EAAUu8H,OAAO2kE,KAAa0jC,EAGpE5kO,EAAUqkO,sBAZRM,EAAyB,CACvB9qI,QAAS,2DA2BjBj8E,UAAW,SAAmB/d,EAAMo7F,GAClC,OAAO,WACL,IAAImoI,EAAgBnoI,EAASyoI,eAAe7jO,GACxCG,EAAYi7F,EAAS78F,WAAWyB,GACpCstI,GAAQtoI,IAAIqqB,KAAK,4EACjBi0M,GAAYC,EAAepjO,GAC3B,IAAIg/F,EAAQh/F,EAAU4jO,cAElB5kI,IACFA,EAAMI,KAAO,YAGfp/F,EAAUqkO,oBAIZQ,GAAiB,CAYnBxkO,MAAO,SAAeR,EAAM0jO,EAAgBtoI,GAC1C,GAAKsoI,EAAL,CAKA,IAAInnG,EAAOnhC,EAASmhC,KAChB0oG,EAAiB7pI,EAAS6pI,eAC1B1B,EAAgBnoI,EAASyoI,eAAe7jO,GAC5C0jO,EAAe77H,GAAG,kBAAkB,WAClC,IAAI/lF,EAAQ4hN,EAAe5hN,QAC3ByhN,EAAcxpN,SAAS+H,EAAOmjN,KAGzB1oG,EAAK8B,UAAYv8G,EAAMvH,SAA8B,SAAnBgiH,EAAKs4B,YAC1C0uE,EAAc97F,UAGlBi8F,EAAe77H,GAAG,kBAAkB,WAClC07H,EAAcxpN,SAAS2pN,EAAe5hN,QAASmjN,GAE1C1oG,EAAK8B,UACRklG,EAAc97F,UAGlBi8F,EAAe77H,GAAG,QAAS4wH,GAAQz4N,GAAMA,EAAMo7F,MAcjDr9E,UAAW,SAAmB/d,EAAM0jO,EAAgBtoI,GAClD,IAAImhC,EAAOnhC,EAASmhC,KAChB0oG,EAAiB7pI,EAAS6pI,eAC1B1B,EAAgBnoI,EAASyoI,eAAe7jO,GACxCG,EAAYi7F,EAAS78F,WAAWyB,GACpC0jO,EAAe77H,GAAG,kBAAkB,WAClC,IAAI/lF,EAAQ4hN,EAAe5hN,QAC3ByhN,EAAcxpN,SAAS+H,EAAOmjN,GAC9B1B,EAAcpkI,MAAMh/F,EAAU4jO,iBAGzBxnG,EAAK8B,UAAYv8G,EAAMvH,SAA8B,SAAnBgiH,EAAKs4B,YAC1C0uE,EAAc97F,UAGlBi8F,EAAe77H,GAAG,kBAAkB,WAClC07H,EAAcxpN,SAAS2pN,EAAe5hN,QAASmjN,GAE1C1oG,EAAK8B,UACRklG,EAAc97F,UAGlBi8F,EAAe77H,GAAG,QAAS4wH,GAAQz4N,GAAMA,EAAMo7F,MAG/C8pI,GAAa,CAUf,MAAS,SAAellO,EAAMo7F,GAC5B,IAAI+6E,EAAM/6E,EAAS+6E,IACfwzC,EAAavuH,EAASuuH,WACtB4Z,EAAgBnoI,EAASyoI,eAAe7jO,GACxCilO,EAAiB7pI,EAAS6pI,eAC1B1kO,EAAc66F,EAAS/6F,OAAOE,YAC9B4kO,EAAwB/pI,EAAS78F,WAAWyB,GAC5CiT,EAASkyN,EAAsBlyN,OAC/BypH,EAASyoG,EAAsBzoG,OAC/B05C,EAAU+uD,EAAsB/uD,QAChCkJ,EAAuBlkF,EAASkkF,qBAChCrL,EAAkBv2J,GAAY4hK,EAAqBj/K,QAgBvD,IAAK,IAAI6zK,KAdJ3zK,EAAYP,IAAmD,IAA1CmJ,OAAO0K,KAAKtT,EAAYP,IAAOD,SACvDQ,EAAYP,GAAQ,CAClBqjI,KAAM,CACJ,QAAW,CACT,SAAW,KAKb4wC,IACF1zK,EAAYP,GAAMqjI,KAAK,WAAWziI,UAAY0+K,EAAqBj/K,OAAOO,YAI1DL,EAAYP,GAK9B,IAAK,IAAIolO,KAJJnyN,EAAOihK,KACVjhK,EAAOihK,GAAW,IAGK3zK,EAAYP,GAAMk0K,GAAU,CACnD,IAAI74J,EAAa9a,EAAYP,GAAMk0K,GAASkxD,GACxC1B,OAAiB,EA2BrB,GAzBIzvD,GACFmC,EAAQ,gBAAkBlC,EAAU,YAAckxD,EAAe,0BACjE/pN,EAAWipN,kBAAmB,EAC9BZ,EAAiB,MAGjBA,EADwB,aAAf/Z,GAA6BtuM,EAAWza,UAChC,IAAIs1K,GAAe76J,EAAWza,UAAU,GAAIu1K,EAAK8uD,GACzD5pN,EAAWtF,YACH,IAAImgK,GAAe76J,EAAWtF,YAAaogK,EAAK8uD,GAExD5pN,EAAWza,WAA4B,SAAf+oN,EAChB,IAAIvqC,GAAmB/jK,EAAWza,UAAU,GAAIu1K,EAAK8uD,EAAgB3lD,GAIrE,KAGnBjkK,EAAaiyH,GAAQmgC,aAAa,CAChCzwJ,GAAIooN,EACJ1B,eAAgBA,GACfroN,GACH2pN,GAAehlO,GAAMA,EAAMqb,EAAWqoN,eAAgBtoI,GACtDnoF,EAAOihK,GAAS92K,KAAKie,GAEe,qBAAzBqhH,EAAO0oG,GAA+B,CAC/C,IAAIjmI,EAAQ,IAAImuC,GAAQtG,WAAW,CACjChqH,GAAIooN,EACJljG,KAAMmhG,GAAgBhoN,GACtB+lH,SAAS,EACT7iH,SAAUlD,EAAWkD,SACrB,QAAWlD,EAAW,WACtBE,MAAO6pN,IAET1oG,EAAO0oG,GAAgBjmI,GAM7BokI,EAAc17H,GAAG,QAAS4wH,GAAQz4N,GAAMA,EAAMo7F,KAYhD,UAAa,SAAmBp7F,EAAMo7F,GACpC,IAAImhC,EAAOnhC,EAASmhC,KAChB45C,EAAM/6E,EAAS+6E,IACfwzC,EAAavuH,EAASuuH,WACtB4Z,EAAgBnoI,EAASyoI,eAAe7jO,GACxCilO,EAAiB7pI,EAAS6pI,eAC1B1kO,EAAc66F,EAAS/6F,OAAOE,YAC9B8kO,EAAyBjqI,EAAS78F,WAAWyB,GAC7CiT,EAASoyN,EAAuBpyN,OAChCypH,EAAS2oG,EAAuB3oG,OAChC4iD,EAAuBlkF,EAASkkF,qBAEpC,IAAK,IAAIpL,KAAW3zK,EAAYP,GAK9B,IAAK,IAAIolO,KAJJnyN,EAAOihK,KACVjhK,EAAOihK,GAAW,IAGK3zK,EAAYP,GAAMk0K,GACzC,IAAI3zK,EAAYP,GAAMk0K,GAASkxD,GAAc53H,OAA7C,CAYA,IAAInyF,EAAa9a,EAAYP,GAAMk0K,GAASkxD,GACxC1B,OAAiB,EAErB,GAAmB,QAAf/Z,EACF+Z,EAAiB,IAAIxtD,GAAe76J,EAAWtF,YAAaogK,EAAK8uD,QAC5D,GAAmB,SAAftb,EAAuB,CAChC,IAAI/oN,EAAYya,EAAWza,UAAUyZ,QAAO,SAAU7J,GACpD,OAAOA,EAAEqhK,eAAiBh6J,OAG5B,IAAKjX,EAAUb,OACb,OAGF2jO,EAAiB,IAAItkD,GAAmB/jK,EAAWza,UAAU,GAAIu1K,EAAK8uD,EAAgB3lD,OAC9D,aAAfqqC,IACT+Z,EAAiB,IAAIxtD,GAErB76J,EAAWza,UAAYya,EAAWza,UAAU,GAAKya,EAAWtF,YAAaogK,EAAK8uD,IAUhF,GAPA5pN,EAAaiyH,GAAQmgC,aAAa,CAChCzwJ,GAAIooN,EACJ1B,eAAgBA,GACfroN,GACH2pN,GAAehlO,GAAMA,EAAMqb,EAAWqoN,eAAgBtoI,GACtDnoF,EAAOihK,GAAS92K,KAAKie,GAEe,qBAAzBqhH,EAAO0oG,GAA+B,CAC/C,IAAIjmI,EAAQo9B,EAAKQ,mBAAmB,CAClC//G,GAAIooN,EACJljG,KAAM,YACN,QAAW7mH,EAAW,YAAcA,EAAWoD,WAC/CF,SAAUlD,EAAWkD,SACrBhD,MAAO6pN,IACN,GAAOjmI,MACVu9B,EAAO0oG,GAAgBjmI,GAM7BokI,EAAc17H,GAAG,QAAS4wH,GAAQz4N,GAAMA,EAAMo7F,KAYhD,kBAAmB,SAAwBp7F,EAAMo7F,GAC/C,IAAImhC,EAAOnhC,EAASmhC,KAChBh8H,EAAc66F,EAAS/6F,OAAOE,YAC9B+kO,EAAyBlqI,EAAS78F,WAAWyB,GAC7CiT,EAASqyN,EAAuBryN,OAChCypH,EAAS4oG,EAAuB5oG,OAEpC,IAAK,IAAIw3C,KAAW3zK,EAAYP,GAK9B,IAAK,IAAIolO,KAJJnyN,EAAOihK,KACVjhK,EAAOihK,GAAW,IAGK3zK,EAAYP,GAAMk0K,GAAU,CACnD,IAAI74J,EAAa9a,EAAYP,GAAMk0K,GAASkxD,GAE5C,GAAK,kBAAkBpkO,KAAKqa,EAAW8D,YAAvC,CAIA,IAAIL,EAAkBy9G,EAAKxI,SAASoiD,KAAO55C,EAAKxI,SAASoiD,IAAIr3J,iBAAmB,GAC5EymN,EAAW,CACbhqN,MAAO6pN,EACP7mN,SAAUlD,EAAWkD,SACrBY,WAAY9D,EAAW8D,WACvB,QAAW9D,EAAW,YAAcA,EAAWoD,YAiBjD,GAdIK,EAAgBymN,EAASpmN,cAC3BomN,EAAWj4F,GAAQmgC,aAAa83D,EAAUzmN,EAAgBymN,EAASpmN,mBAGzCtS,IAAxB04N,EAAS,mBACJA,EAAS,WAKlBtyN,EAAOihK,GAAS92K,KAAKkwI,GAAQmgC,aAAa,CACxCzwJ,GAAIooN,GACH/pN,IAEiC,qBAAzBqhH,EAAO0oG,GAA+B,CAC/C,IAAIjmI,EAAQo9B,EAAKQ,mBAAmB,CAClC//G,GAAIuoN,EAASpmN,WACb+iH,KAAM,WACN,QAAWqjG,EAAS,WACpBhnN,SAAUgnN,EAAShnN,SACnBhD,MAAOgqN,EAAShqN,QACf,GAAO4jF,MACVu9B,EAAO0oG,GAAgBjmI,OAO7BqmI,GAAa,SAASA,EAAWjxN,EAAMuN,GACzC,IAAK,IAAI/kB,EAAI,EAAGA,EAAIwX,EAAKxU,OAAQhD,IAAK,CACpC,GAAIy1K,GAAc1wJ,EAAOvN,EAAKxX,IAC5B,OAAO,EAGT,GAAIwX,EAAKxX,GAAG6D,WAAa4kO,EAAWjxN,EAAKxX,GAAG6D,UAAWkhB,GACrD,OAAO,EAIX,OAAO,GAkBLkiN,GAAc,SAAqBhkO,EAAMo7F,GAC3C,OAAO,SAAU+D,GACf,IAAImgF,EAAuBlkF,EAASkkF,qBAChCrsK,EAASmoF,EAAS78F,WAAWyB,GAAMiT,OACnC6O,EAAQw9J,EAAqBx9J,QAEjC,IAAKA,EACH,OAAO,KAGT,IAAI2jN,EAAW,KAEX3jN,EAAMjhB,WAAWb,KACnBylO,EAAWxyN,EAAO6O,EAAMjhB,WAAWb,KAGrC,IAAI0lO,EAAYv8N,OAAO0K,KAAKZ,GAE5B,IAAKwyN,EAIH,GAAa,UAATzlO,GAAoB0lO,EAAU3lO,OAAS,GAAK2d,GAAY09E,EAAS/6F,QACnE,IAAK,IAAItD,EAAI,EAAGA,EAAI2oO,EAAU3lO,OAAQhD,IAAK,CACzC,IAAI4oO,EAAoB1yN,EAAOyyN,EAAU3oO,IAEzC,GAAIyoO,GAAWG,EAAmB7jN,GAAQ,CACxC2jN,EAAWE,EACX,YAIK1yN,EAAOowH,KAChBoiG,EAAWxyN,EAAOowH,KACY,IAArBqiG,EAAU3lO,SACnB0lO,EAAWxyN,EAAOyyN,EAAU,KAIhC,MAAqB,qBAAVvmI,EACFsmI,EAGK,OAAVtmI,GAAmBsmI,GAMhBA,EAASprN,QAAO,SAAUzX,GAC/B,OAAOA,EAAMoa,KAAOmiF,EAAMniF,MACzB,IALM,OAST+mN,GAAc,CAahBvjO,MAAO,SAAeR,EAAMo7F,GAC1B,OAAO,WACL,IAAIshC,EAASthC,EAAS78F,WAAWyB,GAAM08H,OAEvC,IAAK,IAAI1/G,KAAM0/G,EACb,GAAIA,EAAO1/G,GAAIokH,QACb,OAAO1E,EAAO1/G,GAIlB,OAAO,OAgBXe,UAAW,SAAmB/d,EAAMo7F,GAClC,OAAO,WACL,IAAIshC,EAASthC,EAAS78F,WAAWyB,GAAM08H,OAEvC,IAAK,IAAI1/G,KAAM0/G,EACb,GAAwB,YAApBA,EAAO1/G,GAAIuiF,MAA0C,WAApBm9B,EAAO1/G,GAAIuiF,KAC9C,OAAOm9B,EAAO1/G,GAIlB,OAAO,QAKTinN,GAAiB,SAAwBjkO,EAAMuV,GACjD,IAAIhX,EAAagX,EAAKhX,WACtB,OAAO,WACL,IAAIqnO,EAAernO,EAAWyB,GAAM+jO,cAEpC,OAAK6B,EAIErnO,EAAWyB,GAAMgkO,YAAY4B,GAH3B,OA8BTC,GAAmB,SAA0BzqI,GAC/C,CAAC,QAAS,YAAa,mBAAmB57F,SAAQ,SAAUQ,GAC1DklO,GAAWllO,GAAMA,EAAMo7F,MAEzB,IAAI78F,EAAa68F,EAAS78F,WACtB+gL,EAAuBlkF,EAASkkF,qBAChC/iD,EAAOnhC,EAASmhC,KAChB45C,EAAM/6E,EAAS+6E,IACf2vD,EAAyB1qI,EAASyoI,eAClCkC,EAAqBD,EAAuB,SAC5ChC,EAAoBgC,EAAuBziG,KAE/C,CAAC,QAAS,aAAa7jI,SAAQ,SAAUQ,GACvCzB,EAAWyB,GAAMgkO,YAAcA,GAAYhkO,EAAMo7F,GACjD78F,EAAWyB,GAAM+jO,YAAcA,GAAY/jO,GAAMA,EAAMo7F,GACvD78F,EAAWyB,GAAM2jO,eAAiBA,GAAe3jO,EAAMo7F,GACvD78F,EAAWyB,GAAMukO,gBAAkBA,GAAgBvkO,EAAMo7F,GACzD78F,EAAWyB,GAAMwkO,eAAiBA,GAAexkO,EAAMo7F,GACvD78F,EAAWyB,GAAMikO,eAAiBA,GAAejkO,EAAMo7F,MAIzD,IAAI36F,EAAalC,EAAWiC,MAAMwjO,cAElC,GAAIvjO,EAAY,CACd,IAAIyzK,GAAWzzK,EAAW4Z,QAAO,SAAUiB,GACzC,OAAOA,EAAM,cACZ,IAAM7a,EAAW,IAAIuc,GACxBze,EAAWiC,MAAMk8H,OAAOw3C,GAAS9yC,SAAU,EAC3C7iI,EAAWiC,MAAMmjO,iBACjBplO,EAAWiC,MAAMgkO,iBACjB,IAAIwB,EAAmBznO,EAAWiC,MAAMyjO,iBAInC+B,EAAiBtC,gBAKpBI,EAAkBpV,UAAS,GAC3BqX,EAAmBrX,UAAS,IAJ5BoV,EAAkBpV,UAAS,GAQ/BpvC,EAAqBz3E,GAAG,eAAe,WACrC,CAAC,QAAS,aAAaroG,SAAQ,SAAUQ,GACvC,OAAOzB,EAAWyB,GAAM2jO,uBAG5BrkD,EAAqBz3E,GAAG,iBAAiB,WACvC,CAAC,QAAS,aAAaroG,SAAQ,SAAUQ,GACvC,OAAOzB,EAAWyB,GAAMukO,wBAI5B,IAAI0B,EAAsB,WACxB1nO,EAAWiC,MAAMgkO,iBACjBjoG,EAAKt0B,QAAQ,CACXjoG,KAAM,QACNL,KAAM,qBAER48H,EAAKt0B,QAAQ,CACXjoG,KAAM,QACNL,KAAM,sBAaV,IAAK,IAAIqd,KATTu/G,EAAKmtB,cAAcl+B,iBAAiB,SAAUy6G,GAC9C1pG,EAAK+O,mBAAmB9f,iBAAiB,SAAUjtH,EAAWwf,UAAUymN,gBACxEruD,EAAItuE,GAAG,WAAW,WAChB00B,EAAKmtB,cAAcn+B,oBAAoB,SAAU06G,GACjD1pG,EAAK+O,mBAAmB/f,oBAAoB,SAAUhtH,EAAWwf,UAAUymN,mBAG7EjoG,EAAKiO,YAAY,SAEFjsI,EAAWiC,MAAMk8H,OAC9BH,EAAKmtB,cAAchpB,SAASniI,EAAWiC,MAAMk8H,OAAO1/G,KAapDkpN,GAAmB,WACrB,IAAI3nO,EAAa,GAejB,MAdA,CAAC,QAAS,YAAa,mBAAmBiB,SAAQ,SAAUQ,GAC1DzB,EAAWyB,GAAQ,CACjBiT,OAAQ,GACRypH,OAAQ,GACR8mG,qBAAsB,KACtBQ,YAAap0N,GACbm0N,YAAan0N,GACbq0N,eAAgBr0N,GAChB+zN,eAAgB/zN,GAChB40N,eAAgB50N,GAChBy0N,WAAY,KACZjuD,QAASlI,GAAO,eAAiBluK,EAAO,SAGrCzB,GAGL4nO,GAAgC,IAIhCC,GAAc,CAAC,gBAAiB,uBAAwB,wBAAyB,uBAAwB,wBAAyB,wBAAyB,gBAE3JC,GAAgB,SAAuBC,GACzC,OAAOnkO,KAAKokO,oBAAoBD,GAAQnkO,KAAKqkO,mBAAmBF,IAG9DG,GAAsB,SAA6BlxN,GACrD,IAAImxN,EAAkBnxN,EAAKmxN,gBACvBlrG,EAAWjmH,EAAKimH,SAChBgL,EAAcjxH,EAAKixH,YACnBmgG,EAAepxN,EAAKoxN,aACpBC,EAAqBrxN,EAAKqxN,mBAC1BC,EAAsBtxN,EAAKsxN,oBAC3BhwN,EAAWtB,EAAKsB,SAChBiwN,EAA6BvxN,EAAKuxN,2BAClC9hO,EAAMuQ,EAAKvQ,IAEf,IAAK2hO,EAEH,OADAr5F,GAAQtoI,IAAIqqB,KAAK,oEACV,EAGT,IAAI03M,EAAgB,oBAAsBL,GAAmBA,EAAgB1pN,IAAM,QAAU,OAAS2pN,EAAa3pN,GAEnH,IAAK0pN,EAEH,OADA1hO,EAAI+hO,EAAgB,oCACb,EAIT,GAAIJ,EAAa3pN,KAAO0pN,EAAgB1pN,GACtC,OAAO,EAIT,IAAIgqN,EAAa/jO,QAAQurK,GAAUhzC,EAAUgL,GAAazmI,QAK1D,IAAK2mO,EAAgBnsN,QAGnB,OAAKysN,GAA4D,kBAAvCN,EAAgBv7H,oBAK1CnmG,EAAI+hO,EAAgB,iCACb,IALL/hO,EAAI,OAAS+hO,EAAgB,2EACtB,GAOX,IAAIE,EAAgB13D,GAAY/zC,EAAUgL,GACtC0gG,EAAwBJ,EAA6BjlD,GAAOS,uCAAyCT,GAAOQ,0BAGhH,GAAIxrK,EAAWqwN,EAEb,OADAliO,EAAI+hO,EAAgB,sCAAwClwN,EAAW,MAAQqwN,EAAwB,MAChG,EAGT,IAAIC,EAAgBR,EAAa9lO,WAAW+c,UACxCwpN,EAAgBV,EAAgB7lO,WAAW+c,UAG/C,GAAIupN,EAAgBC,KAAmBN,GAA8BG,EAAgBJ,GAAsB,CACzG,IAAIQ,EAAUN,EAAgB,2CAA6CI,EAAgB,MAAQC,EAAgB,IAOnH,OALIN,IACFO,GAAW,6CAA+CJ,EAAgB,MAAQJ,EAAsB,KAG1G7hO,EAAIqiO,IACG,EAKT,KAAMP,GAA8BK,EAAgBC,IAAkBH,GAAiBL,EAAoB,CACzG,IAAIU,EAAWP,EAAgB,4CAA8CE,EAAgB,OAASL,EAAqB,IAO3H,OALIE,IACFQ,GAAY,4CAA8CH,EAAgB,MAAQC,EAAgB,KAGpGpiO,EAAIsiO,IACG,EAIT,OADAtiO,EAAI,OAAS+hO,EAAgB,kCACtB,GAaLQ,GAAwC,SAAUtd,GAGpD,SAASsd,EAAyBx7N,GAChC,IAAI28F,EAEJA,EAAQuhH,EAAqBl3M,KAAK5Q,OAASA,KAC3C,IAAIm0G,EAAMvqG,EAAQuqG,IACdigE,EAA0BxqK,EAAQwqK,wBAClCvnK,EAAkBjD,EAAQiD,gBAC1ButH,EAAOxwH,EAAQwwH,KACf1+G,EAAY9R,EAAQ8R,UACpB2pN,EAAYz7N,EAAQy7N,UACpBC,EAAa17N,EAAQ07N,WACrBvnD,EAAoBn0K,EAAQm0K,kBAC5BwnD,EAA2B37N,EAAQ27N,yBACnC/d,EAAa59M,EAAQ49M,WACrBqD,EAAsBjhN,EAAQihN,oBAC9B8Z,EAA6B/6N,EAAQ+6N,2BACrC9jB,EAAqCj3M,EAAQi3M,mCAC7ClkM,EAAkB/S,EAAQ+S,gBAE9B,IAAKw3F,EACH,MAAM,IAAInqG,MAAM,gEAGlB,IAAIw7N,EAAqB57N,EAAQ47N,mBAEN,OAAvBA,GAA6D,qBAAvBA,IACxCA,EAAqB9vN,KAGvB6/M,GAAQ8P,EACR9+H,EAAMo+H,2BAA6B7jO,QAAQ6jO,GAC3Cp+H,EAAMs6G,mCAAqC//M,QAAQ+/M,GACnDt6G,EAAM15F,gBAAkBA,EACxB05F,EAAM28B,MAAQ9I,EACd7zB,EAAM8tE,KAAOj6C,EAAK45C,IAClBztE,EAAMwiH,YAAcvB,EACpBjhH,EAAMk/H,YAAcH,EACpB/+H,EAAMw3E,kBAAoBA,EAC1Bx3E,EAAMi/H,mBAAqBA,EAC3Bj/H,EAAMg/H,yBAA2BA,EAE7Bh/H,EAAMk/H,cACRl/H,EAAMm/H,cAAgBn/H,EAAM28B,MAAMsG,aAAa,WAAY,WAC3DjjC,EAAMm/H,cAAczhB,gCAAkC,IAGxD19G,EAAMo/H,gBAAkB,CACtB94N,gBAAiBA,EACjBunK,wBAAyBA,EACzBoxD,mBAAoBA,EACpB14N,QAAS,MAGXy5F,EAAMb,GAAG,QAASa,EAAMq/H,cAExBr/H,EAAMs/H,YAAc9B,KACpBx9H,EAAMwhH,YAAc,IAAI,IAAS1oN,YACjCknG,EAAMu/H,sBAAwBv/H,EAAMu/H,sBAAsB/3N,KAAK,IAAuBw4F,IACtFA,EAAMw/H,kBAAoBx/H,EAAMw/H,kBAAkBh4N,KAAK,IAAuBw4F,IAC9EA,EAAMy/H,mBAAqBz/H,EAAMy/H,mBAAmBj4N,KAAK,IAAuBw4F,IAEhFA,EAAMwhH,YAAY1+F,iBAAiB,iBAAkB9iB,EAAMu/H,uBAG3Dv/H,EAAMwhH,YAAY1+F,iBAAiB,aAAc9iB,EAAMw/H,mBAEvDx/H,EAAMwhH,YAAY1+F,iBAAiB,cAAe9iB,EAAMy/H,oBAIxDz/H,EAAM8hH,UAAYl9E,GAAQhS,mBAC1B5yB,EAAM4hH,YAAa,EACnB5hH,EAAM0kH,gBAAkB,IAAIyQ,GAAe9xN,GAC3C28F,EAAMoiH,sBAAwBvuF,EAAKQ,mBAAmB,CACpDmF,KAAM,WACN3mH,MAAO,qBACN,GAAO4jF,MACVuJ,EAAMwkH,WAAa,IAAI+V,GACvBv6H,EAAMyiH,eAAiB,IAAI8N,GAAcvwH,EAAMwhH,aAC/CxhH,EAAM2iH,kBAAoB,GAC1B3iH,EAAM6iH,0BAA4B,IAAIyT,GACtC,IAAIoJ,EAAwB,CAC1BjyD,IAAKztE,EAAM8tE,KACX+Z,iBAAkBxkL,EAAQwkL,iBAC1Bm7B,yBAA0B3/M,EAAQ2/M,yBAClC5sM,gBAAiBA,EACjBorM,YAAaxhH,EAAMwhH,YACnB1jF,YAAa99B,EAAM28B,MAAMmB,YAAYt2H,KAAKw4F,EAAM28B,OAChD0K,SAAU,WACR,OAAOrnC,EAAMqnC,YAEf0uB,QAAS,WACP,OAAO/1D,EAAM28B,MAAMo5B,WAErB5nJ,SAAU,WACR,OAAO6xF,EAAM7xF,YAEf0zM,UAAW,WACT,OAAO7hH,EAAM4hH,YAEfW,iBAAkB,WAChB,OAAOviH,EAAMuiH,oBAEfptM,UAAWA,EACXmmM,eAAgBt7G,EAAM0kH,gBACtBD,UAAWzkH,EAAMwkH,WACjBvD,WAAYjhH,EAAMwiH,YAClBlG,iBAAkBt8G,EAAM2iH,kBACxB2B,oBAAqBA,EACrB5B,cAAe1iH,EAAMyiH,eACrBpC,yBAA0BrgH,EAAM6iH,0BAChCl6C,iCAAkCtlK,EAAQslK,kCAM5C3oE,EAAM62E,sBAA8C,SAAtB72E,EAAMwiH,YAAyB,IAAI9rC,GAAmB9oE,EAAK5N,EAAM8tE,KAAM9tE,EAAMo/H,iBAAmB,IAAI5xD,GAAe5/D,EAAK5N,EAAM8tE,KAAM9tE,EAAMo/H,iBAExKp/H,EAAM2/H,sCAIN3/H,EAAM89H,mBAAqB,IAAIxc,GAAc18E,GAAQmgC,aAAa26D,EAAuB,CACvFrd,qBAAsBriH,EAAMoiH,sBAC5BlD,WAAY,SACV77M,GAEJ28F,EAAM69H,oBAAsB,IAAIvc,GAAc18E,GAAQmgC,aAAa26D,EAAuB,CACxFxgB,WAAY,UACV77M,GACJ28F,EAAM4/H,uBAAyB,IAAInN,GAAiB7tF,GAAQmgC,aAAa26D,EAAuB,CAC9FxgB,WAAY,MACZr+E,yBAA0B7gC,EAAM28B,MAAMkE,yBACtCgyF,UAAW,WACT,OAAO,IAAInvF,SAAQ,SAAUw2B,EAASv2B,GACpC,SAASk8F,IACPhsG,EAAKx0B,IAAI,aAAc0wH,GACvB71D,IAGF,SAAS61D,IACPl8F,EAAKx0B,IAAI,cAAewgI,GACxBl8F,IAGF9P,EAAKvN,IAAI,cAAeu5G,GACxBhsG,EAAKvN,IAAI,aAAcypG,GAEvBl8F,EAAK4O,yBAGPp/H,GAEJ28F,EAAM8/H,+BAEF9/H,EAAMo+H,6BACRp+H,EAAM62E,sBAAsBvwD,IAAI,kBAAkB,WAChD,OAAOtmB,EAAM+/H,oBAGf//H,EAAM28B,MAAMx9B,GAAG,SAAS,WACtB,OAAOa,EAAMggI,mBAGfhgI,EAAM28B,MAAMx9B,GAAG,QAAQ,WACrB,OAAOa,EAAM+/H,qBAYjBrC,GAAY5mO,SAAQ,SAAU8mO,GAC5B59H,EAAM49H,EAAO,KAAOD,GAAcn2N,KAAK,IAAuBw4F,GAAQ49H,MAExE59H,EAAM0tE,QAAUlI,GAAO,OACvBxlE,EAAMigI,oBAAqB,EAEG,SAA1BjgI,EAAM28B,MAAMwvB,WACdnsD,EAAMkgI,YAAc,WAClBlgI,EAAMkgI,YAAc,KAEpBlgI,EAAM62E,sBAAsB93C,QAG9B/+B,EAAM28B,MAAMrW,IAAI,OAAQtmB,EAAMkgI,cAE9BlgI,EAAM62E,sBAAsB93C,OAG9B/+B,EAAMmgI,oBAAsB,EAC5BngI,EAAMogI,2BAA6B,EACnCpgI,EAAMqgI,4BAA8B,EACpC,IAAI1/H,EAAkC,SAA1BX,EAAM28B,MAAMwvB,UAAuB,OAAS,YAYxD,OAVAnsD,EAAM28B,MAAMrW,IAAI3lB,GAAO,WACrB,IAAI2/H,EAAwBhjN,KAAKlO,MAEjC4wF,EAAM28B,MAAMrW,IAAI,cAAc,WAC5BtmB,EAAMmgI,mBAAqB7iN,KAAKlO,MAAQkxN,EACxCtgI,EAAMogI,0BAA4BpgI,EAAM89H,mBAAmBhY,aAC3D9lH,EAAMqgI,2BAA6BrgI,EAAM69H,oBAAoB/X,mBAI1D9lH,EArNT,IAAe6+H,EAA0Btd,GAwNzC,IAAIriH,EAAS2/H,EAAyB39N,UAmtDtC,OAjtDAg+F,EAAOqhI,yBAA2B,WAChC,OAAO9mO,KAAK2mO,2BAGdlhI,EAAOshI,0BAA4B,WACjC,OAAO/mO,KAAK4mO,4BAGdnhI,EAAOuhI,qBAAuB,WAC5B,IAAI9lG,EAAOlhI,KAAK8mO,2BACZ/qO,EAAQiE,KAAK+mO,4BAEjB,OAAc,IAAV7lG,IAA0B,IAAXnlI,GACT,EAGHmlI,EAAOnlI,GAGhB0pG,EAAOwhI,kBAAoB,WACzB,OAAOjnO,KAAK0mO,oBAUdjhI,EAAOyhI,UAAY,SAAmB/uG,QACrB,IAAXA,IACFA,EAAS,OAGX,IAAIqsG,EAAexkO,KAAKyiO,iBAEpB+B,GAAgBxkO,KAAKmnO,qBAAqB3C,IAC5CxkO,KAAKonO,aAAa5C,EAAcrsG,IAIpC1yB,EAAO2hI,aAAe,SAAsBxvN,EAAU4S,EAAO+qJ,GAC3D,IAAI9B,EAAWzzK,KAAK2f,QAChBmuM,EAAQr6C,IAAaA,EAAS54J,IAAM44J,EAAS9pK,KAC7C09N,EAAQzvN,EAASiD,IAAMjD,EAASjO,IAEhCmkN,GAASA,IAAUuZ,IACrBrnO,KAAKi0K,QAAQ,gBAAkB65C,EAAQ,OAASuZ,EAAQ,SAAW78M,GACnExqB,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,wBAA0BgtB,KAIpCxqB,KAAKo9K,sBAAsBz9J,MAAM/H,EAAU29J,IAS7C9vE,EAAO6gI,eAAiB,WACtB,IAAIn/H,EAASnnG,KAEbA,KAAKumO,gBACLvmO,KAAKsnO,UAAY,IAASrwG,aAAY,WACpC,OAAO9vB,EAAO+/H,cACb,MASLzhI,EAAO8gI,cAAgB,WAGjBvmO,KAAKkjI,MAAM2F,WAAa7oI,KAAKkjI,MAAM2F,cAIvC,IAAS7R,cAAch3H,KAAKsnO,WAC5BtnO,KAAKsnO,UAAY,OASnB7hI,EAAOq6G,wBAA0B,WAC/B,IAAI5hN,EAAS8B,KAAK9B,SACdqpO,EAAmBrpO,GAAUA,EAAOO,WAAa,GAIrD,IAAKP,IAAWA,EAAOE,cAAgBF,EAAOE,YAAYC,MACxD,OAAOkpO,EAGT,IAEIvqI,EAFA3+F,EAAQH,EAAOE,YAAYC,MAC3BklO,EAAYv8N,OAAO0K,KAAKrT,GAG5B,GAAI2I,OAAO0K,KAAK1R,KAAK6lO,YAAYxnO,MAAMyS,QAAQlT,OAC7Co/F,EAAQh9F,KAAK6lO,YAAYxnO,MAAMujO,kBAC1B,CAEL,IAAI4F,EAAenpO,EAAM6iI,MAAQqiG,EAAU3lO,QAAUS,EAAMklO,EAAU,IAErE,IAAK,IAAInqN,KAASouN,EAChB,GAAIA,EAAapuN,GAAO,WAAY,CAClC4jF,EAAQ,CACN5jF,MAAOA,GAET,OAMN,IAAK4jF,EACH,OAAOuqI,EAGT,IAAI9oO,EAAY,GAGhB,IAAK,IAAI0a,KAAS9a,EAChB,GAAIA,EAAM8a,GAAO6jF,EAAM5jF,OAAQ,CAC7B,IAAIF,EAAa7a,EAAM8a,GAAO6jF,EAAM5jF,OAEpC,GAAIF,EAAWza,WAAaya,EAAWza,UAAUb,OAC/Ca,EAAUxD,KAAK+f,MAAMvc,EAAWya,EAAWza,gBACtC,GAAIya,EAAWvP,IACpBlL,EAAUxD,KAAKie,QACV,GAAIhb,EAAOO,UAAUb,OAI1B,IAAK,IAAIhD,EAAI,EAAGA,EAAIsD,EAAOO,UAAUb,OAAQhD,IAAK,CAChD,IAAIgd,EAAW1Z,EAAOO,UAAU7D,GAE5Bgd,EAASlZ,YAAckZ,EAASlZ,WAAWL,OAASuZ,EAASlZ,WAAWL,QAAU8a,GACpF1a,EAAUxD,KAAK2c,IAOzB,OAAKnZ,EAAUb,OAIRa,EAHE8oO,GAaX9hI,EAAOygI,oCAAsC,WAC3C,IAAI59H,EAAStoG,KAEbA,KAAKo9K,sBAAsB13E,GAAG,kBAAkB,WAC9C,IAAI/lF,EAAQ2oF,EAAO80E,sBAAsBz9J,QAErC8nN,EAAwC,IAAvB9nN,EAAMhE,eAAuB,IAG9Cu0J,GAAyB5nE,EAAO80E,sBAAsBl/K,OAAQoqG,EAAO80E,sBAAsBz9J,SAC7F2oF,EAAOq9H,gBAAgB74N,QAAU,EAEjCw7F,EAAOq9H,gBAAgB74N,QAAU26N,EAK/B9nN,EAAMvH,SAAsC,SAA3BkwF,EAAO46B,MAAMwvB,YAChCpqD,EAAO+7H,mBAAmBzsN,SAAS+H,EAAO2oF,EAAOq9H,iBAEjDr9H,EAAO+7H,mBAAmB/+F,QAG5Bo+F,GAAiB,CACflc,WAAYl/G,EAAOygH,YACnB2Y,eAAgB,CACdrjO,MAAOiqG,EAAO87H,oBACdxoN,UAAW0sF,EAAO69H,uBAClBjlG,KAAM54B,EAAO+7H,oBAEfjqG,KAAM9xB,EAAO46B,MACb4/F,eAAgBx6H,EAAOq9H,gBACvBxoD,qBAAsB70E,EAAO80E,sBAC7BpJ,IAAK1rE,EAAO+rE,KACZn2K,OAAQoqG,EAAOpqG,SACf9B,WAAYksG,EAAOu9H,YACnBlD,yBAA0Br6H,EAAOq6H,yBAAyB50N,KAAKu6F,KAGjEA,EAAOo/H,sBAAsBp/H,EAAOpqG,SAAUyhB,GAE9C2oF,EAAOq/H,kBAEFr/H,EAAOu9H,YAAYxnO,MAAMgjO,sBAAwB/4H,EAAOu9H,YAAYxnO,MAAMgjO,qBAAqB1hN,QAClG2oF,EAAOxC,QAAQ,wBAKfwC,EAAOu9H,YAAYxnO,MAAMgjO,qBAAqBx0G,IAAI,kBAAkB,WAClEvkB,EAAOxC,QAAQ,8BAIrB9lG,KAAKo9K,sBAAsB13E,GAAG,kBAAkB,WAC1C4C,EAAOm+H,aACTn+H,EAAO46B,MAAMt9B,IAAI,OAAQ0C,EAAOm+H,aAGlC,IAAImB,EAAkBt/H,EAAO80E,sBAAsBz9J,QAEnD,IAAKioN,EAAiB,CAKpB,IAAIC,EAUJ,GAZAv/H,EAAOw/H,8BAIHx/H,EAAOi9H,2BACTsC,EAAgBv/H,EAAOy/H,yBAGpBF,IACHA,EAAgBv/H,EAAOm6H,mBAGpBoF,IAAkBv/H,EAAO6+H,qBAAqBU,GACjD,OAGFv/H,EAAO0/H,cAAgBH,EAEvBv/H,EAAO8+H,aAAa9+H,EAAO0/H,cAAe,WAQ1C,IAAIC,EAAwC,aAAvB3/H,EAAOygH,aAA8BzgH,EAAO0/H,cAAchxN,SAE/E,IAAKixN,EACH,OAGFL,EAAkBt/H,EAAO0/H,cAG3B1/H,EAAO4/H,2BAA2BN,MAEpC5nO,KAAKo9K,sBAAsB13E,GAAG,SAAS,WACrC4C,EAAOq6H,yBAAyBr6H,EAAO80E,sBAAsBvtJ,UAE/D7vB,KAAKo9K,sBAAsB13E,GAAG,iBAAiB,WAC7C4C,EAAO+7H,mBAAmBt3N,QAE1Bu7F,EAAO+7H,mBAAmBhiO,WAE5BrC,KAAKo9K,sBAAsB13E,GAAG,eAAe,WAC3C,IAAI/lF,EAAQ2oF,EAAO80E,sBAAsBz9J,QAErC8nN,EAAwC,IAAvB9nN,EAAMhE,eAAuB,IAG9Cu0J,GAAyB5nE,EAAO80E,sBAAsBl/K,OAAQoqG,EAAO80E,sBAAsBz9J,SAC7F2oF,EAAOq9H,gBAAgB74N,QAAU,EAEjCw7F,EAAOq9H,gBAAgB74N,QAAU26N,EAGnCn/H,EAAO80E,sBAAsB93C,OAM7Bh9B,EAAO+7H,mBAAmBzsN,SAAS+H,EAAO2oF,EAAOq9H,iBAEjDr9H,EAAO+7H,mBAAmB/+F,OAE1Bh9B,EAAO46B,MAAMp9B,QAAQ,CACnBjoG,KAAM,cACN8uH,SAAS,OAGb3sH,KAAKo9K,sBAAsB13E,GAAG,qBAAqB,WACjD,IAAIkiI,EAAkBt/H,EAAO80E,sBAAsBz9J,QAKnD,GAA2C,uBAAvCioN,EAAgBO,mBAApB,CAIA,IAAIC,EAAmB9/H,EAAO+/H,oBAAoBT,GAE9CQ,IAKF9/H,EAAOq6H,yBAAyB,CAC9B9qI,QAAS,+BACTsgC,OAAQ,uBAIV7vB,EAAO46B,MAAMp9B,QAAQ,sBAGzB9lG,KAAKo9K,sBAAsB13E,GAAG,qBAAqB,WACjD4C,EAAO46B,MAAMp9B,QAAQ,CACnBjoG,KAAM,QACNL,KAAM,2BAGR8qG,EAAO46B,MAAMp9B,QAAQ,CACnBjoG,KAAM,QACNL,KAAM,8BAGVwC,KAAKo9K,sBAAsB13E,GAAG,oBAAoB,WAChD4C,EAAO46B,MAAMp9B,QAAQ,CACnBjoG,KAAM,QACNL,KAAM,0BAGR8qG,EAAO46B,MAAMp9B,QAAQ,CACnBjoG,KAAM,QACNL,KAAM,8BAeZioG,EAAOyiI,2BAA6B,SAAoCN,GAClE5nO,KAAKylO,aACPzlO,KAAKsoO,cAAcV,GAOrB5nO,KAAKqkO,mBAAmBzsN,SAASgwN,EAAiB5nO,KAAK2lO,iBACvD3lO,KAAKuoO,gBAAgBX,EAAgBxvN,SAIhCpY,KAAKkjI,MAAMhH,WACdl8H,KAAKqkO,mBAAmB/+F,OAEpBtlI,KAAKokO,qBACPpkO,KAAKokO,oBAAoB9+F,SAW/B7/B,EAAOiiI,sBAAwB,SAA+BxpO,EAAQyhB,GACpE,IAAIvhB,EAAcF,EAAOE,aAAe,GACpCoqO,GAAiB,EACjBC,EAAiBzhO,OAAO0K,KAAKtT,EAAYC,OAE7C,IAAK,IAAI8rG,KAAc/rG,EAAYC,MACjC,IAAK,IAAI+a,KAAShb,EAAYC,MAAM8rG,GAAa,CAC/C,IAAIjxF,EAAa9a,EAAYC,MAAM8rG,GAAY/wF,GAE1CF,EAAWvP,MACd6+N,GAAiB,GAKnBA,IACFxoO,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,gBAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,iBAINwJ,OAAO0K,KAAKtT,EAAYwd,WAAWhe,SACrCoC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,eAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,gBAIN+3N,GAAM7kD,SAASX,MAAMpwJ,KACvB3f,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,YAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,aAINirO,EAAe7qO,QAAUoJ,OAAO0K,KAAKtT,EAAYC,MAAMoqO,EAAe,KAAK7qO,OAAS,IACtFoC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,wBAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,yBAINwC,KAAKylO,cACPzlO,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,0BAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,4BAKZioG,EAAO0hI,qBAAuB,SAA8B3C,GAC1D,IAAID,EAAkBvkO,KAAKo9K,sBAAsBz9J,SAAW3f,KAAKo9K,sBAAsBrI,cACnF1wC,EAAcrkI,KAAKkjI,MAAMmB,cACzBogG,EAAqBzkO,KAAKykO,qBAC1BC,EAAsB1kO,KAAK0kO,sBAC3BrrG,EAAWr5H,KAAKkjI,MAAM7J,WAC1B,OAAOirG,GAAoB,CACzBjrG,SAAUA,EACVgL,YAAaA,EACbkgG,gBAAiBA,EACjBC,aAAcA,EACdC,mBAAoBA,EACpBC,oBAAqBA,EACrBhwN,SAAU1U,KAAK0U,WACfiwN,2BAA4B3kO,KAAK2kO,2BACjC9hO,IAAK7C,KAAKi0K,WAWdxuE,EAAO4gI,6BAA+B,WACpC,IAAI7uG,EAASx3H,KAEbA,KAAKqkO,mBAAmB3+H,GAAG,mBAAmB,WAG5C8xB,EAAO0vG,UAAU,mBAEjB1vG,EAAO0L,MAAMp9B,QAAQ,sBAEvB9lG,KAAKqkO,mBAAmB3+H,GAAG,WAAW,WAChC8xB,EAAOmtG,4BAKTntG,EAAO6sG,mBAAmB/+F,UAKzBtlI,KAAK2kO,4BACR3kO,KAAKqkO,mBAAmB3+H,GAAG,YAAY,WACrC8xB,EAAO1xB,QAAQ,eAInB9lG,KAAKqkO,mBAAmB3+H,GAAG,SAAS,WAClC8xB,EAAOmrG,yBAAyBnrG,EAAO6sG,mBAAmBx0M,YAE5D7vB,KAAKqkO,mBAAmB3+H,GAAG,eAAe,WACxC8xB,EAAO3nG,MAAQ2nG,EAAO6sG,mBAAmB37F,OAEzClR,EAAO1xB,QAAQ,YAEjB9lG,KAAKqkO,mBAAmB3+H,GAAG,kBAAkB,WAC3C8xB,EAAOkxG,uBAET1oO,KAAKqkO,mBAAmB3+H,GAAG,mBAAmB,WAC5C8xB,EAAO0L,MAAMp9B,QAAQ,CACnBjoG,KAAM,QACNL,KAAM,yBAGRg6H,EAAO0L,MAAMp9B,QAAQ,CACnBjoG,KAAM,QACNL,KAAM,4BAGVwC,KAAKokO,oBAAoB1+H,GAAG,kBAAkB,WAC5C8xB,EAAOkxG,uBAET1oO,KAAKokO,oBAAoB1+H,GAAG,eAAe,WACzC8xB,EAAO3nG,MAAQ2nG,EAAO4sG,oBAAoB17F,OAE1ClR,EAAO1xB,QAAQ,YAEjB9lG,KAAKqkO,mBAAmB3+H,GAAG,SAAS,WAClC8xB,EAAOy8C,QAAQ,6BAEfz8C,EAAOmxG,mBAET3oO,KAAKqkO,mBAAmB3+H,GAAG,cAAc,SAAUwB,GAE7CswB,EAAOmtG,6BAIXntG,EAAOoxG,iBAAiB,MAAO,CAAC,UAEhCpxG,EAAOmrG,yBAAyB,CAC9B9qI,QAAS,mGACRmsI,QAGL,IAAI6E,EAAe,WACjB,IAAKrxG,EAAOwxF,eAAe8O,0BACzB,OAAOtgG,EAAOsxG,4BAGhB,IAAI3rO,EAASq6H,EAAOuxG,sBAGf5rO,GAILq6H,EAAOwxF,eAAeiP,yBAAyB96N,IAGjD6C,KAAKqkO,mBAAmB3+H,GAAG,YAAamjI,GACxC7oO,KAAKokO,oBAAoB1+H,GAAG,YAAamjI,GACzC7oO,KAAKqkO,mBAAmB3+H,GAAG,QAAQ,WAC5B8xB,EAAOgvG,qBACVhvG,EAAO0L,MAAMp9B,QAAQ,CACnBjoG,KAAM,QACNL,KAAM,aAGRg6H,EAAO0L,MAAMp9B,QAAQ,CACnBjoG,KAAM,QACNL,KAAM,aAGRg6H,EAAOgvG,oBAAqB,MAGhCxmO,KAAKokO,oBAAoB1+H,GAAG,QAAQ,WAC7B8xB,EAAOgvG,qBACVhvG,EAAO0L,MAAMp9B,QAAQ,CACnBjoG,KAAM,QACNL,KAAM,aAGRg6H,EAAO0L,MAAMp9B,QAAQ,CACnBjoG,KAAM,QACNL,KAAM,aAGRg6H,EAAOgvG,oBAAqB,MAGhCxmO,KAAKokO,oBAAoB1+H,GAAG,SAAS,WACnC8xB,EAAOy8C,QAAQ,4BAEfz8C,EAAOmxG,oBAIXljI,EAAOujI,oBAAsB,WAC3B,OAAOjzN,KAAKK,IAAIpW,KAAKokO,oBAAoBhY,mBAAqBpsN,KAAKqkO,mBAAmBjY,qBAOxF3mH,EAAO6/B,KAAO,WACZtlI,KAAKqkO,mBAAmB/+F,OAEpBtlI,KAAK6lO,YAAYxnO,MAAMgjO,sBACzBrhO,KAAKokO,oBAAoB9+F,OAGvBtlI,KAAK6lO,YAAYjqN,UAAUylN,sBAC7BrhO,KAAKmmO,uBAAuB7gG,QAahC7/B,EAAOwjI,qBAAuB,SAA8BtpN,QAC5C,IAAVA,IACFA,EAAQ3f,KAAKyiO,kBAGfziO,KAAK0iO,mBAAmB/iN,IAY1B8lF,EAAOi9H,mBAAqB,SAA4B/iN,GACtD,IAAIg4G,EAAS33H,UAEC,IAAV2f,IACFA,EAAQ3f,KAAKyiO,kBAGX9iN,IAAU3f,KAAKo9K,sBAAsBz9J,SAKzC3f,KAAKonO,aAAaznN,EAAO,gBAOzB3f,KAAKqkO,mBAAmB3W,iBAAgB,WAGlCviF,GAAQvmB,QAAQX,YAAcknB,GAAQvmB,QAAQd,QAChD6T,EAAOuL,MAAM4F,eAAenR,EAAOuL,MAAMmB,cAAgB,KAEzD1M,EAAOuL,MAAM4F,eAAenR,EAAOuL,MAAMmB,mBAjB3CrkI,KAAKi0K,QAAQ,gEA0BjBxuE,EAAOrjG,KAAO,WACZ,IAAIpC,KAAK2nO,iBAAT,CAII3nO,KAAKkjI,MAAM4K,SACb9tI,KAAKkjI,MAAM4F,eAAe,GAGxB9oI,KAAKmoN,YACPnoN,KAAKslI,OAGP,IAAIsI,EAAW5tI,KAAKkjI,MAAM0K,WAG1B,OAAI5tI,KAAKkjI,MAAMxuH,aAAegB,KACxB1V,KAAKkjI,MAAMmB,cAAgBuJ,EAAS97H,MAAM,GACrC9R,KAAKkjI,MAAM4F,eAAe8E,EAAS77H,IAAI67H,EAAShwI,OAAS,SAFpE,IAYF6nG,EAAOkiI,eAAiB,WACtB,IAAI7vG,EAAS93H,KAET2f,EAAQ3f,KAAKo9K,sBAAsBz9J,QAMvC,IAAKA,GAAS3f,KAAKkjI,MAAMhH,UAAYl8H,KAAKmoN,WACxC,OAAO,EAIT,IAAKxoM,EAAMvH,QAAS,CAClB,IAAIw1H,EAAW5tI,KAAK4tI,WAEpB,IAAKA,EAAShwI,OAGZ,OAAO,EAGT,GAAIutI,GAAQvmB,QAAQX,YAA0C,IAA5BjkH,KAAKkjI,MAAM54H,aAU3C,OAPAtK,KAAKkjI,MAAMrW,IAAI,kBAAkB,WAC/BiL,EAAOhyB,QAAQ,aAEfgyB,EAAOoL,MAAM4F,eAAe8E,EAAS77H,IAAI,IAEzC+lH,EAAOqwF,YAAa,MAEf,EAITnoN,KAAK8lG,QAAQ,aAEb9lG,KAAKkjI,MAAM4F,eAAe8E,EAAS77H,IAAI,IAMzC,OAHA/R,KAAKmoN,YAAa,EAElBnoN,KAAKslI,QACE,GAST7/B,EAAOsgI,kBAAoB,WAQzB,GAJA/lO,KAAK8oO,4BAID9oO,KAAKkjI,MAAM7hI,WAAY,CACzB,IAAIi1I,EAAct2I,KAAKkjI,MAAM9gI,OAGF,qBAAhBk0I,GAA2D,oBAArBA,EAAY5zI,MAC3D4zI,EAAY5zI,KAAK,MAAM,SAAUsI,OAIrChL,KAAK8lG,QAAQ,eASfL,EAAOugI,mBAAqB,WAC1B,GAAKhmO,KAAKkpN,kBAAkBzF,eAA5B,CAIA,IAAIniH,EAAOthG,KAAKkpN,kBAAkBzF,eAAeniH,KAEjD,GAAKA,GAASA,EAAK1jG,OAAnB,CAIA,IAAI8W,EAAW1U,KAAK0U,WACpB4sF,EAAKA,EAAK1jG,OAAS,GAAGmuB,QAAUxX,MAAMG,IAAaqB,KAAKkE,IAAIvF,KAAcgB,IAAW7Y,OAAOuzK,UAAY17J,KAS1G+wF,EAAOqgI,sBAAwB,WAC7B9lO,KAAKkjI,MAAMp9B,QAAQ,mBAYrBL,EAAOkjI,cAAgB,WACrB,IAAIlV,EAAgBzzN,KAAKqkO,mBAAmB9Y,OAE5C,GAAIvrN,KAAK6lO,YAAYxnO,MAAMgjO,qBAAsB,CAC/C,IAAI6H,EAAgBlpO,KAAKqkO,mBAAmB9S,uBAM1CkC,GAJGyV,GAAiBA,EAAcr+B,SAIlB4oB,GAAiBzzN,KAAKokO,oBAAoB7Y,OAG1CvrN,KAAKokO,oBAAoB7Y,OAIxCkI,IAILzzN,KAAKumO,gBACLvmO,KAAKgpN,eAAe8D,gBAUtBrnH,EAAO4iI,oBAAsB,SAA6BzwN,GACxD,IAAIg2H,EAAW5tI,KAAK4tI,WAEpB,IAAKA,EAAShwI,OAEZ,OAAO,EAGT,IAAIuwK,EAAUnuK,KAAKirN,gBAAgB6Q,eAAelkN,EAAU5X,KAAK0U,YAEjE,GAAgB,OAAZy5J,EACF,OAAO,EAKT,IAAIg7D,EAAsB5T,GAAM7kD,SAAS/B,YAAY/2J,EAAUu2J,GAC3D9pC,EAAcrkI,KAAKkjI,MAAMmB,cACzBhL,EAAWr5H,KAAKkjI,MAAM7J,WAE1B,IAAKA,EAASz7H,OAEZ,OAAOurO,EAAsB9kG,GAAe4nC,GAG9C,IAAInxB,EAAczhB,EAAStnH,IAAIsnH,EAASz7H,OAAS,GAGjD,OAAOk9I,EAAczW,GAAe4nC,IAAmBk9D,EAAsBruF,GAAemxB,IAc9FxmE,EAAOk9H,yBAA2B,SAAkC9yM,EAAOkuJ,QAC3D,IAAVluJ,IACFA,EAAQ,IAOV,IAAI00M,EAAkB10M,EAAMjY,UAAY5X,KAAKo9K,sBAAsBz9J,QAInE,GAHAo+J,EAAoBA,GAAqBluJ,EAAMkuJ,mBAAqB/9K,KAAK+9K,mBAGpEwmD,EASH,OARAvkO,KAAK6vB,MAAQA,OAEuB,SAAhC7vB,KAAK+nN,YAAYz9M,WACnBtK,KAAK8lG,QAAQ,SAEb9lG,KAAKgpN,eAAe8D,YAAY,YAMpCyX,EAAgBhzD,kBAChB,IA0CI7B,EA1CAjxK,EAAYuB,KAAKo9K,sBAAsBl/K,OAAOO,UAC9CsjN,EAAmBtjN,EAAUyZ,OAAO03J,IACpC0O,EAA+C,IAA5ByjC,EAAiBnkN,QAAgBmkN,EAAiB,KAAOwiB,EAGhF,GAAyB,IAArB9lO,EAAUb,QAAgBmgL,IAAsBroK,IAIlD,OAHAy1H,GAAQtoI,IAAIqqB,KAAK,qCAAuCq3M,EAAgB1pN,GAAvD,iDACjB7a,KAAKkjI,MAAMp9B,QAAQ,iBAEZ9lG,KAAKo9K,sBAAsB93C,KAAKg5C,GAGzC,GAAIA,EAAkB,CAKpB,IAAI8qD,GAAa,EACjB3qO,EAAUpB,SAAQ,SAAUua,GAE1B,GAAIA,IAAa2sN,EAAjB,CAIA,IAAI70D,EAAe93J,EAAS83J,aAEA,qBAAjBA,GAAgCA,IAAiBh6J,MAC1D0zN,GAAa,SACNxxN,EAAS83J,kBAIhB05D,IACFj+F,GAAQtoI,IAAIqqB,KAAK,wGAIjBltB,KAAKkjI,MAAMp9B,QAAQ,kBAQrB4pE,EADE60D,EAAgBhzD,gBAAkBvxK,KAAKwlO,mBAC1B9vN,IAEAmO,KAAKlO,MAA4B,IAApBooK,EAG9BwmD,EAAgB70D,aAAeA,EAE3B7/I,EAAMsoG,SACRosG,EAAgB4D,mBAAqBt4M,EAAMsoG,QAG7Cn4H,KAAKkjI,MAAMp9B,QAAQ,qBACnB9lG,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,8BAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,8BAOR,IAAIgnO,EAAexkO,KAAKyiO,iBAExB,IAAK+B,EAGH,OAFAxkO,KAAK6vB,MAAQ,8EACb7vB,KAAK8lG,QAAQ,SAIf,IAAI64G,EAAQ9uL,EAAMiuJ,SAAW99K,KAAKi0K,QAAU9oC,GAAQtoI,IAAIqqB,KACpDm8M,EAAex5M,EAAMgoE,QAAU,IAAMhoE,EAAMgoE,QAAU,GACzD8mH,GAAO9uL,EAAMiuJ,SAAW,mBAAqB,WAAa,8BAAgCymD,EAAgB1pN,GAAK,IAAOwuN,EAAe,0BAA4B7E,EAAa3pN,GAAK,KAE/K2pN,EAAa9lO,WAAWL,QAAUkmO,EAAgB7lO,WAAWL,OAC/D2B,KAAK4oO,iBAAiB,QAAS,CAAC,QAAS,UAIvCpE,EAAa9lO,WAAWkd,YAAc2oN,EAAgB7lO,WAAWkd,WACnE5b,KAAK4oO,iBAAiB,WAAY,CAAC,QAAS,UAG9C5oO,KAAK4oO,iBAAiB,OAAQ,CAAC,QAAS,UACxC,IAAIU,EAAgB9E,EAAa7oN,eAAiB,EAAI,KAAQ,IAC1D25J,EAAkD,kBAA7BkvD,EAAa1vD,aAA4BjxJ,KAAKlO,MAAQ6uN,EAAa1vD,aAAew0D,EAE3G,OAAOtpO,KAAKonO,aAAa5C,EAAc,UAAWlmD,GAAoBhJ,IAOxE7vE,EAAOmgI,aAAe,WACpB5lO,KAAK4oO,iBAAiB,MAAO,CAAC,QAAS,UACvC5oO,KAAKumO,iBAkBP9gI,EAAOmjI,iBAAmB,SAA0B1wN,EAAQqxN,GAC1D,IAAI5/F,EAAS3pI,KAETwpO,EAAU,GACVC,EAAgC,QAAXvxN,GAErBuxN,GAAiC,SAAXvxN,IACxBsxN,EAAQvuO,KAAK+E,KAAKo9K,uBAGpB,IAAIhhL,EAAa,IAEbqtO,GAAiC,UAAXvxN,IACxB9b,EAAWnB,KAAK,UAGdwuO,GAAiC,aAAXvxN,KACxB9b,EAAWnB,KAAK,mBAChBmB,EAAWnB,KAAK,cAGlBmB,EAAWiB,SAAQ,SAAUW,GAC3B,IAAI0rO,EAAS//F,EAAOk8F,YAAY7nO,IAAc2rI,EAAOk8F,YAAY7nO,GAAWqjO,qBAExEqI,GACFF,EAAQvuO,KAAKyuO,MAGjB,CAAC,OAAQ,QAAS,YAAYrsO,SAAQ,SAAUG,GAC9C,IAAIksO,EAAS//F,EAAOnsI,EAAO,mBAEvBksO,GAAWxxN,IAAW1a,GAAmB,QAAX0a,GAChCsxN,EAAQvuO,KAAKyuO,MAGjBF,EAAQnsO,SAAQ,SAAUqsO,GACxB,OAAOH,EAAQlsO,SAAQ,SAAUsxH,GACD,oBAAnB+6G,EAAO/6G,IAChB+6G,EAAO/6G,YAaflpB,EAAOqjC,eAAiB,SAAwBzE,GAC9C,IAAIhL,EAAWgzC,GAAUrsK,KAAKkjI,MAAM7J,WAAYgL,GAEhD,OAAMrkI,KAAKo9K,uBAAyBp9K,KAAKo9K,sBAAsBz9J,SAO1D3f,KAAKo9K,sBAAsBz9J,QAAQ3I,SAKpCqiH,GAAYA,EAASz7H,OAChBymI,GAKTrkI,KAAKqkO,mBAAmB3W,kBACxB1tN,KAAKqkO,mBAAmBt3N,QAEpB/M,KAAK6lO,YAAYxnO,MAAMgjO,uBACzBrhO,KAAKokO,oBAAoB1W,kBACzB1tN,KAAKokO,oBAAoBr3N,SAGvB/M,KAAK6lO,YAAYjqN,UAAUylN,uBAC7BrhO,KAAKmmO,uBAAuBzY,kBAC5B1tN,KAAKmmO,uBAAuBp5N,cAI9B/M,KAAKslI,QA9BI,GAuCX7/B,EAAO/wF,SAAW,WAChB,IAAK1U,KAAKo9K,sBACR,OAAO,EAGT,IAAIz9J,EAAQ3f,KAAKo9K,sBAAsBz9J,QAEvC,OAAKA,EAeAA,EAAMvH,QAMPpY,KAAK+nN,YACA/nN,KAAK+nN,YAAYrzM,SAGnB6gN,GAAM7kD,SAASh8J,SAASiL,GATtBjK,IAdA,GAgCX+vF,EAAOmoC,SAAW,WAChB,OAAO5tI,KAAKqoN,WAGd5iH,EAAOijI,kBAAoB,WACzB,IAAIiB,EAoBJ,GAAK3pO,KAAKo9K,sBAAV,CAIA,IAAIz9J,EAAQ3f,KAAKo9K,sBAAsBz9J,QAEvC,GAAKA,EAAL,CAIA,IAAIwuJ,EAAUnuK,KAAKirN,gBAAgB6Q,eAAen8M,EAAO3f,KAAK0U,YAE9D,GAAgB,OAAZy5J,EAAJ,CAKA,IAAIjwK,EAAS8B,KAAKo9K,sBAAsBl/K,OACpC0rO,EAAerU,GAAM7kD,SAAS9iC,SAASjuH,EAAOwuJ,EAASonD,GAAM7kD,SAAS9C,cAAc1vK,EAAQyhB,IAEhG,GAA4B,IAAxBiqN,EAAahsO,OAAjB,CAIA,GAAIoC,KAAK6lO,YAAYxnO,MAAMgjO,qBAAsB,CAI/C,GAHA1hN,EAAQ3f,KAAK6lO,YAAYxnO,MAAMgjO,qBAAqB1hN,QACpDwuJ,EAAUnuK,KAAKirN,gBAAgB6Q,eAAen8M,EAAO3f,KAAK0U,YAE1C,OAAZy5J,EACF,OAKF,GAFAw7D,EAAgBpU,GAAM7kD,SAAS9iC,SAASjuH,EAAOwuJ,EAASonD,GAAM7kD,SAAS9C,cAAc1vK,EAAQyhB,IAEhE,IAAzBgqN,EAAc/rO,OAChB,OAIJ,IAAIisO,EACAC,EAEA9pO,KAAKqoN,WAAaroN,KAAKqoN,UAAUzqN,SACnCisO,EAAS7pO,KAAKqoN,UAAUt2M,IAAI,GAC5B+3N,EAAW9pO,KAAKqoN,UAAUv2M,MAAM,IAG7B63N,EAIMA,EAAc73N,MAAM,GAAK83N,EAAa73N,IAAI,IAAM63N,EAAa93N,MAAM,GAAK63N,EAAc53N,IAAI,GAEnG/R,KAAKqoN,UAAYuhB,EAEjB5pO,KAAKqoN,UAAYl9E,GAAQhS,iBAAiB,CAAC,CAACwwG,EAAc73N,MAAM,GAAK83N,EAAa93N,MAAM,GAAK63N,EAAc73N,MAAM,GAAK83N,EAAa93N,MAAM,GAAI63N,EAAc53N,IAAI,GAAK63N,EAAa73N,IAAI,GAAK43N,EAAc53N,IAAI,GAAK63N,EAAa73N,IAAI,MALlO/R,KAAKqoN,UAAYuhB,EASf5pO,KAAKqoN,WAAaroN,KAAKqoN,UAAUzqN,QAC/BoC,KAAKqoN,UAAUt2M,IAAI,KAAO83N,GAAU7pO,KAAKqoN,UAAUv2M,MAAM,KAAOg4N,IAKtE9pO,KAAKi0K,QAAQ,qBAAuBpH,GAAe7sK,KAAKqoN,WAAa,KACrEroN,KAAKkjI,MAAMp9B,QAAQ,yBAOrBL,EAAO8iI,eAAiB,SAAwB1nO,GAM9C,GALIb,KAAK+pO,kBACP/pO,KAAK+nN,YAAY3+F,oBAAoB,aAAcppH,KAAK+pO,iBACxD/pO,KAAK+pO,gBAAkB,MAGW,SAAhC/pO,KAAK+nN,YAAYz9M,WAGnB,OAFAtK,KAAK+pO,gBAAkB/pO,KAAKuoO,eAAex6N,KAAK/N,KAAMa,QACtDb,KAAK+nN,YAAY1+F,iBAAiB,aAAcrpH,KAAK+pO,iBAIvD,GAAIlpO,EAAJ,CACE,IAAI+sI,EAAW5tI,KAAK4tI,WAEpB,IAAKA,EAAShwI,OACZ,QA0BE2W,MAAMvU,KAAK+nN,YAAYrzM,WAAa1U,KAAK+nN,YAAYrzM,SAAWk5H,EAAS77H,IAAI67H,EAAShwI,OAAS,KACjGoC,KAAKgpN,eAAeyP,YAAY7qF,EAAS77H,IAAI67H,EAAShwI,OAAS,QA/BnE,CAqCA,IAAIy7H,EAAWr5H,KAAKkjI,MAAM7J,WACtB3kH,EAAW6gN,GAAM7kD,SAASh8J,SAAS1U,KAAKo9K,sBAAsBz9J,SAE9D05G,EAASz7H,OAAS,IACpB8W,EAAWqB,KAAKK,IAAI1B,EAAU2kH,EAAStnH,IAAIsnH,EAASz7H,OAAS,KAG3DoC,KAAK+nN,YAAYrzM,WAAaA,GAChC1U,KAAKgpN,eAAeyP,YAAY/jN,KASpC+wF,EAAOS,QAAU,WACf,IAAIokC,EAAStqI,KAEbA,KAAK8lG,QAAQ,WACb9lG,KAAK+qN,WAAW7pC,YAChBlhL,KAAKo9K,sBAAsBl3E,UAC3BlmG,KAAKqkO,mBAAmBn+H,UAEpBlmG,KAAKymO,aACPzmO,KAAKkjI,MAAMt9B,IAAI,OAAQ5lG,KAAKymO,aAG9B,CAAC,QAAS,aAAappO,SAAQ,SAAUQ,GACvC,IAAIiT,EAASw5H,EAAOu7F,YAAYhoO,GAAMiT,OAEtC,IAAK,IAAI+J,KAAM/J,EACbA,EAAO+J,GAAIxd,SAAQ,SAAU8b,GACvBA,EAAMooN,gBACRpoN,EAAMooN,eAAer7H,gBAK7BlmG,KAAKokO,oBAAoBl+H,UACzBlmG,KAAKmmO,uBAAuBjgI,UAC5BlmG,KAAKgpN,eAAe9iH,UACpBlmG,KAAKopN,0BAA0BljH,UAC/BlmG,KAAKumO,gBAEDvmO,KAAK+pO,iBACP/pO,KAAK+nN,YAAY3+F,oBAAoB,aAAcppH,KAAK+pO,iBAG1D/pO,KAAK+nN,YAAY3+F,oBAAoB,iBAAkBppH,KAAK8lO,uBAE5D9lO,KAAK+nN,YAAY3+F,oBAAoB,aAAcppH,KAAK+lO,mBACxD/lO,KAAK+nN,YAAY3+F,oBAAoB,cAAeppH,KAAKgmO,oBACzDhmO,KAAK4lG,OASPH,EAAOvnG,OAAS,WACd,OAAO8B,KAAKo9K,sBAAsBl/K,QASpCunG,EAAO9lF,MAAQ,WAEb,OAAO3f,KAAKo9K,sBAAsBz9J,SAAW3f,KAAKgoO,eAGpDviI,EAAOukI,oBAAsB,WAC3B,IAAIC,IAAqBjqO,KAAK6lO,YAAYxnO,MAAMgjO,qBAC5C6I,IAAqBlqO,KAAKqkO,mBAAmB9S,uBAG7C4Y,GAAqBF,KAA4BjqO,KAAKokO,oBAAoB7S,uBAE9E,SAAK2Y,IAAqBC,IAO5B1kI,EAAOsjI,oBAAsB,WAC3B,IAAI5oE,EAASngK,KAET2f,EAAQ,CACVuhH,KAAMlhI,KAAKqkO,mBAAmB9S,wBAA0B,GACxDx1N,MAAOiE,KAAKokO,oBAAoB7S,wBAA0B,IAExD35M,EAAW5X,KAAKqkO,mBAAmB7S,6BAA+BxxN,KAAK2f,QAE3EA,EAAM7jB,MAAQ6jB,EAAMuhH,KACpB,IAAIkpG,EAAiB5rB,GAAkBx+M,KAAK9B,SAAU0Z,GAClDza,EAAS,GACT8sO,IAAqBjqO,KAAK6lO,YAAYxnO,MAAMgjO,qBAiBhD,GAfI1hN,EAAMuhH,KAAK2pE,WACb1tM,EAAOrB,MAAQsuO,EAAetuO,OAAS6jB,EAAMuhH,KAAKq6E,YAAc,QAG9D57L,EAAMuhH,KAAKy5E,UACbx9M,EAAOrB,OAAS,KAAOsuO,EAAeruO,OAAS4jB,EAAMuhH,KAAKo6E,YAAc,UAGtE37L,EAAMuhH,KAAK0pE,WAAajrL,EAAMuhH,KAAKy5E,SAAWh7L,EAAM5jB,MAAM6uM,UAAYq/B,KACxE9sO,EAAOpB,MAAQquO,EAAeruO,OAAS4jB,EAAMuhH,KAAKo6E,YAAc37L,EAAM5jB,MAAMu/M,YAAc,OAE1F37L,EAAM5jB,MAAMs/M,OAAS17L,EAAMuhH,KAAK0pE,WAAajrL,EAAMuhH,KAAKy5E,QAAUh7L,EAAMuhH,KAAKm6E,OAAS17L,EAAM5jB,MAAMs/M,QAI/Fl+M,EAAOpB,OAAUoB,EAAOrB,MAA7B,CAUA,IAKIuuO,EALAC,EAAkB,SAAyBjvB,EAAQ9+M,GACrD,OAAO8+M,EAAS,eAAqB9+M,GAAS,eAAmBA,IAG/DguO,EAAoB,GAcxB,GAZA,CAAC,QAAS,SAASltO,SAAQ,SAAUQ,GACnC,GAAIV,EAAOsM,eAAe5L,KAAUysO,EAAgB3qN,EAAM9hB,GAAMw9M,OAAQl+M,EAAOU,IAAQ,CACrF,IAAI2sO,EAAY7qN,EAAM9hB,GAAMw9M,OAAS,UAAY,QACjDkvB,EAAkBC,GAAaD,EAAkBC,IAAc,GAC/DD,EAAkBC,GAAWvvO,KAAKkC,EAAOU,IAE5B,UAATA,IACFwsO,EAAmBG,OAKrBP,GAAoBI,GAAoBzyN,EAASlZ,WAAWL,MAAO,CACrE,IAAIC,EAAasZ,EAASlZ,WAAWL,MACrC2B,KAAK9B,SAASO,UAAUpB,SAAQ,SAAUmzK,GACxC,IAAIi6D,EAAoBj6D,EAAQ9xK,YAAc8xK,EAAQ9xK,WAAWL,MAE7DosO,IAAsBnsO,GAAckyK,IAAY54J,IAClD44J,EAAQd,aAAeh6J,QAG3B1V,KAAKi0K,QAAQ,yBAA2B31K,EAAa,OAAS+rO,EAAmB,gCAAmCltO,EAAOpB,MAAQ,KAIrI,IAAIiL,OAAO0K,KAAK64N,GAAmB3sO,OAAnC,CAmBA,GAAIoC,KAAKgpN,eAAe8O,4BAA8B93N,KAAKgpN,eAAemP,gBAAiB,CACzF,IAAIuS,EAAiB,GAUrB,GATA,CAAC,QAAS,SAASrtO,SAAQ,SAAUQ,GACnC,IAAI8sO,GAAY,eAAYxqE,EAAO6oD,eAAe7rN,OAAOU,IAAS,IAAI,IAAM,IAAIA,KAC5E+sO,GAAY,eAAYztO,EAAOU,IAAS,IAAI,IAAM,IAAIA,KAEtD8sO,GAAYC,GAAYD,EAAShtO,gBAAkBitO,EAASjtO,eAC9D+sO,EAAezvO,KAAK,IAAOklK,EAAO6oD,eAAe7rN,OAAOU,GAAQ,SAAaV,EAAOU,GAAQ,QAI5F6sO,EAAe9sO,OAOjB,YANAoC,KAAK2iO,yBAAyB,CAC5B/qN,SAAUA,EACVigF,QAAS,kCAAoC6yI,EAAe7lO,KAAK,MAAQ,IACzEk5K,kBAAmBroK,IACnBooK,UAAU,IAQhB,OAAO3gL,EA1CL,IAAI06F,EAAU7wF,OAAO0K,KAAK64N,GAAmB/4N,QAAO,SAAUkB,EAAK83N,GAMjE,OALI93N,IACFA,GAAO,MAGTA,GAAO83N,EAAY,gCAAmCD,EAAkBC,GAAW3lO,KAAK,KAAO,IACxF6N,IACN,IAAM,IACT1S,KAAK2iO,yBAAyB,CAC5B/qN,SAAUA,EACVkmK,UAAU,EACVjmF,QAASA,EACTkmF,kBAAmBroK,WArDrB1V,KAAK2iO,yBAAyB,CAC5B/qN,SAAUA,EACVigF,QAAS,2CACTkmF,kBAAmBroK,OAyFzB+vF,EAAOqjI,0BAA4B,WAGjC,GAAoC,SAAhC9oO,KAAK+nN,YAAYz9M,aAAyBtK,KAAKgpN,eAAe8O,2BAI7D93N,KAAKgqO,sBAAV,CAIA,IAAI7sO,EAAS6C,KAAK+oO,sBAElB,GAAK5rO,EAAL,CAIA6C,KAAKgpN,eAAegP,oBAAoB76N,GACxC,IAAID,EAAc,CAACC,EAAOrB,MAAOqB,EAAOpB,OAAOmc,OAAOpX,SAAS+D,KAAK,KACpE7E,KAAK6qO,6BAA6B3tO,MAOpCuoG,EAAOqiI,4BAA8B,WACnC,IAAItnE,EAAUxgK,KAEVvB,EAAYuB,KAAK9B,SAASO,UAC1BqsO,EAAM,GAGV9jO,OAAO0K,KAAKjT,GAAWpB,SAAQ,SAAU6L,GACvC,IAAIsnK,EAAU/xK,EAAUyK,GAExB,IAAiC,IAA7B4hO,EAAI7hO,QAAQunK,EAAQ31J,IAAxB,CAIAiwN,EAAI7vO,KAAKu1K,EAAQ31J,IACjB,IAAI1d,EAASqhN,GAAkBh+C,EAAQtiK,OAAQsyK,GAC3Cu6D,EAAc,IAEd5tO,EAAOpB,OAAU,eAAmBoB,EAAOpB,QAAW,eAAqBoB,EAAOpB,QACpFgvO,EAAY9vO,KAAK,eAAiBkC,EAAOpB,QAGvCoB,EAAOrB,OAAU,eAAmBqB,EAAOrB,QAAW,eAAqBqB,EAAOrB,QACpFivO,EAAY9vO,KAAK,eAAiBkC,EAAOrB,OAGvCqB,EAAOnB,MAAwB,mBAAhBmB,EAAOnB,MACxB+uO,EAAY9vO,KAAK,cAAgBkC,EAAOnB,MAGtC+uO,EAAYntO,SACd4yK,EAAQd,aAAeh6J,IAEvB8qJ,EAAQyT,QAAQ,aAAezD,EAAQ31J,GAAK,qBAAuBkwN,EAAYlmO,KAAK,aAoB1F4gG,EAAOolI,6BAA+B,SAAsC3tO,GAC1E,IAAIyjK,EAAU3gK,KAEV8qO,EAAM,GACNrsO,EAAYuB,KAAK9B,SAASO,UAC1BtB,EAASihN,GAAgB,eAAYlhN,IACrC8tO,EAAc1sB,GAAWnhN,GACzB8tO,EAAe9tO,EAAOrB,OAAS,eAAYqB,EAAOrB,OAAO,IAAM,KAC/DovO,EAAe/tO,EAAOpB,OAAS,eAAYoB,EAAOpB,OAAO,IAAM,KACnEiL,OAAO0K,KAAKjT,GAAWpB,SAAQ,SAAU6L,GACvC,IAAIsnK,EAAU/xK,EAAUyK,GAGxB,IAAiC,IAA7B4hO,EAAI7hO,QAAQunK,EAAQ31J,KAAc21J,EAAQd,eAAiBh6J,IAA/D,CAIAo1N,EAAI7vO,KAAKu1K,EAAQ31J,IACjB,IAAIswN,EAAmB,GAEnBC,EAAgB5sB,GAAkB79C,EAAQyc,sBAAsBl/K,OAAQsyK,GACxE66D,EAAoB/sB,GAAW8sB,GAGnC,GAAKA,EAAcrvO,OAAUqvO,EAActvO,MAA3C,CAaA,GANIuvO,IAAsBL,GACxBG,EAAiBlwO,KAAK,gBAAmBowO,EAAoB,UAAcL,EAAc,MAKtFrqE,EAAQqoD,eAAemP,gBAAiB,CAC3C,IAAImT,EAAsBF,EAActvO,OAAS,eAAYsvO,EAActvO,OAAO,IAAM,KACpFyvO,EAAsBH,EAAcrvO,OAAS,eAAYqvO,EAAcrvO,OAAO,IAAM,KAEpFuvO,GAAuBL,GAAgBK,EAAoBztO,KAAKF,gBAAkBstO,EAAaptO,KAAKF,eACtGwtO,EAAiBlwO,KAAK,gBAAmBqwO,EAAoBztO,KAAO,UAAcotO,EAAaptO,KAAO,KAIpG0tO,GAAuBL,GAAgBK,EAAoB1tO,KAAKF,gBAAkButO,EAAartO,KAAKF,eACtGwtO,EAAiBlwO,KAAK,gBAAmBswO,EAAoB1tO,KAAO,UAAcqtO,EAAartO,KAAO,KAItGstO,EAAiBvtO,SACnB4yK,EAAQd,aAAeh6J,IAEvBirJ,EAAQsT,QAAQ,gBAAkBzD,EAAQ31J,GAAK,KAAOswN,EAAiBtmO,KAAK,gBAKlF4gG,EAAO6iI,cAAgB,SAAuB3oN,GAC5C,IAAI1Z,EAAS,EACT2nI,EAAW5tI,KAAK4tI,WAEhBA,EAAShwI,SACXqI,EAAS2nI,EAAS97H,MAAM,IAG1B+oN,GAAal7M,EAAO3f,KAAK0lO,cAAez/N,IAS1Cw/F,EAAOqjH,iBAAmB,WACxB,IAAIzkF,EAAcrkI,KAAKkjI,MAAMmB,cACzB5hB,EAAUi9D,GAAOC,mBACjBh4B,EAAO+3B,GAAOI,wBACd1pK,EAAML,KAAKK,IAAIqsG,EAASi9D,GAAOE,wBACnC,OAAO7pK,KAAKM,IAAIosG,EAAU4hB,EAAcsjB,EAAMvxI,IAShDqvF,EAAOg/H,mBAAqB,WAC1B,IAAIpgG,EAAcrkI,KAAKkjI,MAAMmB,cACzB5hB,EAAUi9D,GAAOO,sBACjBt4B,EAAO+3B,GAAOU,2BACdhqK,EAAML,KAAKK,IAAIqsG,EAASi9D,GAAOQ,2BAC/BsrD,EAASz1N,KAAKK,IAAIqsG,EAASi9D,GAAOS,wCACtC,OAAOpqK,KAAKM,IAAIosG,EAAU4hB,EAAcsjB,EAAM3nJ,KAAK2kO,2BAA6B6G,EAASp1N,IAG3FqvF,EAAOi/H,oBAAsB,WAC3B,OAAOhlD,GAAOW,wBAGT+kD,EA56DmC,CA66D1Cj6F,GAAQugC,aAeN+/D,GAAiB,SAAwB/B,EAAQgC,EAAYC,GAC/D,OAAO,SAAU3pH,GACf,IAAIpqG,EAAW8xN,EAAOxrO,OAAOO,UAAUitO,GACnCE,EAAej8D,GAAe/3J,GAC9Bi0N,EAAmBj8D,GAAUh4J,GAEjC,MAAsB,qBAAXoqG,EACF6pH,GAGL7pH,SACKpqG,EAAS6yG,SAEhB7yG,EAAS6yG,UAAW,EAGlBzI,IAAW6pH,GAAqBD,IAElCD,IAEI3pH,EACF0nH,EAAO5jI,QAAQ,oBAEf4jI,EAAO5jI,QAAQ,sBAIZkc,KAYP8pH,GAAiB,SAAwBC,EAAYn0N,EAAUiD,GACjE,IAAI2nN,EAAMuJ,EAAWxqB,0BACjByqB,EAAsBD,EAAWn6G,SAASo6G,oBAE1CrV,EAAaqV,EAAsB,SAAW,OAC9CC,EAAwBzJ,EAAI7L,EAAa,kBAAkB5oN,KAAKy0N,GAEpE,GAAI5qN,EAASlZ,WAAY,CACvB,IAAIopG,EAAalwF,EAASlZ,WAAW2e,WACrCrd,KAAKkB,MAAQ4mG,GAAcA,EAAW5mG,MACtClB,KAAKmB,OAAS2mG,GAAcA,EAAW3mG,OACvCnB,KAAK0b,UAAY9D,EAASlZ,WAAW+c,UACrCzb,KAAKsd,UAAY1F,EAASlZ,WAAW,cAGvCsB,KAAK7C,OAASqhN,GAAkBgkB,EAAItkO,SAAU0Z,GAC9C5X,KAAK4X,SAAWA,EAGhB5X,KAAK6a,GAAKA,EAGV7a,KAAKi/H,QAAUwsG,GAAeM,EAAWttO,UAAWmZ,EAASiD,GAAIoxN,IAW/DC,GAA0B,SAAiCH,GAE7DA,EAAW9pN,gBAAkB,WAC3B,IAAI/jB,EAAS6tO,EAAWxqB,0BAA0BrjN,SAC9CO,EAAY8c,GAAYrd,GAAU6tO,EAAWxqB,0BAA0BzB,0BAA4B5hN,EAAOO,UAE9G,OAAKA,EAIEA,EAAUyZ,QAAO,SAAUyH,GAChC,OAAQgwJ,GAAehwJ,MACtB3gB,KAAI,SAAUgM,EAAGpQ,GAClB,OAAO,IAAIkxO,GAAeC,EAAY/gO,EAAGA,EAAE6P,OANpC,KAqBTsxN,GAAoB,CAAC,UAAW,SAAU,QAAS,UAAW,SAK9DC,GAA+B,WAOjC,SAASA,EAAgBxiO,GACvB,IAAI28F,EAAQvmG,KAEZA,KAAKuhN,0BAA4B33M,EAAQi2M,yBACzC7/M,KAAKkjI,MAAQt5H,EAAQwwH,KACrBp6H,KAAK4tI,SAAWhkI,EAAQgkI,SACxB5tI,KAAKqsO,iCAAmCziO,EAAQyiO,iCAChDrsO,KAAKssO,uBAAyB1iO,EAAQ0iO,uBACtCtsO,KAAK2f,MAAQ/V,EAAQ+V,MACrB3f,KAAKusO,mBAAqB,EAC1BvsO,KAAKwsO,iBAAmB,KACxBxsO,KAAKysO,OAAS,KACdzsO,KAAK0sO,yBAA2B,KAChC1sO,KAAKi0K,QAAUlI,GAAO,mBACtB/rK,KAAKi0K,QAAQ,cAEb,IAAI04D,EAAc,WAChB,OAAOpmI,EAAMqmI,uBAGXC,EAAiB,WACnB,OAAOtmI,EAAMqmI,uBAGXE,EAAiB,WACnB,OAAOvmI,EAAMwmI,gBAGXC,EAAqB,WACvB,OAAOzmI,EAAM0mI,gBAGXzK,EAAMxiO,KAAKuhN,0BACX2rB,EAAc,CAAC,OAAQ,WAAY,SACnCC,EAAe,GACnBD,EAAY7vO,SAAQ,SAAUQ,GAC5BsvO,EAAatvO,GAAQ,CACnB2qI,MAAO,WACL,OAAOjiC,EAAM6mI,uBAAuBvvO,IAEtCwvO,UAAW,WACT,OAAO9mI,EAAM+mI,uBAAuBzvO,KAGxC2kO,EAAI3kO,EAAO,kBAAkB6nG,GAAG,cAAeynI,EAAatvO,GAAMwvO,WAIlE7K,EAAI3kO,EAAO,kBAAkB6nG,GAAG,iBAAkBynI,EAAatvO,GAAM2qI,OAKrEjiC,EAAM28B,MAAMx9B,GAAG,CAAC,SAAU,WAAYynI,EAAatvO,GAAM2qI,UAW3D,IAAI+kG,EAAqB,SAA4Bj/M,GACnD,CAAC,OAAQ,SAASjxB,SAAQ,SAAUQ,GAClC2kO,EAAI3kO,EAAO,kBAAkBywB,GAAI,WAAYi4E,EAAMinI,yBAIvDxtO,KAAKwtO,oBAAsB,WACrBjnI,EAAMknI,mBACRlnI,EAAMgmI,mBAAqB,EAC3BhmI,EAAMimI,iBAAmBjmI,EAAM28B,MAAMmB,cACrCkpG,EAAmB,SAIvBvtO,KAAK0tO,yBAA2B,WAC9B,OAAOH,EAAmB,QAG5BvtO,KAAK2tO,oBAAsB,WACzBpnI,EAAMmnI,2BAENH,EAAmB,OAGrBvtO,KAAKkjI,MAAMx9B,GAAG,SAAU1lG,KAAK0tO,0BAC7B1tO,KAAKkjI,MAAMx9B,GAAG,UAAW1lG,KAAK2tO,qBAC9B3tO,KAAKkjI,MAAMx9B,GAAG,UAAWonI,GACzB9sO,KAAKkjI,MAAMx9B,GAAGymI,GAAmBa,GACjChtO,KAAKkjI,MAAMx9B,GAAG,UAAWmnI,GAYzB7sO,KAAKkjI,MAAMrW,IAAI,OAAQ8/G,GAEvB3sO,KAAKkmG,QAAU,WACbK,EAAMmnI,2BAENnnI,EAAM0tE,QAAQ,WAEd1tE,EAAM28B,MAAMt9B,IAAI,UAAWknI,GAE3BvmI,EAAM28B,MAAMt9B,IAAIumI,GAAmBa,GAEnCzmI,EAAM28B,MAAMt9B,IAAI,UAAWinI,GAE3BtmI,EAAM28B,MAAMt9B,IAAI,OAAQ+mI,GAExBpmI,EAAM28B,MAAMt9B,IAAI,UAAWW,EAAMonI,qBAEjCpnI,EAAM28B,MAAMt9B,IAAI,SAAUW,EAAMmnI,0BAEhCR,EAAY7vO,SAAQ,SAAUQ,GAC5B2kO,EAAI3kO,EAAO,kBAAkB+nG,IAAI,cAAeunI,EAAatvO,GAAMwvO,WACnE7K,EAAI3kO,EAAO,kBAAkB+nG,IAAI,iBAAkBunI,EAAatvO,GAAM2qI,OAEtEjiC,EAAM28B,MAAMt9B,IAAI,CAAC,SAAU,WAAYunI,EAAatvO,GAAM2qI,UAGxDjiC,EAAMmmI,0BACR,IAASvhO,aAAao7F,EAAMmmI,0BAG9BnmI,EAAM0mI,gBAUV,IAAIxnI,EAAS2mI,EAAgB3kO,UAue7B,OAreAg+F,EAAOmnI,oBAAsB,WAC3B5sO,KAAK4tO,oBAED5tO,KAAK0sO,0BACP,IAASvhO,aAAanL,KAAK0sO,0BAI7B1sO,KAAK0sO,yBAA2B,IAASniO,WAAWvK,KAAK4sO,oBAAoB7+N,KAAK/N,MAAO,MAc3FylG,EAAO2nI,uBAAyB,SAAgCvvO,GAC9D,IAAI6rO,EAAS1pO,KAAKuhN,0BAA0B1jN,EAAO,kBAE/CmC,KAAKnC,EAAO,qBAAuB,GACrCmC,KAAKi0K,QAAQ,iDAAmDp2K,EAAO,WAGzEmC,KAAKnC,EAAO,qBAAuB,EACnCmC,KAAKnC,EAAO,aAAe6rO,EAAO3c,aAcpCtnH,EAAO6nI,uBAAyB,SAAgCzvO,GAC9D,IAAI2kO,EAAMxiO,KAAKuhN,0BACXmoB,EAASlH,EAAI3kO,EAAO,kBACpBw7H,EAAWqwG,EAAO3c,YAClB8gB,EAAsB3gE,GAAiBltK,KAAKnC,EAAO,aAAcw7H,GACrEr5H,KAAKnC,EAAO,aAAew7H,EAIvBw0G,EACF7tO,KAAKotO,uBAAuBvvO,IAI9BmC,KAAKnC,EAAO,uBACZmC,KAAKi0K,QAAQ,UAAYj0K,KAAKnC,EAAO,qBAAuB,IAAMA,EAAO,oEAAqE,CAC5I69K,WAAYguD,EAAOlc,WAAakc,EAAOlc,UAAU3yM,GACjDw+G,SAAU2zC,GAAkB3zC,KAG1Br5H,KAAKnC,EAAO,qBAAuB,KAIvCmC,KAAKi0K,QAAQp2K,EAAO,sCACpBmC,KAAKotO,uBAAuBvvO,GAC5BmC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,OAASK,EAAO,wBAGX,aAATA,GAMJ2kO,EAAIG,yBAAyB,CAC3B9qI,QAAS,aAAeh6F,EAAO,kCAC9B6X,QAWL+vF,EAAOmoI,kBAAoB,WACzB,IAAI5tO,KAAKkjI,MAAMhH,WAAYl8H,KAAKkjI,MAAMo5B,UAAtC,CAIA,IAAIj4B,EAAcrkI,KAAKkjI,MAAMmB,cACzBhL,EAAWr5H,KAAKkjI,MAAM7J,WAE1B,GAAIr5H,KAAKwsO,mBAAqBnoG,KAAiBhL,EAASz7H,QAAUymI,EAAc4nC,IAAmB5yC,EAAStnH,IAAIsnH,EAASz7H,OAAS,IAMhI,OAAOoC,KAAK+sO,eAGV/sO,KAAKusO,oBAAsB,GAAKloG,IAAgBrkI,KAAKwsO,kBACvDxsO,KAAKusO,qBACLvsO,KAAK8tO,YACIzpG,IAAgBrkI,KAAKwsO,iBAC9BxsO,KAAKusO,sBAELvsO,KAAKusO,mBAAqB,EAC1BvsO,KAAKwsO,iBAAmBnoG,KAW5B5+B,EAAOwnI,aAAe,WACpBjtO,KAAKusO,mBAAqB,EAEtBvsO,KAAKysO,SACPzsO,KAAKi0K,QAAQ,gBACb9oK,aAAanL,KAAKysO,SAGpBzsO,KAAKysO,OAAS,MAUhBhnI,EAAOgoI,eAAiB,WACtB,IAAInxE,EAAUt8J,KAAKkjI,MAAMo5B,UAEzB,IAAKA,EACH,OAAO,EAOT,IAGI8d,EAHAxsC,EAAW5tI,KAAK4tI,WAChBvJ,EAAcrkI,KAAKkjI,MAAMmB,cACzB0pG,EAAuB/tO,KAAKguO,qBAAqBpgG,EAAUvJ,EAAarkI,KAAK2f,QAAS3f,KAAKqsO,kCAG/F,GAAI0B,EAAsB,CACxB,IAAIlzF,EAAcjN,EAAS77H,IAAI67H,EAAShwI,OAAS,GAEjDw8K,EAASv/B,EAGX,GAAI76I,KAAKiuO,sBAAsBrgG,EAAUvJ,GAAc,CACrD,IAAI6Y,EAAgBtP,EAAS97H,MAAM,GAGnCsoK,EAASl9B,GAETA,IAAkBtP,EAAS77H,IAAI,GAAK,EAAIk6J,IAG1C,GAAsB,qBAAXmO,EAGT,OAFAp6K,KAAKi0K,QAAQ,8CAAgD5vC,EAAhD,wBAA8FwoC,GAAej/B,GAAY,gBAAoBwsC,EAAS,KACnKp6K,KAAKkjI,MAAM4F,eAAesxC,IACnB,EAeT,IAZA,IAAI6uC,EAAgBjpN,KAAKuhN,0BAA0ByH,eAC/C3vF,EAAWr5H,KAAKkjI,MAAM7J,WACtB6zF,EAAgBjE,EAAcuP,YAAcvP,EAAciE,gBAAkB,KAC5ED,EAAgBhE,EAAcqP,YAAcrP,EAAcgE,gBAAkB,KAC5EttM,EAAQ3f,KAAK2f,QAGbuuN,EAAsBvuN,EAAMqpF,mBAAqBrpF,EAAMqpF,mBAAkE,GAA5CrpF,EAAMhE,eAAiBqwJ,IAGpGmiE,EAAkB,CAACjhB,EAAeD,GAE7BryN,EAAI,EAAGA,EAAIuzO,EAAgBvwO,OAAQhD,IAE1C,GAAKuzO,EAAgBvzO,GAArB,CAIA,IAAIwzO,EAAYhhE,GAAY+gE,EAAgBvzO,GAAIypI,GAGhD,GAAI+pG,EAAYF,EACd,OAAO,EAIX,IAAIG,EAAY/hE,GAAcjzC,EAAUgL,GAGxC,OAAyB,IAArBgqG,EAAUzwO,SAIdw8K,EAASi0D,EAAUv8N,MAAM,GAAKm6J,GAC9BjsK,KAAKi0K,QAAQ,2BAA6Bo6D,EAAUv8N,MAAM,GAA7C,8BAAwFuyH,EAAc,iBAAmB+1C,EAAS,KAC/Ip6K,KAAKkjI,MAAM4F,eAAesxC,IACnB,IAST30E,EAAOqoI,SAAW,WAChB,IAAI9tO,KAAK+sO,eAAT,CAKA,IAAI1oG,EAAcrkI,KAAKkjI,MAAMmB,cACzBhL,EAAWr5H,KAAKkjI,MAAM7J,WACtB78B,EAAe6vE,GAAUhzC,EAAUgL,GASvC,OAAI7nC,EAAa5+F,QAAUymI,EAAc,GAAK7nC,EAAazqF,IAAI,IAC7D/R,KAAKitO,eACLjtO,KAAKkjI,MAAM4F,eAAezE,GAC1BrkI,KAAKi0K,QAAQ,cAAgB5vC,EAAhB,oCAA0E7nC,EAAa1qF,MAAM,GAAK,OAAS0qF,EAAazqF,IAAI,GAA5H,oEAEb/R,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,6BAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,8BAXV,IA0BFioG,EAAOsnI,aAAe,WACpB,IAAIn/F,EAAW5tI,KAAK4tI,WAChBvJ,EAAcrkI,KAAKkjI,MAAMmB,cAE7B,GAAIrkI,KAAKkjI,MAAMo5B,WAA6B,OAAhBt8J,KAAKysO,OAE/B,OAAO,EAGT,GAAIzsO,KAAKiuO,sBAAsBrgG,EAAUvJ,GAAc,CACrD,IAAIiqG,EAAY1gG,EAAS77H,IAAI67H,EAAShwI,OAAS,GAa/C,OAZAoC,KAAKi0K,QAAQ,mCAAqC5vC,EAArC,0CAAqGiqG,GAClHtuO,KAAKitO,eACLjtO,KAAKkjI,MAAM4F,eAAewlG,GAE1BtuO,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,oBAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,qBAED,EAGT,IAAIyrN,EAAgBjpN,KAAKkjI,MAAM8wC,IAAIutC,0BAA0ByH,eACzD3vF,EAAWr5H,KAAKkjI,MAAM7J,WACtBk1G,EAAiBvuO,KAAKwuO,gBAAgB,CACxCthB,cAAejE,EAAciE,gBAC7BD,cAAehE,EAAcgE,gBAC7B5oF,YAAaA,IAGf,GAAIkqG,EAgBF,OAXAvuO,KAAKitO,eACLjtO,KAAKkjI,MAAM4F,eAAezE,GAE1BrkI,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,wBAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,yBAED,EAGT,IAAI6wO,EAAY/hE,GAAcjzC,EAAUgL,GAExC,GAAIgqG,EAAUzwO,OAAS,EAAG,CACxB,IAAI6wO,EAAaJ,EAAUv8N,MAAM,GAAKuyH,EAItC,OAHArkI,KAAKi0K,QAAQ,cAAgB5vC,EAAc,uBAAyBoqG,EAAvD,gBAA4FJ,EAAUv8N,MAAM,IACzH9R,KAAKitO,eACLjtO,KAAKysO,OAASliO,WAAWvK,KAAK0uO,YAAY3gO,KAAK/N,MAAoB,IAAbyuO,EAAmBpqG,IAClE,EAIT,OAAO,GAGT5+B,EAAOuoI,qBAAuB,SAA8BpgG,EAAUvJ,EAAazsH,EAAUy0N,GAK3F,QAJyC,IAArCA,IACFA,GAAmC,IAGhCz+F,EAAShwI,OAEZ,OAAO,EAGT,IAAI+wO,EAAa/gG,EAAS77H,IAAI67H,EAAShwI,OAAS,GAAKquK,GACjDprK,GAAU+W,EAASQ,QAMvB,OAJIvX,GAAUwrO,IACZsC,EAAa/gG,EAAS77H,IAAI67H,EAAShwI,OAAS,GAA+B,EAA1Bga,EAAS+D,gBAGxD0oH,EAAcsqG,GAOpBlpI,EAAOwoI,sBAAwB,SAA+BrgG,EAAUvJ,GACtE,SAAIuJ,EAAShwI,QACbgwI,EAAS97H,MAAM,GAAK,GAAKuyH,EAAcuJ,EAAS97H,MAAM,GAAK9R,KAAKssO,yBAOlE7mI,EAAO+oI,gBAAkB,SAAyBp7N,GAChD,IAAI65M,EAAgB75M,EAAK65M,cACrBC,EAAgB95M,EAAK85M,cACrB7oF,EAAcjxH,EAAKixH,YAEvB,GAAK4oF,EAAL,CAIA,IAAIl1K,EAEJ,GAAIk1K,EAAcrvN,QAAUsvN,EAActvN,OAAQ,CAIhD,IAAIgxO,EAAiBviE,GAAU4gD,EAAe5oF,EAAc,GACxDwqG,EAAaxiE,GAAU4gD,EAAe5oF,GACtCyqG,EAAaziE,GAAU6gD,EAAe7oF,GAEtCyqG,EAAWlxO,SAAWixO,EAAWjxO,QAAUgxO,EAAehxO,SAC5Dm6C,EAAM,CACJjmC,MAAO88N,EAAe78N,IAAI,GAC1BA,IAAK+8N,EAAW/8N,IAAI,SAInB,CACL,IAAIs8N,EAAY/hE,GAAc2gD,EAAe5oF,GAGxCgqG,EAAUzwO,SACbm6C,EAAM/3C,KAAK+uO,uBAAuB9hB,EAAe5oF,IAIrD,QAAItsF,IACF/3C,KAAKi0K,QAAQ,mCAAqCl8H,EAAIjmC,MAAQ,OAASimC,EAAIhmC,IAA9D,6BAAyGsyH,IAC/G,KAaX5+B,EAAOipI,YAAc,SAAqBM,GACxC,IAAI31G,EAAWr5H,KAAKkjI,MAAM7J,WACtBgL,EAAcrkI,KAAKkjI,MAAMmB,cACzBgqG,EAAY/hE,GAAcjzC,EAAUgL,GACxCrkI,KAAKitO,eAEoB,IAArBoB,EAAUzwO,QAAgBymI,IAAgB2qG,IAI9ChvO,KAAKi0K,QAAQ,eAAgB,eAAgB5vC,EAAa,yBAA0B2qG,EAAsB,mBAAoBX,EAAUv8N,MAAM,IAE9I9R,KAAKkjI,MAAM4F,eAAeulG,EAAUv8N,MAAM,GAAKk6J,IAC/ChsK,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,iBAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,mBAIVioG,EAAOspI,uBAAyB,SAAgC11G,EAAUgL,GAyBxE,IAFA,IAAI4qG,EAAO1iE,GAASlzC,GAEXz+H,EAAI,EAAGA,EAAIq0O,EAAKrxO,OAAQhD,IAAK,CACpC,IAAIkX,EAAQm9N,EAAKn9N,MAAMlX,GACnBmX,EAAMk9N,EAAKl9N,IAAInX,GAEnB,GAAIypI,EAAcvyH,EAAQ,GAAKuyH,EAAcvyH,EAAQ,EACnD,MAAO,CACLA,MAAOA,EACPC,IAAKA,GAKX,OAAO,MAGFq6N,EA9nB0B,GAioB/B8C,GAAiB,CACnBC,cAAe,GACfC,UAAW,SAAmB97H,GAC5B,IAAI8mB,EAAOp6H,KAAKo6H,KAAK,CACnBi1G,0BAA0B,IAExB/wE,EAAYlkC,EAAKoS,gBAAkBxsI,KAAKy+J,gBAC5C,OAAOnrD,EAAKgrD,KAWZgxE,GAAa,SAASA,EAAWxtO,EAAQ8H,GAC3C,IAAI2lO,EAAa,EACbn1D,EAAS,EACTo1D,EAAerkG,GAAQmgC,aAAa4jE,GAAgBtlO,GACxD9H,EAAO0vH,OAAM,WACX1vH,EAAOgkG,QAAQ,CACbjoG,KAAM,QACNL,KAAM,iCAERsE,EAAOgkG,QAAQ,CACbjoG,KAAM,QACNL,KAAM,oCAUV,IAAIiyO,EAAwB,WACtBr1D,GACFt4K,EAAOuiI,YAAY+1C,IAWnB9tC,EAAY,SAAmBgyB,GACf,OAAdA,QAAoC5zJ,IAAd4zJ,IAI1B8b,EAASt4K,EAAO4S,aAAegB,KAAY5T,EAAOuiI,eAAiB,EACnEviI,EAAO+qH,IAAI,iBAAkB4iH,GAC7B3tO,EAAOqyG,IAAImqD,GACXx8J,EAAOgkG,QAAQ,CACbjoG,KAAM,QACNL,KAAM,qBAERsE,EAAOgkG,QAAQ,CACbjoG,KAAM,QACNL,KAAM,qBAERsE,EAAOM,SAUL8rB,EAAe,WAGjB,OAAIrK,KAAKlO,MAAQ45N,EAA0C,IAA7BC,EAAaL,eACzCrtO,EAAOgkG,QAAQ,CACbjoG,KAAM,QACNL,KAAM,mCAERsE,EAAOgkG,QAAQ,CACbjoG,KAAM,QACNL,KAAM,+BAKLgyO,EAAaJ,WAA+C,oBAA3BI,EAAaJ,WAKnDG,EAAa1rN,KAAKlO,MACX65N,EAAaJ,UAAUx+N,KAAK9O,EAAQwqI,SALzCnB,GAAQtoI,IAAIgtB,MAAM,0EAclB6/M,EAAgB,SAASA,IAC3B5tO,EAAO8jG,IAAI,iBAAkB6pI,GAC7B3tO,EAAO8jG,IAAI,QAAS13E,GACpBpsB,EAAO8jG,IAAI,UAAW8pI,IAUpBC,EAAe,SAAsBj5D,GACvCg5D,IACAJ,EAAWxtO,EAAQ40K,IAGrB50K,EAAO4jG,GAAG,QAASx3E,GACnBpsB,EAAO4jG,GAAG,UAAWgqI,GAGrB5tO,EAAO8tO,oBAAsBD,GAU3BC,GAAsB,SAA6BhmO,GACrD0lO,GAAWtvO,KAAM4J,IAGfimO,GAAY,SACZC,GAAY,QACZC,GAAY,SACZC,GAAY,QACZ51O,GAAU,QACVq8K,GAAM,CACR1C,eAAgBA,GAChBrD,SAAUA,GACVmH,MAAOA,GACPo4D,2BAA4B/uB,GAC5BgvB,0BAA2B1tB,GAC3BtB,sBAAuBA,GACvBM,+BAAgCA,GAChCrC,yBAA0BA,GAC1BG,0BAA2BA,GAC3Bj1M,IAAKisK,MAGPtvK,OAAO0K,KAAKguK,IAAQriL,SAAQ,SAAUqwE,GACpC1mE,OAAOC,eAAewvK,GAAK/oG,EAAM,CAC/BtiD,IAAK,WAEH,OADA+/G,GAAQtoI,IAAIqqB,KAAK,aAAewgD,EAAO,kDAChCgyG,GAAOhyG,IAEhBriD,IAAK,SAAajkB,GAChB+jI,GAAQtoI,IAAIqqB,KAAK,aAAewgD,EAAO,kDAElB,kBAAVtmE,GAAsBA,EAAQ,EACvC+jI,GAAQtoI,IAAIqqB,KAAK,gBAAkBwgD,EAAO,uCAI5CgyG,GAAOhyG,GAAQtmE,QAIrB,IAAI+oO,GAAoB,cASpBC,GAAuB,SAA8BC,EAAe9O,GAItE,IAHA,IAAI5T,EAAc4T,EAAe5hN,QAC7BmqI,GAAiB,EAEZlvJ,EAAI,EAAGA,EAAIy1O,EAAczyO,OAAQhD,IACxC,GAAIy1O,EAAcz1O,GAAGigB,KAAO8yM,EAAY9yM,GAAI,CAC1CivI,EAAgBlvJ,EAChB,MAIJy1O,EAAcC,eAAiBxmF,EAC/BumF,EAAcvqI,QAAQ,CACpBgkD,cAAeA,EACfjsJ,KAAM,YAYN0yO,GAA0B,SAAiCF,EAAer8D,GAC5EA,EAAI/xJ,kBAAkB5kB,SAAQ,SAAU2iN,GACtCqwB,EAAcG,gBAAgBxwB,MAEhCowB,GAAqBC,EAAer8D,EAAIv1K,YAK1Cg4K,GAAI5rC,cAAgB,WAClB,OAAOM,GAAQtoI,IAAIqqB,KAAK,4EAG1B,IAAIujN,GAAgB,SAAuBC,EAAkBz0N,EAAc00N,GACzE,IAAKD,EACH,OAAOA,EAGT,IAAIvzO,EAAS,GAET8e,GAAgBA,EAAavd,YAAcud,EAAavd,WAAWC,SACrExB,EAASihN,GAAgB,eAAYniM,EAAavd,WAAWC,UAG3DgyO,GAAiBA,EAAcjyO,YAAciyO,EAAcjyO,WAAWC,SACxExB,EAAOpB,MAAQ40O,EAAcjyO,WAAWC,QAG1C,IAAIiyO,EAAmB,eAAgBzzO,EAAOrB,OAC1C+0O,EAAmB,eAAgB1zO,EAAOpB,OAE1C+0O,EAAwB,GAE5B,IAAK,IAAIjrN,KAAa6qN,EACpBI,EAAsBjrN,GAAa,GAE/BgrN,IACFC,EAAsBjrN,GAAWgrN,iBAAmBA,GAGlDD,IACFE,EAAsBjrN,GAAW+qN,iBAAmBA,GASlD30N,EAAahB,mBAAqBgB,EAAahB,kBAAkB4K,IAAc5J,EAAahB,kBAAkB4K,GAAWE,OAC3H+qN,EAAsBjrN,GAAWE,KAAO9J,EAAahB,kBAAkB4K,GAAWE,MAKzC,kBAAhC2qN,EAAiB7qN,KAC1BirN,EAAsBjrN,GAAWla,IAAM+kO,EAAiB7qN,IAI5D,OAAOslH,GAAQmgC,aAAaolE,EAAkBI,IA2B5CC,GAA8B,SAAqCtyO,EAAWuyO,GAChF,OAAOvyO,EAAU+S,QAAO,SAAUy/N,EAAer5N,GAC/C,IAAKA,EAASqD,kBACZ,OAAOg2N,EAGT,IAAIC,EAAoBF,EAAWx/N,QAAO,SAAU2/N,EAAetrN,GACjE,IAAI6qN,EAAmB94N,EAASqD,kBAAkB4K,GAQlD,OANI6qN,GAAoBA,EAAiB3qN,OACvCorN,EAActrN,GAAa,CACzBE,KAAM2qN,EAAiB3qN,OAIpBorN,IACN,IAMH,OAJInqO,OAAO0K,KAAKw/N,GAAmBtzO,QACjCqzO,EAAch2O,KAAKi2O,GAGdD,IACN,KA4BDG,GAA4B,SAAmCh+N,GACjE,IAAItR,EAASsR,EAAKtR,OACduvO,EAAmBj+N,EAAKi+N,iBACxBC,EAAal+N,EAAKk+N,WAClBC,EAAgBn+N,EAAKm+N,cAEzB,IAAKzvO,EAAO4wI,IAAI8+F,oBACd,OAAOvnG,QAAQw2B,UAWjB,IAAIhiK,EAAY6yO,EAAaC,EAAc5/N,OAAO,CAAC2/N,IAAeC,EAC9DE,EAAuBV,GAA4BtyO,EAAWuI,OAAO0K,KAAK2/N,IAC1EK,EAAiC,GACjCC,EAA4B,GA6BhC,OAvBAF,EAAqBp0O,SAAQ,SAAU6zO,GACrCS,EAA0B12O,KAAK,IAAIgvI,SAAQ,SAAUw2B,EAASv2B,GAC5DpoI,EAAOohI,MAAMrW,IAAI,oBAAqB4zC,OAExCixE,EAA+Bz2O,KAAK,IAAIgvI,SAAQ,SAAUw2B,EAASv2B,GACjEpoI,EAAO4wI,IAAI8+F,oBAAoB,CAC7BR,WAAYE,IACX,SAAUpuO,GACPA,EACFonI,EAAOpnI,GAIT29J,cAUCx2B,QAAQ96D,KAAK,CAGpB86D,QAAQvoB,IAAIgwH,GACZznG,QAAQ96D,KAAKwiK,MAqBXC,GAAkB,SAAyBt4N,GAC7C,IAAIxX,EAASwX,EAAMxX,OACfuvO,EAAmB/3N,EAAM+3N,iBACzB1xN,EAAQrG,EAAMqG,MACd2xN,EAAah4N,EAAMg4N,WACnBO,EAAgBpB,GAAcY,EAAkB1xN,EAAO2xN,GAE3D,QAAKO,IAIL/vO,EAAO28J,gBAAgBuyE,WAAaa,IAGhCA,IAAkB/vO,EAAO4wI,OAC3BvH,GAAQtoI,IAAIqqB,KAAK,kEACV,KAMP4kN,GAAqB,WACvB,IAAK,IAAS5mF,aACZ,OAAO,KAGT,IAAI6mF,EAAe,IAAS7mF,aAAaC,QAAQglF,IAEjD,IAAK4B,EACH,OAAO,KAGT,IACE,OAAOjnO,KAAKC,MAAMgnO,GAClB,MAAO/mO,GAEP,OAAO,OAIPgnO,GAAwB,SAA+BpoO,GACzD,IAAK,IAASshJ,aACZ,OAAO,EAGT,IAAI+mF,EAAgBH,KACpBG,EAAgBA,EAAgB9mG,GAAQmgC,aAAa2mE,EAAeroO,GAAWA,EAE/E,IACE,IAASshJ,aAAaE,QAAQ+kF,GAAmBrlO,KAAKqB,UAAU8lO,IAChE,MAAOjnO,GAKP,OAAO,EAGT,OAAOinO,GAgBLC,GAAgB,SAAuBC,GACzC,OAAgF,IAA5EA,EAAQx0O,cAAcsL,QAAQ,0CACzB6B,KAAKC,MAAMonO,EAAQr0O,UAAUq0O,EAAQlpO,QAAQ,KAAO,IAItDkpO,GAOT17D,GAAI27D,kBAAoB,WACtB,IAAK,MAAa,IAAS93I,cACzB,OAAO,EAGT,IAAIx+F,EAAQ,IAASw+F,cAAc,SAEnC,IAAK6wC,GAAQD,QAAQ,SAASluB,cAC5B,OAAO,EAIT,IAAIq1H,EAAU,CACd,gCACA,gBACA,kBACA,wBACA,kBAAmB,gBAAiB,uBACpC,OAAOA,EAAQ79G,MAAK,SAAU89G,GAC5B,MAAO,kBAAkBzzO,KAAK/C,EAAM8uI,YAAY0nG,OAnB5B,GAuBxB77D,GAAI87D,mBAAqB,WACvB,SAAK,KAAa,IAASj4I,eAAkB6wC,GAAQD,QAAQ,SAASluB,gBAI/D,kBAAkBn+G,KAAK,IAASy7F,cAAc,SAASswC,YAAY,yBALnD,GAQzB6rC,GAAI+7D,qBAAuB,SAAU30O,GACnC,MAAa,QAATA,EACK44K,GAAI27D,kBAGA,SAATv0O,GACK44K,GAAI87D,oBAWf97D,GAAIz5D,YAAc,WAChB,OAAOmuB,GAAQtoI,IAAIqqB,KAAK,4EAG1B,IAAIqkG,GAAY4Z,GAAQnX,aAAa,aAYjCy+G,GAA0B,SAAUx3G,GAGtC,SAASw3G,EAAWhhO,EAAQ2oH,EAAMxwH,GAChC,IAAI28F,EAiBJ,GAfAA,EAAQ00B,EAAWrqH,KAAK5Q,KAAMo6H,EAAM+Q,GAAQmgC,aAAa1hK,EAAQ8oO,IAAK9oO,EAAQoqK,OAASh0K,KAEnF4J,EAAQ8oO,KAAO1rO,OAAO0K,KAAK9H,EAAQ8oO,KAAK90O,QAC1CutI,GAAQtoI,IAAIqqB,KAAK,yFAKqB,kBAA7BtjB,EAAQ+oO,mBACjBpsI,EAAMqrB,SAASl2G,UAAY9R,EAAQ+oO,kBAGrCpsI,EAAM0tE,QAAUlI,GAAO,cAGnB3xC,EAAKxI,UAAYwI,EAAKxI,SAAS6gC,SAAU,CAC3C,IAAI0Y,EAAUhgC,GAAQ/Q,EAAKxI,SAAS6gC,UAE/B0Y,EAAQ1hK,eAAe,QAC1BzC,OAAOC,eAAekkK,EAAS,MAAO,CACpC//I,IAAK,WAMH,OALA+/G,GAAQtoI,IAAIqqB,KAAK,4DACjBktG,EAAKt0B,QAAQ,CACXjoG,KAAM,QACNL,KAAM,sBAED,IAAuB+oG,IAEhCh/F,cAAc,IAIb4jK,EAAQ1hK,eAAe,QAC1BzC,OAAOC,eAAekkK,EAAS,MAAO,CACpC//I,IAAK,WAMH,OALA+/G,GAAQtoI,IAAIqqB,KAAK,4DACjBktG,EAAKt0B,QAAQ,CACXjoG,KAAM,QACNL,KAAM,sBAED,IAAuB+oG,IAEhCh/F,cAAc,IAIb4jK,EAAQ1hK,eAAe,SAC1BzC,OAAOC,eAAekkK,EAAS,OAAQ,CACrC//I,IAAK,WAEH,OADA+/G,GAAQtoI,IAAIqqB,KAAK,6DACV,IAAuBq5E,IAEhCh/F,cAAc,IAIlBg/F,EAAMkrB,QAAU05C,EAUlB,GAPA5kE,EAAM28B,MAAQ9I,EACd7zB,EAAMqsI,QAAUnhO,EAChB80F,EAAM4yG,MAAQ,GACd5yG,EAAMssI,yBAA0B,EAEhCtsI,EAAMusI,cAEFvsI,EAAMqrB,SAASmhH,gBAAkB34G,EAAKsQ,2BAA6BtQ,EAAKuQ,0BAC1EvQ,EAAKsQ,2BAA0B,GAC/BtQ,EAAKuQ,2BAA0B,QAC1B,GAAIpkC,EAAMqrB,SAASmhH,iBAAmB34G,EAAK44G,2BAA6B54G,EAAKotB,2BAGlF,MAAM,IAAIx9I,MAAM,4EAqClB,OAhCAu8F,EAAMb,GAAG,IAAU,CAAC,mBAAoB,yBAA0B,sBAAuB,uBAAuB,SAAUwB,GACxH,IAAIigB,EAAoB,IAASA,mBAAqB,IAAS8rH,yBAA2B,IAASC,sBAAwB,IAASC,oBAEhIhsH,GAAqBA,EAAkBpB,SAASxf,EAAM28B,MAAMvwH,MAC9D4zF,EAAMg7G,0BAA0BmhB,qBAKhCn8H,EAAMg7G,0BAA0B2lB,eAIpC3gI,EAAMb,GAAGa,EAAM28B,MAAO,WAAW,WAC3BljI,KAAK6yO,wBACP7yO,KAAK6yO,yBAA0B,EAIjC7yO,KAAK8oI,eAAe9oI,KAAKkjI,MAAMmB,kBAGjC99B,EAAMb,GAAGa,EAAM28B,MAAO,SAAS,WAGzBljI,KAAKkjI,MAAMrzG,SAAW7vB,KAAKuhN,2BAC7BvhN,KAAKuhN,0BAA0BqkB,kBAInCr/H,EAAMb,GAAGa,EAAM28B,MAAO,OAAQ38B,EAAMnkG,MAE7BmkG,EAlHT,IAAeksI,EAAYx3G,GAqH3B,IAAIx1B,EAASgtI,EAAWhrO,UAwpBxB,OAtpBAg+F,EAAOqtI,YAAc,WACnB,IAAI3rI,EAASnnG,KAmBb,GAhBAA,KAAK4xH,SAAS/kH,gBAAkB7M,KAAK4xH,SAAS/kH,kBAAmB,EACjE7M,KAAK4xH,SAASwiD,yBAAoE,IAA1Cp0K,KAAK4xH,SAASwiD,wBACtDp0K,KAAK4xH,SAASguF,kCAAsF,IAAnD5/M,KAAK4xH,SAASguF,iCAC/D5/M,KAAK4xH,SAASwvF,oBAAsBphN,KAAK4xH,SAASwvF,sBAAuB,EACzEphN,KAAK4xH,SAASo6G,oBAAsBhsO,KAAK4xH,SAASo6G,sBAAuB,EACzEhsO,KAAK4xH,SAASwhH,6BAAoF,qBAA9CpzO,KAAK4yO,QAAQQ,6BAA+CpzO,KAAK4yO,QAAQQ,6BAA+BpzO,KAAK4xH,SAASwhH,+BAAgC,EAC1MpzO,KAAK4xH,SAASyhH,yBAA2BrzO,KAAK4xH,SAASyhH,2BAA4B,EACnFrzO,KAAK4xH,SAAS23F,yBAA2BvpN,KAAK4xH,SAAS23F,2BAA4B,EACnFvpN,KAAK4xH,SAASq/C,iBAAmBjxK,KAAK4xH,SAASq/C,kBAAoB,GACnEjxK,KAAK4xH,SAASu/C,iBAAmBnxK,KAAK4xH,SAASu/C,kBAAoB,GACnEnxK,KAAK4xH,SAASi5F,oBAAsB7qN,KAAK4xH,SAASi5F,sBAAuB,EAE1B,kBAApC7qN,KAAK4xH,SAASmsD,oBACvB/9K,KAAK4xH,SAASmsD,kBAAoB,KAGG,kBAA5B/9K,KAAK4xH,SAASl2G,WACnB1b,KAAK4xH,SAASwhH,6BAA8B,CAC9C,IAAIrB,EAAeD,KAEfC,GAAgBA,EAAar2N,YAC/B1b,KAAK4xH,SAASl2G,UAAYq2N,EAAar2N,UACvC1b,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,qCAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,sCAINu0O,GAAgBA,EAAa/pB,aAC/BhoN,KAAK4xH,SAASo2F,WAAa+pB,EAAa/pB,WACxChoN,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,sCAERwC,KAAKkjI,MAAMp9B,QAAQ,CACjBjoG,KAAM,QACNL,KAAM,uCAQyB,kBAA5BwC,KAAK4xH,SAASl2G,YACvB1b,KAAK4xH,SAASl2G,UAAYgkK,GAAOK,mBAKnC//K,KAAK4xH,SAAS2zG,yBAA2BvlO,KAAK4xH,SAAS2zG,0BAA4BvlO,KAAK4xH,SAASl2G,YAAcgkK,GAAOK,kBAEtH,CAAC,kBAAmB,sBAAuB,mCAAoC,YAAa,sBAAuB,mBAAoB,mBAAoB,0BAA2B,sBAAuB,mBAAoB,0BAA2B,6BAA8B,yBAA0B,oBAAqB,2BAA4B,2BAA4B,mCAAoC,sCAAsC1iL,SAAQ,SAAUi2O,GACrb,qBAA3BnsI,EAAOyrI,QAAQU,KACxBnsI,EAAOyqB,SAAS0hH,GAAUnsI,EAAOyrI,QAAQU,OAG7CtzO,KAAK4/M,iCAAmC5/M,KAAK4xH,SAASguF,iCACtD5/M,KAAKohN,oBAAsBphN,KAAK4xH,SAASwvF,qBAS3C37G,EAAO0O,IAAM,SAAa06B,EAAMhxI,GAC9B,IAAIyqG,EAAStoG,KAGb,GAAK6uI,EAAL,CAIA7uI,KAAK8yO,cAEL9yO,KAAK4xH,SAASzd,IAAM+9H,GAAclyO,KAAK4yO,QAAQz+H,KAC/Cn0G,KAAK4xH,SAASwI,KAAOp6H,KAAKkjI,MAC1BljI,KAAK4xH,SAASyzG,UAAY5uD,GAC1Bz2K,KAAK4xH,SAAS41F,WAAa,eAAyB3pN,GAEpDmC,KAAK4xH,SAASwoD,OAAS,SAAUxjK,GAC/B0xF,EAAO46B,MAAM4F,eAAelyH,IAG1B5W,KAAK4xH,SAASo6G,qBAChB7gG,GAAQtoI,IAAIqqB,KAAK,mFAGnBltB,KAAKuhN,0BAA4B,IAAI6jB,GAAyBplO,KAAK4xH,UACnE,IAAI2hH,EAAyBpoG,GAAQmgC,aAAa,CAChDghE,uBAAwBrgE,IACvBjsK,KAAK4xH,SAAU,CAChBgc,SAAU,WACR,OAAOtlC,EAAOslC,YAEhBjuH,MAAO,WACL,OAAO2oF,EAAOi5G,0BAA0B5hM,SAE1CkgM,yBAA0B7/M,KAAKuhN,4BAEjCvhN,KAAKwzO,iBAAmB,IAAIpH,GAAgBmH,GAC5CvzO,KAAKuhN,0BAA0B77G,GAAG,SAAS,WACzC,IAAI5jG,EAASqpI,GAAQ3S,QAAQlwB,EAAO46B,MAAMtR,SAAS6gC,UAC/C5iI,EAAQy4E,EAAOi5G,0BAA0B1xL,MAExB,kBAAVA,GAAuBA,EAAM7iB,KAEZ,kBAAV6iB,IAChBA,EAAQ,CACNgoE,QAAShoE,EACT7iB,KAAM,IAJR6iB,EAAM7iB,KAAO,EAQflL,EAAO+tB,MAAMA,MAEf,IAAI4jN,EAAkBzzO,KAAK4xH,SAAS+yG,2BAA6BluD,GAAI+qC,+BAA+B,KAAQ/qC,GAAIw5D,2BAGhHjwO,KAAKuhN,0BAA0BkhB,eAAiBziO,KAAKyiO,eAAiBziO,KAAKyiO,eAAe10N,KAAK/N,MAAQyzO,EAAgB1lO,KAAK/N,MAC5HA,KAAKuhN,0BAA0BwmB,sBAAwBtxD,GAAIy5D,0BAA0BniO,KAAK/N,MAE1FA,KAAKvB,UAAYuB,KAAKuhN,0BAA0BnkC,sBAChDp9K,KAAK+nN,YAAc/nN,KAAKuhN,0BAA0BwG,YAIlD/gN,OAAO+lB,iBAAiB/sB,KAAM,CAC5ByiO,eAAgB,CACdr3M,IAAK,WACH,OAAOprB,KAAKuhN,0BAA0BkhB,gBAExCp3M,IAAK,SAAao3M,GAChBziO,KAAKuhN,0BAA0BkhB,eAAiBA,EAAe10N,KAAK/N,QAGxEgoN,WAAY,CACV58L,IAAK,WACH,OAAOprB,KAAKuhN,0BAA0B8iB,mBAAmBrc,WAAWrgE,MAEtEt8H,IAAK,SAAa28L,GAChBhoN,KAAKuhN,0BAA0B8iB,mBAAmBrc,WAAWrgE,KAAOqgE,EAGpEhoN,KAAKuhN,0BAA0B8iB,mBAAmBrc,WAAW/nM,MAAQ,IAGzEvE,UAAW,CACT0P,IAAK,WACH,IAAIsoN,EAAqB1zO,KAAKuhN,0BAA0B8iB,mBAAmB3oN,UACvEi4N,EAAqB,IAASzwH,UAAU0wH,YAAc,IAAS1wH,UAAU2wH,eAAiB,IAAS3wH,UAAU4wH,iBAC7GC,EAAyB,IAE7B,GAAI/zO,KAAK4xH,SAASyhH,0BAA4BM,EAAoB,CAGhE,IAAIK,EAAkE,IAA9BL,EAAmBM,SAAkB,IAK3EP,EADEM,GAAqCD,GAA0BL,GAAsBK,EAClEh+N,KAAKK,IAAIs9N,EAAoBM,GAE7BA,EAIzB,OAAON,GAETroN,IAAK,SAAa3P,GAChB1b,KAAKuhN,0BAA0B8iB,mBAAmB3oN,UAAYA,EAI9D1b,KAAKuhN,0BAA0B8iB,mBAAmBrc,WAAa,CAC7DrgE,KAAM,EACN1nI,MAAO,KAcbqhM,gBAAiB,CACfl2L,IAAK,WACH,IACI8oN,EADAC,EAAe,GAAKn0O,KAAK0b,WAAa,GAIxCw4N,EADEl0O,KAAKgoN,WAAa,EACJ,EAAIhoN,KAAKgoN,WAET,EAGlB,IAAIosB,EAAgBr+N,KAAKG,MAAM,GAAKi+N,EAAeD,IACnD,OAAOE,GAET/oN,IAAK,WACH8/G,GAAQtoI,IAAIgtB,MAAM,mDAKpB7vB,KAAK4xH,SAASl2G,YAChB1b,KAAK0b,UAAY1b,KAAK4xH,SAASl2G,WAG7B1b,KAAK4xH,SAASo2F,aAChBhoN,KAAKgoN,WAAahoN,KAAK4xH,SAASo2F,YAGlChhN,OAAO+lB,iBAAiB/sB,KAAKm5M,MAAO,CAClCz9L,UAAW,CACT0P,IAAK,WACH,OAAOk9E,EAAO5sF,WAAa,GAE7BrU,YAAY,GAEd0kN,cAAe,CACb3gM,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0B8yB,kBAAoB,GAE9DhtO,YAAY,GAEd2kN,qBAAsB,CACpB5gM,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0B+yB,yBAA2B,GAErEjtO,YAAY,GAEd4kN,sBAAuB,CACrB7gM,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0BgzB,0BAA4B,GAEtEltO,YAAY,GAEd6kN,qBAAsB,CACpB9gM,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0BizB,yBAA2B,GAErEntO,YAAY,GAEd8kN,sBAAuB,CACrB/gM,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0BkzB,0BAA4B,GAEtEptO,YAAY,GAEdykN,sBAAuB,CACrB1gM,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0BmzB,0BAA4B,GAEtErtO,YAAY,GAEd+kN,mBAAoB,CAClBhhM,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0BynB,uBAAyB,GAEnE3hO,YAAY,GAEdglN,aAAc,CACZjhM,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0BozB,iBAAmB,GAE7DttO,YAAY,GAEdutO,wBAAyB,CACvBxpN,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0BulB,4BAA8B,GAExEz/N,YAAY,GAEdwtO,yBAA0B,CACxBzpN,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0BwlB,6BAA+B,GAEzE1/N,YAAY,GAEdytO,oBAAqB,CACnB1pN,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0BylB,wBAA0B,GAEpE3/N,YAAY,GAEd0tO,iBAAkB,CAChB3pN,IAAK,WACH,OAAOk9E,EAAOi5G,0BAA0B0lB,qBAAuB,GAEjE5/N,YAAY,GAEdgyH,SAAU,CACRjuG,IAAK,WACH,OAAO4hJ,GAAkB1kE,EAAO46B,MAAM7J,aAExChyH,YAAY,GAEdg9H,YAAa,CACXj5G,IAAK,WACH,OAAOk9E,EAAO46B,MAAMmB,eAEtBh9H,YAAY,GAEdo3J,cAAe,CACbrzI,IAAK,WACH,OAAOk9E,EAAO46B,MAAMsJ,gBAEtBnlI,YAAY,GAEd2tO,YAAa,CACX5pN,IAAK,WACH,OAAOk9E,EAAO46B,MAAM9U,OAEtB/mH,YAAY,GAEdqN,SAAU,CACR0W,IAAK,WACH,OAAOk9E,EAAO46B,MAAMxuH,YAEtBrN,YAAY,GAEdnJ,OAAQ,CACNktB,IAAK,WACH,OAAOk9E,EAAO7pG,UAAUP,QAE1BmJ,YAAY,GAEd4tO,iBAAkB,CAChB7pN,IAAK,WACH,OAAOk9E,EAAO46B,MAAMvN,qBAEtBtuH,YAAY,GAEdumI,SAAU,CACRxiH,IAAK,WACH,OAAO4hJ,GAAkB1kE,EAAO46B,MAAM0K,aAExCvmI,YAAY,GAEd8I,UAAW,CACTib,IAAK,WACH,OAAOvH,KAAKlO,OAEdtO,YAAY,GAEd6sJ,qBAAsB,CACpB9oI,IAAK,WACH,OAAOk9E,EAAO46B,MAAM4G,2BAEtBziI,YAAY,KAGhBrH,KAAKkjI,MAAMrW,IAAI,UAAW7sH,KAAKuhN,0BAA0BomB,eAAe55N,KAAK/N,KAAKuhN,4BAClFvhN,KAAKkjI,MAAMx9B,GAAG,mBAAmB,WAC3B4C,EAAOspB,SAASwhH,8BAClBpB,GAAsB,CACpBt2N,UAAW4sF,EAAO5sF,UAClBssM,WAAYjyM,KAAKiqF,MAAMsI,EAAO0/G,iBAIpChoN,KAAKuhN,0BAA0B77G,GAAG,wBAAwB,WAExDwmI,GAAwB5jI,MAE1BtoG,KAAKuhN,0BAA0ByH,eAAetjH,GAAG,wBAAwB,WACvE4C,EAAO4sI,eAITl1O,KAAK0lG,GAAG1lG,KAAKuhN,0BAA2B,YAAY,WAClDvhN,KAAKkjI,MAAMp9B,QAAQ,eAIrB9lG,KAAK0lG,GAAG1lG,KAAKuhN,0BAA2B,aAAa,WACnDvhN,KAAK6yO,yBAA0B,KAEjC7yO,KAAKm1O,sBAGAn1O,KAAKkjI,MAAMvwH,OAIhB3S,KAAKo1O,gBAAkB,IAASjmO,IAAIsxK,gBAAgBzgL,KAAKuhN,0BAA0BwG,aACnF/nN,KAAKkjI,MAAM/uB,IAAIn0G,KAAKo1O,oBAGtB3vI,EAAO4vI,mBAAqB,WAC1B,IAAI79G,EAASx3H,KAETs1O,EAAsBt1O,KAAKuhN,0BAA0BskB,YAAYxnO,MAAMgjO,qBAC3ErhO,KAAKi0K,QAAQ,wCACbm9D,GAA0B,CACxBtvO,OAAQ9B,KAAKyxH,QACb4/G,iBAAkBrxO,KAAK4yO,QAAQ5B,WAC/BM,WAAYgE,GAAuBA,EAAoB31N,QACvD4xN,cAAevxO,KAAKvB,UAAUP,OAAOO,YACpCiE,MAAK,WACN80H,EAAOy8C,QAAQ,2BAEfz8C,EAAO+pF,0BAA0ByH,eAAe6O,oBAC/C,UAAS,SAAU/0N,GACpB00H,EAAOy8C,QAAQ,uCAAwCnxK,GAEvD00H,EAAO/F,QAAQ5hG,MAAM,CACnBgoE,QAAS,0CACT7qF,KAAM,QAKZy4F,EAAO8vI,qBAAuB,WAS5Bv1O,KAAKi0K,QAAQ,kEACbj0K,KAAKq1O,sBAYP5vI,EAAOyvI,UAAY,WACjB,IAAIv9G,EAAS33H,KAETs1O,EAAsBt1O,KAAKuhN,0BAA0BskB,YAAYxnO,MAAMgjO,qBACvEmU,EAAqB5D,GAAgB,CACvC9vO,OAAQ9B,KAAKyxH,QACb4/G,iBAAkBrxO,KAAK4yO,QAAQ5B,WAC/BrxN,MAAO3f,KAAKvB,UAAUkhB,QACtB2xN,WAAYgE,GAAuBA,EAAoB31N,UAEzD3f,KAAKyxH,QAAQyR,MAAMx9B,GAAG,mBAAmB,SAAU16F,GACjD,GAAiB,sBAAbA,EAAEQ,OAAN,CAIA,IAAIiqO,EAAiB99G,EAAO4pF,0BAA0BrjN,SAEtD,GAAKu3O,GAAmBA,EAAeh3O,UAAvC,CAIA,IAYMi3O,EAZFC,EAAsB,GAW1B,GATAF,EAAeh3O,UAAUpB,SAAQ,SAAUua,GACrCA,GAAYA,EAASlZ,YAAckZ,EAASlZ,WAAW2e,YAAczF,EAASlZ,WAAW2e,WAAWlc,QAAU,OAC3GyW,EAAS83J,cAAgB93J,EAAS83J,aAAeh6J,OACpDkC,EAAS83J,aAAeh6J,IACxBigO,EAAoB16O,KAAK2c,OAK3B+9N,EAAoB/3O,QAGrB83O,EAAevqG,GAAQtoI,KAAKqqB,KAAKlS,MAAM06N,EAAc,CAAC,gPAA0P/jO,OAAOgkO,IAGxTh+G,EAAO4pF,0BAA0BmhB,0BAGrC1iO,KAAKu1O,qBAAuBv1O,KAAKu1O,qBAAqBxnO,KAAK/N,MAC3DA,KAAKyxH,QAAQyR,MAAMx9B,GAAG,gBAAiB1lG,KAAKu1O,sBAGT,KAA/BpqG,GAAQvmB,QAAQX,YAAsBuxH,EAM1Cx1O,KAAKq1O,qBAJHr1O,KAAKuhN,0BAA0ByH,eAAe6O,kBAclDpyH,EAAO0vI,oBAAsB,WAC3B,IAAIr9G,EAAS93H,KAET8B,EAASqpI,GAAQ3S,QAAQx4H,KAAKkjI,MAAMtR,SAAS6gC,UAG5C3wJ,GAAWA,EAAOuuO,gBAAiBrwO,KAAK41O,iBAI7C51O,KAAK41O,eAAiB9zO,EAAOuuO,gBAC7BrwO,KAAKuhN,0BAA0B77G,GAAG,wBAAwB,WACxD6qI,GAAwBz4G,EAAO89G,eAAgB99G,MAEjD93H,KAAKvB,UAAUinG,GAAG,eAAe,WAC/B0qI,GAAqBt4G,EAAO89G,eAAgB99G,EAAOr5H,gBAQvDg0O,EAAWr4O,QAAU,WACnB,MAAO,CACL,0BAA2By1O,GAC3B,SAAUC,GACV,aAAcC,GACd,cAAeC,GACf,gBAAiB51O,KAQrBqrG,EAAOrrG,QAAU,WACf,OAAO4F,KAAK2O,YAAYvU,WAG1BqrG,EAAO0yH,cAAgB,WACrB,OAAOrB,GAAcqB,iBAOvB1yH,EAAOrjG,KAAO,WACZpC,KAAKuhN,0BAA0Bn/M,QAOjCqjG,EAAOqjC,eAAiB,SAAwBzE,GAC9CrkI,KAAKuhN,0BAA0Bz4E,eAAezE,IAOhD5+B,EAAO/wF,SAAW,WAChB,OAAO1U,KAAKuhN,0BAA0B7sM,YAOxC+wF,EAAOmoC,SAAW,WAChB,OAAO5tI,KAAKuhN,0BAA0B3zE,YAOxCnoC,EAAOS,QAAU,WACXlmG,KAAKwzO,kBACPxzO,KAAKwzO,iBAAiBttI,UAGpBlmG,KAAKuhN,2BACPvhN,KAAKuhN,0BAA0Br7G,UAG7BlmG,KAAK41O,gBACP51O,KAAK41O,eAAe1vI,UAGlBlmG,KAAKyxH,iBACAzxH,KAAKyxH,QAAQuiD,WACbh0K,KAAKyxH,QAAQjpF,YACbxoC,KAAKyxH,QAAQihH,KAGlB1yO,KAAKkjI,OAASljI,KAAKkjI,MAAM8wC,YACpBh0K,KAAKkjI,MAAM8wC,IAIhBh0K,KAAKkjI,cACAljI,KAAKkjI,MAAMwvG,IAGhB1yO,KAAKo1O,iBAAmB,IAASjmO,IAAIgyK,kBACvC,IAAShyK,IAAIgyK,gBAAgBnhL,KAAKo1O,iBAClCp1O,KAAKo1O,gBAAkB,MAGrBp1O,KAAKkjI,OACPljI,KAAKkjI,MAAMt9B,IAAI,gBAAiB5lG,KAAKu1O,sBAGvCt6G,EAAWxzH,UAAUy+F,QAAQt1F,KAAK5Q,OAGpCylG,EAAOowI,qBAAuB,SAA8Bj/N,EAAM/M,GAChE,OAAO6vK,GAAe,CACpB9hK,SAAU5X,KAAKuhN,0BAA0B5hM,QACzC/I,KAAMA,EACN/M,SAAUA,KAKd47F,EAAOw0E,kBAAoB,SAA6BtB,EAAa9uK,EAAUywK,EAAgBH,GAS7F,YARuB,IAAnBG,IACFA,GAAiB,QAGA,IAAfH,IACFA,EAAa,GAGRF,GAAkB,CACvBtB,YAAaA,EACb/gK,SAAU5X,KAAKuhN,0BAA0B5hM,QACzCw6J,WAAYA,EACZG,eAAgBA,EAChBF,OAAQp6K,KAAK4xH,SAASwoD,OACtBhgD,KAAMp6H,KAAK4xH,SAASwI,KACpBvwH,SAAUA,KAIP4oO,EA9wBqB,CA+wB5BlhH,IAUEukH,GAAmB,CACrBt4O,KAAM,yBACNqJ,QAASgpO,GACT5jG,gBAAiB,SAAyBnB,EAAQlhI,QAChC,IAAZA,IACFA,EAAU,IAGZ,IAAI4lO,EAAerkG,GAAQmgC,aAAangC,GAAQvhI,QAASA,GACzD,OAAOksO,GAAiBlrG,YAAYE,EAAOjtI,KAAM2xO,IAEnD/iG,aAAc,SAAsBh7H,EAAQ2oH,EAAMxwH,QAChC,IAAZA,IACFA,EAAU,IAGZ,IAAI4lO,EAAerkG,GAAQmgC,aAAangC,GAAQvhI,QAASA,GAezD,OAdAwwH,EAAK45C,IAAM,IAAIy+D,GAAWhhO,EAAQ2oH,EAAMo1G,GAEnCrkG,GAAQ1hI,eAAe,QAC1BzC,OAAOC,eAAemzH,EAAM,MAAO,CACjChvG,IAAK,WAEH,OADA+/G,GAAQtoI,IAAIqqB,KAAK,mEACVktG,EAAK45C,KAEdzsK,cAAc,IAIlB6yH,EAAK45C,IAAI3pK,IAAMisK,KACfl8C,EAAK45C,IAAI7/D,IAAI1iG,EAAO0iG,IAAK1iG,EAAO5T,MACzBu8H,EAAK45C,KAEdppC,YAAa,SAAqB/sI,EAAM+L,GACtC,IAAImsO,EAAa,eAAyBl4O,GAE1C,IAAKk4O,EACH,MAAO,GAGT,IAAIhD,EAAiB+C,GAAiBE,kBAAkBpsO,GACpD4oO,EAAuB/7D,GAAI+7D,qBAAqBuD,GAChDE,GAAqBzD,GAAwBO,EACjD,OAAOkD,EAAoB,QAAU,IAEvCD,kBAAmB,SAA2BpsO,QAC5B,IAAZA,IACFA,EAAU,IAGZ,IAAI+d,EAAW/d,EACXssO,EAAevuN,EAASqsJ,IACxBA,OAAuB,IAAjBkiE,EAA0B,GAAKA,EACrCC,EAAexuN,EAAS+qN,IACxBA,OAAuB,IAAjByD,EAA0B,GAAKA,EACrCC,IAA0BjrG,GAAQvmB,QAAQD,eAAiBwmB,GAAQvmB,QAAQF,QAC3E2xH,EAAsBriE,EAAI++D,eAC1BA,OAAyC,IAAxBsD,EAAiCD,EAAwBC,EAC1EC,EAAsB5D,EAAIK,eAC1BwD,OAA+C,IAAxBD,GAAyCA,EACpE,OAAOC,GAAwBxD,IAU/ByD,GAA6B,WAC/B,OAAO,eAAqB,0BAyC9B,GArCIA,MACFrrG,GAAQD,QAAQ,SAASU,sBAAsBkqG,GAAkB,GAGnE3qG,GAAQsnG,WAAaA,GACrBzrO,OAAOC,eAAekkI,GAAS,aAAc,CAC3C//G,IAAK,WAEH,OADA+/G,GAAQtoI,IAAIqqB,KAAK,qEACVulN,IAETlrO,cAAc,IAEhB4jI,GAAQ2qG,iBAAmBA,GAC3B9uO,OAAOC,eAAekkI,GAAS,mBAAoB,CACjD//G,IAAK,WAEH,OADA+/G,GAAQtoI,IAAIqqB,KAAK,iFACV4oN,IAETvuO,cAAc,IAEhB4jI,GAAQsrC,IAAMA,GACdzvK,OAAOC,eAAekkI,GAAS,MAAO,CACpC//G,IAAK,WAEH,OADA+/G,GAAQtoI,IAAIqqB,KAAK,uDACVupJ,IAETlvK,cAAc,IAGX4jI,GAAQ0B,MACX1B,GAAQlT,kBAAkB,MAAOw+C,IACjCtrC,GAAQlT,kBAAkB,MAAOw+C,KAGnCtrC,GAAQvhI,QAAQoqK,IAAM7oC,GAAQvhI,QAAQoqK,KAAO,GAC7C7oC,GAAQvhI,QAAQ8oO,IAAMvnG,GAAQvhI,QAAQ8oO,KAAO,IAExCvnG,GAAQo+B,YAAcp+B,GAAQo+B,UAAU,uBAAwB,CACnE,IAAIY,GAAiBh/B,GAAQg/B,gBAAkBh/B,GAAQy+B,OACvDO,GAAe,sBAAuBylE,O,gICxisDpC6G,E,YAtBA,GCJmB,IAAIn8O,WAAW,CACtC,GAAM,IAAM,IAAM,IAClB,GAAM,IAAM,GAAM,MDEE,SAAuB6pG,GACzC,MAAoB,kBAATA,EACF,eAAcA,GAIdA,IAMPuyI,EAAiB,SAAwBC,GAC3C,OAAKj2O,MAAMyI,QAAQwtO,GAIZA,EAAM33O,KAAI,SAAUqP,GACzB,OAAO,EAAcA,MAJd,CAAC,EAAcsoO,KASf,EAAmB,SAA0BruO,GACtDA,EAAQ,eAAQA,GAChB,IAAI8jK,EAAU,GACVxxK,EAAI,EAER,MAAO0N,EAAM1K,OAAShD,EAAG,CACvB,IAAIiqB,EAAMvc,EAAM1N,GACZ2d,EAAO,EACPq+N,EAAa,EAEjBA,IACA,IAAI7oI,EAAOzlG,EAAMsuO,GAEjBA,IAEA,MAAc,IAAP7oI,EACLx1F,GAAe,IAAPw1F,IAAgB,EACxBA,EAAOzlG,EAAMsuO,GACbA,IAGFr+N,GAAe,IAAPw1F,EAER,IAAK,IAAIwtH,EAAI,EAAGA,EAAIkb,EAAY74O,OAAQ29N,IAAK,CAC3C,IAAIsb,EAAiBJ,EAAYlb,GAC7B1gN,EAAKg8N,EAAeh8N,GACpByN,EAASuuN,EAAevuN,OAE5B,GAAIzD,IAAQhK,EAAI,CACduxJ,EAAQnxK,KAAKqtB,EAAOhgB,EAAM/N,SAASq8O,EAAYA,EAAar+N,KAC5D,OAIJ3d,GAAK2d,EAAOq+N,EAGd,OAAOxqE,GAETqqE,EAAc,CAAC,CACb57N,GAAI,EACJyN,OAAQ,SAAgBhgB,GACtB,IAAIwzH,EAAO,CACTj3G,IAAK,EACLhK,GAAIvS,EAAM,IAAM,EAAIA,EAAM,GAC1BjO,MAAOiO,EAAM,GACbiQ,KAAM,EACNu+N,cAAe,EACfC,QAAS,EACTC,YAAa,GACbrrO,IAAK,IASP,GANiB,IAAbmwH,EAAKzhI,QACPyhI,EAAKg7G,cAAgBxuO,EAAMwzH,EAAKvjH,OAAS,EAAIjQ,EAAMwzH,EAAKvjH,KAAO,GAC/DujH,EAAKvjH,MAAQ,GAIE,GAAbujH,EAAKzhI,MAAc,CACrB,IAAI+L,EAAMkC,EAAMwzH,EAAKvjH,MACrBujH,EAAKnwH,IAAM,eAAcrD,EAAM/N,SAASuhI,EAAKvjH,KAAO,EAAGujH,EAAKvjH,KAAO,EAAInS,IACvE01H,EAAKvjH,MAAQnS,EAUf,OANiB,GAAb01H,EAAKzhI,QACPyhI,EAAKi7G,QAAUzuO,EAAMwzH,EAAKvjH,OAAS,EAAIjQ,EAAMwzH,EAAKvjH,KAAO,GACzDujH,EAAKvjH,MAAQ,GAGfujH,EAAKk7G,YAAc,EAAiB1uO,EAAM/N,SAASuhI,EAAKvjH,QAAU,GAC3DujH,IAER,CACDjhH,GAAI,EACJyN,OAAQ,SAAgBhgB,GAEtB,IAAIwzH,EAAO,CACTj3G,IAAK,EACLoyN,IAAK3uO,EAAM,GACX61L,WAAY71L,EAAM,GAClBg0L,WAAYh0L,EAAM,IAAM,GAAKA,EAAM,IAAM,EAAIA,EAAM,GACnD4uO,WAAY5uO,EAAM,IAAM,GAAKA,EAAM,IAAM,GAAKA,EAAM,IAAM,EAAIA,EAAM,GACpE6uO,WAAY7uO,EAAM,IAAM,GAAKA,EAAM,KAAO,GAAKA,EAAM,KAAO,EAAIA,EAAM,IACtE0uO,YAAa,EAAiB1uO,EAAM/N,SAAS,MAE/C,OAAOuhI,IAER,CACDjhH,GAAI,EACJyN,OAAQ,SAAgBhgB,GAEtB,MAAO,CACLuc,IAAK,EACLvc,MAAOA,KAGV,CACDuS,GAAI,EACJyN,OAAQ,SAAgBhgB,GAEtB,MAAO,CACLuc,IAAK,EACLvc,MAAOA,MAyBN,IAAI,EAAU,SAAS0jM,EAAQ1jM,EAAOquO,EAAOS,QACjC,IAAbA,IACFA,GAAW,GAGbT,EAAQD,EAAeC,GACvBruO,EAAQ,eAAQA,GAChB,IAAI8jK,EAAU,GAEd,IAAKuqE,EAAM/4O,OAET,OAAOwuK,EAGT,IAAIxxK,EAAI,EAER,MAAOA,EAAI0N,EAAM1K,OAAQ,CACvB,IAAI2a,GAAQjQ,EAAM1N,IAAM,GAAK0N,EAAM1N,EAAI,IAAM,GAAK0N,EAAM1N,EAAI,IAAM,EAAI0N,EAAM1N,EAAI,MAAQ,EACpFiD,EAAOyK,EAAM/N,SAASK,EAAI,EAAGA,EAAI,GAErC,GAAa,IAAT2d,EACF,MAGF,IAAIxG,EAAMnX,EAAI2d,EAEd,GAAIxG,EAAMzJ,EAAM1K,OAAQ,CAGtB,GAAIw5O,EACF,MAGFrlO,EAAMzJ,EAAM1K,OAGd,IAAI/D,EAAOyO,EAAM/N,SAASK,EAAI,EAAGmX,GAE7B,eAAWlU,EAAM84O,EAAM,MACJ,IAAjBA,EAAM/4O,OAGRwuK,EAAQnxK,KAAKpB,GAGbuyK,EAAQnxK,KAAK+f,MAAMoxJ,EAAS4/B,EAAQnyM,EAAM88O,EAAM55O,MAAM,GAAIq6O,KAI9Dx8O,EAAImX,EAIN,OAAOq6J,GE3MEirE,EAAY,CACrBC,KAAM,eAAQ,CAAC,GAAM,GAAM,IAAM,MACjCC,QAAS,eAAQ,CAAC,GAAM,MACxBC,QAAS,eAAQ,CAAC,GAAM,GAAM,IAAM,MACpCC,YAAa,eAAQ,CAAC,GAAM,GAAM,IAAM,MACxCC,OAAQ,eAAQ,CAAC,GAAM,GAAM,IAAM,MACnC51G,MAAO,eAAQ,CAAC,MAChB61G,YAAa,eAAQ,CAAC,MACtBC,gBAAiB,eAAQ,CAAC,GAAM,IAAM,MACtCC,WAAY,eAAQ,CAAC,MACrBC,UAAW,eAAQ,CAAC,MACpBC,YAAa,eAAQ,CAAC,MACtBC,QAAS,eAAQ,CAAC,MAClBC,aAAc,eAAQ,CAAC,GAAM,MAC7BlzG,WAAY,eAAQ,CAAC,MACrBF,WAAY,eAAQ,CAAC,MAIrBqzG,QAAS,eAAQ,CAAC,GAAM,GAAM,IAAM,MACpCC,UAAW,eAAQ,CAAC,MACpBC,eAAgB,eAAQ,CAAC,GAAM,IAAM,MACrCC,WAAY,eAAQ,CAAC,MACrBC,cAAe,eAAQ,CAAC,MACxBC,MAAO,eAAQ,CAAC,MAChBC,YAAa,eAAQ,CAAC,OAUpBC,EAAe,CAAC,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAE1CC,EAAY,SAAmB3qI,GAGjC,IAFA,IAAI3nG,EAAM,EAEDxL,EAAI,EAAGA,EAAI69O,EAAa76O,OAAQhD,IAAK,CAC5C,GAAImzG,EAAO0qI,EAAa79O,GACtB,MAGFwL,IAGF,OAAOA,GAQL,EAAU,SAAiBkC,EAAOrC,EAAQ0yO,EAAc/qI,QACrC,IAAjB+qI,IACFA,GAAe,QAGF,IAAX/qI,IACFA,GAAS,GAGX,IAAIhwG,EAAS86O,EAAUpwO,EAAMrC,IACzB2yO,EAAatwO,EAAM/N,SAAS0L,EAAQA,EAASrI,GAUjD,OALI+6O,IACFC,EAAal4O,MAAM+G,UAAU1K,MAAM6T,KAAKtI,EAAOrC,EAAQA,EAASrI,GAChEg7O,EAAW,IAAMH,EAAa76O,EAAS,IAGlC,CACLA,OAAQA,EACRwJ,MAAO,eAAcwxO,EAAY,CAC/BhrI,OAAQA,IAEVtlG,MAAOswO,IAIP,EAAgB,SAASx0I,EAAcD,GACzC,MAAoB,kBAATA,EACFA,EAAK1mG,MAAM,WAAWuB,KAAI,SAAUqP,GACzC,OAAO+1F,EAAc/1F,MAIL,kBAAT81F,EACF,eAAcA,GAGhBA,GAGL,EAAiB,SAAwBwyI,GAC3C,OAAKj2O,MAAMyI,QAAQwtO,GAIZA,EAAM33O,KAAI,SAAUqP,GACzB,OAAO,EAAcA,MAJd,CAAC,EAAcsoO,KAQtB,EAAsB,SAASkC,EAAoBh+N,EAAIvS,EAAOrC,GAChE,GAAIA,GAAUqC,EAAM1K,OAClB,OAAO0K,EAAM1K,OAGf,IAAIk7O,EAAU,EAAQxwO,EAAOrC,GAAQ,GAErC,GAAI,eAAW4U,EAAGvS,MAAOwwO,EAAQxwO,OAC/B,OAAOrC,EAGT,IAAI8yO,EAAa,EAAQzwO,EAAOrC,EAAS6yO,EAAQl7O,QACjD,OAAOi7O,EAAoBh+N,EAAIvS,EAAOrC,EAAS8yO,EAAWn7O,OAASm7O,EAAW3xO,MAAQ0xO,EAAQl7O,SAuBrF,EAAW,SAASo7O,EAAS1wO,EAAOquO,GAC7CA,EAAQ,EAAeA,GACvBruO,EAAQ,eAAQA,GAChB,IAAI8jK,EAAU,GAEd,IAAKuqE,EAAM/4O,OACT,OAAOwuK,EAGT,IAAIxxK,EAAI,EAER,MAAOA,EAAI0N,EAAM1K,OAAQ,CACvB,IAAIid,EAAK,EAAQvS,EAAO1N,GAAG,GACvBm+O,EAAa,EAAQzwO,EAAO1N,EAAIigB,EAAGjd,QACnCq7O,EAAYr+O,EAAIigB,EAAGjd,OAASm7O,EAAWn7O,OAElB,MAArBm7O,EAAW3xO,QACb2xO,EAAW3xO,MAAQ,EAAoByT,EAAIvS,EAAO2wO,GAE9CF,EAAW3xO,QAAUkB,EAAM1K,SAC7Bm7O,EAAW3xO,OAAS6xO,IAIxB,IAAIC,EAAUD,EAAYF,EAAW3xO,MAAQkB,EAAM1K,OAAS0K,EAAM1K,OAASq7O,EAAYF,EAAW3xO,MAC9FvN,EAAOyO,EAAM/N,SAAS0+O,EAAWC,GAEjC,eAAWvC,EAAM,GAAI97N,EAAGvS,SACL,IAAjBquO,EAAM/4O,OAGRwuK,EAAQnxK,KAAKpB,GAIbuyK,EAAUA,EAAQz6J,OAAOqnO,EAASn/O,EAAM88O,EAAM55O,MAAM,MAIxD,IAAIo8O,EAAct+N,EAAGjd,OAASm7O,EAAWn7O,OAAS/D,EAAK+D,OAEvDhD,GAAKu+O,EAGP,OAAO/sE,G,YCjMEgtE,EAAe,eAAQ,CAAC,EAAM,EAAM,EAAM,IAC1CC,EAAe,eAAQ,CAAC,EAAM,EAAM,IACpCC,EAAuB,eAAQ,CAAC,EAAM,EAAM,IAW5C,EAAkC,SAAyChxO,GACpF,IAAIixO,EAAY,GACZ3+O,EAAI,EAER,MAAOA,EAAI0N,EAAM1K,OAAS,EACpB,eAAW0K,EAAM/N,SAASK,EAAGA,EAAI,GAAI0+O,KACvCC,EAAUt+O,KAAKL,EAAI,GACnBA,KAGFA,IAKF,GAAyB,IAArB2+O,EAAU37O,OACZ,OAAO0K,EAIT,IAAIqlL,EAAYrlL,EAAM1K,OAAS27O,EAAU37O,OACrCgwL,EAAU,IAAItzL,WAAWqzL,GACzBG,EAAc,EAElB,IAAKlzL,EAAI,EAAGA,EAAI+yL,EAAWG,IAAelzL,IACpCkzL,IAAgByrD,EAAU,KAE5BzrD,IAEAyrD,EAAUvqH,SAGZ4+D,EAAQhzL,GAAK0N,EAAMwlL,GAGrB,OAAOF,GAEE,EAAU,SAAiBtlL,EAAOkxO,EAAU7uH,EAAO8uH,QAC3C,IAAbA,IACFA,EAAW/jO,KAGbpN,EAAQ,eAAQA,GAChBqiH,EAAQ,GAAGh5G,OAAOg5G,GAClB,IACI+uH,EADA9+O,EAAI,EAEJ++O,EAAY,EAMhB,MAAO/+O,EAAI0N,EAAM1K,SAAW+7O,EAAYF,GAAYC,GAAW,CAC7D,IAAIE,OAAY,EAUhB,GARI,eAAWtxO,EAAM/N,SAASK,GAAIw+O,GAChCQ,EAAY,EACH,eAAWtxO,EAAM/N,SAASK,GAAIy+O,KACvCO,EAAY,GAKTA,EAAL,CAOA,GAFAD,IAEID,EACF,OAAO,EAAgCpxO,EAAM/N,SAASm/O,EAAU9+O,IAGlE,IAAI63M,OAAU,EAEG,SAAb+mC,EACF/mC,EAAiC,GAAvBnqM,EAAM1N,EAAIg/O,GACE,SAAbJ,IACT/mC,EAAUnqM,EAAM1N,EAAIg/O,IAAc,EAAI,KAGR,IAA5BjvH,EAAM1hH,QAAQwpM,KAChBinC,EAAW9+O,EAAIg/O,GAIjBh/O,GAAKg/O,GAA0B,SAAbJ,EAAsB,EAAI,QAvB1C5+O,IA0BJ,OAAO0N,EAAM/N,SAAS,EAAG,IAEhBs/O,EAAc,SAAqBvxO,EAAOzK,EAAM47O,GACzD,OAAO,EAAQnxO,EAAO,OAAQzK,EAAM47O,IAE3BK,EAAc,SAAqBxxO,EAAOzK,EAAM47O,GACzD,OAAO,EAAQnxO,EAAO,OAAQzK,EAAM47O,ICzGlCM,EAAY,CAEd,KAAQ,eAAQ,CAAC,IAAM,IAAM,GAAM,MAEnC,SAAY,eAAQ,CAAC,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,KAE/D,KAAQ,eAAQ,CAAC,IAAM,GAAM,GAAM,KAEnC,IAAO,eAAQ,CAAC,GAAM,IAAM,IAAM,KAGlC,IAAO,eAAQ,CAAC,GAAM,MAEtB,KAAQ,eAAQ,CAAC,GAAM,GAAM,GAAM,KAEnC,IAAO,eAAQ,CAAC,GAAM,GAAM,KAE5B,IAAO,eAAQ,CAAC,GAAM,GAAM,GAAM,KAElC,MAAO,eAAQ,CAAC,IAAM,IAAM,IAAM,IAAM,GAAM,MAE9C,IAAO,eAAQ,CAAC,IAAM,IAAM,IAAM,MAElC,KAAQ,eAAQ,CAAC,IAAM,IAAM,IAAM,MAEnC,IAAO,eAAQ,CAAC,IAAM,IAAM,IAAM,IAAM,IAAM,MAE9C,KAAQ,eAAQ,CAAC,IAAM,IAAM,IAAM,MAEnC,KAAQ,eAAQ,CAAC,IAAM,IAAM,IAAM,OAEjCC,EAAY,CACd1qG,IAAK,SAAahnI,GAChB,IAAIrC,EAAS,eAAaqC,GAC1B,OAAO,eAAWA,EAAO,CAAC,IAAM,IAAO,CACrCrC,OAAQA,EACRmpG,KAAM,CAAC,IAAM,OAGjBigC,IAAK,SAAa/mI,GAChB,IAAIrC,EAAS,eAAaqC,GAC1B,OAAO,eAAWA,EAAO,CAAC,IAAM,GAAO,CACrCrC,OAAQA,EACRmpG,KAAM,CAAC,IAAM,MAGjBxzG,KAAM,SAAc0M,GAClB,IAAI2xO,EAAU,EAAS3xO,EAAO,CAAC+uO,EAAUC,KAAMD,EAAUE,UAAU,GAEnE,OAAO,eAAW0C,EAASF,EAAUn+O,OAEvCuzI,IAAK,SAAa7mI,GAChB,IAAI2xO,EAAU,EAAS3xO,EAAO,CAAC+uO,EAAUC,KAAMD,EAAUE,UAAU,GAEnE,OAAO,eAAW0C,EAASF,EAAUG,WAEvCv+O,IAAK,SAAa2M,GAEhB,OAAI0xO,EAAU,OAAO1xO,KAAU0xO,EAAU/qG,IAAI3mI,QAKzC,eAAWA,EAAOyxO,EAAUp+O,IAAK,CACnCsK,OAAQ,MACJ,eAAWqC,EAAOyxO,EAAUI,KAAM,CACtCl0O,OAAQ,UAMN,eAAWqC,EAAOyxO,EAAU/3D,KAAM,CACpC/7K,OAAQ,MACJ,eAAWqC,EAAOyxO,EAAU93D,KAAM,CACtCh8K,OAAQ,WAHV,KAQFgpI,IAAK,SAAa3mI,GAChB,OAAO,eAAWA,EAAOyxO,EAAU9qG,IAAK,CACtChpI,OAAQ,KAGZ,MAAO,SAAYqC,GACjB,OAAO,eAAWA,EAAOyxO,EAAU,OAAQ,CACzC9zO,OAAQ,KAGZm0O,IAAK,SAAa9xO,GAChB,IAAIrC,EAAS,eAAaqC,GAC1B,OAAO,eAAWA,EAAOyxO,EAAUK,IAAK,CACtCn0O,OAAQA,KAGZ4yF,GAAI,SAAYvwF,GACd,GAAIA,EAAM1K,OAAS,KAAO0K,EAAM1K,QAAU,EACxC,OAAoB,KAAb0K,EAAM,GAGf,IAAI1N,EAAI,EAER,MAAOA,EAAI,IAAM0N,EAAM1K,QAAUhD,EAAI,IAAK,CACxC,GAAiB,KAAb0N,EAAM1N,IAAkC,KAAnB0N,EAAM1N,EAAI,KACjC,OAAO,EAGTA,GAAK,EAGP,OAAO,GAET40I,KAAM,SAAclnI,GAClB,IAAIrC,EAAS,eAAaqC,GAC1B,OAAO,eAAWA,EAAOyxO,EAAUvqG,KAAM,CACvCvpI,OAAQA,KAGZpK,IAAK,SAAayM,GAChB,OAAO,eAAWA,EAAOyxO,EAAUl+O,MAErCw+O,IAAK,SAAa/xO,GAChB,OAAO,eAAWA,EAAOyxO,EAAUO,OAAS,eAAWhyO,EAAOyxO,EAAUM,IAAK,CAC3Ep0O,OAAQ,KAGZypI,IAAK,SAAapnI,GAChB,OAAO,eAAWA,EAAOyxO,EAAUO,OAAS,eAAWhyO,EAAOyxO,EAAUrqG,IAAK,CAC3EzpI,OAAQ,KAGZ,KAAQ,SAAcqC,GAEpB,OAAOuxO,EAAYvxO,EAAO,EAAG,GAAG1K,QAElC,KAAQ,SAAc0K,GAEpB,OAAOwxO,EAAYxxO,EAAO,CAAC,GAAI,IAAK,GAAG1K,SAMvC28O,EAAgBvzO,OAAO0K,KAAKsoO,GAC/B9hO,QAAO,SAAUpU,GAChB,MAAa,OAANA,GAAoB,SAANA,GAAsB,SAANA,KAEtC6N,OAAO,CAAC,KAAM,OAAQ,SAEvB4oO,EAAcl9O,SAAQ,SAAUQ,GAC9B,IAAI28O,EAAaR,EAAUn8O,GAE3Bm8O,EAAUn8O,GAAQ,SAAUyK,GAC1B,OAAOkyO,EAAW,eAAQlyO,QAIvB,IAAImyO,EAAWT,EAGX,EAA0B,SAAiC1xO,GACpEA,EAAQ,eAAQA,GAEhB,IAAK,IAAI1N,EAAI,EAAGA,EAAI2/O,EAAc38O,OAAQhD,IAAK,CAC7C,IAAIiD,EAAO08O,EAAc3/O,GAEzB,GAAI6/O,EAAS58O,GAAMyK,GACjB,OAAOzK,EAIX,MAAO,IAGE,EAA2B,SAAkCyK,GACtE,OAAO,EAAQA,EAAO,CAAC,SAAS1K,OAAS,I,qBCrL3C,IAAI0qH,EAAI,EAAQ,QACZllH,EAAS,EAAQ,QACjBs3O,EAAiB,EAAQ,QAE7BpyH,EAAE,CAAEllH,QAAQ,GAAQ,CAAEmN,QAAS,KAI/BmqO,EAAet3O,EAAOmN,QAAS,WAAW,I,mBCQ1C,IAAIoqO,EAAgB,CAClB,IAAI,EACJ,IAAM,GAGR,SAASC,EAAkBxzO,GACzB,GAAqB,kBAAVA,EACT,OAAO,EAET,IAAIy7F,EAAS83I,EAAcvzO,EAAMzJ,eACjC,QAAOklG,GAASz7F,EAAMzJ,cAGxB,SAASk9O,EAAoBzzO,GAC3B,MAAwB,kBAAVA,GAAuBA,GAAS,GAAKA,GAAS,IAI9D,SAASS,IACP,IAAI0zJ,EAAS,IACTu/E,EAAS,EACTC,EAAiB,EACjBC,EAAiB,IACjBC,EAAmB,EACnBC,EAAmB,IACnBC,EAAU,GAEdn0O,OAAO+lB,iBAAiB/sB,KAAM,CAC5B,MAAS,CACPqH,YAAY,EACZ+jB,IAAK,WACH,OAAOmwI,GAETlwI,IAAK,SAASjkB,GACZ,IAAKyzO,EAAoBzzO,GACvB,MAAM,IAAI4C,MAAM,oCAElBuxJ,EAASn0J,IAGb,MAAS,CACPC,YAAY,EACZ+jB,IAAK,WACH,OAAO0vN,GAETzvN,IAAK,SAASjkB,GACZ,GAAqB,kBAAVA,EACT,MAAM,IAAIkiB,UAAU,kCAEtBwxN,EAAS1zO,IAGb,cAAiB,CACfC,YAAY,EACZ+jB,IAAK,WACH,OAAO4vN,GAET3vN,IAAK,SAASjkB,GACZ,IAAKyzO,EAAoBzzO,GACvB,MAAM,IAAI4C,MAAM,4CAElBgxO,EAAiB5zO,IAGrB,cAAiB,CACfC,YAAY,EACZ+jB,IAAK,WACH,OAAO2vN,GAET1vN,IAAK,SAASjkB,GACZ,IAAIyzO,EAAoBzzO,GACtB,MAAM,IAAI4C,MAAM,4CAElB+wO,EAAiB3zO,IAGrB,gBAAmB,CACjBC,YAAY,EACZ+jB,IAAK,WACH,OAAO8vN,GAET7vN,IAAK,SAASjkB,GACZ,IAAKyzO,EAAoBzzO,GACvB,MAAM,IAAI4C,MAAM,8CAElBkxO,EAAmB9zO,IAGvB,gBAAmB,CACjBC,YAAY,EACZ+jB,IAAK,WACH,OAAO6vN,GAET5vN,IAAK,SAASjkB,GACZ,IAAKyzO,EAAoBzzO,GACvB,MAAM,IAAI4C,MAAM,8CAElBixO,EAAmB7zO,IAGvB,OAAU,CACRC,YAAY,EACZ+jB,IAAK,WACH,OAAO+vN,GAET9vN,IAAK,SAASjkB,GACZ,IAAI4lB,EAAU4tN,EAAkBxzO,IAEhB,IAAZ4lB,EACFpqB,QAAQsqB,KAAK,uDAEbiuN,EAAUnuN,MAOpBxxB,EAAOC,QAAUoM,G,mCCtIjB,wEAEItB,EAAO,SAAcqe,GACvB,OAAO,IAAOre,KAAO,IAAOA,KAAKqe,GAAKw2N,EAAOz0O,KAAKie,EAAG,UAAU9nB,SAAS,WAG3D,SAASu+O,EAAsBC,GAI5C,IAHA,IAAIC,EAAgBh1O,EAAK+0O,GACrBjyO,EAAQ,IAAI/O,WAAWihP,EAAc39O,QAEhChD,EAAI,EAAGA,EAAI2gP,EAAc39O,OAAQhD,IACxCyO,EAAMzO,GAAK2gP,EAAcn3O,WAAWxJ,GAGtC,OAAOyO,K","file":"js/chunk-618db31a.d759ebb9.js","sourcesContent":["export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CkplayerOnly.vue?vue&type=style&index=0&id=deab9a64&prod&lang=scss&scoped=true\"","var getUint64 = require('../utils/numbers.js').getUint64;\n\nvar parseSidx = function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n references: [],\n referenceId: view.getUint32(4),\n timescale: view.getUint32(8)\n },\n i = 12;\n\n if (result.version === 0) {\n result.earliestPresentationTime = view.getUint32(i);\n result.firstOffset = view.getUint32(i + 4);\n i += 8;\n } else {\n // read 64 bits\n result.earliestPresentationTime = getUint64(data.subarray(i));\n result.firstOffset = getUint64(data.subarray(i + 8));\n i += 16;\n }\n\n i += 2; // reserved\n\n var referenceCount = view.getUint16(i);\n\n i += 2; // start of references\n\n for (; referenceCount > 0; i += 12, referenceCount--) {\n result.references.push({\n referenceType: (data[i] & 0x80) >>> 7,\n referencedSize: view.getUint32(i) & 0x7FFFFFFF,\n subsegmentDuration: view.getUint32(i + 4),\n startsWithSap: !!(data[i + 8] & 0x80),\n sapType: (data[i + 8] & 0x70) >>> 4,\n sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF\n });\n }\n\n return result;\n};\n\n\nmodule.exports = parseSidx;\n","import window from 'global/window';\nvar regexs = {\n // to determine mime types\n mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/,\n webm: /^(vp0?[89]|av0?1|opus|vorbis)/,\n ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/,\n // to determine if a codec is audio or video\n video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/,\n audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/,\n text: /^(stpp.ttml.im1t)/,\n // mux.js support regex\n muxerVideo: /^(avc0?1)/,\n muxerAudio: /^(mp4a)/,\n // match nothing as muxer does not support text right now.\n // there cannot never be a character before the start of a string\n // so this matches nothing.\n muxerText: /a^/\n};\nvar mediaTypes = ['video', 'audio', 'text'];\nvar upperMediaTypes = ['Video', 'Audio', 'Text'];\n/**\n * Replace the old apple-style `avc1.
.
` codec string with the standard\n * `avc1.`\n *\n * @param {string} codec\n * Codec string to translate\n * @return {string}\n * The translated codec string\n */\n\nexport var translateLegacyCodec = function translateLegacyCodec(codec) {\n if (!codec) {\n return codec;\n }\n\n return codec.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (orig, profile, avcLevel) {\n var profileHex = ('00' + Number(profile).toString(16)).slice(-2);\n var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2);\n return 'avc1.' + profileHex + '00' + avcLevelHex;\n });\n};\n/**\n * Replace the old apple-style `avc1.
.
` codec strings with the standard\n * `avc1.`\n *\n * @param {string[]} codecs\n * An array of codec strings to translate\n * @return {string[]}\n * The translated array of codec strings\n */\n\nexport var translateLegacyCodecs = function translateLegacyCodecs(codecs) {\n return codecs.map(translateLegacyCodec);\n};\n/**\n * Replace codecs in the codec string with the old apple-style `avc1.
.
` to the\n * standard `avc1.`.\n *\n * @param {string} codecString\n * The codec string\n * @return {string}\n * The codec string with old apple-style codecs replaced\n *\n * @private\n */\n\nexport var mapLegacyAvcCodecs = function mapLegacyAvcCodecs(codecString) {\n return codecString.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (match) {\n return translateLegacyCodecs([match])[0];\n });\n};\n/**\n * @typedef {Object} ParsedCodecInfo\n * @property {number} codecCount\n * Number of codecs parsed\n * @property {string} [videoCodec]\n * Parsed video codec (if found)\n * @property {string} [videoObjectTypeIndicator]\n * Video object type indicator (if found)\n * @property {string|null} audioProfile\n * Audio profile\n */\n\n/**\n * Parses a codec string to retrieve the number of codecs specified, the video codec and\n * object type indicator, and the audio profile.\n *\n * @param {string} [codecString]\n * The codec string to parse\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var parseCodecs = function parseCodecs(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n var codecs = codecString.split(',');\n var result = [];\n codecs.forEach(function (codec) {\n codec = codec.trim();\n var codecType;\n mediaTypes.forEach(function (name) {\n var match = regexs[name].exec(codec.toLowerCase());\n\n if (!match || match.length <= 1) {\n return;\n }\n\n codecType = name; // maintain codec case\n\n var type = codec.substring(0, match[1].length);\n var details = codec.replace(type, '');\n result.push({\n type: type,\n details: details,\n mediaType: name\n });\n });\n\n if (!codecType) {\n result.push({\n type: codec,\n details: '',\n mediaType: 'unknown'\n });\n }\n });\n return result;\n};\n/**\n * Returns a ParsedCodecInfo object for the default alternate audio playlist if there is\n * a default alternate audio playlist for the provided audio group.\n *\n * @param {Object} master\n * The master playlist\n * @param {string} audioGroupId\n * ID of the audio group for which to find the default codec info\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var codecsFromDefault = function codecsFromDefault(master, audioGroupId) {\n if (!master.mediaGroups.AUDIO || !audioGroupId) {\n return null;\n }\n\n var audioGroup = master.mediaGroups.AUDIO[audioGroupId];\n\n if (!audioGroup) {\n return null;\n }\n\n for (var name in audioGroup) {\n var audioType = audioGroup[name];\n\n if (audioType.default && audioType.playlists) {\n // codec should be the same for all playlists within the audio type\n return parseCodecs(audioType.playlists[0].attributes.CODECS);\n }\n }\n\n return null;\n};\nexport var isVideoCodec = function isVideoCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.video.test(codec.trim().toLowerCase());\n};\nexport var isAudioCodec = function isAudioCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.audio.test(codec.trim().toLowerCase());\n};\nexport var isTextCodec = function isTextCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.text.test(codec.trim().toLowerCase());\n};\nexport var getMimeForCodec = function getMimeForCodec(codecString) {\n if (!codecString || typeof codecString !== 'string') {\n return;\n }\n\n var codecs = codecString.toLowerCase().split(',').map(function (c) {\n return translateLegacyCodec(c.trim());\n }); // default to video type\n\n var type = 'video'; // only change to audio type if the only codec we have is\n // audio\n\n if (codecs.length === 1 && isAudioCodec(codecs[0])) {\n type = 'audio';\n } else if (codecs.length === 1 && isTextCodec(codecs[0])) {\n // text uses application/ for now\n type = 'application';\n } // default the container to mp4\n\n\n var container = 'mp4'; // every codec must be able to go into the container\n // for that container to be the correct one\n\n if (codecs.every(function (c) {\n return regexs.mp4.test(c);\n })) {\n container = 'mp4';\n } else if (codecs.every(function (c) {\n return regexs.webm.test(c);\n })) {\n container = 'webm';\n } else if (codecs.every(function (c) {\n return regexs.ogg.test(c);\n })) {\n container = 'ogg';\n }\n\n return type + \"/\" + container + \";codecs=\\\"\" + codecString + \"\\\"\";\n};\nexport var browserSupportsCodec = function browserSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return window.MediaSource && window.MediaSource.isTypeSupported && window.MediaSource.isTypeSupported(getMimeForCodec(codecString)) || false;\n};\nexport var muxerSupportsCodec = function muxerSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return codecString.toLowerCase().split(',').every(function (codec) {\n codec = codec.trim(); // any match is supported.\n\n for (var i = 0; i < upperMediaTypes.length; i++) {\n var type = upperMediaTypes[i];\n\n if (regexs[\"muxer\" + type].test(codec)) {\n return true;\n }\n }\n\n return false;\n });\n};\nexport var DEFAULT_AUDIO_CODEC = 'mp4a.40.2';\nexport var DEFAULT_VIDEO_CODEC = 'avc1.4d400d';","var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"ckplayer\",style:('width:' + _vm.widthHeigt[0] + 'px;' + 'height:' + _vm.widthHeigt[1] + 'px;')},[_c('div',{attrs:{\"id\":\"video\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CkplayerOnly.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CkplayerOnly.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CkplayerOnly.vue?vue&type=template&id=deab9a64&scoped=true\"\nimport script from \"./CkplayerOnly.vue?vue&type=script&lang=js\"\nexport * from \"./CkplayerOnly.vue?vue&type=script&lang=js\"\nimport style0 from \"./CkplayerOnly.vue?vue&type=style&index=0&id=deab9a64&prod&lang=scss&scoped=true\"\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 \"deab9a64\",\n null\n \n)\n\nexport default component.exports","/*\n * base64.js\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;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? module.exports = factory(global)\n : typeof define === 'function' && define.amd\n ? define(factory) : factory(global)\n}((\n typeof self !== 'undefined' ? self\n : typeof window !== 'undefined' ? window\n : typeof global !== 'undefined' ? global\n: this\n), function(global) {\n 'use strict';\n // existing version for noConflict()\n global = global || {};\n var _Base64 = global.Base64;\n var version = \"2.6.4\";\n // constants\n var b64chars\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var b64tab = function(bin) {\n var t = {};\n for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;\n return t;\n }(b64chars);\n var fromCharCode = String.fromCharCode;\n // encoder stuff\n var cb_utob = function(c) {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))\n + fromCharCode(0x80 | (cc & 0x3f)))\n : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))\n + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))\n + fromCharCode(0x80 | ( cc & 0x3f)));\n } else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))\n + fromCharCode(0x80 | ((cc >>> 12) & 0x3f))\n + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))\n + fromCharCode(0x80 | ( cc & 0x3f)));\n }\n };\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n var utob = function(u) {\n return u.replace(re_utob, cb_utob);\n };\n var cb_encode = function(ccc) {\n var padlen = [0, 2, 1][ccc.length % 3],\n ord = ccc.charCodeAt(0) << 16\n | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)\n | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),\n chars = [\n b64chars.charAt( ord >>> 18),\n b64chars.charAt((ord >>> 12) & 63),\n padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n padlen >= 1 ? '=' : b64chars.charAt(ord & 63)\n ];\n return chars.join('');\n };\n var btoa = global.btoa && typeof global.btoa == 'function'\n ? function(b){ return global.btoa(b) } : function(b) {\n if (b.match(/[^\\x00-\\xFF]/)) throw new RangeError(\n 'The string contains invalid characters.'\n );\n return b.replace(/[\\s\\S]{1,3}/g, cb_encode);\n };\n var _encode = function(u) {\n return btoa(utob(String(u)));\n };\n var mkUriSafe = function (b64) {\n return b64.replace(/[+\\/]/g, function(m0) {\n return m0 == '+' ? '-' : '_';\n }).replace(/=/g, '');\n };\n var encode = function(u, urisafe) {\n return urisafe ? mkUriSafe(_encode(u)) : _encode(u);\n };\n var encodeURI = function(u) { return encode(u, true) };\n var fromUint8Array;\n if (global.Uint8Array) fromUint8Array = function(a, urisafe) {\n // return btoa(fromCharCode.apply(null, a));\n var b64 = '';\n for (var i = 0, l = a.length; i < l; i += 3) {\n var a0 = a[i], a1 = a[i+1], a2 = a[i+2];\n var ord = a0 << 16 | a1 << 8 | a2;\n b64 += b64chars.charAt( ord >>> 18)\n + b64chars.charAt((ord >>> 12) & 63)\n + ( typeof a1 != 'undefined'\n ? b64chars.charAt((ord >>> 6) & 63) : '=')\n + ( typeof a2 != 'undefined'\n ? b64chars.charAt( ord & 63) : '=');\n }\n return urisafe ? mkUriSafe(b64) : b64;\n };\n // decoder stuff\n var re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\n var cb_btou = function(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)),\n offset = cp - 0x10000;\n return (fromCharCode((offset >>> 10) + 0xD800)\n + fromCharCode((offset & 0x3FF) + 0xDC00));\n case 3:\n return fromCharCode(\n ((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2))\n );\n default:\n return fromCharCode(\n ((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1))\n );\n }\n };\n var btou = function(b) {\n return b.replace(re_btou, cb_btou);\n };\n var cb_decode = function(cccc) {\n var len = cccc.length,\n padlen = len % 4,\n n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)\n | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)\n | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0)\n | (len > 3 ? b64tab[cccc.charAt(3)] : 0),\n chars = [\n fromCharCode( n >>> 16),\n fromCharCode((n >>> 8) & 0xff),\n fromCharCode( n & 0xff)\n ];\n chars.length -= [0, 0, 2, 1][padlen];\n return chars.join('');\n };\n var _atob = global.atob && typeof global.atob == 'function'\n ? function(a){ return global.atob(a) } : function(a){\n return a.replace(/\\S{1,4}/g, cb_decode);\n };\n var atob = function(a) {\n return _atob(String(a).replace(/[^A-Za-z0-9\\+\\/]/g, ''));\n };\n var _decode = function(a) { return btou(_atob(a)) };\n var _fromURI = function(a) {\n return String(a).replace(/[-_]/g, function(m0) {\n return m0 == '-' ? '+' : '/'\n }).replace(/[^A-Za-z0-9\\+\\/]/g, '');\n };\n var decode = function(a){\n return _decode(_fromURI(a));\n };\n var toUint8Array;\n if (global.Uint8Array) toUint8Array = function(a) {\n return Uint8Array.from(atob(_fromURI(a)), function(c) {\n return c.charCodeAt(0);\n });\n };\n var noConflict = function() {\n var Base64 = global.Base64;\n global.Base64 = _Base64;\n return Base64;\n };\n // export Base64\n global.Base64 = {\n VERSION: version,\n atob: atob,\n btoa: btoa,\n fromBase64: decode,\n toBase64: encode,\n utob: utob,\n encode: encode,\n encodeURI: encodeURI,\n btou: btou,\n decode: decode,\n noConflict: noConflict,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array\n };\n // if ES5 is available, make Base64.extendString() available\n if (typeof Object.defineProperty === 'function') {\n var noEnum = function(v){\n return {value:v,enumerable:false,writable:true,configurable:true};\n };\n global.Base64.extendString = function () {\n Object.defineProperty(\n String.prototype, 'fromBase64', noEnum(function () {\n return decode(this)\n }));\n Object.defineProperty(\n String.prototype, 'toBase64', noEnum(function (urisafe) {\n return encode(this, urisafe)\n }));\n Object.defineProperty(\n String.prototype, 'toBase64URI', noEnum(function () {\n return encode(this, true)\n }));\n };\n }\n //\n // export Base64 to the namespace\n //\n if (global['Meteor']) { // Meteor.js\n Base64 = global.Base64;\n }\n // module.exports and AMD are mutually exclusive.\n // module.exports has precedence.\n if (typeof module !== 'undefined' && module.exports) {\n module.exports.Base64 = global.Base64;\n }\n else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], function(){ return global.Base64 });\n }\n // that's it!\n return {Base64: global.Base64}\n}));\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\n\nvar window = require('global/window');\n\nvar vttjs = module.exports = {\n WebVTT: require(\"./vtt.js\"),\n VTTCue: require(\"./vttcue.js\"),\n VTTRegion: require(\"./vttregion.js\")\n};\n\nwindow.vttjs = vttjs;\nwindow.WebVTT = vttjs.WebVTT;\n\nvar cueShim = vttjs.VTTCue;\nvar regionShim = vttjs.VTTRegion;\nvar nativeVTTCue = window.VTTCue;\nvar nativeVTTRegion = window.VTTRegion;\n\nvttjs.shim = function() {\n window.VTTCue = cueShim;\n window.VTTRegion = regionShim;\n};\n\nvttjs.restore = function() {\n window.VTTCue = nativeVTTCue;\n window.VTTRegion = nativeVTTRegion;\n};\n\nif (!window.VTTCue) {\n vttjs.shim();\n}\n","import { toUint8, bytesMatch } from './byte-helpers.js';\nvar ID3 = toUint8([0x49, 0x44, 0x33]);\nexport var getId3Size = function getId3Size(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n var flags = bytes[offset + 5];\n var returnSize = bytes[offset + 6] << 21 | bytes[offset + 7] << 14 | bytes[offset + 8] << 7 | bytes[offset + 9];\n var footerPresent = (flags & 16) >> 4;\n\n if (footerPresent) {\n return returnSize + 20;\n }\n\n return returnSize + 10;\n};\nexport var getId3Offset = function getId3Offset(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n\n if (bytes.length - offset < 10 || !bytesMatch(bytes, ID3, {\n offset: offset\n })) {\n return offset;\n }\n\n offset += getId3Size(bytes, offset); // recursive check for id3 tags as some files\n // have multiple ID3 tag sections even though\n // they should not.\n\n return getId3Offset(bytes, offset);\n};","\"use strict\";\n\nvar window = require(\"global/window\");\n\nvar _extends = require(\"@babel/runtime/helpers/extends\");\n\nvar isFunction = require('is-function');\n\ncreateXHR.httpHandler = require('./http-handler.js');\n/**\n * @license\n * slighly modified parse-headers 2.0.2 \n * Copyright (c) 2014 David Björklund\n * Available under the MIT license\n * \n */\n\nvar parseHeaders = function parseHeaders(headers) {\n var result = {};\n\n if (!headers) {\n return result;\n }\n\n headers.trim().split('\\n').forEach(function (row) {\n var index = row.indexOf(':');\n var key = row.slice(0, index).trim().toLowerCase();\n var value = row.slice(index + 1).trim();\n\n if (typeof result[key] === 'undefined') {\n result[key] = value;\n } else if (Array.isArray(result[key])) {\n result[key].push(value);\n } else {\n result[key] = [result[key], value];\n }\n });\n return result;\n};\n\nmodule.exports = createXHR; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop;\ncreateXHR.XDomainRequest = \"withCredentials\" in new createXHR.XMLHttpRequest() ? createXHR.XMLHttpRequest : window.XDomainRequest;\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function (method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function (uri, options, callback) {\n options = initParams(uri, options, callback);\n options.method = method.toUpperCase();\n return _createXHR(options);\n };\n});\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i]);\n }\n}\n\nfunction isEmpty(obj) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) return false;\n }\n\n return true;\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri;\n\n if (isFunction(options)) {\n callback = options;\n\n if (typeof uri === \"string\") {\n params = {\n uri: uri\n };\n }\n } else {\n params = _extends({}, options, {\n uri: uri\n });\n }\n\n params.callback = callback;\n return params;\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback);\n return _createXHR(options);\n}\n\nfunction _createXHR(options) {\n if (typeof options.callback === \"undefined\") {\n throw new Error(\"callback argument missing\");\n }\n\n var called = false;\n\n var callback = function cbOnce(err, response, body) {\n if (!called) {\n called = true;\n options.callback(err, response, body);\n }\n };\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n setTimeout(loadFunc, 0);\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined;\n\n if (xhr.response) {\n body = xhr.response;\n } else {\n body = xhr.responseText || getXml(xhr);\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body);\n } catch (e) {}\n }\n\n return body;\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer);\n\n if (!(evt instanceof Error)) {\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\"));\n }\n\n evt.statusCode = 0;\n return callback(evt, failureResponse);\n } // will load the data & process the response in a special response object\n\n\n function loadFunc() {\n if (aborted) return;\n var status;\n clearTimeout(timeoutTimer);\n\n if (options.useXDR && xhr.status === undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200;\n } else {\n status = xhr.status === 1223 ? 204 : xhr.status;\n }\n\n var response = failureResponse;\n var err = null;\n\n if (status !== 0) {\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n };\n\n if (xhr.getAllResponseHeaders) {\n //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders());\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\");\n }\n\n return callback(err, response, response.body);\n }\n\n var xhr = options.xhr || null;\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest();\n } else {\n xhr = new createXHR.XMLHttpRequest();\n }\n }\n\n var key;\n var aborted;\n var uri = xhr.url = options.uri || options.url;\n var method = xhr.method = options.method || \"GET\";\n var body = options.body || options.data;\n var headers = xhr.headers = options.headers || {};\n var sync = !!options.sync;\n var isJson = false;\n var timeoutTimer;\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n };\n\n if (\"json\" in options && options.json !== false) {\n isJson = true;\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n body = JSON.stringify(options.json === true ? body : options.json);\n }\n }\n\n xhr.onreadystatechange = readystatechange;\n xhr.onload = loadFunc;\n xhr.onerror = errorFunc; // IE9 must have onprogress be set to a unique function.\n\n xhr.onprogress = function () {// IE must die\n };\n\n xhr.onabort = function () {\n aborted = true;\n };\n\n xhr.ontimeout = errorFunc;\n xhr.open(method, uri, !sync, options.username, options.password); //has to be after open\n\n if (!sync) {\n xhr.withCredentials = !!options.withCredentials;\n } // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n\n\n if (!sync && options.timeout > 0) {\n timeoutTimer = setTimeout(function () {\n if (aborted) return;\n aborted = true; //IE9 may still call readystatechange\n\n xhr.abort(\"timeout\");\n var e = new Error(\"XMLHttpRequest timeout\");\n e.code = \"ETIMEDOUT\";\n errorFunc(e);\n }, options.timeout);\n }\n\n if (xhr.setRequestHeader) {\n for (key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\");\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType;\n }\n\n if (\"beforeSend\" in options && typeof options.beforeSend === \"function\") {\n options.beforeSend(xhr);\n } // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n\n\n xhr.send(body || null);\n return xhr;\n}\n\nfunction getXml(xhr) {\n // xhr.responseXML will throw Exception \"InvalidStateError\" or \"DOMException\"\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\n try {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML;\n }\n\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\";\n\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML;\n }\n } catch (e) {}\n\n return null;\n}\n\nfunction noop() {}","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import URLToolkit from 'url-toolkit';\nimport window from 'global/window';\nvar DEFAULT_LOCATION = 'http://example.com';\n\nvar resolveUrl = function resolveUrl(baseUrl, relativeUrl) {\n // return early if we don't need to resolve\n if (/^[a-z]+:/i.test(relativeUrl)) {\n return relativeUrl;\n } // if baseUrl is a data URI, ignore it and resolve everything relative to window.location\n\n\n if (/^data:/.test(baseUrl)) {\n baseUrl = window.location && window.location.href || '';\n } // IE11 supports URL but not the URL constructor\n // feature detect the behavior we want\n\n\n var nativeURL = typeof window.URL === 'function';\n var protocolLess = /^\\/\\//.test(baseUrl); // remove location if window.location isn't available (i.e. we're in node)\n // and if baseUrl isn't an absolute url\n\n var removeLocation = !window.location && !/\\/\\//i.test(baseUrl); // if the base URL is relative then combine with the current location\n\n if (nativeURL) {\n baseUrl = new window.URL(baseUrl, window.location || DEFAULT_LOCATION);\n } else if (!/\\/\\//i.test(baseUrl)) {\n baseUrl = URLToolkit.buildAbsoluteURL(window.location && window.location.href || '', baseUrl);\n }\n\n if (nativeURL) {\n var newUrl = new URL(relativeUrl, baseUrl); // if we're a protocol-less url, remove the protocol\n // and if we're location-less, remove the location\n // otherwise, return the url unmodified\n\n if (removeLocation) {\n return newUrl.href.slice(DEFAULT_LOCATION.length);\n } else if (protocolLess) {\n return newUrl.href.slice(newUrl.protocol.length);\n }\n\n return newUrl.href;\n }\n\n return URLToolkit.buildAbsoluteURL(baseUrl, relativeUrl);\n};\n\nexport default resolveUrl;","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\nvar\n ONE_SECOND_IN_TS = 90000, // 90kHz clock\n secondsToVideoTs,\n secondsToAudioTs,\n videoTsToSeconds,\n audioTsToSeconds,\n audioTsToVideoTs,\n videoTsToAudioTs,\n metadataTsToSeconds;\n\nsecondsToVideoTs = function(seconds) {\n return seconds * ONE_SECOND_IN_TS;\n};\n\nsecondsToAudioTs = function(seconds, sampleRate) {\n return seconds * sampleRate;\n};\n\nvideoTsToSeconds = function(timestamp) {\n return timestamp / ONE_SECOND_IN_TS;\n};\n\naudioTsToSeconds = function(timestamp, sampleRate) {\n return timestamp / sampleRate;\n};\n\naudioTsToVideoTs = function(timestamp, sampleRate) {\n return secondsToVideoTs(audioTsToSeconds(timestamp, sampleRate));\n};\n\nvideoTsToAudioTs = function(timestamp, sampleRate) {\n return secondsToAudioTs(videoTsToSeconds(timestamp), sampleRate);\n};\n\n/**\n * Adjust ID3 tag or caption timing information by the timeline pts values\n * (if keepOriginalTimestamps is false) and convert to seconds\n */\nmetadataTsToSeconds = function(timestamp, timelineStartPts, keepOriginalTimestamps) {\n return videoTsToSeconds(keepOriginalTimestamps ? timestamp : timestamp - timelineStartPts);\n};\n\nmodule.exports = {\n ONE_SECOND_IN_TS: ONE_SECOND_IN_TS,\n secondsToVideoTs: secondsToVideoTs,\n secondsToAudioTs: secondsToAudioTs,\n videoTsToSeconds: videoTsToSeconds,\n audioTsToSeconds: audioTsToSeconds,\n audioTsToVideoTs: audioTsToVideoTs,\n videoTsToAudioTs: videoTsToAudioTs,\n metadataTsToSeconds: metadataTsToSeconds\n};\n","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Loops through all supported media groups in master and calls the provided\n * callback for each group\n *\n * @param {Object} master\n * The parsed master manifest object\n * @param {string[]} groups\n * The media groups to call the callback for\n * @param {Function} callback\n * Callback to call for each media group\n */\nexport var forEachMediaGroup = function forEachMediaGroup(master, groups, callback) {\n groups.forEach(function (mediaType) {\n for (var groupKey in master.mediaGroups[mediaType]) {\n for (var labelKey in master.mediaGroups[mediaType][groupKey]) {\n var mediaProperties = master.mediaGroups[mediaType][groupKey][labelKey];\n callback(mediaProperties, mediaType, groupKey, labelKey);\n }\n }\n });\n};","/*! @name mpd-parser @version 0.22.1 @license Apache-2.0 */\nimport resolveUrl from '@videojs/vhs-utils/es/resolve-url';\nimport window from 'global/window';\nimport { forEachMediaGroup } from '@videojs/vhs-utils/es/media-groups';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array';\nimport { DOMParser } from '@xmldom/xmldom';\n\nvar version = \"0.22.1\";\n\nvar isObject = function isObject(obj) {\n return !!obj && typeof obj === 'object';\n};\n\nvar merge = function merge() {\n for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) {\n objects[_key] = arguments[_key];\n }\n\n return objects.reduce(function (result, source) {\n if (typeof source !== 'object') {\n return result;\n }\n\n Object.keys(source).forEach(function (key) {\n if (Array.isArray(result[key]) && Array.isArray(source[key])) {\n result[key] = result[key].concat(source[key]);\n } else if (isObject(result[key]) && isObject(source[key])) {\n result[key] = merge(result[key], source[key]);\n } else {\n result[key] = source[key];\n }\n });\n return result;\n }, {});\n};\nvar values = function values(o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n};\n\nvar range = function range(start, end) {\n var result = [];\n\n for (var i = start; i < end; i++) {\n result.push(i);\n }\n\n return result;\n};\nvar flatten = function flatten(lists) {\n return lists.reduce(function (x, y) {\n return x.concat(y);\n }, []);\n};\nvar from = function from(list) {\n if (!list.length) {\n return [];\n }\n\n var result = [];\n\n for (var i = 0; i < list.length; i++) {\n result.push(list[i]);\n }\n\n return result;\n};\nvar findIndexes = function findIndexes(l, key) {\n return l.reduce(function (a, e, i) {\n if (e[key]) {\n a.push(i);\n }\n\n return a;\n }, []);\n};\n/**\n * Returns the first index that satisfies the matching function, or -1 if not found.\n *\n * Only necessary because of IE11 support.\n *\n * @param {Array} list - the list to search through\n * @param {Function} matchingFunction - the matching function\n *\n * @return {number} the matching index or -1 if not found\n */\n\nvar findIndex = function findIndex(list, matchingFunction) {\n for (var i = 0; i < list.length; i++) {\n if (matchingFunction(list[i])) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Returns a union of the included lists provided each element can be identified by a key.\n *\n * @param {Array} list - list of lists to get the union of\n * @param {Function} keyFunction - the function to use as a key for each element\n *\n * @return {Array} the union of the arrays\n */\n\nvar union = function union(lists, keyFunction) {\n return values(lists.reduce(function (acc, list) {\n list.forEach(function (el) {\n acc[keyFunction(el)] = el;\n });\n return acc;\n }, {}));\n};\n\nvar errors = {\n INVALID_NUMBER_OF_PERIOD: 'INVALID_NUMBER_OF_PERIOD',\n DASH_EMPTY_MANIFEST: 'DASH_EMPTY_MANIFEST',\n DASH_INVALID_XML: 'DASH_INVALID_XML',\n NO_BASE_URL: 'NO_BASE_URL',\n MISSING_SEGMENT_INFORMATION: 'MISSING_SEGMENT_INFORMATION',\n SEGMENT_TIME_UNSPECIFIED: 'SEGMENT_TIME_UNSPECIFIED',\n UNSUPPORTED_UTC_TIMING_SCHEME: 'UNSUPPORTED_UTC_TIMING_SCHEME'\n};\n\n/**\n * @typedef {Object} SingleUri\n * @property {string} uri - relative location of segment\n * @property {string} resolvedUri - resolved location of segment\n * @property {Object} byterange - Object containing information on how to make byte range\n * requests following byte-range-spec per RFC2616.\n * @property {String} byterange.length - length of range request\n * @property {String} byterange.offset - byte offset of range request\n *\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1\n */\n\n/**\n * Converts a URLType node (5.3.9.2.3 Table 13) to a segment object\n * that conforms to how m3u8-parser is structured\n *\n * @see https://github.com/videojs/m3u8-parser\n *\n * @param {string} baseUrl - baseUrl provided by nodes\n * @param {string} source - source url for segment\n * @param {string} range - optional range used for range calls,\n * follows RFC 2616, Clause 14.35.1\n * @return {SingleUri} full segment information transformed into a format similar\n * to m3u8-parser\n */\n\nvar urlTypeToSegment = function urlTypeToSegment(_ref) {\n var _ref$baseUrl = _ref.baseUrl,\n baseUrl = _ref$baseUrl === void 0 ? '' : _ref$baseUrl,\n _ref$source = _ref.source,\n source = _ref$source === void 0 ? '' : _ref$source,\n _ref$range = _ref.range,\n range = _ref$range === void 0 ? '' : _ref$range,\n _ref$indexRange = _ref.indexRange,\n indexRange = _ref$indexRange === void 0 ? '' : _ref$indexRange;\n var segment = {\n uri: source,\n resolvedUri: resolveUrl(baseUrl || '', source)\n };\n\n if (range || indexRange) {\n var rangeStr = range ? range : indexRange;\n var ranges = rangeStr.split('-'); // default to parsing this as a BigInt if possible\n\n var startRange = window.BigInt ? window.BigInt(ranges[0]) : parseInt(ranges[0], 10);\n var endRange = window.BigInt ? window.BigInt(ranges[1]) : parseInt(ranges[1], 10); // convert back to a number if less than MAX_SAFE_INTEGER\n\n if (startRange < Number.MAX_SAFE_INTEGER && typeof startRange === 'bigint') {\n startRange = Number(startRange);\n }\n\n if (endRange < Number.MAX_SAFE_INTEGER && typeof endRange === 'bigint') {\n endRange = Number(endRange);\n }\n\n var length;\n\n if (typeof endRange === 'bigint' || typeof startRange === 'bigint') {\n length = window.BigInt(endRange) - window.BigInt(startRange) + window.BigInt(1);\n } else {\n length = endRange - startRange + 1;\n }\n\n if (typeof length === 'bigint' && length < Number.MAX_SAFE_INTEGER) {\n length = Number(length);\n } // byterange should be inclusive according to\n // RFC 2616, Clause 14.35.1\n\n\n segment.byterange = {\n length: length,\n offset: startRange\n };\n }\n\n return segment;\n};\nvar byteRangeToString = function byteRangeToString(byterange) {\n // `endRange` is one less than `offset + length` because the HTTP range\n // header uses inclusive ranges\n var endRange;\n\n if (typeof byterange.offset === 'bigint' || typeof byterange.length === 'bigint') {\n endRange = window.BigInt(byterange.offset) + window.BigInt(byterange.length) - window.BigInt(1);\n } else {\n endRange = byterange.offset + byterange.length - 1;\n }\n\n return byterange.offset + \"-\" + endRange;\n};\n\n/**\n * parse the end number attribue that can be a string\n * number, or undefined.\n *\n * @param {string|number|undefined} endNumber\n * The end number attribute.\n *\n * @return {number|null}\n * The result of parsing the end number.\n */\n\nvar parseEndNumber = function parseEndNumber(endNumber) {\n if (endNumber && typeof endNumber !== 'number') {\n endNumber = parseInt(endNumber, 10);\n }\n\n if (isNaN(endNumber)) {\n return null;\n }\n\n return endNumber;\n};\n/**\n * Functions for calculating the range of available segments in static and dynamic\n * manifests.\n */\n\n\nvar segmentRange = {\n /**\n * Returns the entire range of available segments for a static MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n static: function _static(attributes) {\n var duration = attributes.duration,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n sourceDuration = attributes.sourceDuration,\n periodDuration = attributes.periodDuration;\n var endNumber = parseEndNumber(attributes.endNumber);\n var segmentDuration = duration / timescale;\n\n if (typeof endNumber === 'number') {\n return {\n start: 0,\n end: endNumber\n };\n }\n\n if (typeof periodDuration === 'number') {\n return {\n start: 0,\n end: periodDuration / segmentDuration\n };\n }\n\n return {\n start: 0,\n end: sourceDuration / segmentDuration\n };\n },\n\n /**\n * Returns the current live window range of available segments for a dynamic MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n dynamic: function dynamic(attributes) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n duration = attributes.duration,\n _attributes$periodSta = attributes.periodStart,\n periodStart = _attributes$periodSta === void 0 ? 0 : _attributes$periodSta,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp,\n _attributes$timeShift = attributes.timeShiftBufferDepth,\n timeShiftBufferDepth = _attributes$timeShift === void 0 ? Infinity : _attributes$timeShift;\n var endNumber = parseEndNumber(attributes.endNumber); // clientOffset is passed in at the top level of mpd-parser and is an offset calculated\n // after retrieving UTC server time.\n\n var now = (NOW + clientOffset) / 1000; // WC stands for Wall Clock.\n // Convert the period start time to EPOCH.\n\n var periodStartWC = availabilityStartTime + periodStart; // Period end in EPOCH is manifest's retrieval time + time until next update.\n\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n var segmentCount = Math.ceil(periodDuration * timescale / duration);\n var availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);\n var availableEnd = Math.floor((now - periodStartWC) * timescale / duration);\n return {\n start: Math.max(0, availableStart),\n end: typeof endNumber === 'number' ? endNumber : Math.min(segmentCount, availableEnd)\n };\n }\n};\n/**\n * Maps a range of numbers to objects with information needed to build the corresponding\n * segment list\n *\n * @name toSegmentsCallback\n * @function\n * @param {number} number\n * Number of the segment\n * @param {number} index\n * Index of the number in the range list\n * @return {{ number: Number, duration: Number, timeline: Number, time: Number }}\n * Object with segment timing and duration info\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping a range of numbers to\n * information needed to build the segment list.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {toSegmentsCallback}\n * Callback map function\n */\n\nvar toSegments = function toSegments(attributes) {\n return function (number) {\n var duration = attributes.duration,\n _attributes$timescale3 = attributes.timescale,\n timescale = _attributes$timescale3 === void 0 ? 1 : _attributes$timescale3,\n periodStart = attributes.periodStart,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb;\n return {\n number: startNumber + number,\n duration: duration / timescale,\n timeline: periodStart,\n time: number * duration\n };\n };\n};\n/**\n * Returns a list of objects containing segment timing and duration info used for\n * building the list of segments. This uses the @duration attribute specified\n * in the MPD manifest to derive the range of segments.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseByDuration = function parseByDuration(attributes) {\n var type = attributes.type,\n duration = attributes.duration,\n _attributes$timescale4 = attributes.timescale,\n timescale = _attributes$timescale4 === void 0 ? 1 : _attributes$timescale4,\n periodDuration = attributes.periodDuration,\n sourceDuration = attributes.sourceDuration;\n\n var _segmentRange$type = segmentRange[type](attributes),\n start = _segmentRange$type.start,\n end = _segmentRange$type.end;\n\n var segments = range(start, end).map(toSegments(attributes));\n\n if (type === 'static') {\n var index = segments.length - 1; // section is either a period or the full source\n\n var sectionDuration = typeof periodDuration === 'number' ? periodDuration : sourceDuration; // final segment may be less than full segment duration\n\n segments[index].duration = sectionDuration - duration / timescale * index;\n }\n\n return segments;\n};\n\n/**\n * Translates SegmentBase into a set of segments.\n * (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @return {Object.} list of segments\n */\n\nvar segmentsFromBase = function segmentsFromBase(attributes) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ,\n sourceDuration = attributes.sourceDuration,\n _attributes$indexRang = attributes.indexRange,\n indexRange = _attributes$indexRang === void 0 ? '' : _attributes$indexRang,\n periodStart = attributes.periodStart,\n presentationTime = attributes.presentationTime,\n _attributes$number = attributes.number,\n number = _attributes$number === void 0 ? 0 : _attributes$number,\n duration = attributes.duration; // base url is required for SegmentBase to work, per spec (Section 5.3.9.2.1)\n\n if (!baseUrl) {\n throw new Error(errors.NO_BASE_URL);\n }\n\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: baseUrl,\n indexRange: indexRange\n });\n segment.map = initSegment; // If there is a duration, use it, otherwise use the given duration of the source\n // (since SegmentBase is only for one total segment)\n\n if (duration) {\n var segmentTimeInfo = parseByDuration(attributes);\n\n if (segmentTimeInfo.length) {\n segment.duration = segmentTimeInfo[0].duration;\n segment.timeline = segmentTimeInfo[0].timeline;\n }\n } else if (sourceDuration) {\n segment.duration = sourceDuration;\n segment.timeline = periodStart;\n } // If presentation time is provided, these segments are being generated by SIDX\n // references, and should use the time provided. For the general case of SegmentBase,\n // there should only be one segment in the period, so its presentation time is the same\n // as its period start.\n\n\n segment.presentationTime = presentationTime || periodStart;\n segment.number = number;\n return [segment];\n};\n/**\n * Given a playlist, a sidx box, and a baseUrl, update the segment list of the playlist\n * according to the sidx information given.\n *\n * playlist.sidx has metadadata about the sidx where-as the sidx param\n * is the parsed sidx box itself.\n *\n * @param {Object} playlist the playlist to update the sidx information for\n * @param {Object} sidx the parsed sidx box\n * @return {Object} the playlist object with the updated sidx information\n */\n\nvar addSidxSegmentsToPlaylist$1 = function addSidxSegmentsToPlaylist(playlist, sidx, baseUrl) {\n // Retain init segment information\n var initSegment = playlist.sidx.map ? playlist.sidx.map : null; // Retain source duration from initial main manifest parsing\n\n var sourceDuration = playlist.sidx.duration; // Retain source timeline\n\n var timeline = playlist.timeline || 0;\n var sidxByteRange = playlist.sidx.byterange;\n var sidxEnd = sidxByteRange.offset + sidxByteRange.length; // Retain timescale of the parsed sidx\n\n var timescale = sidx.timescale; // referenceType 1 refers to other sidx boxes\n\n var mediaReferences = sidx.references.filter(function (r) {\n return r.referenceType !== 1;\n });\n var segments = [];\n var type = playlist.endList ? 'static' : 'dynamic';\n var periodStart = playlist.sidx.timeline;\n var presentationTime = periodStart;\n var number = playlist.mediaSequence || 0; // firstOffset is the offset from the end of the sidx box\n\n var startIndex; // eslint-disable-next-line\n\n if (typeof sidx.firstOffset === 'bigint') {\n startIndex = window.BigInt(sidxEnd) + sidx.firstOffset;\n } else {\n startIndex = sidxEnd + sidx.firstOffset;\n }\n\n for (var i = 0; i < mediaReferences.length; i++) {\n var reference = sidx.references[i]; // size of the referenced (sub)segment\n\n var size = reference.referencedSize; // duration of the referenced (sub)segment, in the timescale\n // this will be converted to seconds when generating segments\n\n var duration = reference.subsegmentDuration; // should be an inclusive range\n\n var endIndex = void 0; // eslint-disable-next-line\n\n if (typeof startIndex === 'bigint') {\n endIndex = startIndex + window.BigInt(size) - window.BigInt(1);\n } else {\n endIndex = startIndex + size - 1;\n }\n\n var indexRange = startIndex + \"-\" + endIndex;\n var attributes = {\n baseUrl: baseUrl,\n timescale: timescale,\n timeline: timeline,\n periodStart: periodStart,\n presentationTime: presentationTime,\n number: number,\n duration: duration,\n sourceDuration: sourceDuration,\n indexRange: indexRange,\n type: type\n };\n var segment = segmentsFromBase(attributes)[0];\n\n if (initSegment) {\n segment.map = initSegment;\n }\n\n segments.push(segment);\n\n if (typeof startIndex === 'bigint') {\n startIndex += window.BigInt(size);\n } else {\n startIndex += size;\n }\n\n presentationTime += duration / timescale;\n number++;\n }\n\n playlist.segments = segments;\n return playlist;\n};\n\nvar SUPPORTED_MEDIA_TYPES = ['AUDIO', 'SUBTITLES']; // allow one 60fps frame as leniency (arbitrarily chosen)\n\nvar TIME_FUDGE = 1 / 60;\n/**\n * Given a list of timelineStarts, combines, dedupes, and sorts them.\n *\n * @param {TimelineStart[]} timelineStarts - list of timeline starts\n *\n * @return {TimelineStart[]} the combined and deduped timeline starts\n */\n\nvar getUniqueTimelineStarts = function getUniqueTimelineStarts(timelineStarts) {\n return union(timelineStarts, function (_ref) {\n var timeline = _ref.timeline;\n return timeline;\n }).sort(function (a, b) {\n return a.timeline > b.timeline ? 1 : -1;\n });\n};\n/**\n * Finds the playlist with the matching NAME attribute.\n *\n * @param {Array} playlists - playlists to search through\n * @param {string} name - the NAME attribute to search for\n *\n * @return {Object|null} the matching playlist object, or null\n */\n\nvar findPlaylistWithName = function findPlaylistWithName(playlists, name) {\n for (var i = 0; i < playlists.length; i++) {\n if (playlists[i].attributes.NAME === name) {\n return playlists[i];\n }\n }\n\n return null;\n};\n/**\n * Gets a flattened array of media group playlists.\n *\n * @param {Object} manifest - the main manifest object\n *\n * @return {Array} the media group playlists\n */\n\nvar getMediaGroupPlaylists = function getMediaGroupPlaylists(manifest) {\n var mediaGroupPlaylists = [];\n forEachMediaGroup(manifest, SUPPORTED_MEDIA_TYPES, function (properties, type, group, label) {\n mediaGroupPlaylists = mediaGroupPlaylists.concat(properties.playlists || []);\n });\n return mediaGroupPlaylists;\n};\n/**\n * Updates the playlist's media sequence numbers.\n *\n * @param {Object} config - options object\n * @param {Object} config.playlist - the playlist to update\n * @param {number} config.mediaSequence - the mediaSequence number to start with\n */\n\nvar updateMediaSequenceForPlaylist = function updateMediaSequenceForPlaylist(_ref2) {\n var playlist = _ref2.playlist,\n mediaSequence = _ref2.mediaSequence;\n playlist.mediaSequence = mediaSequence;\n playlist.segments.forEach(function (segment, index) {\n segment.number = playlist.mediaSequence + index;\n });\n};\n/**\n * Updates the media and discontinuity sequence numbers of newPlaylists given oldPlaylists\n * and a complete list of timeline starts.\n *\n * If no matching playlist is found, only the discontinuity sequence number of the playlist\n * will be updated.\n *\n * Since early available timelines are not supported, at least one segment must be present.\n *\n * @param {Object} config - options object\n * @param {Object[]} oldPlaylists - the old playlists to use as a reference\n * @param {Object[]} newPlaylists - the new playlists to update\n * @param {Object} timelineStarts - all timelineStarts seen in the stream to this point\n */\n\nvar updateSequenceNumbers = function updateSequenceNumbers(_ref3) {\n var oldPlaylists = _ref3.oldPlaylists,\n newPlaylists = _ref3.newPlaylists,\n timelineStarts = _ref3.timelineStarts;\n newPlaylists.forEach(function (playlist) {\n playlist.discontinuitySequence = findIndex(timelineStarts, function (_ref4) {\n var timeline = _ref4.timeline;\n return timeline === playlist.timeline;\n }); // Playlists NAMEs come from DASH Representation IDs, which are mandatory\n // (see ISO_23009-1-2012 5.3.5.2).\n //\n // If the same Representation existed in a prior Period, it will retain the same NAME.\n\n var oldPlaylist = findPlaylistWithName(oldPlaylists, playlist.attributes.NAME);\n\n if (!oldPlaylist) {\n // Since this is a new playlist, the media sequence values can start from 0 without\n // consequence.\n return;\n } // TODO better support for live SIDX\n //\n // As of this writing, mpd-parser does not support multiperiod SIDX (in live or VOD).\n // This is evident by a playlist only having a single SIDX reference. In a multiperiod\n // playlist there would need to be multiple SIDX references. In addition, live SIDX is\n // not supported when the SIDX properties change on refreshes.\n //\n // In the future, if support needs to be added, the merging logic here can be called\n // after SIDX references are resolved. For now, exit early to prevent exceptions being\n // thrown due to undefined references.\n\n\n if (playlist.sidx) {\n return;\n } // Since we don't yet support early available timelines, we don't need to support\n // playlists with no segments.\n\n\n var firstNewSegment = playlist.segments[0];\n var oldMatchingSegmentIndex = findIndex(oldPlaylist.segments, function (oldSegment) {\n return Math.abs(oldSegment.presentationTime - firstNewSegment.presentationTime) < TIME_FUDGE;\n }); // No matching segment from the old playlist means the entire playlist was refreshed.\n // In this case the media sequence should account for this update, and the new segments\n // should be marked as discontinuous from the prior content, since the last prior\n // timeline was removed.\n\n if (oldMatchingSegmentIndex === -1) {\n updateMediaSequenceForPlaylist({\n playlist: playlist,\n mediaSequence: oldPlaylist.mediaSequence + oldPlaylist.segments.length\n });\n playlist.segments[0].discontinuity = true;\n playlist.discontinuityStarts.unshift(0); // No matching segment does not necessarily mean there's missing content.\n //\n // If the new playlist's timeline is the same as the last seen segment's timeline,\n // then a discontinuity can be added to identify that there's potentially missing\n // content. If there's no missing content, the discontinuity should still be rather\n // harmless. It's possible that if segment durations are accurate enough, that the\n // existence of a gap can be determined using the presentation times and durations,\n // but if the segment timing info is off, it may introduce more problems than simply\n // adding the discontinuity.\n //\n // If the new playlist's timeline is different from the last seen segment's timeline,\n // then a discontinuity can be added to identify that this is the first seen segment\n // of a new timeline. However, the logic at the start of this function that\n // determined the disconinuity sequence by timeline index is now off by one (the\n // discontinuity of the newest timeline hasn't yet fallen off the manifest...since\n // we added it), so the disconinuity sequence must be decremented.\n //\n // A period may also have a duration of zero, so the case of no segments is handled\n // here even though we don't yet support early available periods.\n\n if (!oldPlaylist.segments.length && playlist.timeline > oldPlaylist.timeline || oldPlaylist.segments.length && playlist.timeline > oldPlaylist.segments[oldPlaylist.segments.length - 1].timeline) {\n playlist.discontinuitySequence--;\n }\n\n return;\n } // If the first segment matched with a prior segment on a discontinuity (it's matching\n // on the first segment of a period), then the discontinuitySequence shouldn't be the\n // timeline's matching one, but instead should be the one prior, and the first segment\n // of the new manifest should be marked with a discontinuity.\n //\n // The reason for this special case is that discontinuity sequence shows how many\n // discontinuities have fallen off of the playlist, and discontinuities are marked on\n // the first segment of a new \"timeline.\" Because of this, while DASH will retain that\n // Period while the \"timeline\" exists, HLS keeps track of it via the discontinuity\n // sequence, and that first segment is an indicator, but can be removed before that\n // timeline is gone.\n\n\n var oldMatchingSegment = oldPlaylist.segments[oldMatchingSegmentIndex];\n\n if (oldMatchingSegment.discontinuity && !firstNewSegment.discontinuity) {\n firstNewSegment.discontinuity = true;\n playlist.discontinuityStarts.unshift(0);\n playlist.discontinuitySequence--;\n }\n\n updateMediaSequenceForPlaylist({\n playlist: playlist,\n mediaSequence: oldPlaylist.segments[oldMatchingSegmentIndex].number\n });\n });\n};\n/**\n * Given an old parsed manifest object and a new parsed manifest object, updates the\n * sequence and timing values within the new manifest to ensure that it lines up with the\n * old.\n *\n * @param {Array} oldManifest - the old main manifest object\n * @param {Array} newManifest - the new main manifest object\n *\n * @return {Object} the updated new manifest object\n */\n\nvar positionManifestOnTimeline = function positionManifestOnTimeline(_ref5) {\n var oldManifest = _ref5.oldManifest,\n newManifest = _ref5.newManifest;\n // Starting from v4.1.2 of the IOP, section 4.4.3.3 states:\n //\n // \"MPD@availabilityStartTime and Period@start shall not be changed over MPD updates.\"\n //\n // This was added from https://github.com/Dash-Industry-Forum/DASH-IF-IOP/issues/160\n //\n // Because of this change, and the difficulty of supporting periods with changing start\n // times, periods with changing start times are not supported. This makes the logic much\n // simpler, since periods with the same start time can be considerred the same period\n // across refreshes.\n //\n // To give an example as to the difficulty of handling periods where the start time may\n // change, if a single period manifest is refreshed with another manifest with a single\n // period, and both the start and end times are increased, then the only way to determine\n // if it's a new period or an old one that has changed is to look through the segments of\n // each playlist and determine the presentation time bounds to find a match. In addition,\n // if the period start changed to exceed the old period end, then there would be no\n // match, and it would not be possible to determine whether the refreshed period is a new\n // one or the old one.\n var oldPlaylists = oldManifest.playlists.concat(getMediaGroupPlaylists(oldManifest));\n var newPlaylists = newManifest.playlists.concat(getMediaGroupPlaylists(newManifest)); // Save all seen timelineStarts to the new manifest. Although this potentially means that\n // there's a \"memory leak\" in that it will never stop growing, in reality, only a couple\n // of properties are saved for each seen Period. Even long running live streams won't\n // generate too many Periods, unless the stream is watched for decades. In the future,\n // this can be optimized by mapping to discontinuity sequence numbers for each timeline,\n // but it may not become an issue, and the additional info can be useful for debugging.\n\n newManifest.timelineStarts = getUniqueTimelineStarts([oldManifest.timelineStarts, newManifest.timelineStarts]);\n updateSequenceNumbers({\n oldPlaylists: oldPlaylists,\n newPlaylists: newPlaylists,\n timelineStarts: newManifest.timelineStarts\n });\n return newManifest;\n};\n\nvar generateSidxKey = function generateSidxKey(sidx) {\n return sidx && sidx.uri + '-' + byteRangeToString(sidx.byterange);\n};\n\nvar mergeDiscontiguousPlaylists = function mergeDiscontiguousPlaylists(playlists) {\n var mergedPlaylists = values(playlists.reduce(function (acc, playlist) {\n // assuming playlist IDs are the same across periods\n // TODO: handle multiperiod where representation sets are not the same\n // across periods\n var name = playlist.attributes.id + (playlist.attributes.lang || '');\n\n if (!acc[name]) {\n // First Period\n acc[name] = playlist;\n acc[name].attributes.timelineStarts = [];\n } else {\n // Subsequent Periods\n if (playlist.segments) {\n var _acc$name$segments;\n\n // first segment of subsequent periods signal a discontinuity\n if (playlist.segments[0]) {\n playlist.segments[0].discontinuity = true;\n }\n\n (_acc$name$segments = acc[name].segments).push.apply(_acc$name$segments, playlist.segments);\n } // bubble up contentProtection, this assumes all DRM content\n // has the same contentProtection\n\n\n if (playlist.attributes.contentProtection) {\n acc[name].attributes.contentProtection = playlist.attributes.contentProtection;\n }\n }\n\n acc[name].attributes.timelineStarts.push({\n // Although they represent the same number, it's important to have both to make it\n // compatible with HLS potentially having a similar attribute.\n start: playlist.attributes.periodStart,\n timeline: playlist.attributes.periodStart\n });\n return acc;\n }, {}));\n return mergedPlaylists.map(function (playlist) {\n playlist.discontinuityStarts = findIndexes(playlist.segments || [], 'discontinuity');\n return playlist;\n });\n};\n\nvar addSidxSegmentsToPlaylist = function addSidxSegmentsToPlaylist(playlist, sidxMapping) {\n var sidxKey = generateSidxKey(playlist.sidx);\n var sidxMatch = sidxKey && sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;\n\n if (sidxMatch) {\n addSidxSegmentsToPlaylist$1(playlist, sidxMatch, playlist.sidx.resolvedUri);\n }\n\n return playlist;\n};\nvar addSidxSegmentsToPlaylists = function addSidxSegmentsToPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (!Object.keys(sidxMapping).length) {\n return playlists;\n }\n\n for (var i in playlists) {\n playlists[i] = addSidxSegmentsToPlaylist(playlists[i], sidxMapping);\n }\n\n return playlists;\n};\nvar formatAudioPlaylist = function formatAudioPlaylist(_ref, isAudioOnly) {\n var _attributes;\n\n var attributes = _ref.attributes,\n segments = _ref.segments,\n sidx = _ref.sidx,\n mediaSequence = _ref.mediaSequence,\n discontinuitySequence = _ref.discontinuitySequence,\n discontinuityStarts = _ref.discontinuityStarts;\n var playlist = {\n attributes: (_attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n CODECS: attributes.codecs\n }, _attributes['PROGRAM-ID'] = 1, _attributes),\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: '',\n targetDuration: attributes.duration,\n discontinuitySequence: discontinuitySequence,\n discontinuityStarts: discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n mediaSequence: mediaSequence,\n segments: segments\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n if (isAudioOnly) {\n playlist.attributes.AUDIO = 'audio';\n playlist.attributes.SUBTITLES = 'subs';\n }\n\n return playlist;\n};\nvar formatVttPlaylist = function formatVttPlaylist(_ref2) {\n var _m3u8Attributes;\n\n var attributes = _ref2.attributes,\n segments = _ref2.segments,\n mediaSequence = _ref2.mediaSequence,\n discontinuityStarts = _ref2.discontinuityStarts,\n discontinuitySequence = _ref2.discontinuitySequence;\n\n if (typeof segments === 'undefined') {\n // vtt tracks may use single file in BaseURL\n segments = [{\n uri: attributes.baseUrl,\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n duration: attributes.sourceDuration,\n number: 0\n }]; // targetDuration should be the same duration as the only segment\n\n attributes.duration = attributes.sourceDuration;\n }\n\n var m3u8Attributes = (_m3u8Attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth\n }, _m3u8Attributes['PROGRAM-ID'] = 1, _m3u8Attributes);\n\n if (attributes.codecs) {\n m3u8Attributes.CODECS = attributes.codecs;\n }\n\n return {\n attributes: m3u8Attributes,\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n timelineStarts: attributes.timelineStarts,\n discontinuityStarts: discontinuityStarts,\n discontinuitySequence: discontinuitySequence,\n mediaSequence: mediaSequence,\n segments: segments\n };\n};\nvar organizeAudioPlaylists = function organizeAudioPlaylists(playlists, sidxMapping, isAudioOnly) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (isAudioOnly === void 0) {\n isAudioOnly = false;\n }\n\n var mainPlaylist;\n var formattedPlaylists = playlists.reduce(function (a, playlist) {\n var role = playlist.attributes.role && playlist.attributes.role.value || '';\n var language = playlist.attributes.lang || '';\n var label = playlist.attributes.label || 'main';\n\n if (language && !playlist.attributes.label) {\n var roleLabel = role ? \" (\" + role + \")\" : '';\n label = \"\" + playlist.attributes.lang + roleLabel;\n }\n\n if (!a[label]) {\n a[label] = {\n language: language,\n autoselect: true,\n default: role === 'main',\n playlists: [],\n uri: ''\n };\n }\n\n var formatted = addSidxSegmentsToPlaylist(formatAudioPlaylist(playlist, isAudioOnly), sidxMapping);\n a[label].playlists.push(formatted);\n\n if (typeof mainPlaylist === 'undefined' && role === 'main') {\n mainPlaylist = playlist;\n mainPlaylist.default = true;\n }\n\n return a;\n }, {}); // if no playlists have role \"main\", mark the first as main\n\n if (!mainPlaylist) {\n var firstLabel = Object.keys(formattedPlaylists)[0];\n formattedPlaylists[firstLabel].default = true;\n }\n\n return formattedPlaylists;\n};\nvar organizeVttPlaylists = function organizeVttPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n return playlists.reduce(function (a, playlist) {\n var label = playlist.attributes.lang || 'text';\n\n if (!a[label]) {\n a[label] = {\n language: label,\n default: false,\n autoselect: false,\n playlists: [],\n uri: ''\n };\n }\n\n a[label].playlists.push(addSidxSegmentsToPlaylist(formatVttPlaylist(playlist), sidxMapping));\n return a;\n }, {});\n};\n\nvar organizeCaptionServices = function organizeCaptionServices(captionServices) {\n return captionServices.reduce(function (svcObj, svc) {\n if (!svc) {\n return svcObj;\n }\n\n svc.forEach(function (service) {\n var channel = service.channel,\n language = service.language;\n svcObj[language] = {\n autoselect: false,\n default: false,\n instreamId: channel,\n language: language\n };\n\n if (service.hasOwnProperty('aspectRatio')) {\n svcObj[language].aspectRatio = service.aspectRatio;\n }\n\n if (service.hasOwnProperty('easyReader')) {\n svcObj[language].easyReader = service.easyReader;\n }\n\n if (service.hasOwnProperty('3D')) {\n svcObj[language]['3D'] = service['3D'];\n }\n });\n return svcObj;\n }, {});\n};\n\nvar formatVideoPlaylist = function formatVideoPlaylist(_ref3) {\n var _attributes2;\n\n var attributes = _ref3.attributes,\n segments = _ref3.segments,\n sidx = _ref3.sidx,\n discontinuityStarts = _ref3.discontinuityStarts;\n var playlist = {\n attributes: (_attributes2 = {\n NAME: attributes.id,\n AUDIO: 'audio',\n SUBTITLES: 'subs',\n RESOLUTION: {\n width: attributes.width,\n height: attributes.height\n },\n CODECS: attributes.codecs,\n BANDWIDTH: attributes.bandwidth\n }, _attributes2['PROGRAM-ID'] = 1, _attributes2),\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: '',\n targetDuration: attributes.duration,\n discontinuityStarts: discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n segments: segments\n };\n\n if (attributes.frameRate) {\n playlist.attributes['FRAME-RATE'] = attributes.frameRate;\n }\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n return playlist;\n};\n\nvar videoOnly = function videoOnly(_ref4) {\n var attributes = _ref4.attributes;\n return attributes.mimeType === 'video/mp4' || attributes.mimeType === 'video/webm' || attributes.contentType === 'video';\n};\n\nvar audioOnly = function audioOnly(_ref5) {\n var attributes = _ref5.attributes;\n return attributes.mimeType === 'audio/mp4' || attributes.mimeType === 'audio/webm' || attributes.contentType === 'audio';\n};\n\nvar vttOnly = function vttOnly(_ref6) {\n var attributes = _ref6.attributes;\n return attributes.mimeType === 'text/vtt' || attributes.contentType === 'text';\n};\n/**\n * Contains start and timeline properties denoting a timeline start. For DASH, these will\n * be the same number.\n *\n * @typedef {Object} TimelineStart\n * @property {number} start - the start time of the timeline\n * @property {number} timeline - the timeline number\n */\n\n/**\n * Adds appropriate media and discontinuity sequence values to the segments and playlists.\n *\n * Throughout mpd-parser, the `number` attribute is used in relation to `startNumber`, a\n * DASH specific attribute used in constructing segment URI's from templates. However, from\n * an HLS perspective, the `number` attribute on a segment would be its `mediaSequence`\n * value, which should start at the original media sequence value (or 0) and increment by 1\n * for each segment thereafter. Since DASH's `startNumber` values are independent per\n * period, it doesn't make sense to use it for `number`. Instead, assume everything starts\n * from a 0 mediaSequence value and increment from there.\n *\n * Note that VHS currently doesn't use the `number` property, but it can be helpful for\n * debugging and making sense of the manifest.\n *\n * For live playlists, to account for values increasing in manifests when periods are\n * removed on refreshes, merging logic should be used to update the numbers to their\n * appropriate values (to ensure they're sequential and increasing).\n *\n * @param {Object[]} playlists - the playlists to update\n * @param {TimelineStart[]} timelineStarts - the timeline starts for the manifest\n */\n\n\nvar addMediaSequenceValues = function addMediaSequenceValues(playlists, timelineStarts) {\n // increment all segments sequentially\n playlists.forEach(function (playlist) {\n playlist.mediaSequence = 0;\n playlist.discontinuitySequence = findIndex(timelineStarts, function (_ref7) {\n var timeline = _ref7.timeline;\n return timeline === playlist.timeline;\n });\n\n if (!playlist.segments) {\n return;\n }\n\n playlist.segments.forEach(function (segment, index) {\n segment.number = index;\n });\n });\n};\n/**\n * Given a media group object, flattens all playlists within the media group into a single\n * array.\n *\n * @param {Object} mediaGroupObject - the media group object\n *\n * @return {Object[]}\n * The media group playlists\n */\n\nvar flattenMediaGroupPlaylists = function flattenMediaGroupPlaylists(mediaGroupObject) {\n if (!mediaGroupObject) {\n return [];\n }\n\n return Object.keys(mediaGroupObject).reduce(function (acc, label) {\n var labelContents = mediaGroupObject[label];\n return acc.concat(labelContents.playlists);\n }, []);\n};\nvar toM3u8 = function toM3u8(_ref8) {\n var _mediaGroups;\n\n var dashPlaylists = _ref8.dashPlaylists,\n locations = _ref8.locations,\n _ref8$sidxMapping = _ref8.sidxMapping,\n sidxMapping = _ref8$sidxMapping === void 0 ? {} : _ref8$sidxMapping,\n previousManifest = _ref8.previousManifest;\n\n if (!dashPlaylists.length) {\n return {};\n } // grab all main manifest attributes\n\n\n var _dashPlaylists$0$attr = dashPlaylists[0].attributes,\n duration = _dashPlaylists$0$attr.sourceDuration,\n type = _dashPlaylists$0$attr.type,\n suggestedPresentationDelay = _dashPlaylists$0$attr.suggestedPresentationDelay,\n minimumUpdatePeriod = _dashPlaylists$0$attr.minimumUpdatePeriod;\n var videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);\n var audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));\n var vttPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(vttOnly));\n var captions = dashPlaylists.map(function (playlist) {\n return playlist.attributes.captionServices;\n }).filter(Boolean);\n var manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: [],\n endList: true,\n mediaGroups: (_mediaGroups = {\n AUDIO: {},\n VIDEO: {}\n }, _mediaGroups['CLOSED-CAPTIONS'] = {}, _mediaGroups.SUBTITLES = {}, _mediaGroups),\n uri: '',\n duration: duration,\n playlists: addSidxSegmentsToPlaylists(videoPlaylists, sidxMapping)\n };\n\n if (minimumUpdatePeriod >= 0) {\n manifest.minimumUpdatePeriod = minimumUpdatePeriod * 1000;\n }\n\n if (locations) {\n manifest.locations = locations;\n }\n\n if (type === 'dynamic') {\n manifest.suggestedPresentationDelay = suggestedPresentationDelay;\n }\n\n var isAudioOnly = manifest.playlists.length === 0;\n var organizedAudioGroup = audioPlaylists.length ? organizeAudioPlaylists(audioPlaylists, sidxMapping, isAudioOnly) : null;\n var organizedVttGroup = vttPlaylists.length ? organizeVttPlaylists(vttPlaylists, sidxMapping) : null;\n var formattedPlaylists = videoPlaylists.concat(flattenMediaGroupPlaylists(organizedAudioGroup), flattenMediaGroupPlaylists(organizedVttGroup));\n var playlistTimelineStarts = formattedPlaylists.map(function (_ref9) {\n var timelineStarts = _ref9.timelineStarts;\n return timelineStarts;\n });\n manifest.timelineStarts = getUniqueTimelineStarts(playlistTimelineStarts);\n addMediaSequenceValues(formattedPlaylists, manifest.timelineStarts);\n\n if (organizedAudioGroup) {\n manifest.mediaGroups.AUDIO.audio = organizedAudioGroup;\n }\n\n if (organizedVttGroup) {\n manifest.mediaGroups.SUBTITLES.subs = organizedVttGroup;\n }\n\n if (captions.length) {\n manifest.mediaGroups['CLOSED-CAPTIONS'].cc = organizeCaptionServices(captions);\n }\n\n if (previousManifest) {\n return positionManifestOnTimeline({\n oldManifest: previousManifest,\n newManifest: manifest\n });\n }\n\n return manifest;\n};\n\n/**\n * Calculates the R (repetition) value for a live stream (for the final segment\n * in a manifest where the r value is negative 1)\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {number} time\n * current time (typically the total time up until the final segment)\n * @param {number} duration\n * duration property for the given \n *\n * @return {number}\n * R value to reach the end of the given period\n */\nvar getLiveRValue = function getLiveRValue(attributes, time, duration) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n _attributes$periodSta = attributes.periodStart,\n periodStart = _attributes$periodSta === void 0 ? 0 : _attributes$periodSta,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp;\n var now = (NOW + clientOffset) / 1000;\n var periodStartWC = availabilityStartTime + periodStart;\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n return Math.ceil((periodDuration * timescale - time) / duration);\n};\n/**\n * Uses information provided by SegmentTemplate.SegmentTimeline to determine segment\n * timing and duration\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n *\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\n\nvar parseByTimeline = function parseByTimeline(attributes, segmentTimeline) {\n var type = attributes.type,\n _attributes$minimumUp2 = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp2 === void 0 ? 0 : _attributes$minimumUp2,\n _attributes$media = attributes.media,\n media = _attributes$media === void 0 ? '' : _attributes$media,\n sourceDuration = attributes.sourceDuration,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb,\n timeline = attributes.periodStart;\n var segments = [];\n var time = -1;\n\n for (var sIndex = 0; sIndex < segmentTimeline.length; sIndex++) {\n var S = segmentTimeline[sIndex];\n var duration = S.d;\n var repeat = S.r || 0;\n var segmentTime = S.t || 0;\n\n if (time < 0) {\n // first segment\n time = segmentTime;\n }\n\n if (segmentTime && segmentTime > time) {\n // discontinuity\n // TODO: How to handle this type of discontinuity\n // timeline++ here would treat it like HLS discontuity and content would\n // get appended without gap\n // E.G.\n // \n // \n // \n // \n // would have $Time$ values of [0, 1, 2, 5]\n // should this be appened at time positions [0, 1, 2, 3],(#EXT-X-DISCONTINUITY)\n // or [0, 1, 2, gap, gap, 5]? (#EXT-X-GAP)\n // does the value of sourceDuration consider this when calculating arbitrary\n // negative @r repeat value?\n // E.G. Same elements as above with this added at the end\n // \n // with a sourceDuration of 10\n // Would the 2 gaps be included in the time duration calculations resulting in\n // 8 segments with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9] or 10 segments\n // with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9, 10, 11] ?\n time = segmentTime;\n }\n\n var count = void 0;\n\n if (repeat < 0) {\n var nextS = sIndex + 1;\n\n if (nextS === segmentTimeline.length) {\n // last segment\n if (type === 'dynamic' && minimumUpdatePeriod > 0 && media.indexOf('$Number$') > 0) {\n count = getLiveRValue(attributes, time, duration);\n } else {\n // TODO: This may be incorrect depending on conclusion of TODO above\n count = (sourceDuration * timescale - time) / duration;\n }\n } else {\n count = (segmentTimeline[nextS].t - time) / duration;\n }\n } else {\n count = repeat + 1;\n }\n\n var end = startNumber + segments.length + count;\n var number = startNumber + segments.length;\n\n while (number < end) {\n segments.push({\n number: number,\n duration: duration / timescale,\n time: time,\n timeline: timeline\n });\n time += duration;\n number++;\n }\n }\n\n return segments;\n};\n\nvar identifierPattern = /\\$([A-z]*)(?:(%0)([0-9]+)d)?\\$/g;\n/**\n * Replaces template identifiers with corresponding values. To be used as the callback\n * for String.prototype.replace\n *\n * @name replaceCallback\n * @function\n * @param {string} match\n * Entire match of identifier\n * @param {string} identifier\n * Name of matched identifier\n * @param {string} format\n * Format tag string. Its presence indicates that padding is expected\n * @param {string} width\n * Desired length of the replaced value. Values less than this width shall be left\n * zero padded\n * @return {string}\n * Replacement for the matched identifier\n */\n\n/**\n * Returns a function to be used as a callback for String.prototype.replace to replace\n * template identifiers\n *\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {replaceCallback}\n * Callback to be used with String.prototype.replace to replace identifiers\n */\n\nvar identifierReplacement = function identifierReplacement(values) {\n return function (match, identifier, format, width) {\n if (match === '$$') {\n // escape sequence\n return '$';\n }\n\n if (typeof values[identifier] === 'undefined') {\n return match;\n }\n\n var value = '' + values[identifier];\n\n if (identifier === 'RepresentationID') {\n // Format tag shall not be present with RepresentationID\n return value;\n }\n\n if (!format) {\n width = 1;\n } else {\n width = parseInt(width, 10);\n }\n\n if (value.length >= width) {\n return value;\n }\n\n return \"\" + new Array(width - value.length + 1).join('0') + value;\n };\n};\n/**\n * Constructs a segment url from a template string\n *\n * @param {string} url\n * Template string to construct url from\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {string}\n * Segment url with identifiers replaced\n */\n\nvar constructTemplateUrl = function constructTemplateUrl(url, values) {\n return url.replace(identifierPattern, identifierReplacement(values));\n};\n/**\n * Generates a list of objects containing timing and duration information about each\n * segment needed to generate segment uris and the complete segment object\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseTemplateInfo = function parseTemplateInfo(attributes, segmentTimeline) {\n if (!attributes.duration && !segmentTimeline) {\n // if neither @duration or SegmentTimeline are present, then there shall be exactly\n // one media segment\n return [{\n number: attributes.startNumber || 1,\n duration: attributes.sourceDuration,\n time: 0,\n timeline: attributes.periodStart\n }];\n }\n\n if (attributes.duration) {\n return parseByDuration(attributes);\n }\n\n return parseByTimeline(attributes, segmentTimeline);\n};\n/**\n * Generates a list of segments using information provided by the SegmentTemplate element\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object[]}\n * List of segment objects\n */\n\nvar segmentsFromTemplate = function segmentsFromTemplate(attributes, segmentTimeline) {\n var templateValues = {\n RepresentationID: attributes.id,\n Bandwidth: attributes.bandwidth || 0\n };\n var _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {\n sourceURL: '',\n range: ''\n } : _attributes$initializ;\n var mapSegment = urlTypeToSegment({\n baseUrl: attributes.baseUrl,\n source: constructTemplateUrl(initialization.sourceURL, templateValues),\n range: initialization.range\n });\n var segments = parseTemplateInfo(attributes, segmentTimeline);\n return segments.map(function (segment) {\n templateValues.Number = segment.number;\n templateValues.Time = segment.time;\n var uri = constructTemplateUrl(attributes.media || '', templateValues); // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n var timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n var presentationTimeOffset = attributes.presentationTimeOffset || 0;\n var presentationTime = // Even if the @t attribute is not specified for the segment, segment.time is\n // calculated in mpd-parser prior to this, so it's assumed to be available.\n attributes.periodStart + (segment.time - presentationTimeOffset) / timescale;\n var map = {\n uri: uri,\n timeline: segment.timeline,\n duration: segment.duration,\n resolvedUri: resolveUrl(attributes.baseUrl || '', uri),\n map: mapSegment,\n number: segment.number,\n presentationTime: presentationTime\n };\n return map;\n });\n};\n\n/**\n * Converts a (of type URLType from the DASH spec 5.3.9.2 Table 14)\n * to an object that matches the output of a segment in videojs/mpd-parser\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object} segmentUrl\n * node to translate into a segment object\n * @return {Object} translated segment object\n */\n\nvar SegmentURLToSegmentObject = function SegmentURLToSegmentObject(attributes, segmentUrl) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ;\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: segmentUrl.media,\n range: segmentUrl.mediaRange\n });\n segment.map = initSegment;\n return segment;\n};\n/**\n * Generates a list of segments using information provided by the SegmentList element\n * SegmentList (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object.} list of segments\n */\n\n\nvar segmentsFromList = function segmentsFromList(attributes, segmentTimeline) {\n var duration = attributes.duration,\n _attributes$segmentUr = attributes.segmentUrls,\n segmentUrls = _attributes$segmentUr === void 0 ? [] : _attributes$segmentUr,\n periodStart = attributes.periodStart; // Per spec (5.3.9.2.1) no way to determine segment duration OR\n // if both SegmentTimeline and @duration are defined, it is outside of spec.\n\n if (!duration && !segmentTimeline || duration && segmentTimeline) {\n throw new Error(errors.SEGMENT_TIME_UNSPECIFIED);\n }\n\n var segmentUrlMap = segmentUrls.map(function (segmentUrlObject) {\n return SegmentURLToSegmentObject(attributes, segmentUrlObject);\n });\n var segmentTimeInfo;\n\n if (duration) {\n segmentTimeInfo = parseByDuration(attributes);\n }\n\n if (segmentTimeline) {\n segmentTimeInfo = parseByTimeline(attributes, segmentTimeline);\n }\n\n var segments = segmentTimeInfo.map(function (segmentTime, index) {\n if (segmentUrlMap[index]) {\n var segment = segmentUrlMap[index]; // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n var timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n var presentationTimeOffset = attributes.presentationTimeOffset || 0;\n segment.timeline = segmentTime.timeline;\n segment.duration = segmentTime.duration;\n segment.number = segmentTime.number;\n segment.presentationTime = periodStart + (segmentTime.time - presentationTimeOffset) / timescale;\n return segment;\n } // Since we're mapping we should get rid of any blank segments (in case\n // the given SegmentTimeline is handling for more elements than we have\n // SegmentURLs for).\n\n }).filter(function (segment) {\n return segment;\n });\n return segments;\n};\n\nvar generateSegments = function generateSegments(_ref) {\n var attributes = _ref.attributes,\n segmentInfo = _ref.segmentInfo;\n var segmentAttributes;\n var segmentsFn;\n\n if (segmentInfo.template) {\n segmentsFn = segmentsFromTemplate;\n segmentAttributes = merge(attributes, segmentInfo.template);\n } else if (segmentInfo.base) {\n segmentsFn = segmentsFromBase;\n segmentAttributes = merge(attributes, segmentInfo.base);\n } else if (segmentInfo.list) {\n segmentsFn = segmentsFromList;\n segmentAttributes = merge(attributes, segmentInfo.list);\n }\n\n var segmentsInfo = {\n attributes: attributes\n };\n\n if (!segmentsFn) {\n return segmentsInfo;\n }\n\n var segments = segmentsFn(segmentAttributes, segmentInfo.segmentTimeline); // The @duration attribute will be used to determin the playlist's targetDuration which\n // must be in seconds. Since we've generated the segment list, we no longer need\n // @duration to be in @timescale units, so we can convert it here.\n\n if (segmentAttributes.duration) {\n var _segmentAttributes = segmentAttributes,\n duration = _segmentAttributes.duration,\n _segmentAttributes$ti = _segmentAttributes.timescale,\n timescale = _segmentAttributes$ti === void 0 ? 1 : _segmentAttributes$ti;\n segmentAttributes.duration = duration / timescale;\n } else if (segments.length) {\n // if there is no @duration attribute, use the largest segment duration as\n // as target duration\n segmentAttributes.duration = segments.reduce(function (max, segment) {\n return Math.max(max, Math.ceil(segment.duration));\n }, 0);\n } else {\n segmentAttributes.duration = 0;\n }\n\n segmentsInfo.attributes = segmentAttributes;\n segmentsInfo.segments = segments; // This is a sidx box without actual segment information\n\n if (segmentInfo.base && segmentAttributes.indexRange) {\n segmentsInfo.sidx = segments[0];\n segmentsInfo.segments = [];\n }\n\n return segmentsInfo;\n};\nvar toPlaylists = function toPlaylists(representations) {\n return representations.map(generateSegments);\n};\n\nvar findChildren = function findChildren(element, name) {\n return from(element.childNodes).filter(function (_ref) {\n var tagName = _ref.tagName;\n return tagName === name;\n });\n};\nvar getContent = function getContent(element) {\n return element.textContent.trim();\n};\n\n/**\n * Converts the provided string that may contain a division operation to a number.\n *\n * @param {string} value - the provided string value\n *\n * @return {number} the parsed string value\n */\nvar parseDivisionValue = function parseDivisionValue(value) {\n return parseFloat(value.split('/').reduce(function (prev, current) {\n return prev / current;\n }));\n};\n\nvar parseDuration = function parseDuration(str) {\n var SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n var SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\n var SECONDS_IN_DAY = 24 * 60 * 60;\n var SECONDS_IN_HOUR = 60 * 60;\n var SECONDS_IN_MIN = 60; // P10Y10M10DT10H10M10.1S\n\n var durationRegex = /P(?:(\\d*)Y)?(?:(\\d*)M)?(?:(\\d*)D)?(?:T(?:(\\d*)H)?(?:(\\d*)M)?(?:([\\d.]*)S)?)?/;\n var match = durationRegex.exec(str);\n\n if (!match) {\n return 0;\n }\n\n var _match$slice = match.slice(1),\n year = _match$slice[0],\n month = _match$slice[1],\n day = _match$slice[2],\n hour = _match$slice[3],\n minute = _match$slice[4],\n second = _match$slice[5];\n\n return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0);\n};\nvar parseDate = function parseDate(str) {\n // Date format without timezone according to ISO 8601\n // YYY-MM-DDThh:mm:ss.ssssss\n var dateRegex = /^\\d+-\\d+-\\d+T\\d+:\\d+:\\d+(\\.\\d+)?$/; // If the date string does not specifiy a timezone, we must specifiy UTC. This is\n // expressed by ending with 'Z'\n\n if (dateRegex.test(str)) {\n str += 'Z';\n }\n\n return Date.parse(str);\n};\n\nvar parsers = {\n /**\n * Specifies the duration of the entire Media Presentation. Format is a duration string\n * as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n mediaPresentationDuration: function mediaPresentationDuration(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the Segment availability start time for all Segments referred to in this\n * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability\n * time. Format is a date string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The date as seconds from unix epoch\n */\n availabilityStartTime: function availabilityStartTime(value) {\n return parseDate(value) / 1000;\n },\n\n /**\n * Specifies the smallest period between potential changes to the MPD. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n minimumUpdatePeriod: function minimumUpdatePeriod(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the suggested presentation delay. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n suggestedPresentationDelay: function suggestedPresentationDelay(value) {\n return parseDuration(value);\n },\n\n /**\n * specifices the type of mpd. Can be either \"static\" or \"dynamic\"\n *\n * @param {string} value\n * value of attribute as a string\n *\n * @return {string}\n * The type as a string\n */\n type: function type(value) {\n return value;\n },\n\n /**\n * Specifies the duration of the smallest time shifting buffer for any Representation\n * in the MPD. Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n timeShiftBufferDepth: function timeShiftBufferDepth(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the PeriodStart time of the Period relative to the availabilityStarttime.\n * Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n start: function start(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the width of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed width\n */\n width: function width(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the height of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed height\n */\n height: function height(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the bitrate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed bandwidth\n */\n bandwidth: function bandwidth(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the frame rate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed frame rate\n */\n frameRate: function frameRate(value) {\n return parseDivisionValue(value);\n },\n\n /**\n * Specifies the number of the first Media Segment in this Representation in the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n startNumber: function startNumber(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the timescale in units per seconds\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed timescale\n */\n timescale: function timescale(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the presentationTimeOffset.\n *\n * @param {string} value\n * value of the attribute as a string\n *\n * @return {number}\n * The parsed presentationTimeOffset\n */\n presentationTimeOffset: function presentationTimeOffset(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the constant approximate Segment duration\n * NOTE: The element also contains an @duration attribute. This duration\n * specifies the duration of the Period. This attribute is currently not\n * supported by the rest of the parser, however we still check for it to prevent\n * errors.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n duration: function duration(value) {\n var parsedValue = parseInt(value, 10);\n\n if (isNaN(parsedValue)) {\n return parseDuration(value);\n }\n\n return parsedValue;\n },\n\n /**\n * Specifies the Segment duration, in units of the value of the @timescale.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n d: function d(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the MPD start time, in @timescale units, the first Segment in the series\n * starts relative to the beginning of the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed time\n */\n t: function t(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the repeat count of the number of following contiguous Segments with the\n * same duration expressed by the value of @d\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n r: function r(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Default parser for all other attributes. Acts as a no-op and just returns the value\n * as a string\n *\n * @param {string} value\n * value of attribute as a string\n * @return {string}\n * Unparsed value\n */\n DEFAULT: function DEFAULT(value) {\n return value;\n }\n};\n/**\n * Gets all the attributes and values of the provided node, parses attributes with known\n * types, and returns an object with attribute names mapped to values.\n *\n * @param {Node} el\n * The node to parse attributes from\n * @return {Object}\n * Object with all attributes of el parsed\n */\n\nvar parseAttributes = function parseAttributes(el) {\n if (!(el && el.attributes)) {\n return {};\n }\n\n return from(el.attributes).reduce(function (a, e) {\n var parseFn = parsers[e.name] || parsers.DEFAULT;\n a[e.name] = parseFn(e.value);\n return a;\n }, {});\n};\n\nvar keySystemsMap = {\n 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey',\n 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha',\n 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready',\n 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime'\n};\n/**\n * Builds a list of urls that is the product of the reference urls and BaseURL values\n *\n * @param {string[]} referenceUrls\n * List of reference urls to resolve to\n * @param {Node[]} baseUrlElements\n * List of BaseURL nodes from the mpd\n * @return {string[]}\n * List of resolved urls\n */\n\nvar buildBaseUrls = function buildBaseUrls(referenceUrls, baseUrlElements) {\n if (!baseUrlElements.length) {\n return referenceUrls;\n }\n\n return flatten(referenceUrls.map(function (reference) {\n return baseUrlElements.map(function (baseUrlElement) {\n return resolveUrl(reference, getContent(baseUrlElement));\n });\n }));\n};\n/**\n * Contains all Segment information for its containing AdaptationSet\n *\n * @typedef {Object} SegmentInformation\n * @property {Object|undefined} template\n * Contains the attributes for the SegmentTemplate node\n * @property {Object[]|undefined} segmentTimeline\n * Contains a list of atrributes for each S node within the SegmentTimeline node\n * @property {Object|undefined} list\n * Contains the attributes for the SegmentList node\n * @property {Object|undefined} base\n * Contains the attributes for the SegmentBase node\n */\n\n/**\n * Returns all available Segment information contained within the AdaptationSet node\n *\n * @param {Node} adaptationSet\n * The AdaptationSet node to get Segment information from\n * @return {SegmentInformation}\n * The Segment information contained within the provided AdaptationSet\n */\n\nvar getSegmentInformation = function getSegmentInformation(adaptationSet) {\n var segmentTemplate = findChildren(adaptationSet, 'SegmentTemplate')[0];\n var segmentList = findChildren(adaptationSet, 'SegmentList')[0];\n var segmentUrls = segmentList && findChildren(segmentList, 'SegmentURL').map(function (s) {\n return merge({\n tag: 'SegmentURL'\n }, parseAttributes(s));\n });\n var segmentBase = findChildren(adaptationSet, 'SegmentBase')[0];\n var segmentTimelineParentNode = segmentList || segmentTemplate;\n var segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, 'SegmentTimeline')[0];\n var segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate;\n var segmentInitialization = segmentInitializationParentNode && findChildren(segmentInitializationParentNode, 'Initialization')[0]; // SegmentTemplate is handled slightly differently, since it can have both\n // @initialization and an node. @initialization can be templated,\n // while the node can have a url and range specified. If the has\n // both @initialization and an subelement we opt to override with\n // the node, as this interaction is not defined in the spec.\n\n var template = segmentTemplate && parseAttributes(segmentTemplate);\n\n if (template && segmentInitialization) {\n template.initialization = segmentInitialization && parseAttributes(segmentInitialization);\n } else if (template && template.initialization) {\n // If it is @initialization we convert it to an object since this is the format that\n // later functions will rely on for the initialization segment. This is only valid\n // for \n template.initialization = {\n sourceURL: template.initialization\n };\n }\n\n var segmentInfo = {\n template: template,\n segmentTimeline: segmentTimeline && findChildren(segmentTimeline, 'S').map(function (s) {\n return parseAttributes(s);\n }),\n list: segmentList && merge(parseAttributes(segmentList), {\n segmentUrls: segmentUrls,\n initialization: parseAttributes(segmentInitialization)\n }),\n base: segmentBase && merge(parseAttributes(segmentBase), {\n initialization: parseAttributes(segmentInitialization)\n })\n };\n Object.keys(segmentInfo).forEach(function (key) {\n if (!segmentInfo[key]) {\n delete segmentInfo[key];\n }\n });\n return segmentInfo;\n};\n/**\n * Contains Segment information and attributes needed to construct a Playlist object\n * from a Representation\n *\n * @typedef {Object} RepresentationInformation\n * @property {SegmentInformation} segmentInfo\n * Segment information for this Representation\n * @property {Object} attributes\n * Inherited attributes for this Representation\n */\n\n/**\n * Maps a Representation node to an object containing Segment information and attributes\n *\n * @name inheritBaseUrlsCallback\n * @function\n * @param {Node} representation\n * Representation node from the mpd\n * @return {RepresentationInformation}\n * Representation information needed to construct a Playlist object\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Representation nodes to\n * Segment information and attributes using inherited BaseURL nodes.\n *\n * @param {Object} adaptationSetAttributes\n * Contains attributes inherited by the AdaptationSet\n * @param {string[]} adaptationSetBaseUrls\n * Contains list of resolved base urls inherited by the AdaptationSet\n * @param {SegmentInformation} adaptationSetSegmentInfo\n * Contains Segment information for the AdaptationSet\n * @return {inheritBaseUrlsCallback}\n * Callback map function\n */\n\nvar inheritBaseUrls = function inheritBaseUrls(adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) {\n return function (representation) {\n var repBaseUrlElements = findChildren(representation, 'BaseURL');\n var repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, repBaseUrlElements);\n var attributes = merge(adaptationSetAttributes, parseAttributes(representation));\n var representationSegmentInfo = getSegmentInformation(representation);\n return repBaseUrls.map(function (baseUrl) {\n return {\n segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo),\n attributes: merge(attributes, {\n baseUrl: baseUrl\n })\n };\n });\n };\n};\n/**\n * Tranforms a series of content protection nodes to\n * an object containing pssh data by key system\n *\n * @param {Node[]} contentProtectionNodes\n * Content protection nodes\n * @return {Object}\n * Object containing pssh data by key system\n */\n\nvar generateKeySystemInformation = function generateKeySystemInformation(contentProtectionNodes) {\n return contentProtectionNodes.reduce(function (acc, node) {\n var attributes = parseAttributes(node); // Although it could be argued that according to the UUID RFC spec the UUID string (a-f chars) should be generated\n // as a lowercase string it also mentions it should be treated as case-insensitive on input. Since the key system\n // UUIDs in the keySystemsMap are hardcoded as lowercase in the codebase there isn't any reason not to do\n // .toLowerCase() on the input UUID string from the manifest (at least I could not think of one).\n\n if (attributes.schemeIdUri) {\n attributes.schemeIdUri = attributes.schemeIdUri.toLowerCase();\n }\n\n var keySystem = keySystemsMap[attributes.schemeIdUri];\n\n if (keySystem) {\n acc[keySystem] = {\n attributes: attributes\n };\n var psshNode = findChildren(node, 'cenc:pssh')[0];\n\n if (psshNode) {\n var pssh = getContent(psshNode);\n acc[keySystem].pssh = pssh && decodeB64ToUint8Array(pssh);\n }\n }\n\n return acc;\n }, {});\n}; // defined in ANSI_SCTE 214-1 2016\n\n\nvar parseCaptionServiceMetadata = function parseCaptionServiceMetadata(service) {\n // 608 captions\n if (service.schemeIdUri === 'urn:scte:dash:cc:cea-608:2015') {\n var values = typeof service.value !== 'string' ? [] : service.value.split(';');\n return values.map(function (value) {\n var channel;\n var language; // default language to value\n\n language = value;\n\n if (/^CC\\d=/.test(value)) {\n var _value$split = value.split('=');\n\n channel = _value$split[0];\n language = _value$split[1];\n } else if (/^CC\\d$/.test(value)) {\n channel = value;\n }\n\n return {\n channel: channel,\n language: language\n };\n });\n } else if (service.schemeIdUri === 'urn:scte:dash:cc:cea-708:2015') {\n var _values = typeof service.value !== 'string' ? [] : service.value.split(';');\n\n return _values.map(function (value) {\n var flags = {\n // service or channel number 1-63\n 'channel': undefined,\n // language is a 3ALPHA per ISO 639.2/B\n // field is required\n 'language': undefined,\n // BIT 1/0 or ?\n // default value is 1, meaning 16:9 aspect ratio, 0 is 4:3, ? is unknown\n 'aspectRatio': 1,\n // BIT 1/0\n // easy reader flag indicated the text is tailed to the needs of beginning readers\n // default 0, or off\n 'easyReader': 0,\n // BIT 1/0\n // If 3d metadata is present (CEA-708.1) then 1\n // default 0\n '3D': 0\n };\n\n if (/=/.test(value)) {\n var _value$split2 = value.split('='),\n channel = _value$split2[0],\n _value$split2$ = _value$split2[1],\n opts = _value$split2$ === void 0 ? '' : _value$split2$;\n\n flags.channel = channel;\n flags.language = value;\n opts.split(',').forEach(function (opt) {\n var _opt$split = opt.split(':'),\n name = _opt$split[0],\n val = _opt$split[1];\n\n if (name === 'lang') {\n flags.language = val; // er for easyReadery\n } else if (name === 'er') {\n flags.easyReader = Number(val); // war for wide aspect ratio\n } else if (name === 'war') {\n flags.aspectRatio = Number(val);\n } else if (name === '3D') {\n flags['3D'] = Number(val);\n }\n });\n } else {\n flags.language = value;\n }\n\n if (flags.channel) {\n flags.channel = 'SERVICE' + flags.channel;\n }\n\n return flags;\n });\n }\n};\n/**\n * Maps an AdaptationSet node to a list of Representation information objects\n *\n * @name toRepresentationsCallback\n * @function\n * @param {Node} adaptationSet\n * AdaptationSet node from the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping AdaptationSet nodes to a list of\n * Representation information objects\n *\n * @param {Object} periodAttributes\n * Contains attributes inherited by the Period\n * @param {string[]} periodBaseUrls\n * Contains list of resolved base urls inherited by the Period\n * @param {string[]} periodSegmentInfo\n * Contains Segment Information at the period level\n * @return {toRepresentationsCallback}\n * Callback map function\n */\n\nvar toRepresentations = function toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo) {\n return function (adaptationSet) {\n var adaptationSetAttributes = parseAttributes(adaptationSet);\n var adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, 'BaseURL'));\n var role = findChildren(adaptationSet, 'Role')[0];\n var roleAttributes = {\n role: parseAttributes(role)\n };\n var attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes);\n var accessibility = findChildren(adaptationSet, 'Accessibility')[0];\n var captionServices = parseCaptionServiceMetadata(parseAttributes(accessibility));\n\n if (captionServices) {\n attrs = merge(attrs, {\n captionServices: captionServices\n });\n }\n\n var label = findChildren(adaptationSet, 'Label')[0];\n\n if (label && label.childNodes.length) {\n var labelVal = label.childNodes[0].nodeValue.trim();\n attrs = merge(attrs, {\n label: labelVal\n });\n }\n\n var contentProtection = generateKeySystemInformation(findChildren(adaptationSet, 'ContentProtection'));\n\n if (Object.keys(contentProtection).length) {\n attrs = merge(attrs, {\n contentProtection: contentProtection\n });\n }\n\n var segmentInfo = getSegmentInformation(adaptationSet);\n var representations = findChildren(adaptationSet, 'Representation');\n var adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);\n return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));\n };\n};\n/**\n * Contains all period information for mapping nodes onto adaptation sets.\n *\n * @typedef {Object} PeriodInformation\n * @property {Node} period.node\n * Period node from the mpd\n * @property {Object} period.attributes\n * Parsed period attributes from node plus any added\n */\n\n/**\n * Maps a PeriodInformation object to a list of Representation information objects for all\n * AdaptationSet nodes contained within the Period.\n *\n * @name toAdaptationSetsCallback\n * @function\n * @param {PeriodInformation} period\n * Period object containing necessary period information\n * @param {number} periodStart\n * Start time of the Period within the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Period nodes to a list of\n * Representation information objects\n *\n * @param {Object} mpdAttributes\n * Contains attributes inherited by the mpd\n * @param {string[]} mpdBaseUrls\n * Contains list of resolved base urls inherited by the mpd\n * @return {toAdaptationSetsCallback}\n * Callback map function\n */\n\nvar toAdaptationSets = function toAdaptationSets(mpdAttributes, mpdBaseUrls) {\n return function (period, index) {\n var periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period.node, 'BaseURL'));\n var periodAttributes = merge(mpdAttributes, {\n periodStart: period.attributes.start\n });\n\n if (typeof period.attributes.duration === 'number') {\n periodAttributes.periodDuration = period.attributes.duration;\n }\n\n var adaptationSets = findChildren(period.node, 'AdaptationSet');\n var periodSegmentInfo = getSegmentInformation(period.node);\n return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));\n };\n};\n/**\n * Gets Period@start property for a given period.\n *\n * @param {Object} options\n * Options object\n * @param {Object} options.attributes\n * Period attributes\n * @param {Object} [options.priorPeriodAttributes]\n * Prior period attributes (if prior period is available)\n * @param {string} options.mpdType\n * The MPD@type these periods came from\n * @return {number|null}\n * The period start, or null if it's an early available period or error\n */\n\nvar getPeriodStart = function getPeriodStart(_ref) {\n var attributes = _ref.attributes,\n priorPeriodAttributes = _ref.priorPeriodAttributes,\n mpdType = _ref.mpdType;\n\n // Summary of period start time calculation from DASH spec section 5.3.2.1\n //\n // A period's start is the first period's start + time elapsed after playing all\n // prior periods to this one. Periods continue one after the other in time (without\n // gaps) until the end of the presentation.\n //\n // The value of Period@start should be:\n // 1. if Period@start is present: value of Period@start\n // 2. if previous period exists and it has @duration: previous Period@start +\n // previous Period@duration\n // 3. if this is first period and MPD@type is 'static': 0\n // 4. in all other cases, consider the period an \"early available period\" (note: not\n // currently supported)\n // (1)\n if (typeof attributes.start === 'number') {\n return attributes.start;\n } // (2)\n\n\n if (priorPeriodAttributes && typeof priorPeriodAttributes.start === 'number' && typeof priorPeriodAttributes.duration === 'number') {\n return priorPeriodAttributes.start + priorPeriodAttributes.duration;\n } // (3)\n\n\n if (!priorPeriodAttributes && mpdType === 'static') {\n return 0;\n } // (4)\n // There is currently no logic for calculating the Period@start value if there is\n // no Period@start or prior Period@start and Period@duration available. This is not made\n // explicit by the DASH interop guidelines or the DASH spec, however, since there's\n // nothing about any other resolution strategies, it's implied. Thus, this case should\n // be considered an early available period, or error, and null should suffice for both\n // of those cases.\n\n\n return null;\n};\n/**\n * Traverses the mpd xml tree to generate a list of Representation information objects\n * that have inherited attributes from parent nodes\n *\n * @param {Node} mpd\n * The root node of the mpd\n * @param {Object} options\n * Available options for inheritAttributes\n * @param {string} options.manifestUri\n * The uri source of the mpd\n * @param {number} options.NOW\n * Current time per DASH IOP. Default is current time in ms since epoch\n * @param {number} options.clientOffset\n * Client time difference from NOW (in milliseconds)\n * @return {RepresentationInformation[]}\n * List of objects containing Representation information\n */\n\nvar inheritAttributes = function inheritAttributes(mpd, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$manifestUri = _options.manifestUri,\n manifestUri = _options$manifestUri === void 0 ? '' : _options$manifestUri,\n _options$NOW = _options.NOW,\n NOW = _options$NOW === void 0 ? Date.now() : _options$NOW,\n _options$clientOffset = _options.clientOffset,\n clientOffset = _options$clientOffset === void 0 ? 0 : _options$clientOffset;\n var periodNodes = findChildren(mpd, 'Period');\n\n if (!periodNodes.length) {\n throw new Error(errors.INVALID_NUMBER_OF_PERIOD);\n }\n\n var locations = findChildren(mpd, 'Location');\n var mpdAttributes = parseAttributes(mpd);\n var mpdBaseUrls = buildBaseUrls([manifestUri], findChildren(mpd, 'BaseURL')); // See DASH spec section 5.3.1.2, Semantics of MPD element. Default type to 'static'.\n\n mpdAttributes.type = mpdAttributes.type || 'static';\n mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0;\n mpdAttributes.NOW = NOW;\n mpdAttributes.clientOffset = clientOffset;\n\n if (locations.length) {\n mpdAttributes.locations = locations.map(getContent);\n }\n\n var periods = []; // Since toAdaptationSets acts on individual periods right now, the simplest approach to\n // adding properties that require looking at prior periods is to parse attributes and add\n // missing ones before toAdaptationSets is called. If more such properties are added, it\n // may be better to refactor toAdaptationSets.\n\n periodNodes.forEach(function (node, index) {\n var attributes = parseAttributes(node); // Use the last modified prior period, as it may contain added information necessary\n // for this period.\n\n var priorPeriod = periods[index - 1];\n attributes.start = getPeriodStart({\n attributes: attributes,\n priorPeriodAttributes: priorPeriod ? priorPeriod.attributes : null,\n mpdType: mpdAttributes.type\n });\n periods.push({\n node: node,\n attributes: attributes\n });\n });\n return {\n locations: mpdAttributes.locations,\n representationInfo: flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls)))\n };\n};\n\nvar stringToMpdXml = function stringToMpdXml(manifestString) {\n if (manifestString === '') {\n throw new Error(errors.DASH_EMPTY_MANIFEST);\n }\n\n var parser = new DOMParser();\n var xml;\n var mpd;\n\n try {\n xml = parser.parseFromString(manifestString, 'application/xml');\n mpd = xml && xml.documentElement.tagName === 'MPD' ? xml.documentElement : null;\n } catch (e) {// ie 11 throwsw on invalid xml\n }\n\n if (!mpd || mpd && mpd.getElementsByTagName('parsererror').length > 0) {\n throw new Error(errors.DASH_INVALID_XML);\n }\n\n return mpd;\n};\n\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} mpd\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\nvar parseUTCTimingScheme = function parseUTCTimingScheme(mpd) {\n var UTCTimingNode = findChildren(mpd, 'UTCTiming')[0];\n\n if (!UTCTimingNode) {\n return null;\n }\n\n var attributes = parseAttributes(UTCTimingNode);\n\n switch (attributes.schemeIdUri) {\n case 'urn:mpeg:dash:utc:http-head:2014':\n case 'urn:mpeg:dash:utc:http-head:2012':\n attributes.method = 'HEAD';\n break;\n\n case 'urn:mpeg:dash:utc:http-xsdate:2014':\n case 'urn:mpeg:dash:utc:http-iso:2014':\n case 'urn:mpeg:dash:utc:http-xsdate:2012':\n case 'urn:mpeg:dash:utc:http-iso:2012':\n attributes.method = 'GET';\n break;\n\n case 'urn:mpeg:dash:utc:direct:2014':\n case 'urn:mpeg:dash:utc:direct:2012':\n attributes.method = 'DIRECT';\n attributes.value = Date.parse(attributes.value);\n break;\n\n case 'urn:mpeg:dash:utc:http-ntp:2014':\n case 'urn:mpeg:dash:utc:ntp:2014':\n case 'urn:mpeg:dash:utc:sntp:2014':\n default:\n throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME);\n }\n\n return attributes;\n};\n\nvar VERSION = version;\n/*\n * Given a DASH manifest string and options, parses the DASH manifest into an object in the\n * form outputed by m3u8-parser and accepted by videojs/http-streaming.\n *\n * For live DASH manifests, if `previousManifest` is provided in options, then the newly\n * parsed DASH manifest will have its media sequence and discontinuity sequence values\n * updated to reflect its position relative to the prior manifest.\n *\n * @param {string} manifestString - the DASH manifest as a string\n * @param {options} [options] - any options\n *\n * @return {Object} the manifest object\n */\n\nvar parse = function parse(manifestString, options) {\n if (options === void 0) {\n options = {};\n }\n\n var parsedManifestInfo = inheritAttributes(stringToMpdXml(manifestString), options);\n var playlists = toPlaylists(parsedManifestInfo.representationInfo);\n return toM3u8({\n dashPlaylists: playlists,\n locations: parsedManifestInfo.locations,\n sidxMapping: options.sidxMapping,\n previousManifest: options.previousManifest\n });\n};\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} manifestString\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\n\nvar parseUTCTiming = function parseUTCTiming(manifestString) {\n return parseUTCTimingScheme(stringToMpdXml(manifestString));\n};\n\nexport { VERSION, addSidxSegmentsToPlaylist$1 as addSidxSegmentsToPlaylist, generateSidxKey, inheritAttributes, parse, parseUTCTiming, stringToMpdXml, toM3u8, toPlaylists };\n","'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","var MPEGURL_REGEX = /^(audio|video|application)\\/(x-|vnd\\.apple\\.)?mpegurl/i;\nvar DASH_REGEX = /^application\\/dash\\+xml/i;\n/**\n * Returns a string that describes the type of source based on a video source object's\n * media type.\n *\n * @see {@link https://dev.w3.org/html5/pf-summary/video.html#dom-source-type|Source Type}\n *\n * @param {string} type\n * Video source object media type\n * @return {('hls'|'dash'|'vhs-json'|null)}\n * VHS source type string\n */\n\nexport var simpleTypeFromSourceType = function simpleTypeFromSourceType(type) {\n if (MPEGURL_REGEX.test(type)) {\n return 'hls';\n }\n\n if (DASH_REGEX.test(type)) {\n return 'dash';\n } // Denotes the special case of a manifest object passed to http-streaming instead of a\n // source URL.\n //\n // See https://en.wikipedia.org/wiki/Media_type for details on specifying media types.\n //\n // In this case, vnd stands for vendor, video.js for the organization, VHS for this\n // project, and the +json suffix identifies the structure of the media type.\n\n\n if (type === 'application/vnd.videojs.vhs+json') {\n return 'vhs-json';\n }\n\n return null;\n};","\"use strict\";\n\nvar window = require('global/window');\n\nvar httpResponseHandler = function httpResponseHandler(callback, decodeResponseBody) {\n if (decodeResponseBody === void 0) {\n decodeResponseBody = false;\n }\n\n return function (err, response, responseBody) {\n // if the XHR failed, return that error\n if (err) {\n callback(err);\n return;\n } // if the HTTP status code is 4xx or 5xx, the request also failed\n\n\n if (response.statusCode >= 400 && response.statusCode <= 599) {\n var cause = responseBody;\n\n if (decodeResponseBody) {\n if (window.TextDecoder) {\n var charset = getCharset(response.headers && response.headers['content-type']);\n\n try {\n cause = new TextDecoder(charset).decode(responseBody);\n } catch (e) {}\n } else {\n cause = String.fromCharCode.apply(null, new Uint8Array(responseBody));\n }\n }\n\n callback({\n cause: cause\n });\n return;\n } // otherwise, request succeeded\n\n\n callback(null, responseBody);\n };\n};\n\nfunction getCharset(contentTypeHeader) {\n if (contentTypeHeader === void 0) {\n contentTypeHeader = '';\n }\n\n return contentTypeHeader.toLowerCase().split(';').reduce(function (charset, contentType) {\n var _contentType$split = contentType.split('='),\n type = _contentType$split[0],\n value = _contentType$split[1];\n\n if (type.trim() === 'charset') {\n return value.trim();\n }\n\n return charset;\n }, 'utf-8');\n}\n\nmodule.exports = httpResponseHandler;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar autoKeyword = \"auto\";\nvar directionSetting = {\n \"\": 1,\n \"lr\": 1,\n \"rl\": 1\n};\nvar alignSetting = {\n \"start\": 1,\n \"center\": 1,\n \"end\": 1,\n \"left\": 1,\n \"right\": 1,\n \"auto\": 1,\n \"line-left\": 1,\n \"line-right\": 1\n};\n\nfunction findDirectionSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var dir = directionSetting[value.toLowerCase()];\n return dir ? value.toLowerCase() : false;\n}\n\nfunction findAlignSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var align = alignSetting[value.toLowerCase()];\n return align ? value.toLowerCase() : false;\n}\n\nfunction VTTCue(startTime, endTime, text) {\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n this.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = \"\";\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = \"\";\n var _snapToLines = true;\n var _line = \"auto\";\n var _lineAlign = \"start\";\n var _position = \"auto\";\n var _positionAlign = \"auto\";\n var _size = 100;\n var _align = \"center\";\n\n Object.defineProperties(this, {\n \"id\": {\n enumerable: true,\n get: function() {\n return _id;\n },\n set: function(value) {\n _id = \"\" + value;\n }\n },\n\n \"pauseOnExit\": {\n enumerable: true,\n get: function() {\n return _pauseOnExit;\n },\n set: function(value) {\n _pauseOnExit = !!value;\n }\n },\n\n \"startTime\": {\n enumerable: true,\n get: function() {\n return _startTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Start time must be set to a number.\");\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"endTime\": {\n enumerable: true,\n get: function() {\n return _endTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"End time must be set to a number.\");\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"text\": {\n enumerable: true,\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = \"\" + value;\n this.hasBeenReset = true;\n }\n },\n\n \"region\": {\n enumerable: true,\n get: function() {\n return _region;\n },\n set: function(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n },\n\n \"vertical\": {\n enumerable: true,\n get: function() {\n return _vertical;\n },\n set: function(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError(\"Vertical: an invalid or illegal direction string was specified.\");\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n },\n\n \"snapToLines\": {\n enumerable: true,\n get: function() {\n return _snapToLines;\n },\n set: function(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n },\n\n \"line\": {\n enumerable: true,\n get: function() {\n return _line;\n },\n set: function(value) {\n if (typeof value !== \"number\" && value !== autoKeyword) {\n throw new SyntaxError(\"Line: an invalid number or illegal string was specified.\");\n }\n _line = value;\n this.hasBeenReset = true;\n }\n },\n\n \"lineAlign\": {\n enumerable: true,\n get: function() {\n return _lineAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n console.warn(\"lineAlign: an invalid or illegal string was specified.\");\n } else {\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }\n },\n\n \"position\": {\n enumerable: true,\n get: function() {\n return _position;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Position must be between 0 and 100.\");\n }\n _position = value;\n this.hasBeenReset = true;\n }\n },\n\n \"positionAlign\": {\n enumerable: true,\n get: function() {\n return _positionAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n console.warn(\"positionAlign: an invalid or illegal string was specified.\");\n } else {\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }\n },\n\n \"size\": {\n enumerable: true,\n get: function() {\n return _size;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Size must be between 0 and 100.\");\n }\n _size = value;\n this.hasBeenReset = true;\n }\n },\n\n \"align\": {\n enumerable: true,\n get: function() {\n return _align;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"align: an invalid or illegal alignment string was specified.\");\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }\n });\n\n /**\n * Other spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n this.displayState = undefined;\n}\n\n/**\n * VTTCue methods\n */\n\nVTTCue.prototype.getCueAsHTML = function() {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n return WebVTT.convertCueToDOMTree(window, this.text);\n};\n\nmodule.exports = VTTCue;\n","var conventions = require(\"./conventions\");\nvar dom = require('./dom')\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar NAMESPACE = conventions.NAMESPACE;\n\nvar ParseError = sax.ParseError;\nvar XMLReader = sax.XMLReader;\n\n/**\n * Normalizes line ending according to https://www.w3.org/TR/xml11/#sec-line-ends:\n *\n * > XML parsed entities are often stored in computer files which,\n * > for editing convenience, are organized into lines.\n * > These lines are typically separated by some combination\n * > of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).\n * >\n * > To simplify the tasks of applications, the XML processor must behave\n * > as if it normalized all line breaks in external parsed entities (including the document entity)\n * > on input, before parsing, by translating all of the following to a single #xA character:\n * >\n * > 1. the two-character sequence #xD #xA\n * > 2. the two-character sequence #xD #x85\n * > 3. the single character #x85\n * > 4. the single character #x2028\n * > 5. any #xD character that is not immediately followed by #xA or #x85.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizeLineEndings(input) {\n\treturn input\n\t\t.replace(/\\r[\\n\\u0085]/g, '\\n')\n\t\t.replace(/[\\r\\u0085\\u2028]/g, '\\n')\n}\n\n/**\n * @typedef Locator\n * @property {number} [columnNumber]\n * @property {number} [lineNumber]\n */\n\n/**\n * @typedef DOMParserOptions\n * @property {DOMHandler} [domBuilder]\n * @property {Function} [errorHandler]\n * @property {(string) => string} [normalizeLineEndings] used to replace line endings before parsing\n * \t\t\t\t\t\tdefaults to `normalizeLineEndings`\n * @property {Locator} [locator]\n * @property {Record} [xmlns]\n *\n * @see normalizeLineEndings\n */\n\n/**\n * The DOMParser interface provides the ability to parse XML or HTML source code\n * from a string into a DOM `Document`.\n *\n * _xmldom is different from the spec in that it allows an `options` parameter,\n * to override the default behavior._\n *\n * @param {DOMParserOptions} [options]\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization\n */\nfunction DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax = new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n \tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap[''] = NAMESPACE.HTML;\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\tvar normalize = options.normalizeLineEndings || normalizeLineEndings;\n\tif (source && typeof source === 'string') {\n\t\tsax.parse(\n\t\t\tnormalize(source),\n\t\t\tdefaultNSMap,\n\t\t\tentityMap\n\t\t)\n\t} else {\n\t\tsax.errorHandler.error('invalid doc source')\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n \tif (this.locator) {\n \tthis.doc.documentURI = this.locator.systemId;\n \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\n\t var len = attrs.length;\n\t appendElement(this, el);\n\t this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t for (var i = 0 ; i < len; i++) {\n\t var namespaceURI = attrs.getURI(i);\n\t var value = attrs.getValue(i);\n\t var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t var ins = this.doc.createProcessingInstruction(target, data);\n\t this.locator && position(this.locator,ins)\n\t appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\n\t \tlocator.lineNumber = 0;\n\t }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t var comm = this.doc.createComment(chars);\n\t this.locator && position(this.locator,comm)\n\t appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t //used in characters() methods\n\t this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t if (impl && impl.createDocumentType) {\n\t var dt = impl.createDocumentType(name, publicId, systemId);\n\t this.locator && position(this.locator,dt)\n\t appendElement(this, dt);\n\t\t\t\t\tthis.doc.doctype = dt;\n\t }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n * #comment(chars, start, length)\n * #startCDATA()\n * #endCDATA()\n * #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n * #endDTD()\n * #startEntity(name)\n * #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n * #elementDecl(name, model)\n * #externalEntityDecl(name, publicId, systemId)\n * #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\n * #resolveEntity(publicId, systemId)\n * #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n * #notationDecl(name, publicId, systemId) {};\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n if (!hander.currentElement) {\n hander.doc.appendChild(node);\n } else {\n hander.currentElement.appendChild(node);\n }\n}//appendChild and setAttributeNS are preformance key\n\nexports.__DOMHandler = DOMHandler;\nexports.normalizeLineEndings = normalizeLineEndings;\nexports.DOMParser = DOMParser;\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _construct.apply(null, arguments);\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nvar freeze = require('./conventions').freeze;\n\n/**\n * The entities that are predefined in every XML document.\n *\n * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1\n * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML Wikipedia\n */\nexports.XML_ENTITIES = freeze({\n\tamp: '&',\n\tapos: \"'\",\n\tgt: '>',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\nvar document = require('global/document');\n\nvar _objCreate = Object.create || (function() {\n function F() {}\n return function(o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create shim only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n})();\n\n// Creates a new ParserError object from an errorData object. The errorData\n// object should have default code and message properties. The default message\n// property can be overriden by passing in a message parameter.\n// See ParsingError.Errors below for acceptable errors.\nfunction ParsingError(errorData, message) {\n this.name = \"ParsingError\";\n this.code = errorData.code;\n this.message = message || errorData.message;\n}\nParsingError.prototype = _objCreate(Error.prototype);\nParsingError.prototype.constructor = ParsingError;\n\n// ParsingError metadata for acceptable ParsingErrors.\nParsingError.Errors = {\n BadSignature: {\n code: 0,\n message: \"Malformed WebVTT signature.\"\n },\n BadTimeStamp: {\n code: 1,\n message: \"Malformed time stamp.\"\n }\n};\n\n// Try to parse input as a time stamp.\nfunction parseTimeStamp(input) {\n\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n }\n\n var m = input.match(/^(\\d+):(\\d{1,2})(:\\d{1,2})?\\.(\\d{3})/);\n if (!m) {\n return null;\n }\n\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3].replace(\":\", \"\"), m[4]);\n } else if (m[1] > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[1], m[2], 0, m[4]);\n } else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, m[1], m[2], m[4]);\n }\n}\n\n// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nfunction Settings() {\n this.values = _objCreate(null);\n}\n\nSettings.prototype = {\n // Only accept the first assignment to any key.\n set: function(k, v) {\n if (!this.get(k) && v !== \"\") {\n this.values[k] = v;\n }\n },\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get: function(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n },\n // Check whether we have a value for a key.\n has: function(k) {\n return k in this.values;\n },\n // Accept a setting if its one of the given alternatives.\n alt: function(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n },\n // Accept a setting if its a valid (signed) integer.\n integer: function(k, v) {\n if (/^-?\\d+$/.test(v)) { // integer\n this.set(k, parseInt(v, 10));\n }\n },\n // Accept a setting if its a valid percentage.\n percent: function(k, v) {\n var m;\n if ((m = v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/))) {\n v = parseFloat(v);\n if (v >= 0 && v <= 100) {\n this.set(k, v);\n return true;\n }\n }\n return false;\n }\n};\n\n// Helper function to parse input into groups separated by 'groupDelim', and\n// interprete each group as a key/value pair separated by 'keyValueDelim'.\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== \"string\") {\n continue;\n }\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n var k = kv[0].trim();\n var v = kv[1].trim();\n callback(k, v);\n }\n}\n\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) {\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed timestamp: \" + oInput);\n }\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"region\":\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case \"vertical\":\n settings.alt(k, v, [\"rl\", \"lr\"]);\n break;\n case \"line\":\n var vals = v.split(\",\"),\n vals0 = vals[0];\n settings.integer(k, vals0);\n settings.percent(k, vals0) ? settings.set(\"snapToLines\", false) : null;\n settings.alt(k, vals0, [\"auto\"]);\n if (vals.length === 2) {\n settings.alt(\"lineAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"position\":\n vals = v.split(\",\");\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt(\"positionAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"size\":\n settings.percent(k, v);\n break;\n case \"align\":\n settings.alt(k, v, [\"start\", \"center\", \"end\", \"left\", \"right\"]);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get(\"region\", null);\n cue.vertical = settings.get(\"vertical\", \"\");\n try {\n cue.line = settings.get(\"line\", \"auto\");\n } catch (e) {}\n cue.lineAlign = settings.get(\"lineAlign\", \"start\");\n cue.snapToLines = settings.get(\"snapToLines\", true);\n cue.size = settings.get(\"size\", 100);\n // Safari still uses the old middle value and won't accept center\n try {\n cue.align = settings.get(\"align\", \"center\");\n } catch (e) {\n cue.align = settings.get(\"align\", \"middle\");\n }\n try {\n cue.position = settings.get(\"position\", \"auto\");\n } catch (e) {\n cue.position = settings.get(\"position\", {\n start: 0,\n left: 0,\n center: 50,\n middle: 50,\n end: 100,\n right: 100\n }, cue.align);\n }\n\n\n cue.positionAlign = settings.get(\"positionAlign\", {\n start: \"start\",\n left: \"start\",\n center: \"center\",\n middle: \"center\",\n end: \"end\",\n right: \"end\"\n }, cue.align);\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, \"\");\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== \"-->\") { // (3) next characters must match \"-->\"\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed time stamp (time stamps must be separated by '-->'): \" +\n oInput);\n }\n input = input.substr(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n\n// When evaluating this file as part of a Webpack bundle for server\n// side rendering, `document` is an empty object.\nvar TEXTAREA_ELEMENT = document.createElement && document.createElement(\"textarea\");\n\nvar TAG_NAME = {\n c: \"span\",\n i: \"i\",\n b: \"b\",\n u: \"u\",\n ruby: \"ruby\",\n rt: \"rt\",\n v: \"span\",\n lang: \"span\"\n};\n\n// 5.1 default text color\n// 5.2 default text background color is equivalent to text color with bg_ prefix\nvar DEFAULT_COLOR_CLASS = {\n white: 'rgba(255,255,255,1)',\n lime: 'rgba(0,255,0,1)',\n cyan: 'rgba(0,255,255,1)',\n red: 'rgba(255,0,0,1)',\n yellow: 'rgba(255,255,0,1)',\n magenta: 'rgba(255,0,255,1)',\n blue: 'rgba(0,0,255,1)',\n black: 'rgba(0,0,0,1)'\n};\n\nvar TAG_ANNOTATION = {\n v: \"title\",\n lang: \"lang\"\n};\n\nvar NEEDS_PARENT = {\n rt: \"ruby\"\n};\n\n// Parse content into a document fragment.\nfunction parseContent(window, input) {\n function nextToken() {\n // Check for end-of-string.\n if (!input) {\n return null;\n }\n\n // Consume 'n' characters from the input.\n function consume(result) {\n input = input.substr(result.length);\n return result;\n }\n\n var m = input.match(/^([^<]*)(<[^>]*>?)?/);\n // If there is some text before the next tag, return it, otherwise return\n // the tag.\n return consume(m[1] ? m[1] : m[2]);\n }\n\n function unescape(s) {\n TEXTAREA_ELEMENT.innerHTML = s;\n s = TEXTAREA_ELEMENT.textContent;\n TEXTAREA_ELEMENT.textContent = \"\";\n return s;\n }\n\n function shouldAdd(current, element) {\n return !NEEDS_PARENT[element.localName] ||\n NEEDS_PARENT[element.localName] === current.localName;\n }\n\n // Create an element for this tag.\n function createElement(type, annotation) {\n var tagName = TAG_NAME[type];\n if (!tagName) {\n return null;\n }\n var element = window.document.createElement(tagName);\n var name = TAG_ANNOTATION[type];\n if (name && annotation) {\n element[name] = annotation.trim();\n }\n return element;\n }\n\n var rootDiv = window.document.createElement(\"div\"),\n current = rootDiv,\n t,\n tagStack = [];\n\n while ((t = nextToken()) !== null) {\n if (t[0] === '<') {\n if (t[1] === \"/\") {\n // If the closing tag matches, move back up to the parent node.\n if (tagStack.length &&\n tagStack[tagStack.length - 1] === t.substr(2).replace(\">\", \"\")) {\n tagStack.pop();\n current = current.parentNode;\n }\n // Otherwise just ignore the end tag.\n continue;\n }\n var ts = parseTimeStamp(t.substr(1, t.length - 2));\n var node;\n if (ts) {\n // Timestamps are lead nodes as well.\n node = window.document.createProcessingInstruction(\"timestamp\", ts);\n current.appendChild(node);\n continue;\n }\n var m = t.match(/^<([^.\\s/0-9>]+)(\\.[^\\s\\\\>]+)?([^>\\\\]+)?(\\\\?)>?$/);\n // If we can't parse the tag, skip to the next tag.\n if (!m) {\n continue;\n }\n // Try to construct an element, and ignore the tag if we couldn't.\n node = createElement(m[1], m[3]);\n if (!node) {\n continue;\n }\n // Determine if the tag should be added based on the context of where it\n // is placed in the cuetext.\n if (!shouldAdd(current, node)) {\n continue;\n }\n // Set the class list (as a list of classes, separated by space).\n if (m[2]) {\n var classes = m[2].split('.');\n\n classes.forEach(function(cl) {\n var bgColor = /^bg_/.test(cl);\n // slice out `bg_` if it's a background color\n var colorName = bgColor ? cl.slice(3) : cl;\n\n if (DEFAULT_COLOR_CLASS.hasOwnProperty(colorName)) {\n var propName = bgColor ? 'background-color' : 'color';\n var propValue = DEFAULT_COLOR_CLASS[colorName];\n\n node.style[propName] = propValue;\n }\n });\n\n node.className = classes.join(' ');\n }\n // Append the node to the current node, and enter the scope of the new\n // node.\n tagStack.push(m[1]);\n current.appendChild(node);\n current = node;\n continue;\n }\n\n // Text nodes are leaf nodes.\n current.appendChild(window.document.createTextNode(unescape(t)));\n }\n\n return rootDiv;\n}\n\n// This is a list of all the Unicode characters that have a strong\n// right-to-left category. What this means is that these characters are\n// written right-to-left for sure. It was generated by pulling all the strong\n// right-to-left characters out of the Unicode data table. That table can\n// found at: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\nvar strongRTLRanges = [[0x5be, 0x5be], [0x5c0, 0x5c0], [0x5c3, 0x5c3], [0x5c6, 0x5c6],\n [0x5d0, 0x5ea], [0x5f0, 0x5f4], [0x608, 0x608], [0x60b, 0x60b], [0x60d, 0x60d],\n [0x61b, 0x61b], [0x61e, 0x64a], [0x66d, 0x66f], [0x671, 0x6d5], [0x6e5, 0x6e6],\n [0x6ee, 0x6ef], [0x6fa, 0x70d], [0x70f, 0x710], [0x712, 0x72f], [0x74d, 0x7a5],\n [0x7b1, 0x7b1], [0x7c0, 0x7ea], [0x7f4, 0x7f5], [0x7fa, 0x7fa], [0x800, 0x815],\n [0x81a, 0x81a], [0x824, 0x824], [0x828, 0x828], [0x830, 0x83e], [0x840, 0x858],\n [0x85e, 0x85e], [0x8a0, 0x8a0], [0x8a2, 0x8ac], [0x200f, 0x200f],\n [0xfb1d, 0xfb1d], [0xfb1f, 0xfb28], [0xfb2a, 0xfb36], [0xfb38, 0xfb3c],\n [0xfb3e, 0xfb3e], [0xfb40, 0xfb41], [0xfb43, 0xfb44], [0xfb46, 0xfbc1],\n [0xfbd3, 0xfd3d], [0xfd50, 0xfd8f], [0xfd92, 0xfdc7], [0xfdf0, 0xfdfc],\n [0xfe70, 0xfe74], [0xfe76, 0xfefc], [0x10800, 0x10805], [0x10808, 0x10808],\n [0x1080a, 0x10835], [0x10837, 0x10838], [0x1083c, 0x1083c], [0x1083f, 0x10855],\n [0x10857, 0x1085f], [0x10900, 0x1091b], [0x10920, 0x10939], [0x1093f, 0x1093f],\n [0x10980, 0x109b7], [0x109be, 0x109bf], [0x10a00, 0x10a00], [0x10a10, 0x10a13],\n [0x10a15, 0x10a17], [0x10a19, 0x10a33], [0x10a40, 0x10a47], [0x10a50, 0x10a58],\n [0x10a60, 0x10a7f], [0x10b00, 0x10b35], [0x10b40, 0x10b55], [0x10b58, 0x10b72],\n [0x10b78, 0x10b7f], [0x10c00, 0x10c48], [0x1ee00, 0x1ee03], [0x1ee05, 0x1ee1f],\n [0x1ee21, 0x1ee22], [0x1ee24, 0x1ee24], [0x1ee27, 0x1ee27], [0x1ee29, 0x1ee32],\n [0x1ee34, 0x1ee37], [0x1ee39, 0x1ee39], [0x1ee3b, 0x1ee3b], [0x1ee42, 0x1ee42],\n [0x1ee47, 0x1ee47], [0x1ee49, 0x1ee49], [0x1ee4b, 0x1ee4b], [0x1ee4d, 0x1ee4f],\n [0x1ee51, 0x1ee52], [0x1ee54, 0x1ee54], [0x1ee57, 0x1ee57], [0x1ee59, 0x1ee59],\n [0x1ee5b, 0x1ee5b], [0x1ee5d, 0x1ee5d], [0x1ee5f, 0x1ee5f], [0x1ee61, 0x1ee62],\n [0x1ee64, 0x1ee64], [0x1ee67, 0x1ee6a], [0x1ee6c, 0x1ee72], [0x1ee74, 0x1ee77],\n [0x1ee79, 0x1ee7c], [0x1ee7e, 0x1ee7e], [0x1ee80, 0x1ee89], [0x1ee8b, 0x1ee9b],\n [0x1eea1, 0x1eea3], [0x1eea5, 0x1eea9], [0x1eeab, 0x1eebb], [0x10fffd, 0x10fffd]];\n\nfunction isStrongRTLChar(charCode) {\n for (var i = 0; i < strongRTLRanges.length; i++) {\n var currentRange = strongRTLRanges[i];\n if (charCode >= currentRange[0] && charCode <= currentRange[1]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction determineBidi(cueDiv) {\n var nodeStack = [],\n text = \"\",\n charCode;\n\n if (!cueDiv || !cueDiv.childNodes) {\n return \"ltr\";\n }\n\n function pushNodes(nodeStack, node) {\n for (var i = node.childNodes.length - 1; i >= 0; i--) {\n nodeStack.push(node.childNodes[i]);\n }\n }\n\n function nextTextNode(nodeStack) {\n if (!nodeStack || !nodeStack.length) {\n return null;\n }\n\n var node = nodeStack.pop(),\n text = node.textContent || node.innerText;\n if (text) {\n // TODO: This should match all unicode type B characters (paragraph\n // separator characters). See issue #115.\n var m = text.match(/^.*(\\n|\\r)/);\n if (m) {\n nodeStack.length = 0;\n return m[0];\n }\n return text;\n }\n if (node.tagName === \"ruby\") {\n return nextTextNode(nodeStack);\n }\n if (node.childNodes) {\n pushNodes(nodeStack, node);\n return nextTextNode(nodeStack);\n }\n }\n\n pushNodes(nodeStack, cueDiv);\n while ((text = nextTextNode(nodeStack))) {\n for (var i = 0; i < text.length; i++) {\n charCode = text.charCodeAt(i);\n if (isStrongRTLChar(charCode)) {\n return \"rtl\";\n }\n }\n }\n return \"ltr\";\n}\n\nfunction computeLinePos(cue) {\n if (typeof cue.line === \"number\" &&\n (cue.snapToLines || (cue.line >= 0 && cue.line <= 100))) {\n return cue.line;\n }\n if (!cue.track || !cue.track.textTrackList ||\n !cue.track.textTrackList.mediaElement) {\n return -1;\n }\n var track = cue.track,\n trackList = track.textTrackList,\n count = 0;\n for (var i = 0; i < trackList.length && trackList[i] !== track; i++) {\n if (trackList[i].mode === \"showing\") {\n count++;\n }\n }\n return ++count * -1;\n}\n\nfunction StyleBox() {\n}\n\n// Apply styles to a div. If there is no div passed then it defaults to the\n// div on 'this'.\nStyleBox.prototype.applyStyles = function(styles, div) {\n div = div || this.div;\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n div.style[prop] = styles[prop];\n }\n }\n};\n\nStyleBox.prototype.formatStyle = function(val, unit) {\n return val === 0 ? 0 : val + unit;\n};\n\n// Constructs the computed display state of the cue (a div). Places the div\n// into the overlay which should be a block level element (usually a div).\nfunction CueStyleBox(window, cue, styleOptions) {\n StyleBox.call(this);\n this.cue = cue;\n\n // Parse our cue's text into a DOM tree rooted at 'cueDiv'. This div will\n // have inline positioning and will function as the cue background box.\n this.cueDiv = parseContent(window, cue.text);\n var styles = {\n color: \"rgba(255, 255, 255, 1)\",\n backgroundColor: \"rgba(0, 0, 0, 0.8)\",\n position: \"relative\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"inline\",\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\"\n };\n\n this.applyStyles(styles, this.cueDiv);\n\n // Create an absolutely positioned div that will be used to position the cue\n // div. Note, all WebVTT cue-setting alignments are equivalent to the CSS\n // mirrors of them except middle instead of center on Safari.\n this.div = window.document.createElement(\"div\");\n styles = {\n direction: determineBidi(this.cueDiv),\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\",\n textAlign: cue.align === \"middle\" ? \"center\" : cue.align,\n font: styleOptions.font,\n whiteSpace: \"pre-line\",\n position: \"absolute\"\n };\n\n this.applyStyles(styles);\n this.div.appendChild(this.cueDiv);\n\n // Calculate the distance from the reference edge of the viewport to the text\n // position of the cue box. The reference edge will be resolved later when\n // the box orientation styles are applied.\n var textPos = 0;\n switch (cue.positionAlign) {\n case \"start\":\n case \"line-left\":\n textPos = cue.position;\n break;\n case \"center\":\n textPos = cue.position - (cue.size / 2);\n break;\n case \"end\":\n case \"line-right\":\n textPos = cue.position - cue.size;\n break;\n }\n\n // Horizontal box orientation; textPos is the distance from the left edge of the\n // area to the left edge of the box and cue.size is the distance extending to\n // the right from there.\n if (cue.vertical === \"\") {\n this.applyStyles({\n left: this.formatStyle(textPos, \"%\"),\n width: this.formatStyle(cue.size, \"%\")\n });\n // Vertical box orientation; textPos is the distance from the top edge of the\n // area to the top edge of the box and cue.size is the height extending\n // downwards from there.\n } else {\n this.applyStyles({\n top: this.formatStyle(textPos, \"%\"),\n height: this.formatStyle(cue.size, \"%\")\n });\n }\n\n this.move = function(box) {\n this.applyStyles({\n top: this.formatStyle(box.top, \"px\"),\n bottom: this.formatStyle(box.bottom, \"px\"),\n left: this.formatStyle(box.left, \"px\"),\n right: this.formatStyle(box.right, \"px\"),\n height: this.formatStyle(box.height, \"px\"),\n width: this.formatStyle(box.width, \"px\")\n });\n };\n}\nCueStyleBox.prototype = _objCreate(StyleBox.prototype);\nCueStyleBox.prototype.constructor = CueStyleBox;\n\n// Represents the co-ordinates of an Element in a way that we can easily\n// compute things with such as if it overlaps or intersects with another Element.\n// Can initialize it with either a StyleBox or another BoxPosition.\nfunction BoxPosition(obj) {\n // Either a BoxPosition was passed in and we need to copy it, or a StyleBox\n // was passed in and we need to copy the results of 'getBoundingClientRect'\n // as the object returned is readonly. All co-ordinate values are in reference\n // to the viewport origin (top left).\n var lh, height, width, top;\n if (obj.div) {\n height = obj.div.offsetHeight;\n width = obj.div.offsetWidth;\n top = obj.div.offsetTop;\n\n var rects = (rects = obj.div.childNodes) && (rects = rects[0]) &&\n rects.getClientRects && rects.getClientRects();\n obj = obj.div.getBoundingClientRect();\n // In certain cases the outter div will be slightly larger then the sum of\n // the inner div's lines. This could be due to bold text, etc, on some platforms.\n // In this case we should get the average line height and use that. This will\n // result in the desired behaviour.\n lh = rects ? Math.max((rects[0] && rects[0].height) || 0, obj.height / rects.length)\n : 0;\n\n }\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top || top;\n this.height = obj.height || height;\n this.bottom = obj.bottom || (top + (obj.height || height));\n this.width = obj.width || width;\n this.lineHeight = lh !== undefined ? lh : obj.lineHeight;\n}\n\n// Move the box along a particular axis. Optionally pass in an amount to move\n// the box. If no amount is passed then the default is the line height of the\n// box.\nBoxPosition.prototype.move = function(axis, toMove) {\n toMove = toMove !== undefined ? toMove : this.lineHeight;\n switch (axis) {\n case \"+x\":\n this.left += toMove;\n this.right += toMove;\n break;\n case \"-x\":\n this.left -= toMove;\n this.right -= toMove;\n break;\n case \"+y\":\n this.top += toMove;\n this.bottom += toMove;\n break;\n case \"-y\":\n this.top -= toMove;\n this.bottom -= toMove;\n break;\n }\n};\n\n// Check if this box overlaps another box, b2.\nBoxPosition.prototype.overlaps = function(b2) {\n return this.left < b2.right &&\n this.right > b2.left &&\n this.top < b2.bottom &&\n this.bottom > b2.top;\n};\n\n// Check if this box overlaps any other boxes in boxes.\nBoxPosition.prototype.overlapsAny = function(boxes) {\n for (var i = 0; i < boxes.length; i++) {\n if (this.overlaps(boxes[i])) {\n return true;\n }\n }\n return false;\n};\n\n// Check if this box is within another box.\nBoxPosition.prototype.within = function(container) {\n return this.top >= container.top &&\n this.bottom <= container.bottom &&\n this.left >= container.left &&\n this.right <= container.right;\n};\n\n// Check if this box is entirely within the container or it is overlapping\n// on the edge opposite of the axis direction passed. For example, if \"+x\" is\n// passed and the box is overlapping on the left edge of the container, then\n// return true.\nBoxPosition.prototype.overlapsOppositeAxis = function(container, axis) {\n switch (axis) {\n case \"+x\":\n return this.left < container.left;\n case \"-x\":\n return this.right > container.right;\n case \"+y\":\n return this.top < container.top;\n case \"-y\":\n return this.bottom > container.bottom;\n }\n};\n\n// Find the percentage of the area that this box is overlapping with another\n// box.\nBoxPosition.prototype.intersectPercentage = function(b2) {\n var x = Math.max(0, Math.min(this.right, b2.right) - Math.max(this.left, b2.left)),\n y = Math.max(0, Math.min(this.bottom, b2.bottom) - Math.max(this.top, b2.top)),\n intersectArea = x * y;\n return intersectArea / (this.height * this.width);\n};\n\n// Convert the positions from this box to CSS compatible positions using\n// the reference container's positions. This has to be done because this\n// box's positions are in reference to the viewport origin, whereas, CSS\n// values are in referecne to their respective edges.\nBoxPosition.prototype.toCSSCompatValues = function(reference) {\n return {\n top: this.top - reference.top,\n bottom: reference.bottom - this.bottom,\n left: this.left - reference.left,\n right: reference.right - this.right,\n height: this.height,\n width: this.width\n };\n};\n\n// Get an object that represents the box's position without anything extra.\n// Can pass a StyleBox, HTMLElement, or another BoxPositon.\nBoxPosition.getSimpleBoxPosition = function(obj) {\n var height = obj.div ? obj.div.offsetHeight : obj.tagName ? obj.offsetHeight : 0;\n var width = obj.div ? obj.div.offsetWidth : obj.tagName ? obj.offsetWidth : 0;\n var top = obj.div ? obj.div.offsetTop : obj.tagName ? obj.offsetTop : 0;\n\n obj = obj.div ? obj.div.getBoundingClientRect() :\n obj.tagName ? obj.getBoundingClientRect() : obj;\n var ret = {\n left: obj.left,\n right: obj.right,\n top: obj.top || top,\n height: obj.height || height,\n bottom: obj.bottom || (top + (obj.height || height)),\n width: obj.width || width\n };\n return ret;\n};\n\n// Move a StyleBox to its specified, or next best, position. The containerBox\n// is the box that contains the StyleBox, such as a div. boxPositions are\n// a list of other boxes that the styleBox can't overlap with.\nfunction moveBoxToLinePosition(window, styleBox, containerBox, boxPositions) {\n\n // Find the best position for a cue box, b, on the video. The axis parameter\n // is a list of axis, the order of which, it will move the box along. For example:\n // Passing [\"+x\", \"-x\"] will move the box first along the x axis in the positive\n // direction. If it doesn't find a good position for it there it will then move\n // it along the x axis in the negative direction.\n function findBestPosition(b, axis) {\n var bestPosition,\n specifiedPosition = new BoxPosition(b),\n percentage = 1; // Highest possible so the first thing we get is better.\n\n for (var i = 0; i < axis.length; i++) {\n while (b.overlapsOppositeAxis(containerBox, axis[i]) ||\n (b.within(containerBox) && b.overlapsAny(boxPositions))) {\n b.move(axis[i]);\n }\n // We found a spot where we aren't overlapping anything. This is our\n // best position.\n if (b.within(containerBox)) {\n return b;\n }\n var p = b.intersectPercentage(containerBox);\n // If we're outside the container box less then we were on our last try\n // then remember this position as the best position.\n if (percentage > p) {\n bestPosition = new BoxPosition(b);\n percentage = p;\n }\n // Reset the box position to the specified position.\n b = new BoxPosition(specifiedPosition);\n }\n return bestPosition || specifiedPosition;\n }\n\n var boxPosition = new BoxPosition(styleBox),\n cue = styleBox.cue,\n linePos = computeLinePos(cue),\n axis = [];\n\n // If we have a line number to align the cue to.\n if (cue.snapToLines) {\n var size;\n switch (cue.vertical) {\n case \"\":\n axis = [ \"+y\", \"-y\" ];\n size = \"height\";\n break;\n case \"rl\":\n axis = [ \"+x\", \"-x\" ];\n size = \"width\";\n break;\n case \"lr\":\n axis = [ \"-x\", \"+x\" ];\n size = \"width\";\n break;\n }\n\n var step = boxPosition.lineHeight,\n position = step * Math.round(linePos),\n maxPosition = containerBox[size] + step,\n initialAxis = axis[0];\n\n // If the specified intial position is greater then the max position then\n // clamp the box to the amount of steps it would take for the box to\n // reach the max position.\n if (Math.abs(position) > maxPosition) {\n position = position < 0 ? -1 : 1;\n position *= Math.ceil(maxPosition / step) * step;\n }\n\n // If computed line position returns negative then line numbers are\n // relative to the bottom of the video instead of the top. Therefore, we\n // need to increase our initial position by the length or width of the\n // video, depending on the writing direction, and reverse our axis directions.\n if (linePos < 0) {\n position += cue.vertical === \"\" ? containerBox.height : containerBox.width;\n axis = axis.reverse();\n }\n\n // Move the box to the specified position. This may not be its best\n // position.\n boxPosition.move(initialAxis, position);\n\n } else {\n // If we have a percentage line value for the cue.\n var calculatedPercentage = (boxPosition.lineHeight / containerBox.height) * 100;\n\n switch (cue.lineAlign) {\n case \"center\":\n linePos -= (calculatedPercentage / 2);\n break;\n case \"end\":\n linePos -= calculatedPercentage;\n break;\n }\n\n // Apply initial line position to the cue box.\n switch (cue.vertical) {\n case \"\":\n styleBox.applyStyles({\n top: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"rl\":\n styleBox.applyStyles({\n left: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"lr\":\n styleBox.applyStyles({\n right: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n }\n\n axis = [ \"+y\", \"-x\", \"+x\", \"-y\" ];\n\n // Get the box position again after we've applied the specified positioning\n // to it.\n boxPosition = new BoxPosition(styleBox);\n }\n\n var bestPosition = findBestPosition(boxPosition, axis);\n styleBox.move(bestPosition.toCSSCompatValues(containerBox));\n}\n\nfunction WebVTT() {\n // Nothing\n}\n\n// Helper to allow strings to be decoded instead of the default binary utf8 data.\nWebVTT.StringDecoder = function() {\n return {\n decode: function(data) {\n if (!data) {\n return \"\";\n }\n if (typeof data !== \"string\") {\n throw new Error(\"Error - expected string data.\");\n }\n return decodeURIComponent(encodeURIComponent(data));\n }\n };\n};\n\nWebVTT.convertCueToDOMTree = function(window, cuetext) {\n if (!window || !cuetext) {\n return null;\n }\n return parseContent(window, cuetext);\n};\n\nvar FONT_SIZE_PERCENT = 0.05;\nvar FONT_STYLE = \"sans-serif\";\nvar CUE_BACKGROUND_PADDING = \"1.5%\";\n\n// Runs the processing model over the cues and regions passed to it.\n// @param overlay A block level element (usually a div) that the computed cues\n// and regions will be placed into.\nWebVTT.processCues = function(window, cues, overlay) {\n if (!window || !cues || !overlay) {\n return null;\n }\n\n // Remove all previous children.\n while (overlay.firstChild) {\n overlay.removeChild(overlay.firstChild);\n }\n\n var paddedOverlay = window.document.createElement(\"div\");\n paddedOverlay.style.position = \"absolute\";\n paddedOverlay.style.left = \"0\";\n paddedOverlay.style.right = \"0\";\n paddedOverlay.style.top = \"0\";\n paddedOverlay.style.bottom = \"0\";\n paddedOverlay.style.margin = CUE_BACKGROUND_PADDING;\n overlay.appendChild(paddedOverlay);\n\n // Determine if we need to compute the display states of the cues. This could\n // be the case if a cue's state has been changed since the last computation or\n // if it has not been computed yet.\n function shouldCompute(cues) {\n for (var i = 0; i < cues.length; i++) {\n if (cues[i].hasBeenReset || !cues[i].displayState) {\n return true;\n }\n }\n return false;\n }\n\n // We don't need to recompute the cues' display states. Just reuse them.\n if (!shouldCompute(cues)) {\n for (var i = 0; i < cues.length; i++) {\n paddedOverlay.appendChild(cues[i].displayState);\n }\n return;\n }\n\n var boxPositions = [],\n containerBox = BoxPosition.getSimpleBoxPosition(paddedOverlay),\n fontSize = Math.round(containerBox.height * FONT_SIZE_PERCENT * 100) / 100;\n var styleOptions = {\n font: fontSize + \"px \" + FONT_STYLE\n };\n\n (function() {\n var styleBox, cue;\n\n for (var i = 0; i < cues.length; i++) {\n cue = cues[i];\n\n // Compute the intial position and styles of the cue div.\n styleBox = new CueStyleBox(window, cue, styleOptions);\n paddedOverlay.appendChild(styleBox.div);\n\n // Move the cue div to it's correct line position.\n moveBoxToLinePosition(window, styleBox, containerBox, boxPositions);\n\n // Remember the computed div so that we don't have to recompute it later\n // if we don't have too.\n cue.displayState = styleBox.div;\n\n boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox));\n }\n })();\n};\n\nWebVTT.Parser = function(window, vttjs, decoder) {\n if (!decoder) {\n decoder = vttjs;\n vttjs = {};\n }\n if (!vttjs) {\n vttjs = {};\n }\n\n this.window = window;\n this.vttjs = vttjs;\n this.state = \"INITIAL\";\n this.buffer = \"\";\n this.decoder = decoder || new TextDecoder(\"utf8\");\n this.regionList = [];\n};\n\nWebVTT.Parser.prototype = {\n // If the error is a ParsingError then report it to the consumer if\n // possible. If it's not a ParsingError then throw it like normal.\n reportOrThrowError: function(e) {\n if (e instanceof ParsingError) {\n this.onparsingerror && this.onparsingerror(e);\n } else {\n throw e;\n }\n },\n parse: function (data) {\n var self = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n self.buffer += self.decoder.decode(data, {stream: true});\n }\n\n function collectNextLine() {\n var buffer = self.buffer;\n var pos = 0;\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n var line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n self.buffer = buffer.substr(pos);\n return line;\n }\n\n // 3.4 WebVTT region and WebVTT region settings syntax\n function parseRegion(input) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"id\":\n settings.set(k, v);\n break;\n case \"width\":\n settings.percent(k, v);\n break;\n case \"lines\":\n settings.integer(k, v);\n break;\n case \"regionanchor\":\n case \"viewportanchor\":\n var xy = v.split(',');\n if (xy.length !== 2) {\n break;\n }\n // We have to make sure both x and y parse, so use a temporary\n // settings object here.\n var anchor = new Settings();\n anchor.percent(\"x\", xy[0]);\n anchor.percent(\"y\", xy[1]);\n if (!anchor.has(\"x\") || !anchor.has(\"y\")) {\n break;\n }\n settings.set(k + \"X\", anchor.get(\"x\"));\n settings.set(k + \"Y\", anchor.get(\"y\"));\n break;\n case \"scroll\":\n settings.alt(k, v, [\"up\"]);\n break;\n }\n }, /=/, /\\s/);\n\n // Create the region, using default values for any values that were not\n // specified.\n if (settings.has(\"id\")) {\n var region = new (self.vttjs.VTTRegion || self.window.VTTRegion)();\n region.width = settings.get(\"width\", 100);\n region.lines = settings.get(\"lines\", 3);\n region.regionAnchorX = settings.get(\"regionanchorX\", 0);\n region.regionAnchorY = settings.get(\"regionanchorY\", 100);\n region.viewportAnchorX = settings.get(\"viewportanchorX\", 0);\n region.viewportAnchorY = settings.get(\"viewportanchorY\", 100);\n region.scroll = settings.get(\"scroll\", \"\");\n // Register the region.\n self.onregion && self.onregion(region);\n // Remember the VTTRegion for later in case we parse any VTTCues that\n // reference it.\n self.regionList.push({\n id: settings.get(\"id\"),\n region: region\n });\n }\n }\n\n // draft-pantos-http-live-streaming-20\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5\n // 3.5 WebVTT\n function parseTimestampMap(input) {\n var settings = new Settings();\n\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"MPEGT\":\n settings.integer(k + 'S', v);\n break;\n case \"LOCA\":\n settings.set(k + 'L', parseTimeStamp(v));\n break;\n }\n }, /[^\\d]:/, /,/);\n\n self.ontimestampmap && self.ontimestampmap({\n \"MPEGTS\": settings.get(\"MPEGTS\"),\n \"LOCAL\": settings.get(\"LOCAL\")\n });\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n if (input.match(/X-TIMESTAMP-MAP/)) {\n // This line contains HLS X-TIMESTAMP-MAP metadata\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"X-TIMESTAMP-MAP\":\n parseTimestampMap(v);\n break;\n }\n }, /=/);\n } else {\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"Region\":\n // 3.3 WebVTT region metadata header syntax\n parseRegion(v);\n break;\n }\n }, /:/);\n }\n\n }\n\n // 5.1 WebVTT file parsing.\n try {\n var line;\n if (self.state === \"INITIAL\") {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n line = collectNextLine();\n\n var m = line.match(/^WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n\n self.state = \"HEADER\";\n }\n\n var alreadyCollectedLine = false;\n while (self.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (self.state) {\n case \"HEADER\":\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n self.state = \"ID\";\n }\n continue;\n case \"NOTE\":\n // Ignore NOTE blocks.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n case \"ID\":\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n self.state = \"NOTE\";\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n continue;\n }\n self.cue = new (self.vttjs.VTTCue || self.window.VTTCue)(0, 0, \"\");\n // Safari still uses the old middle value and won't accept center\n try {\n self.cue.align = \"center\";\n } catch (e) {\n self.cue.align = \"middle\";\n }\n self.state = \"CUE\";\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf(\"-->\") === -1) {\n self.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /*falls through*/\n case \"CUE\":\n // 40 - Collect cue timings and settings.\n try {\n parseCue(line, self.cue, self.regionList);\n } catch (e) {\n self.reportOrThrowError(e);\n // In case of an error ignore rest of the cue.\n self.cue = null;\n self.state = \"BADCUE\";\n continue;\n }\n self.state = \"CUETEXT\";\n continue;\n case \"CUETEXT\":\n var hasSubstring = line.indexOf(\"-->\") !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n self.oncue && self.oncue(self.cue);\n self.cue = null;\n self.state = \"ID\";\n continue;\n }\n if (self.cue.text) {\n self.cue.text += \"\\n\";\n }\n self.cue.text += line.replace(/\\u2028/g, '\\n').replace(/u2029/g, '\\n');\n continue;\n case \"BADCUE\": // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n }\n }\n } catch (e) {\n self.reportOrThrowError(e);\n\n // If we are currently parsing a cue, report what we have.\n if (self.state === \"CUETEXT\" && self.cue && self.oncue) {\n self.oncue(self.cue);\n }\n self.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n self.state = self.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n }\n return this;\n },\n flush: function () {\n var self = this;\n try {\n // Finish decoding the stream.\n self.buffer += self.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (self.cue || self.state === \"HEADER\") {\n self.buffer += \"\\n\\n\";\n self.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (self.state === \"INITIAL\") {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n } catch(e) {\n self.reportOrThrowError(e);\n }\n self.onflush && self.onflush();\n return this;\n }\n};\n\nmodule.exports = WebVTT;\n","// see https://tools.ietf.org/html/rfc1808\n\n(function (root) {\n var URL_REGEX =\n /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n\n var URLToolkit = {\n // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n // E.g\n // With opts.alwaysNormalize = false (default, spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n // With opts.alwaysNormalize = true (not spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n buildAbsoluteURL: function (baseURL, relativeURL, opts) {\n opts = opts || {};\n // remove any remaining space and CRLF\n baseURL = baseURL.trim();\n relativeURL = relativeURL.trim();\n if (!relativeURL) {\n // 2a) If the embedded URL is entirely empty, it inherits the\n // entire base URL (i.e., is set equal to the base URL)\n // and we are done.\n if (!opts.alwaysNormalize) {\n return baseURL;\n }\n var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n if (!basePartsForNormalise) {\n throw new Error('Error trying to parse base URL.');\n }\n basePartsForNormalise.path = URLToolkit.normalizePath(\n basePartsForNormalise.path\n );\n return URLToolkit.buildURLFromParts(basePartsForNormalise);\n }\n var relativeParts = URLToolkit.parseURL(relativeURL);\n if (!relativeParts) {\n throw new Error('Error trying to parse relative URL.');\n }\n if (relativeParts.scheme) {\n // 2b) If the embedded URL starts with a scheme name, it is\n // interpreted as an absolute URL and we are done.\n if (!opts.alwaysNormalize) {\n return relativeURL;\n }\n relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n return URLToolkit.buildURLFromParts(relativeParts);\n }\n var baseParts = URLToolkit.parseURL(baseURL);\n if (!baseParts) {\n throw new Error('Error trying to parse base URL.');\n }\n if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n baseParts.netLoc = pathParts[1];\n baseParts.path = pathParts[2];\n }\n if (baseParts.netLoc && !baseParts.path) {\n baseParts.path = '/';\n }\n var builtParts = {\n // 2c) Otherwise, the embedded URL inherits the scheme of\n // the base URL.\n scheme: baseParts.scheme,\n netLoc: relativeParts.netLoc,\n path: null,\n params: relativeParts.params,\n query: relativeParts.query,\n fragment: relativeParts.fragment,\n };\n if (!relativeParts.netLoc) {\n // 3) If the embedded URL's is non-empty, we skip to\n // Step 7. Otherwise, the embedded URL inherits the \n // (if any) of the base URL.\n builtParts.netLoc = baseParts.netLoc;\n // 4) If the embedded URL path is preceded by a slash \"/\", the\n // path is not relative and we skip to Step 7.\n if (relativeParts.path[0] !== '/') {\n if (!relativeParts.path) {\n // 5) If the embedded URL path is empty (and not preceded by a\n // slash), then the embedded URL inherits the base URL path\n builtParts.path = baseParts.path;\n // 5a) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and\n if (!relativeParts.params) {\n builtParts.params = baseParts.params;\n // 5b) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and we skip to step 7.\n if (!relativeParts.query) {\n builtParts.query = baseParts.query;\n }\n }\n } else {\n // 6) The last segment of the base URL's path (anything\n // following the rightmost slash \"/\", or the entire path if no\n // slash is present) is removed and the embedded URL's path is\n // appended in its place.\n var baseURLPath = baseParts.path;\n var newPath =\n baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +\n relativeParts.path;\n builtParts.path = URLToolkit.normalizePath(newPath);\n }\n }\n }\n if (builtParts.path === null) {\n builtParts.path = opts.alwaysNormalize\n ? URLToolkit.normalizePath(relativeParts.path)\n : relativeParts.path;\n }\n return URLToolkit.buildURLFromParts(builtParts);\n },\n parseURL: function (url) {\n var parts = URL_REGEX.exec(url);\n if (!parts) {\n return null;\n }\n return {\n scheme: parts[1] || '',\n netLoc: parts[2] || '',\n path: parts[3] || '',\n params: parts[4] || '',\n query: parts[5] || '',\n fragment: parts[6] || '',\n };\n },\n normalizePath: function (path) {\n // The following operations are\n // then applied, in order, to the new path:\n // 6a) All occurrences of \"./\", where \".\" is a complete path\n // segment, are removed.\n // 6b) If the path ends with \".\" as a complete path segment,\n // that \".\" is removed.\n path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\n // 6c) All occurrences of \"/../\", where is a\n // complete path segment not equal to \"..\", are removed.\n // Removal of these path segments is performed iteratively,\n // removing the leftmost matching pattern on each iteration,\n // until no matching pattern remains.\n // 6d) If the path ends with \"/..\", where is a\n // complete path segment not equal to \"..\", that\n // \"/..\" is removed.\n while (\n path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length\n ) {}\n return path.split('').reverse().join('');\n },\n buildURLFromParts: function (parts) {\n return (\n parts.scheme +\n parts.netLoc +\n parts.path +\n parts.params +\n parts.query +\n parts.fragment\n );\n },\n };\n\n if (typeof exports === 'object' && typeof module === 'object')\n module.exports = URLToolkit;\n else if (typeof define === 'function' && define.amd)\n define([], function () {\n return URLToolkit;\n });\n else if (typeof exports === 'object') exports['URLToolkit'] = URLToolkit;\n else root['URLToolkit'] = URLToolkit;\n})(this);\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream = /*#__PURE__*/function () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n var _proto = Stream.prototype;\n\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */\n ;\n\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\n // In Video.js we slice listener functions\n // on trigger so that it does not mess up the order\n // while we loop through.\n //\n // Here we slice on off so that the loop in trigger\n // can continue using it's old reference to loop without\n // messing up the order.\n\n this.listeners[type] = this.listeners[type].slice(0);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */\n ;\n\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n\n if (arguments.length === 2) {\n var length = callbacks.length;\n\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */\n ;\n\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n ;\n\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\nexport { Stream as default };","/*! @name m3u8-parser @version 4.8.0 @license Apache-2.0 */\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport Stream from '@videojs/vhs-utils/es/stream.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array.js';\n\n/**\n * A stream that buffers string input and generates a `data` event for each\n * line.\n *\n * @class LineStream\n * @extends Stream\n */\n\nvar LineStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(LineStream, _Stream);\n\n function LineStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.buffer = '';\n return _this;\n }\n /**\n * Add new data to be parsed.\n *\n * @param {string} data the text to process\n */\n\n\n var _proto = LineStream.prototype;\n\n _proto.push = function push(data) {\n var nextNewline;\n this.buffer += data;\n nextNewline = this.buffer.indexOf('\\n');\n\n for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\\n')) {\n this.trigger('data', this.buffer.substring(0, nextNewline));\n this.buffer = this.buffer.substring(nextNewline + 1);\n }\n };\n\n return LineStream;\n}(Stream);\n\nvar TAB = String.fromCharCode(0x09);\n\nvar parseByterange = function parseByterange(byterangeString) {\n // optionally match and capture 0+ digits before `@`\n // optionally match and capture 0+ digits after `@`\n var match = /([0-9.]*)?@?([0-9.]*)?/.exec(byterangeString || '');\n var result = {};\n\n if (match[1]) {\n result.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n result.offset = parseInt(match[2], 10);\n }\n\n return result;\n};\n/**\n * \"forgiving\" attribute list psuedo-grammar:\n * attributes -> keyvalue (',' keyvalue)*\n * keyvalue -> key '=' value\n * key -> [^=]*\n * value -> '\"' [^\"]* '\"' | [^,]*\n */\n\n\nvar attributeSeparator = function attributeSeparator() {\n var key = '[^=]*';\n var value = '\"[^\"]*\"|[^,]*';\n var keyvalue = '(?:' + key + ')=(?:' + value + ')';\n return new RegExp('(?:^|,)(' + keyvalue + ')');\n};\n/**\n * Parse attributes from a line given the separator\n *\n * @param {string} attributes the attribute line to parse\n */\n\n\nvar parseAttributes = function parseAttributes(attributes) {\n // split the string using attributes as the separator\n var attrs = attributes.split(attributeSeparator());\n var result = {};\n var i = attrs.length;\n var attr;\n\n while (i--) {\n // filter out unmatched portions of the string\n if (attrs[i] === '') {\n continue;\n } // split the key and value\n\n\n attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value\n\n attr[0] = attr[0].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^['\"](.*)['\"]$/g, '$1');\n result[attr[0]] = attr[1];\n }\n\n return result;\n};\n/**\n * A line-level M3U8 parser event stream. It expects to receive input one\n * line at a time and performs a context-free parse of its contents. A stream\n * interpretation of a manifest can be useful if the manifest is expected to\n * be too large to fit comfortably into memory or the entirety of the input\n * is not immediately available. Otherwise, it's probably much easier to work\n * with a regular `Parser` object.\n *\n * Produces `data` events with an object that captures the parser's\n * interpretation of the input. That object has a property `tag` that is one\n * of `uri`, `comment`, or `tag`. URIs only have a single additional\n * property, `line`, which captures the entirety of the input without\n * interpretation. Comments similarly have a single additional property\n * `text` which is the input without the leading `#`.\n *\n * Tags always have a property `tagType` which is the lower-cased version of\n * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance,\n * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized\n * tags are given the tag type `unknown` and a single additional property\n * `data` with the remainder of the input.\n *\n * @class ParseStream\n * @extends Stream\n */\n\n\nvar ParseStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(ParseStream, _Stream);\n\n function ParseStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.customParsers = [];\n _this.tagMappers = [];\n return _this;\n }\n /**\n * Parses an additional line of input.\n *\n * @param {string} line a single line of an M3U8 file to parse\n */\n\n\n var _proto = ParseStream.prototype;\n\n _proto.push = function push(line) {\n var _this2 = this;\n\n var match;\n var event; // strip whitespace\n\n line = line.trim();\n\n if (line.length === 0) {\n // ignore empty lines\n return;\n } // URIs\n\n\n if (line[0] !== '#') {\n this.trigger('data', {\n type: 'uri',\n uri: line\n });\n return;\n } // map tags\n\n\n var newLines = this.tagMappers.reduce(function (acc, mapper) {\n var mappedLine = mapper(line); // skip if unchanged\n\n if (mappedLine === line) {\n return acc;\n }\n\n return acc.concat([mappedLine]);\n }, [line]);\n newLines.forEach(function (newLine) {\n for (var i = 0; i < _this2.customParsers.length; i++) {\n if (_this2.customParsers[i].call(_this2, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n _this2.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\n });\n\n return;\n } // strip off any carriage returns here so the regex matching\n // doesn't have to account for them.\n\n\n newLine = newLine.replace('\\r', ''); // Tags\n\n match = /^#EXTM3U/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\n });\n\n return;\n }\n\n match = /^#EXTINF:?([0-9\\.]*)?,?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'inf'\n };\n\n if (match[1]) {\n event.duration = parseFloat(match[1]);\n }\n\n if (match[2]) {\n event.title = match[2];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'targetduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'version'\n };\n\n if (match[1]) {\n event.version = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'discontinuity-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'playlist-type'\n };\n\n if (match[1]) {\n event.playlistType = match[1];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-BYTERANGE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = _extends(parseByterange(match[1]), {\n type: 'tag',\n tagType: 'byterange'\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'allow-cache'\n };\n\n if (match[1]) {\n event.allowed = !/NO/.test(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MAP:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'map'\n };\n\n if (match[1]) {\n var attributes = parseAttributes(match[1]);\n\n if (attributes.URI) {\n event.uri = attributes.URI;\n }\n\n if (attributes.BYTERANGE) {\n event.byterange = parseByterange(attributes.BYTERANGE);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-STREAM-INF:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'stream-inf'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.RESOLUTION) {\n var split = event.attributes.RESOLUTION.split('x');\n var resolution = {};\n\n if (split[0]) {\n resolution.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n resolution.height = parseInt(split[1], 10);\n }\n\n event.attributes.RESOLUTION = resolution;\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes['FRAME-RATE']) {\n event.attributes['FRAME-RATE'] = parseFloat(event.attributes['FRAME-RATE']);\n }\n\n if (event.attributes['PROGRAM-ID']) {\n event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\n });\n\n return;\n }\n\n match = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'program-date-time'\n };\n\n if (match[1]) {\n event.dateTimeString = match[1];\n event.dateTimeObject = new Date(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-KEY:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'key'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array\n\n if (event.attributes.IV) {\n if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') {\n event.attributes.IV = event.attributes.IV.substring(2);\n }\n\n event.attributes.IV = event.attributes.IV.match(/.{8}/g);\n event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16);\n event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16);\n event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16);\n event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16);\n event.attributes.IV = new Uint32Array(event.attributes.IV);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-START:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'start'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']);\n event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out-cont'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-in'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-SKIP:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'skip'\n };\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.hasOwnProperty('SKIPPED-SEGMENTS')) {\n event.attributes['SKIPPED-SEGMENTS'] = parseInt(event.attributes['SKIPPED-SEGMENTS'], 10);\n }\n\n if (event.attributes.hasOwnProperty('RECENTLY-REMOVED-DATERANGES')) {\n event.attributes['RECENTLY-REMOVED-DATERANGES'] = event.attributes['RECENTLY-REMOVED-DATERANGES'].split(TAB);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PART:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part'\n };\n event.attributes = parseAttributes(match[1]);\n ['DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['INDEPENDENT', 'GAP'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n if (event.attributes.hasOwnProperty('BYTERANGE')) {\n event.attributes.byterange = parseByterange(event.attributes.BYTERANGE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-SERVER-CONTROL:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'server-control'\n };\n event.attributes = parseAttributes(match[1]);\n ['CAN-SKIP-UNTIL', 'PART-HOLD-BACK', 'HOLD-BACK'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['CAN-SKIP-DATERANGES', 'CAN-BLOCK-RELOAD'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PART-INF:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part-inf'\n };\n event.attributes = parseAttributes(match[1]);\n ['PART-TARGET'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PRELOAD-HINT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'preload-hint'\n };\n event.attributes = parseAttributes(match[1]);\n ['BYTERANGE-START', 'BYTERANGE-LENGTH'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n var subkey = key === 'BYTERANGE-LENGTH' ? 'length' : 'offset';\n event.attributes.byterange = event.attributes.byterange || {};\n event.attributes.byterange[subkey] = event.attributes[key]; // only keep the parsed byterange object.\n\n delete event.attributes[key];\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-RENDITION-REPORT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'rendition-report'\n };\n event.attributes = parseAttributes(match[1]);\n ['LAST-MSN', 'LAST-PART'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n } // unknown tag type\n\n\n _this2.trigger('data', {\n type: 'tag',\n data: newLine.slice(4)\n });\n });\n }\n /**\n * Add a parser for custom headers\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(_ref) {\n var _this3 = this;\n\n var expression = _ref.expression,\n customType = _ref.customType,\n dataParser = _ref.dataParser,\n segment = _ref.segment;\n\n if (typeof dataParser !== 'function') {\n dataParser = function dataParser(line) {\n return line;\n };\n }\n\n this.customParsers.push(function (line) {\n var match = expression.exec(line);\n\n if (match) {\n _this3.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType: customType,\n segment: segment\n });\n\n return true;\n }\n });\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(_ref2) {\n var expression = _ref2.expression,\n map = _ref2.map;\n\n var mapFn = function mapFn(line) {\n if (expression.test(line)) {\n return map(line);\n }\n\n return line;\n };\n\n this.tagMappers.push(mapFn);\n };\n\n return ParseStream;\n}(Stream);\n\nvar camelCase = function camelCase(str) {\n return str.toLowerCase().replace(/-(\\w)/g, function (a) {\n return a[1].toUpperCase();\n });\n};\n\nvar camelCaseKeys = function camelCaseKeys(attributes) {\n var result = {};\n Object.keys(attributes).forEach(function (key) {\n result[camelCase(key)] = attributes[key];\n });\n return result;\n}; // set SERVER-CONTROL hold back based upon targetDuration and partTargetDuration\n// we need this helper because defaults are based upon targetDuration and\n// partTargetDuration being set, but they may not be if SERVER-CONTROL appears before\n// target durations are set.\n\n\nvar setHoldBack = function setHoldBack(manifest) {\n var serverControl = manifest.serverControl,\n targetDuration = manifest.targetDuration,\n partTargetDuration = manifest.partTargetDuration;\n\n if (!serverControl) {\n return;\n }\n\n var tag = '#EXT-X-SERVER-CONTROL';\n var hb = 'holdBack';\n var phb = 'partHoldBack';\n var minTargetDuration = targetDuration && targetDuration * 3;\n var minPartDuration = partTargetDuration && partTargetDuration * 2;\n\n if (targetDuration && !serverControl.hasOwnProperty(hb)) {\n serverControl[hb] = minTargetDuration;\n this.trigger('info', {\n message: tag + \" defaulting HOLD-BACK to targetDuration * 3 (\" + minTargetDuration + \").\"\n });\n }\n\n if (minTargetDuration && serverControl[hb] < minTargetDuration) {\n this.trigger('warn', {\n message: tag + \" clamping HOLD-BACK (\" + serverControl[hb] + \") to targetDuration * 3 (\" + minTargetDuration + \")\"\n });\n serverControl[hb] = minTargetDuration;\n } // default no part hold back to part target duration * 3\n\n\n if (partTargetDuration && !serverControl.hasOwnProperty(phb)) {\n serverControl[phb] = partTargetDuration * 3;\n this.trigger('info', {\n message: tag + \" defaulting PART-HOLD-BACK to partTargetDuration * 3 (\" + serverControl[phb] + \").\"\n });\n } // if part hold back is too small default it to part target duration * 2\n\n\n if (partTargetDuration && serverControl[phb] < minPartDuration) {\n this.trigger('warn', {\n message: tag + \" clamping PART-HOLD-BACK (\" + serverControl[phb] + \") to partTargetDuration * 2 (\" + minPartDuration + \").\"\n });\n serverControl[phb] = minPartDuration;\n }\n};\n/**\n * A parser for M3U8 files. The current interpretation of the input is\n * exposed as a property `manifest` on parser objects. It's just two lines to\n * create and parse a manifest once you have the contents available as a string:\n *\n * ```js\n * var parser = new m3u8.Parser();\n * parser.push(xhr.responseText);\n * ```\n *\n * New input can later be applied to update the manifest object by calling\n * `push` again.\n *\n * The parser attempts to create a usable manifest object even if the\n * underlying input is somewhat nonsensical. It emits `info` and `warning`\n * events during the parse if it encounters input that seems invalid or\n * requires some property of the manifest object to be defaulted.\n *\n * @class Parser\n * @extends Stream\n */\n\n\nvar Parser = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(Parser, _Stream);\n\n function Parser() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.lineStream = new LineStream();\n _this.parseStream = new ParseStream();\n\n _this.lineStream.pipe(_this.parseStream);\n /* eslint-disable consistent-this */\n\n\n var self = _assertThisInitialized(_this);\n /* eslint-enable consistent-this */\n\n\n var uris = [];\n var currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n var currentMap; // if specified, the active decryption key\n\n var _key;\n\n var hasParts = false;\n\n var noop = function noop() {};\n\n var defaultMediaGroups = {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n }; // This is the Widevine UUID from DASH IF IOP. The same exact string is\n // used in MPDs with Widevine encrypted streams.\n\n var widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n var currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n _this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: []\n }; // keep track of the last seen segment's byte range end, as segments are not required\n // to provide the offset, in which case it defaults to the next byte after the\n // previous segment\n\n var lastByterangeEnd = 0; // keep track of the last seen part's byte range end.\n\n var lastPartByterangeEnd = 0;\n\n _this.on('end', function () {\n // only add preloadSegment if we don't yet have a uri for it.\n // and we actually have parts/preloadHints\n if (currentUri.uri || !currentUri.parts && !currentUri.preloadHints) {\n return;\n }\n\n if (!currentUri.map && currentMap) {\n currentUri.map = currentMap;\n }\n\n if (!currentUri.key && _key) {\n currentUri.key = _key;\n }\n\n if (!currentUri.timeline && typeof currentTimeline === 'number') {\n currentUri.timeline = currentTimeline;\n }\n\n _this.manifest.preloadSegment = currentUri;\n }); // update the manifest with the m3u8 entry from the parse stream\n\n\n _this.parseStream.on('data', function (entry) {\n var mediaGroup;\n var rendition;\n ({\n tag: function tag() {\n // switch based on the tag type\n (({\n version: function version() {\n if (entry.version) {\n this.manifest.version = entry.version;\n }\n },\n 'allow-cache': function allowCache() {\n this.manifest.allowCache = entry.allowed;\n\n if (!('allowed' in entry)) {\n this.trigger('info', {\n message: 'defaulting allowCache to YES'\n });\n this.manifest.allowCache = true;\n }\n },\n byterange: function byterange() {\n var byterange = {};\n\n if ('length' in entry) {\n currentUri.byterange = byterange;\n byterange.length = entry.length;\n\n if (!('offset' in entry)) {\n /*\n * From the latest spec (as of this writing):\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.2.2\n *\n * Same text since EXT-X-BYTERANGE's introduction in draft 7:\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-07#section-3.3.1)\n *\n * \"If o [offset] is not present, the sub-range begins at the next byte\n * following the sub-range of the previous media segment.\"\n */\n entry.offset = lastByterangeEnd;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\n\n lastByterangeEnd = byterange.offset + byterange.length;\n },\n endlist: function endlist() {\n this.manifest.endList = true;\n },\n inf: function inf() {\n if (!('mediaSequence' in this.manifest)) {\n this.manifest.mediaSequence = 0;\n this.trigger('info', {\n message: 'defaulting media sequence to zero'\n });\n }\n\n if (!('discontinuitySequence' in this.manifest)) {\n this.manifest.discontinuitySequence = 0;\n this.trigger('info', {\n message: 'defaulting discontinuity sequence to zero'\n });\n }\n\n if (entry.duration > 0) {\n currentUri.duration = entry.duration;\n }\n\n if (entry.duration === 0) {\n currentUri.duration = 0.01;\n this.trigger('info', {\n message: 'updating zero segment duration to a small value'\n });\n }\n\n this.manifest.segments = uris;\n },\n key: function key() {\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring key declaration without attribute list'\n });\n return;\n } // clear the active encryption key\n\n\n if (entry.attributes.METHOD === 'NONE') {\n _key = null;\n return;\n }\n\n if (!entry.attributes.URI) {\n this.trigger('warn', {\n message: 'ignoring key declaration without URI'\n });\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.apple.streamingkeydelivery') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.apple.fps.1_0'] = {\n attributes: entry.attributes\n };\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.microsoft.playready') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.microsoft.playready'] = {\n uri: entry.attributes.URI\n };\n return;\n } // check if the content is encrypted for Widevine\n // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf\n\n\n if (entry.attributes.KEYFORMAT === widevineUuid) {\n var VALID_METHODS = ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'];\n\n if (VALID_METHODS.indexOf(entry.attributes.METHOD) === -1) {\n this.trigger('warn', {\n message: 'invalid key method provided for Widevine'\n });\n return;\n }\n\n if (entry.attributes.METHOD === 'SAMPLE-AES-CENC') {\n this.trigger('warn', {\n message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead'\n });\n }\n\n if (entry.attributes.URI.substring(0, 23) !== 'data:text/plain;base64,') {\n this.trigger('warn', {\n message: 'invalid key URI provided for Widevine'\n });\n return;\n }\n\n if (!(entry.attributes.KEYID && entry.attributes.KEYID.substring(0, 2) === '0x')) {\n this.trigger('warn', {\n message: 'invalid key ID provided for Widevine'\n });\n return;\n } // if Widevine key attributes are valid, store them as `contentProtection`\n // on the manifest to emulate Widevine tag structure in a DASH mpd\n\n\n this.manifest.contentProtection = this.manifest.contentProtection || {};\n this.manifest.contentProtection['com.widevine.alpha'] = {\n attributes: {\n schemeIdUri: entry.attributes.KEYFORMAT,\n // remove '0x' from the key id string\n keyId: entry.attributes.KEYID.substring(2)\n },\n // decode the base64-encoded PSSH box\n pssh: decodeB64ToUint8Array(entry.attributes.URI.split(',')[1])\n };\n return;\n }\n\n if (!entry.attributes.METHOD) {\n this.trigger('warn', {\n message: 'defaulting key method to AES-128'\n });\n } // setup an encryption key for upcoming segments\n\n\n _key = {\n method: entry.attributes.METHOD || 'AES-128',\n uri: entry.attributes.URI\n };\n\n if (typeof entry.attributes.IV !== 'undefined') {\n _key.iv = entry.attributes.IV;\n }\n },\n 'media-sequence': function mediaSequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid media sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.mediaSequence = entry.number;\n },\n 'discontinuity-sequence': function discontinuitySequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid discontinuity sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.discontinuitySequence = entry.number;\n currentTimeline = entry.number;\n },\n 'playlist-type': function playlistType() {\n if (!/VOD|EVENT/.test(entry.playlistType)) {\n this.trigger('warn', {\n message: 'ignoring unknown playlist type: ' + entry.playlist\n });\n return;\n }\n\n this.manifest.playlistType = entry.playlistType;\n },\n map: function map() {\n currentMap = {};\n\n if (entry.uri) {\n currentMap.uri = entry.uri;\n }\n\n if (entry.byterange) {\n currentMap.byterange = entry.byterange;\n }\n\n if (_key) {\n currentMap.key = _key;\n }\n },\n 'stream-inf': function streamInf() {\n this.manifest.playlists = uris;\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring empty stream-inf attributes'\n });\n return;\n }\n\n if (!currentUri.attributes) {\n currentUri.attributes = {};\n }\n\n _extends(currentUri.attributes, entry.attributes);\n },\n media: function media() {\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) {\n this.trigger('warn', {\n message: 'ignoring incomplete or missing media group'\n });\n return;\n } // find the media group, creating defaults as necessary\n\n\n var mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE];\n mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {};\n mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata\n\n rendition = {\n default: /yes/i.test(entry.attributes.DEFAULT)\n };\n\n if (rendition.default) {\n rendition.autoselect = true;\n } else {\n rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT);\n }\n\n if (entry.attributes.LANGUAGE) {\n rendition.language = entry.attributes.LANGUAGE;\n }\n\n if (entry.attributes.URI) {\n rendition.uri = entry.attributes.URI;\n }\n\n if (entry.attributes['INSTREAM-ID']) {\n rendition.instreamId = entry.attributes['INSTREAM-ID'];\n }\n\n if (entry.attributes.CHARACTERISTICS) {\n rendition.characteristics = entry.attributes.CHARACTERISTICS;\n }\n\n if (entry.attributes.FORCED) {\n rendition.forced = /yes/i.test(entry.attributes.FORCED);\n } // insert the new rendition\n\n\n mediaGroup[entry.attributes.NAME] = rendition;\n },\n discontinuity: function discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n 'program-date-time': function programDateTime() {\n if (typeof this.manifest.dateTimeString === 'undefined') {\n // PROGRAM-DATE-TIME is a media-segment tag, but for backwards\n // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag\n // to the manifest object\n // TODO: Consider removing this in future major version\n this.manifest.dateTimeString = entry.dateTimeString;\n this.manifest.dateTimeObject = entry.dateTimeObject;\n }\n\n currentUri.dateTimeString = entry.dateTimeString;\n currentUri.dateTimeObject = entry.dateTimeObject;\n },\n targetduration: function targetduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid target duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.targetDuration = entry.duration;\n setHoldBack.call(this, this.manifest);\n },\n start: function start() {\n if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) {\n this.trigger('warn', {\n message: 'ignoring start declaration without appropriate attribute list'\n });\n return;\n }\n\n this.manifest.start = {\n timeOffset: entry.attributes['TIME-OFFSET'],\n precise: entry.attributes.PRECISE\n };\n },\n 'cue-out': function cueOut() {\n currentUri.cueOut = entry.data;\n },\n 'cue-out-cont': function cueOutCont() {\n currentUri.cueOutCont = entry.data;\n },\n 'cue-in': function cueIn() {\n currentUri.cueIn = entry.data;\n },\n 'skip': function skip() {\n this.manifest.skip = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-SKIP', entry.attributes, ['SKIPPED-SEGMENTS']);\n },\n 'part': function part() {\n var _this2 = this;\n\n hasParts = true; // parts are always specifed before a segment\n\n var segmentIndex = this.manifest.segments.length;\n var part = camelCaseKeys(entry.attributes);\n currentUri.parts = currentUri.parts || [];\n currentUri.parts.push(part);\n\n if (part.byterange) {\n if (!part.byterange.hasOwnProperty('offset')) {\n part.byterange.offset = lastPartByterangeEnd;\n }\n\n lastPartByterangeEnd = part.byterange.offset + part.byterange.length;\n }\n\n var partIndex = currentUri.parts.length - 1;\n this.warnOnMissingAttributes_(\"#EXT-X-PART #\" + partIndex + \" for segment #\" + segmentIndex, entry.attributes, ['URI', 'DURATION']);\n\n if (this.manifest.renditionReports) {\n this.manifest.renditionReports.forEach(function (r, i) {\n if (!r.hasOwnProperty('lastPart')) {\n _this2.trigger('warn', {\n message: \"#EXT-X-RENDITION-REPORT #\" + i + \" lacks required attribute(s): LAST-PART\"\n });\n }\n });\n }\n },\n 'server-control': function serverControl() {\n var attrs = this.manifest.serverControl = camelCaseKeys(entry.attributes);\n\n if (!attrs.hasOwnProperty('canBlockReload')) {\n attrs.canBlockReload = false;\n this.trigger('info', {\n message: '#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false'\n });\n }\n\n setHoldBack.call(this, this.manifest);\n\n if (attrs.canSkipDateranges && !attrs.hasOwnProperty('canSkipUntil')) {\n this.trigger('warn', {\n message: '#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set'\n });\n }\n },\n 'preload-hint': function preloadHint() {\n // parts are always specifed before a segment\n var segmentIndex = this.manifest.segments.length;\n var hint = camelCaseKeys(entry.attributes);\n var isPart = hint.type && hint.type === 'PART';\n currentUri.preloadHints = currentUri.preloadHints || [];\n currentUri.preloadHints.push(hint);\n\n if (hint.byterange) {\n if (!hint.byterange.hasOwnProperty('offset')) {\n // use last part byterange end or zero if not a part.\n hint.byterange.offset = isPart ? lastPartByterangeEnd : 0;\n\n if (isPart) {\n lastPartByterangeEnd = hint.byterange.offset + hint.byterange.length;\n }\n }\n }\n\n var index = currentUri.preloadHints.length - 1;\n this.warnOnMissingAttributes_(\"#EXT-X-PRELOAD-HINT #\" + index + \" for segment #\" + segmentIndex, entry.attributes, ['TYPE', 'URI']);\n\n if (!hint.type) {\n return;\n } // search through all preload hints except for the current one for\n // a duplicate type.\n\n\n for (var i = 0; i < currentUri.preloadHints.length - 1; i++) {\n var otherHint = currentUri.preloadHints[i];\n\n if (!otherHint.type) {\n continue;\n }\n\n if (otherHint.type === hint.type) {\n this.trigger('warn', {\n message: \"#EXT-X-PRELOAD-HINT #\" + index + \" for segment #\" + segmentIndex + \" has the same TYPE \" + hint.type + \" as preload hint #\" + i\n });\n }\n }\n },\n 'rendition-report': function renditionReport() {\n var report = camelCaseKeys(entry.attributes);\n this.manifest.renditionReports = this.manifest.renditionReports || [];\n this.manifest.renditionReports.push(report);\n var index = this.manifest.renditionReports.length - 1;\n var required = ['LAST-MSN', 'URI'];\n\n if (hasParts) {\n required.push('LAST-PART');\n }\n\n this.warnOnMissingAttributes_(\"#EXT-X-RENDITION-REPORT #\" + index, entry.attributes, required);\n },\n 'part-inf': function partInf() {\n this.manifest.partInf = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-PART-INF', entry.attributes, ['PART-TARGET']);\n\n if (this.manifest.partInf.partTarget) {\n this.manifest.partTargetDuration = this.manifest.partInf.partTarget;\n }\n\n setHoldBack.call(this, this.manifest);\n }\n })[entry.tagType] || noop).call(self);\n },\n uri: function uri() {\n currentUri.uri = entry.uri;\n uris.push(currentUri); // if no explicit duration was declared, use the target duration\n\n if (this.manifest.targetDuration && !('duration' in currentUri)) {\n this.trigger('warn', {\n message: 'defaulting segment duration to the target duration'\n });\n currentUri.duration = this.manifest.targetDuration;\n } // annotate with encryption information, if necessary\n\n\n if (_key) {\n currentUri.key = _key;\n }\n\n currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary\n\n if (currentMap) {\n currentUri.map = currentMap;\n } // reset the last byterange end as it needs to be 0 between parts\n\n\n lastPartByterangeEnd = 0; // prepare for the next URI\n\n currentUri = {};\n },\n comment: function comment() {// comments are not important for playback\n },\n custom: function custom() {\n // if this is segment-level data attach the output to the segment\n if (entry.segment) {\n currentUri.custom = currentUri.custom || {};\n currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object\n } else {\n this.manifest.custom = this.manifest.custom || {};\n this.manifest.custom[entry.customType] = entry.data;\n }\n }\n })[entry.type].call(self);\n });\n\n return _this;\n }\n\n var _proto = Parser.prototype;\n\n _proto.warnOnMissingAttributes_ = function warnOnMissingAttributes_(identifier, attributes, required) {\n var missing = [];\n required.forEach(function (key) {\n if (!attributes.hasOwnProperty(key)) {\n missing.push(key);\n }\n });\n\n if (missing.length) {\n this.trigger('warn', {\n message: identifier + \" lacks required attribute(s): \" + missing.join(', ')\n });\n }\n }\n /**\n * Parse the input string and update the manifest object.\n *\n * @param {string} chunk a potentially incomplete portion of the manifest\n */\n ;\n\n _proto.push = function push(chunk) {\n this.lineStream.push(chunk);\n }\n /**\n * Flush any remaining input. This can be handy if the last line of an M3U8\n * manifest did not contain a trailing newline but the file has been\n * completely received.\n */\n ;\n\n _proto.end = function end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n this.trigger('end');\n }\n /**\n * Add an additional parser for non-standard tags\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.type the type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(options) {\n this.parseStream.addParser(options);\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n };\n\n return Parser;\n}(Stream);\n\nexport { LineStream, ParseStream, Parser };\n","import window from 'global/window'; // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2));\n\nvar repeat = function repeat(str, len) {\n var acc = '';\n\n while (len--) {\n acc += str;\n }\n\n return acc;\n}; // count the number of bits it would take to represent a number\n// we used to do this with log2 but BigInt does not support builtin math\n// Math.ceil(log2(x));\n\n\nexport var countBits = function countBits(x) {\n return x.toString(2).length;\n}; // count the number of whole bytes it would take to represent a number\n\nexport var countBytes = function countBytes(x) {\n return Math.ceil(countBits(x) / 8);\n};\nexport var padStart = function padStart(b, len, str) {\n if (str === void 0) {\n str = ' ';\n }\n\n return (repeat(str, len) + b.toString()).slice(-len);\n};\nexport var isArrayBufferView = function isArrayBufferView(obj) {\n if (ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(obj);\n }\n\n return obj && obj.buffer instanceof ArrayBuffer;\n};\nexport var isTypedArray = function isTypedArray(obj) {\n return isArrayBufferView(obj);\n};\nexport var toUint8 = function toUint8(bytes) {\n if (bytes instanceof Uint8Array) {\n return bytes;\n }\n\n if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) {\n // any non-number or NaN leads to empty uint8array\n // eslint-disable-next-line\n if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) {\n bytes = 0;\n } else {\n bytes = [bytes];\n }\n }\n\n return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0);\n};\nexport var toHexString = function toHexString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(16), 2, '0');\n }\n\n return str;\n};\nexport var toBinaryString = function toBinaryString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(2), 8, '0');\n }\n\n return str;\n};\nvar BigInt = window.BigInt || Number;\nvar BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')];\nexport var ENDIANNESS = function () {\n var a = new Uint16Array([0xFFCC]);\n var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n\n if (b[0] === 0xFF) {\n return 'big';\n }\n\n if (b[0] === 0xCC) {\n return 'little';\n }\n\n return 'unknown';\n}();\nexport var IS_BIG_ENDIAN = ENDIANNESS === 'big';\nexport var IS_LITTLE_ENDIAN = ENDIANNESS === 'little';\nexport var bytesToNumber = function bytesToNumber(bytes, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$signed = _ref.signed,\n signed = _ref$signed === void 0 ? false : _ref$signed,\n _ref$le = _ref.le,\n le = _ref$le === void 0 ? false : _ref$le;\n\n bytes = toUint8(bytes);\n var fn = le ? 'reduce' : 'reduceRight';\n var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn];\n var number = obj.call(bytes, function (total, byte, i) {\n var exponent = le ? i : Math.abs(i + 1 - bytes.length);\n return total + BigInt(byte) * BYTE_TABLE[exponent];\n }, BigInt(0));\n\n if (signed) {\n var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1);\n number = BigInt(number);\n\n if (number > max) {\n number -= max;\n number -= max;\n number -= BigInt(2);\n }\n }\n\n return Number(number);\n};\nexport var numberToBytes = function numberToBytes(number, _temp2) {\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$le = _ref2.le,\n le = _ref2$le === void 0 ? false : _ref2$le;\n\n // eslint-disable-next-line\n if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) {\n number = 0;\n }\n\n number = BigInt(number);\n var byteCount = countBytes(number);\n var bytes = new Uint8Array(new ArrayBuffer(byteCount));\n\n for (var i = 0; i < byteCount; i++) {\n var byteIndex = le ? i : Math.abs(i + 1 - bytes.length);\n bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF));\n\n if (number < 0) {\n bytes[byteIndex] = Math.abs(~bytes[byteIndex]);\n bytes[byteIndex] -= i === 0 ? 1 : 2;\n }\n }\n\n return bytes;\n};\nexport var bytesToString = function bytesToString(bytes) {\n if (!bytes) {\n return '';\n } // TODO: should toUint8 handle cases where we only have 8 bytes\n // but report more since this is a Uint16+ Array?\n\n\n bytes = Array.prototype.slice.call(bytes);\n var string = String.fromCharCode.apply(null, toUint8(bytes));\n\n try {\n return decodeURIComponent(escape(string));\n } catch (e) {// if decodeURIComponent/escape fails, we are dealing with partial\n // or full non string data. Just return the potentially garbled string.\n }\n\n return string;\n};\nexport var stringToBytes = function stringToBytes(string, stringIsBytes) {\n if (typeof string !== 'string' && string && typeof string.toString === 'function') {\n string = string.toString();\n }\n\n if (typeof string !== 'string') {\n return new Uint8Array();\n } // If the string already is bytes, we don't have to do this\n // otherwise we do this so that we split multi length characters\n // into individual bytes\n\n\n if (!stringIsBytes) {\n string = unescape(encodeURIComponent(string));\n }\n\n var view = new Uint8Array(string.length);\n\n for (var i = 0; i < string.length; i++) {\n view[i] = string.charCodeAt(i);\n }\n\n return view;\n};\nexport var concatTypedArrays = function concatTypedArrays() {\n for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) {\n buffers[_key] = arguments[_key];\n }\n\n buffers = buffers.filter(function (b) {\n return b && (b.byteLength || b.length) && typeof b !== 'string';\n });\n\n if (buffers.length <= 1) {\n // for 0 length we will return empty uint8\n // for 1 length we return the first uint8\n return toUint8(buffers[0]);\n }\n\n var totalLen = buffers.reduce(function (total, buf, i) {\n return total + (buf.byteLength || buf.length);\n }, 0);\n var tempBuffer = new Uint8Array(totalLen);\n var offset = 0;\n buffers.forEach(function (buf) {\n buf = toUint8(buf);\n tempBuffer.set(buf, offset);\n offset += buf.byteLength;\n });\n return tempBuffer;\n};\n/**\n * Check if the bytes \"b\" are contained within bytes \"a\".\n *\n * @param {Uint8Array|Array} a\n * Bytes to check in\n *\n * @param {Uint8Array|Array} b\n * Bytes to check for\n *\n * @param {Object} options\n * options\n *\n * @param {Array|Uint8Array} [offset=0]\n * offset to use when looking at bytes in a\n *\n * @param {Array|Uint8Array} [mask=[]]\n * mask to use on bytes before comparison.\n *\n * @return {boolean}\n * If all bytes in b are inside of a, taking into account\n * bit masks.\n */\n\nexport var bytesMatch = function bytesMatch(a, b, _temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n _ref3$offset = _ref3.offset,\n offset = _ref3$offset === void 0 ? 0 : _ref3$offset,\n _ref3$mask = _ref3.mask,\n mask = _ref3$mask === void 0 ? [] : _ref3$mask;\n\n a = toUint8(a);\n b = toUint8(b); // ie 11 does not support uint8 every\n\n var fn = b.every ? b.every : Array.prototype.every;\n return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8\n fn.call(b, function (bByte, i) {\n var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i];\n return bByte === aByte;\n });\n};\nexport var sliceBytes = function sliceBytes(src, start, end) {\n if (Uint8Array.prototype.slice) {\n return Uint8Array.prototype.slice.call(src, start, end);\n }\n\n return new Uint8Array(Array.prototype.slice.call(src, start, end));\n};\nexport var reverseBytes = function reverseBytes(src) {\n if (src.reverse) {\n return src.reverse();\n }\n\n return Array.prototype.reverse.call(src);\n};","// Source: http://jsfiddle.net/vWx8V/\n// http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes\n\n/**\n * Conenience method returns corresponding value for given keyName or keyCode.\n *\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Mixed}\n * @api public\n */\n\nfunction keyCode(searchInput) {\n // Keyboard Events\n if (searchInput && 'object' === typeof searchInput) {\n var hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode\n if (hasKeyCode) searchInput = hasKeyCode\n }\n\n // Numbers\n if ('number' === typeof searchInput) return names[searchInput]\n\n // Everything else (cast to string)\n var search = String(searchInput)\n\n // check codes\n var foundNamedKey = codes[search.toLowerCase()]\n if (foundNamedKey) return foundNamedKey\n\n // check aliases\n var foundNamedKey = aliases[search.toLowerCase()]\n if (foundNamedKey) return foundNamedKey\n\n // weird character?\n if (search.length === 1) return search.charCodeAt(0)\n\n return undefined\n}\n\n/**\n * Compares a keyboard event with a given keyCode or keyName.\n *\n * @param {Event} event Keyboard event that should be tested\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Boolean}\n * @api public\n */\nkeyCode.isEventKey = function isEventKey(event, nameOrCode) {\n if (event && 'object' === typeof event) {\n var keyCode = event.which || event.keyCode || event.charCode\n if (keyCode === null || keyCode === undefined) { return false; }\n if (typeof nameOrCode === 'string') {\n // check codes\n var foundNamedKey = codes[nameOrCode.toLowerCase()]\n if (foundNamedKey) { return foundNamedKey === keyCode; }\n \n // check aliases\n var foundNamedKey = aliases[nameOrCode.toLowerCase()]\n if (foundNamedKey) { return foundNamedKey === keyCode; }\n } else if (typeof nameOrCode === 'number') {\n return nameOrCode === keyCode;\n }\n return false;\n }\n}\n\nexports = module.exports = keyCode;\n\n/**\n * Get by name\n *\n * exports.code['enter'] // => 13\n */\n\nvar codes = exports.code = exports.codes = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'ctrl': 17,\n 'alt': 18,\n 'pause/break': 19,\n 'caps lock': 20,\n 'esc': 27,\n 'space': 32,\n 'page up': 33,\n 'page down': 34,\n 'end': 35,\n 'home': 36,\n 'left': 37,\n 'up': 38,\n 'right': 39,\n 'down': 40,\n 'insert': 45,\n 'delete': 46,\n 'command': 91,\n 'left command': 91,\n 'right command': 93,\n 'numpad *': 106,\n 'numpad +': 107,\n 'numpad -': 109,\n 'numpad .': 110,\n 'numpad /': 111,\n 'num lock': 144,\n 'scroll lock': 145,\n 'my computer': 182,\n 'my calculator': 183,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n \"'\": 222\n}\n\n// Helper aliases\n\nvar aliases = exports.aliases = {\n 'windows': 91,\n '⇧': 16,\n '⌥': 18,\n '⌃': 17,\n '⌘': 91,\n 'ctl': 17,\n 'control': 17,\n 'option': 18,\n 'pause': 19,\n 'break': 19,\n 'caps': 20,\n 'return': 13,\n 'escape': 27,\n 'spc': 32,\n 'spacebar': 32,\n 'pgup': 33,\n 'pgdn': 34,\n 'ins': 45,\n 'del': 46,\n 'cmd': 91\n}\n\n/*!\n * Programatically add the following\n */\n\n// lower case chars\nfor (i = 97; i < 123; i++) codes[String.fromCharCode(i)] = i - 32\n\n// numbers\nfor (var i = 48; i < 58; i++) codes[i - 48] = i\n\n// function keys\nfor (i = 1; i < 13; i++) codes['f'+i] = i + 111\n\n// numpad keys\nfor (i = 0; i < 10; i++) codes['numpad '+i] = i + 96\n\n/**\n * Get by code\n *\n * exports.name[13] // => 'Enter'\n */\n\nvar names = exports.names = exports.title = {} // title for backward compat\n\n// Create reverse mapping\nfor (i in codes) names[codes[i]] = i\n\n// Add aliases\nfor (var alias in aliases) {\n codes[alias] = aliases[alias]\n}\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i\n * Copyright Brightcove, Inc. \n * Available under Apache License Version 2.0\n * \n *\n * Includes vtt.js \n * Available under Apache License Version 2.0\n * \n */\n\nimport window$1 from 'global/window';\nimport document from 'global/document';\nimport _extends from '@babel/runtime/helpers/extends';\nimport keycode from 'keycode';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport XHR from '@videojs/xhr';\nimport vtt from 'videojs-vtt.js';\nimport _construct from '@babel/runtime/helpers/construct';\nimport _inherits from '@babel/runtime/helpers/inherits';\nimport _resolveUrl from '@videojs/vhs-utils/es/resolve-url.js';\nimport { Parser } from 'm3u8-parser';\nimport { browserSupportsCodec, DEFAULT_VIDEO_CODEC, DEFAULT_AUDIO_CODEC, muxerSupportsCodec, parseCodecs, translateLegacyCodec, codecsFromDefault, getMimeForCodec, isAudioCodec } from '@videojs/vhs-utils/es/codecs.js';\nimport { simpleTypeFromSourceType } from '@videojs/vhs-utils/es/media-types.js';\nimport { isArrayBufferView, concatTypedArrays, stringToBytes, toUint8 } from '@videojs/vhs-utils/es/byte-helpers';\nimport { generateSidxKey, parseUTCTiming, parse, addSidxSegmentsToPlaylist } from 'mpd-parser';\nimport parseSidx from 'mux.js/lib/tools/parse-sidx';\nimport { getId3Offset } from '@videojs/vhs-utils/es/id3-helpers';\nimport { detectContainerForBytes, isLikelyFmp4MediaSegment } from '@videojs/vhs-utils/es/containers';\nimport { ONE_SECOND_IN_TS } from 'mux.js/lib/utils/clock';\nimport _wrapNativeSuper from '@babel/runtime/helpers/wrapNativeSuper';\n\nvar version$5 = \"7.21.4\";\n\n/**\n * An Object that contains lifecycle hooks as keys which point to an array\n * of functions that are run when a lifecycle is triggered\n *\n * @private\n */\nvar hooks_ = {};\n/**\n * Get a list of hooks for a specific lifecycle\n *\n * @param {string} type\n * the lifecyle to get hooks from\n *\n * @param {Function|Function[]} [fn]\n * Optionally add a hook (or hooks) to the lifecycle that your are getting.\n *\n * @return {Array}\n * an array of hooks, or an empty array if there are none.\n */\n\nvar hooks = function hooks(type, fn) {\n hooks_[type] = hooks_[type] || [];\n\n if (fn) {\n hooks_[type] = hooks_[type].concat(fn);\n }\n\n return hooks_[type];\n};\n/**\n * Add a function hook to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\n\n\nvar hook = function hook(type, fn) {\n hooks(type, fn);\n};\n/**\n * Remove a hook from a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle that the function hooked to\n *\n * @param {Function} fn\n * The hooked function to remove\n *\n * @return {boolean}\n * The function that was removed or undef\n */\n\n\nvar removeHook = function removeHook(type, fn) {\n var index = hooks(type).indexOf(fn);\n\n if (index <= -1) {\n return false;\n }\n\n hooks_[type] = hooks_[type].slice();\n hooks_[type].splice(index, 1);\n return true;\n};\n/**\n * Add a function hook that will only run once to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\n\n\nvar hookOnce = function hookOnce(type, fn) {\n hooks(type, [].concat(fn).map(function (original) {\n var wrapper = function wrapper() {\n removeHook(type, wrapper);\n return original.apply(void 0, arguments);\n };\n\n return wrapper;\n }));\n};\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n * @private\n */\n/**\n * Store the browser-specific methods for the fullscreen API.\n *\n * @type {Object}\n * @see [Specification]{@link https://fullscreen.spec.whatwg.org}\n * @see [Map Approach From Screenfull.js]{@link https://github.com/sindresorhus/screenfull.js}\n */\n\nvar FullscreenApi = {\n prefixed: true\n}; // browser API methods\n\nvar apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'], // WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen'], // Mozilla\n['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror', '-moz-full-screen'], // Microsoft\n['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError', '-ms-fullscreen']];\nvar specApi = apiMap[0];\nvar browserApi; // determine the supported set of functions\n\nfor (var i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n} // map the browser API names to the spec API names\n\n\nif (browserApi) {\n for (var _i = 0; _i < browserApi.length; _i++) {\n FullscreenApi[specApi[_i]] = browserApi[_i];\n }\n\n FullscreenApi.prefixed = browserApi[0] !== specApi[0];\n}\n\n/**\n * @file create-logger.js\n * @module create-logger\n */\n\nvar history = [];\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} type\n * The name of the console method to use.\n *\n * @param {Array} args\n * The arguments to be passed to the matching console method.\n */\n\nvar LogByTypeFactory = function LogByTypeFactory(name, log) {\n return function (type, level, args) {\n var lvl = log.levels[level];\n var lvlRegExp = new RegExp(\"^(\" + lvl + \")$\");\n\n if (type !== 'log') {\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n } // Add console prefix after adding to history.\n\n\n args.unshift(name + ':'); // Add a clone of the args at this point to history.\n\n if (history) {\n history.push([].concat(args)); // only store 1000 history entries\n\n var splice = history.length - 1000;\n history.splice(0, splice > 0 ? splice : 0);\n } // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n\n\n if (!window$1.console) {\n return;\n } // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n // when the module is executed.\n\n\n var fn = window$1.console[type];\n\n if (!fn && type === 'debug') {\n // Certain browsers don't have support for console.debug. For those, we\n // should default to the closest comparable log.\n fn = window$1.console.info || window$1.console.log;\n } // Bail out if there's no console or if this type is not allowed by the\n // current logging level.\n\n\n if (!fn || !lvl || !lvlRegExp.test(type)) {\n return;\n }\n\n fn[Array.isArray(args) ? 'apply' : 'call'](window$1.console, args);\n };\n};\n\nfunction createLogger$1(name) {\n // This is the private tracking variable for logging level.\n var level = 'info'; // the curried logByType bound to the specific log and history\n\n var logByType;\n /**\n * Logs plain debug messages. Similar to `console.log`.\n *\n * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149)\n * of our JSDoc template, we cannot properly document this as both a function\n * and a namespace, so its function signature is documented here.\n *\n * #### Arguments\n * ##### *args\n * Mixed[]\n *\n * Any combination of values that could be passed to `console.log()`.\n *\n * #### Return Value\n *\n * `undefined`\n *\n * @namespace\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged.\n */\n\n var log = function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n logByType('log', level, args);\n }; // This is the logByType helper that the logging methods below use\n\n\n logByType = LogByTypeFactory(name, log);\n /**\n * Create a new sublogger which chains the old name to the new name.\n *\n * For example, doing `videojs.log.createLogger('player')` and then using that logger will log the following:\n * ```js\n * mylogger('foo');\n * // > VIDEOJS: player: foo\n * ```\n *\n * @param {string} name\n * The name to add call the new logger\n * @return {Object}\n */\n\n log.createLogger = function (subname) {\n return createLogger$1(name + ': ' + subname);\n };\n /**\n * Enumeration of available logging levels, where the keys are the level names\n * and the values are `|`-separated strings containing logging methods allowed\n * in that logging level. These strings are used to create a regular expression\n * matching the function name being called.\n *\n * Levels provided by Video.js are:\n *\n * - `off`: Matches no calls. Any value that can be cast to `false` will have\n * this effect. The most restrictive.\n * - `all`: Matches only Video.js-provided functions (`debug`, `log`,\n * `log.warn`, and `log.error`).\n * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls.\n * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls.\n * - `warn`: Matches `log.warn` and `log.error` calls.\n * - `error`: Matches only `log.error` calls.\n *\n * @type {Object}\n */\n\n\n log.levels = {\n all: 'debug|log|warn|error',\n off: '',\n debug: 'debug|log|warn|error',\n info: 'log|warn|error',\n warn: 'warn|error',\n error: 'error',\n DEFAULT: level\n };\n /**\n * Get or set the current logging level.\n *\n * If a string matching a key from {@link module:log.levels} is provided, acts\n * as a setter.\n *\n * @param {string} [lvl]\n * Pass a valid level to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\n\n log.level = function (lvl) {\n if (typeof lvl === 'string') {\n if (!log.levels.hasOwnProperty(lvl)) {\n throw new Error(\"\\\"\" + lvl + \"\\\" in not a valid log level\");\n }\n\n level = lvl;\n }\n\n return level;\n };\n /**\n * Returns an array containing everything that has been logged to the history.\n *\n * This array is a shallow clone of the internal history record. However, its\n * contents are _not_ cloned; so, mutating objects inside this array will\n * mutate them in history.\n *\n * @return {Array}\n */\n\n\n log.history = function () {\n return history ? [].concat(history) : [];\n };\n /**\n * Allows you to filter the history by the given logger name\n *\n * @param {string} fname\n * The name to filter by\n *\n * @return {Array}\n * The filtered list to return\n */\n\n\n log.history.filter = function (fname) {\n return (history || []).filter(function (historyItem) {\n // if the first item in each historyItem includes `fname`, then it's a match\n return new RegExp(\".*\" + fname + \".*\").test(historyItem[0]);\n });\n };\n /**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\n\n\n log.history.clear = function () {\n if (history) {\n history.length = 0;\n }\n };\n /**\n * Disable history tracking if it is currently enabled.\n */\n\n\n log.history.disable = function () {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n };\n /**\n * Enable history tracking if it is currently disabled.\n */\n\n\n log.history.enable = function () {\n if (history === null) {\n history = [];\n }\n };\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as an error\n */\n\n\n log.error = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return logByType('error', level, args);\n };\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as a warning.\n */\n\n\n log.warn = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return logByType('warn', level, args);\n };\n /**\n * Logs debug messages. Similar to `console.debug`, but may also act as a comparable\n * log if `console.debug` is not available\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as debug.\n */\n\n\n log.debug = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return logByType('debug', level, args);\n };\n\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nvar log$1 = createLogger$1('VIDEOJS');\nvar createLogger = log$1.createLogger;\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {Mixed} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {Mixed}\n * The new accumulated value.\n */\nvar toString = Object.prototype.toString;\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\n\nvar keys = function keys(object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\n\n\nfunction each(object, fn) {\n keys(object).forEach(function (key) {\n return fn(object[key], key);\n });\n}\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {Mixed} [initial = 0]\n * Starting value\n *\n * @return {Mixed}\n * The final accumulated value.\n */\n\nfunction reduce(object, fn, initial) {\n if (initial === void 0) {\n initial = 0;\n }\n\n return keys(object).reduce(function (accum, key) {\n return fn(accum, object[key], key);\n }, initial);\n}\n/**\n * Object.assign-style object shallow merge/extend.\n *\n * @param {Object} target\n * @param {Object} ...sources\n * @return {Object}\n */\n\nfunction assign(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (Object.assign) {\n return _extends.apply(void 0, [target].concat(sources));\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n target[key] = value;\n });\n });\n return target;\n}\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isObject(value) {\n return !!value && typeof value === 'object';\n}\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n/**\n * @file computed-style.js\n * @module computed-style\n */\n/**\n * A safe getComputedStyle.\n *\n * This is needed because in Firefox, if the player is loaded in an iframe with\n * `display:none`, then `getComputedStyle` returns `null`, so, we do a\n * null-check to make sure that the player doesn't break in these cases.\n *\n * @function\n * @param {Element} el\n * The element you want the computed style of\n *\n * @param {string} prop\n * The property name you want\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\n\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n\n if (typeof window$1.getComputedStyle === 'function') {\n var computedStyleValue;\n\n try {\n computedStyleValue = window$1.getComputedStyle(el);\n } catch (e) {\n return '';\n }\n\n return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : '';\n }\n\n return '';\n}\n\n/**\n * @file browser.js\n * @module browser\n */\nvar USER_AGENT = window$1.navigator && window$1.navigator.userAgent || '';\nvar webkitVersionMap = /AppleWebKit\\/([\\d.]+)/i.exec(USER_AGENT);\nvar appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n/**\n * Whether or not this device is an iPod.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\n/**\n * The detected iOS version - or `null`.\n *\n * @static\n * @const\n * @type {string|null}\n */\n\nvar IOS_VERSION = function () {\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n\n if (match && match[1]) {\n return match[1];\n }\n\n return null;\n}();\n/**\n * Whether or not this is an Android device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANDROID = /Android/i.test(USER_AGENT);\n/**\n * The detected Android version - or `null`.\n *\n * @static\n * @const\n * @type {number|string|null}\n */\n\nvar ANDROID_VERSION = function () {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n\n if (!match) {\n return null;\n }\n\n var major = match[1] && parseFloat(match[1]);\n var minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n\n return null;\n}();\n/**\n * Whether or not this is a native Android browser.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n/**\n * Whether or not this is Mozilla Firefox.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_FIREFOX = /Firefox/i.test(USER_AGENT);\n/**\n * Whether or not this is Microsoft Edge.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_EDGE = /Edg/i.test(USER_AGENT);\n/**\n * Whether or not this is Google Chrome.\n *\n * This will also be `true` for Chrome on iOS, which will have different support\n * as it is actually Safari under the hood.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_CHROME = !IS_EDGE && (/Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT));\n/**\n * The detected Google Chrome version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar CHROME_VERSION = function () {\n var match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n\n return null;\n}();\n/**\n * The detected Internet Explorer version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar IE_VERSION = function () {\n var result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n var version = result && parseFloat(result[1]);\n\n if (!version && /Trident\\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) {\n // IE 11 has a different user agent string than other IE versions\n version = 11.0;\n }\n\n return version;\n}();\n/**\n * Whether or not this is desktop Safari.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE;\n/**\n * Whether or not this is a Windows machine.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_WINDOWS = /Windows/i.test(USER_AGENT);\n/**\n * Whether or not this device is touch-enabled.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar TOUCH_ENABLED = Boolean(isReal() && ('ontouchstart' in window$1 || window$1.navigator.maxTouchPoints || window$1.DocumentTouch && window$1.document instanceof window$1.DocumentTouch));\n/**\n * Whether or not this device is an iPad.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPAD = /iPad/i.test(USER_AGENT) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(USER_AGENT);\n/**\n * Whether or not this device is an iPhone.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\n\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\n/**\n * Whether or not this is an iOS device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n/**\n * Whether or not this is any flavor of Safari - including iOS.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar browser = /*#__PURE__*/Object.freeze({\n __proto__: null,\n IS_IPOD: IS_IPOD,\n IOS_VERSION: IOS_VERSION,\n IS_ANDROID: IS_ANDROID,\n ANDROID_VERSION: ANDROID_VERSION,\n IS_NATIVE_ANDROID: IS_NATIVE_ANDROID,\n IS_FIREFOX: IS_FIREFOX,\n IS_EDGE: IS_EDGE,\n IS_CHROME: IS_CHROME,\n CHROME_VERSION: CHROME_VERSION,\n IE_VERSION: IE_VERSION,\n IS_SAFARI: IS_SAFARI,\n IS_WINDOWS: IS_WINDOWS,\n TOUCH_ENABLED: TOUCH_ENABLED,\n IS_IPAD: IS_IPAD,\n IS_IPHONE: IS_IPHONE,\n IS_IOS: IS_IOS,\n IS_ANY_SAFARI: IS_ANY_SAFARI\n});\n\n/**\n * @file dom.js\n * @module dom\n */\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @private\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * Will be `true` if the string is non-blank, `false` otherwise.\n *\n */\n\nfunction isNonBlankString(str) {\n // we use str.trim as it will trim any whitespace characters\n // from the front or back of non-whitespace characters. aka\n // Any string that contains non-whitespace characters will\n // still contain them after `trim` but whitespace only strings\n // will have a length of 0, failing this check.\n return typeof str === 'string' && Boolean(str.trim());\n}\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @private\n * @param {string} str\n * The string to check for whitespace.\n *\n * @throws {Error}\n * Throws an error if there is whitespace in the string.\n */\n\n\nfunction throwIfWhitespace(str) {\n // str.indexOf instead of regex because str.indexOf is faster performance wise.\n if (str.indexOf(' ') >= 0) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n/**\n * Produce a regular expression for matching a className within an elements className.\n *\n * @private\n * @param {string} className\n * The className to generate the RegExp for.\n *\n * @return {RegExp}\n * The RegExp that will check for a specific `className` in an elements\n * className.\n */\n\n\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n/**\n * Whether the current DOM interface appears to be real (i.e. not simulated).\n *\n * @return {boolean}\n * Will be `true` if the DOM appears to be real, `false` otherwise.\n */\n\n\nfunction isReal() {\n // Both document and window will never be undefined thanks to `global`.\n return document === window$1.document;\n}\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {Mixed} value\n * The value to check.\n *\n * @return {boolean}\n * Will be `true` if the value is a DOM element, `false` otherwise.\n */\n\nfunction isEl(value) {\n return isObject(value) && value.nodeType === 1;\n}\n/**\n * Determines if the current DOM is embedded in an iframe.\n *\n * @return {boolean}\n * Will be `true` if the DOM is embedded in an iframe, `false`\n * otherwise.\n */\n\nfunction isInFrame() {\n // We need a try/catch here because Safari will throw errors when attempting\n // to get either `parent` or `self`\n try {\n return window$1.parent !== window$1.self;\n } catch (x) {\n return true;\n }\n}\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @private\n * @param {string} method\n * The method to create the query with.\n *\n * @return {Function}\n * The query method\n */\n\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return document[method](null);\n }\n\n if (isNonBlankString(context)) {\n context = document.querySelector(context);\n }\n\n var ctx = isEl(context) ? context : document;\n return ctx[method] && ctx[method](selector);\n };\n}\n/**\n * Creates an element and applies properties, attributes, and inserts content.\n *\n * @param {string} [tagName='div']\n * Name of tag to be created.\n *\n * @param {Object} [properties={}]\n * Element properties to be applied.\n *\n * @param {Object} [attributes={}]\n * Element attributes to be applied.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor object.\n *\n * @return {Element}\n * The element that was created.\n */\n\n\nfunction createEl(tagName, properties, attributes, content) {\n if (tagName === void 0) {\n tagName = 'div';\n }\n\n if (properties === void 0) {\n properties = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n var el = document.createElement(tagName);\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n var val = properties[propName]; // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log$1.warn('Setting attributes in the second argument of createEl()\\n' + 'has been deprecated. Use the third argument instead.\\n' + (\"createEl(type, properties, attributes). Attempting to set \" + propName + \" to \" + val + \".\"));\n el.setAttribute(propName, val); // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n } else if (propName === 'textContent') {\n textContent(el, val);\n } else if (el[propName] !== val || propName === 'tabIndex') {\n el[propName] = val;\n }\n });\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n if (content) {\n appendContent(el, content);\n }\n\n return el;\n}\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {Element} el\n * The element to add text content into\n *\n * @param {string} text\n * The text content to add.\n *\n * @return {Element}\n * The element with added text content.\n */\n\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n\n return el;\n}\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child\n * Element to insert\n *\n * @param {Element} parent\n * Element to insert child into\n */\n\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n/**\n * Check if an element has a class name.\n *\n * @param {Element} element\n * Element to check\n *\n * @param {string} classToCheck\n * Class name to check for\n *\n * @return {boolean}\n * Will be `true` if the element has a class, `false` otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\n\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n\n if (element.classList) {\n return element.classList.contains(classToCheck);\n }\n\n return classRegExp(classToCheck).test(element.className);\n}\n/**\n * Add a class name to an element.\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {string} classToAdd\n * Class name to add.\n *\n * @return {Element}\n * The DOM element with the added class name.\n */\n\nfunction addClass(element, classToAdd) {\n if (element.classList) {\n element.classList.add(classToAdd); // Don't need to `throwIfWhitespace` here because `hasElClass` will do it\n // in the case of classList not being supported.\n } else if (!hasClass(element, classToAdd)) {\n element.className = (element.className + ' ' + classToAdd).trim();\n }\n\n return element;\n}\n/**\n * Remove a class name from an element.\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {string} classToRemove\n * Class name to remove\n *\n * @return {Element}\n * The DOM element with class name removed.\n */\n\nfunction removeClass(element, classToRemove) {\n // Protect in case the player gets disposed\n if (!element) {\n log$1.warn(\"removeClass was called with an element that doesn't exist\");\n return null;\n }\n\n if (element.classList) {\n element.classList.remove(classToRemove);\n } else {\n throwIfWhitespace(classToRemove);\n element.className = element.className.split(/\\s+/).filter(function (c) {\n return c !== classToRemove;\n }).join(' ');\n }\n\n return element;\n}\n/**\n * The callback definition for toggleClass.\n *\n * @callback module:dom~PredicateCallback\n * @param {Element} element\n * The DOM element of the Component.\n *\n * @param {string} classToToggle\n * The `className` that wants to be toggled\n *\n * @return {boolean|undefined}\n * If `true` is returned, the `classToToggle` will be added to the\n * `element`. If `false`, the `classToToggle` will be removed from\n * the `element`. If `undefined`, the callback will be ignored.\n */\n\n/**\n * Adds or removes a class name to/from an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @param {Element} element\n * The element to toggle a class name on.\n *\n * @param {string} classToToggle\n * The class that should be toggled.\n *\n * @param {boolean|module:dom~PredicateCallback} [predicate]\n * See the return value for {@link module:dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\n\nfunction toggleClass(element, classToToggle, predicate) {\n // This CANNOT use `classList` internally because IE11 does not support the\n // second parameter to the `classList.toggle()` method! Which is fine because\n // `classList` will be used by the add/remove functions.\n var has = hasClass(element, classToToggle);\n\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n\n if (typeof predicate !== 'boolean') {\n predicate = !has;\n } // If the necessary class operation matches the current state of the\n // element, no action is required.\n\n\n if (predicate === has) {\n return;\n }\n\n if (predicate) {\n addClass(element, classToToggle);\n } else {\n removeClass(element, classToToggle);\n }\n\n return element;\n}\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el\n * Element to add attributes to.\n *\n * @param {Object} [attributes]\n * Attributes to be applied.\n */\n\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n var attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, attrValue === true ? '' : attrValue);\n }\n });\n}\n/**\n * Get an element's attribute values, as defined on the HTML tag.\n *\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element. Boolean attributes will be `true` or\n * `false`, others will be strings.\n */\n\nfunction getAttributes(tag) {\n var obj = {}; // known boolean attributes\n // we can check for matching boolean properties, but not all browsers\n // and not all tags know about these attributes, so, we still want to check them manually\n\n var knownBooleans = ',' + 'autoplay,controls,playsinline,loop,muted,default,defaultMuted' + ',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n var attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n var attrName = attrs[i].name;\n var attrVal = attrs[i].value; // check for known booleans\n // the matching element property will return a value for typeof\n\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(',' + attrName + ',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = attrVal !== null ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n/**\n * Get the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to get the value of.\n *\n * @return {string}\n * The value of the attribute.\n */\n\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\n/**\n * Set the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n */\n\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\n/**\n * Remove an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to remove.\n */\n\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n/**\n * Attempt to block the ability to select text.\n */\n\nfunction blockTextSelection() {\n document.body.focus();\n\n document.onselectstart = function () {\n return false;\n };\n}\n/**\n * Turn off text selection blocking.\n */\n\nfunction unblockTextSelection() {\n document.onselectstart = function () {\n return true;\n };\n}\n/**\n * Identical to the native `getBoundingClientRect` function, but ensures that\n * the method is supported at all (it is in all browsers we claim to support)\n * and that the element is in the DOM before continuing.\n *\n * This wrapper function also shims properties which are not provided by some\n * older browsers (namely, IE8).\n *\n * Additionally, some browsers do not support adding properties to a\n * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard\n * properties (except `x` and `y` which are not widely supported). This helps\n * avoid implementations where keys are non-enumerable.\n *\n * @param {Element} el\n * Element whose `ClientRect` we want to calculate.\n *\n * @return {Object|undefined}\n * Always returns a plain object - or `undefined` if it cannot.\n */\n\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n var rect = el.getBoundingClientRect();\n var result = {};\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (k) {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n\n return result;\n }\n}\n/**\n * Represents the position of a DOM element on the page.\n *\n * @typedef {Object} module:dom~Position\n *\n * @property {number} left\n * Pixels to the left.\n *\n * @property {number} top\n * Pixels from the top.\n */\n\n/**\n * Get the position of an element in the DOM.\n *\n * Uses `getBoundingClientRect` technique from John Resig.\n *\n * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el\n * Element from which to get offset.\n *\n * @return {module:dom~Position}\n * The position of the element that was passed in.\n */\n\nfunction findPosition(el) {\n if (!el || el && !el.offsetParent) {\n return {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n };\n }\n\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n var left = 0;\n var top = 0;\n\n while (el.offsetParent && el !== document[FullscreenApi.fullscreenElement]) {\n left += el.offsetLeft;\n top += el.offsetTop;\n el = el.offsetParent;\n }\n\n return {\n left: left,\n top: top,\n width: width,\n height: height\n };\n}\n/**\n * Represents x and y coordinates for a DOM element or mouse pointer.\n *\n * @typedef {Object} module:dom~Coordinates\n *\n * @property {number} x\n * x coordinate in pixels\n *\n * @property {number} y\n * y coordinate in pixels\n */\n\n/**\n * Get the pointer position within an element.\n *\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el\n * Element on which to get the pointer position on.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {module:dom~Coordinates}\n * A coordinates object corresponding to the mouse position.\n *\n */\n\nfunction getPointerPosition(el, event) {\n var translated = {\n x: 0,\n y: 0\n };\n\n if (IS_IOS) {\n var item = el;\n\n while (item && item.nodeName.toLowerCase() !== 'html') {\n var transform = computedStyle(item, 'transform');\n\n if (/^matrix/.test(transform)) {\n var values = transform.slice(7, -1).split(/,\\s/).map(Number);\n translated.x += values[4];\n translated.y += values[5];\n } else if (/^matrix3d/.test(transform)) {\n var _values = transform.slice(9, -1).split(/,\\s/).map(Number);\n\n translated.x += _values[12];\n translated.y += _values[13];\n }\n\n item = item.parentNode;\n }\n }\n\n var position = {};\n var boxTarget = findPosition(event.target);\n var box = findPosition(el);\n var boxW = box.width;\n var boxH = box.height;\n var offsetY = event.offsetY - (box.top - boxTarget.top);\n var offsetX = event.offsetX - (box.left - boxTarget.left);\n\n if (event.changedTouches) {\n offsetX = event.changedTouches[0].pageX - box.left;\n offsetY = event.changedTouches[0].pageY + box.top;\n\n if (IS_IOS) {\n offsetX -= translated.x;\n offsetY -= translated.y;\n }\n }\n\n position.y = 1 - Math.max(0, Math.min(1, offsetY / boxH));\n position.x = Math.max(0, Math.min(1, offsetX / boxW));\n return position;\n}\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * Will be `true` if the value is a text node, `false` otherwise.\n */\n\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\n/**\n * Empties the contents of an element.\n *\n * @param {Element} el\n * The element to empty children from\n *\n * @return {Element}\n * The element with no children\n */\n\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n\n return el;\n}\n/**\n * This is a mixed value that describes content to be injected into the DOM\n * via some method. It can be of the following types:\n *\n * Type | Description\n * -----------|-------------\n * `string` | The value will be normalized into a text node.\n * `Element` | The value will be accepted as-is.\n * `TextNode` | The value will be accepted as-is.\n * `Array` | A one-dimensional array of strings, elements, text nodes, or functions. These functions should return a string, element, or text node (any other return value, like an array, will be ignored).\n * `Function` | A function, which is expected to return a string, element, text node, or array - any of the other possible values described above. This means that a content descriptor could be a function that returns an array of functions, but those second-level functions must return strings, elements, or text nodes.\n *\n * @typedef {string|Element|TextNode|Array|Function} module:dom~ContentDescriptor\n */\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but helps protect\n * from falling into the trap of simply writing to `innerHTML`, which could\n * be an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Array}\n * All of the content that was passed in, normalized to an array of\n * elements or text nodes.\n */\n\nfunction normalizeContent(content) {\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n } // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n\n\n return (Array.isArray(content) ? content : [content]).map(function (value) {\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document.createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\n}\n/**\n * Normalizes and appends content to an element.\n *\n * @param {Element} el\n * Element to append normalized content to.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with appended normalized content.\n */\n\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\n return el;\n}\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @param {Element} el\n * Element to insert normalized content into.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with inserted normalized content.\n */\n\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n/**\n * Check if an event was a single left click.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {boolean}\n * Will be `true` if a single left click, `false` otherwise.\n */\n\nfunction isSingleLeftClick(event) {\n // Note: if you create something draggable, be sure to\n // call it on both `mousedown` and `mousemove` event,\n // otherwise `mousedown` should be enough for a button\n if (event.button === undefined && event.buttons === undefined) {\n // Why do we need `buttons` ?\n // Because, middle mouse sometimes have this:\n // e.button === 0 and e.buttons === 4\n // Furthermore, we want to prevent combination click, something like\n // HOLD middlemouse then left click, that would be\n // e.button === 0, e.buttons === 5\n // just `button` is not gonna work\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n return true;\n }\n\n if (event.button === 0 && event.buttons === undefined) {\n // Touch screen, sometimes on some specific device, `buttons`\n // doesn't have anything (safari on ios, blackberry...)\n return true;\n } // `mouseup` event on a single left click has\n // `button` and `buttons` equal to 0\n\n\n if (event.type === 'mouseup' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n\n if (event.button !== 0 || event.buttons !== 1) {\n // This is the reason we have those if else block above\n // if any special case we can catch and let it slide\n // we do it above, when get to here, this definitely\n // is-not-left-click\n return false;\n }\n\n return true;\n}\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n * The element that was found or null.\n */\n\nvar $ = createQuerier('querySelector');\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n * A element list of elements that were found. Will be empty if none\n * were found.\n *\n */\n\nvar $$ = createQuerier('querySelectorAll');\n\nvar Dom = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isReal: isReal,\n isEl: isEl,\n isInFrame: isInFrame,\n createEl: createEl,\n textContent: textContent,\n prependTo: prependTo,\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n toggleClass: toggleClass,\n setAttributes: setAttributes,\n getAttributes: getAttributes,\n getAttribute: getAttribute,\n setAttribute: setAttribute,\n removeAttribute: removeAttribute,\n blockTextSelection: blockTextSelection,\n unblockTextSelection: unblockTextSelection,\n getBoundingClientRect: getBoundingClientRect,\n findPosition: findPosition,\n getPointerPosition: getPointerPosition,\n isTextNode: isTextNode,\n emptyEl: emptyEl,\n normalizeContent: normalizeContent,\n appendContent: appendContent,\n insertContent: insertContent,\n isSingleLeftClick: isSingleLeftClick,\n $: $,\n $$: $$\n});\n\n/**\n * @file setup.js - Functions for setting up a player without\n * user interaction based on the data-setup `attribute` of the video tag.\n *\n * @module setup\n */\nvar _windowLoaded = false;\nvar videojs$1;\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\n\nvar autoSetup = function autoSetup() {\n if (videojs$1.options.autoSetup === false) {\n return;\n }\n\n var vids = Array.prototype.slice.call(document.getElementsByTagName('video'));\n var audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));\n var divs = Array.prototype.slice.call(document.getElementsByTagName('video-js'));\n var mediaEls = vids.concat(audios, divs); // Check if any media elements exist\n\n if (mediaEls && mediaEls.length > 0) {\n for (var i = 0, e = mediaEls.length; i < e; i++) {\n var mediaEl = mediaEls[i]; // Check if element exists, has getAttribute func.\n\n if (mediaEl && mediaEl.getAttribute) {\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n var options = mediaEl.getAttribute('data-setup'); // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n\n if (options !== null) {\n // Create new video.js instance.\n videojs$1(mediaEl);\n }\n } // If getAttribute isn't defined, we need to wait for the DOM.\n\n } else {\n autoSetupTimeout(1);\n break;\n }\n } // No videos were found, so keep looping unless page is finished loading.\n\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n/**\n * Wait until the page is loaded before running autoSetup. This will be called in\n * autoSetup if `hasLoaded` returns false.\n *\n * @param {number} wait\n * How long to wait in ms\n *\n * @param {module:videojs} [vjs]\n * The videojs library function\n */\n\n\nfunction autoSetupTimeout(wait, vjs) {\n // Protect against breakage in non-browser environments\n if (!isReal()) {\n return;\n }\n\n if (vjs) {\n videojs$1 = vjs;\n }\n\n window$1.setTimeout(autoSetup, wait);\n}\n/**\n * Used to set the internal tracking of window loaded state to true.\n *\n * @private\n */\n\n\nfunction setWindowLoaded() {\n _windowLoaded = true;\n window$1.removeEventListener('load', setWindowLoaded);\n}\n\nif (isReal()) {\n if (document.readyState === 'complete') {\n setWindowLoaded();\n } else {\n /**\n * Listen for the load event on window, and set _windowLoaded to true.\n *\n * We use a standard event listener here to avoid incrementing the GUID\n * before any players are created.\n *\n * @listens load\n */\n window$1.addEventListener('load', setWindowLoaded);\n }\n}\n\n/**\n * @file stylesheet.js\n * @module stylesheet\n */\n/**\n * Create a DOM syle element given a className for it.\n *\n * @param {string} className\n * The className to add to the created style element.\n *\n * @return {Element}\n * The element that was created.\n */\n\nvar createStyleElement = function createStyleElement(className) {\n var style = document.createElement('style');\n style.className = className;\n return style;\n};\n/**\n * Add text to a DOM element.\n *\n * @param {Element} el\n * The Element to add text content to.\n *\n * @param {string} content\n * The text to add to the element.\n */\n\nvar setTextContent = function setTextContent(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file guid.js\n * @module guid\n */\n// Default value for GUIDs. This allows us to reset the GUID counter in tests.\n//\n// The initial GUID is 3 because some users have come to rely on the first\n// default player ID ending up as `vjs_video_3`.\n//\n// See: https://github.com/videojs/video.js/pull/6216\nvar _initialGuid = 3;\n/**\n * Unique ID for an element or function\n *\n * @type {Number}\n */\n\nvar _guid = _initialGuid;\n/**\n * Get a unique auto-incrementing ID by number that has not been returned before.\n *\n * @return {number}\n * A new unique ID.\n */\n\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\nvar FakeWeakMap;\n\nif (!window$1.WeakMap) {\n FakeWeakMap = /*#__PURE__*/function () {\n function FakeWeakMap() {\n this.vdata = 'vdata' + Math.floor(window$1.performance && window$1.performance.now() || Date.now());\n this.data = {};\n }\n\n var _proto = FakeWeakMap.prototype;\n\n _proto.set = function set(key, value) {\n var access = key[this.vdata] || newGUID();\n\n if (!key[this.vdata]) {\n key[this.vdata] = access;\n }\n\n this.data[access] = value;\n return this;\n };\n\n _proto.get = function get(key) {\n var access = key[this.vdata]; // we have data, return it\n\n if (access) {\n return this.data[access];\n } // we don't have data, return nothing.\n // return undefined explicitly as that's the contract for this method\n\n\n log$1('We have no data for this element', key);\n return undefined;\n };\n\n _proto.has = function has(key) {\n var access = key[this.vdata];\n return access in this.data;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var access = key[this.vdata];\n\n if (access) {\n delete this.data[access];\n delete key[this.vdata];\n }\n };\n\n return FakeWeakMap;\n }();\n}\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\n\n\nvar DomData = window$1.WeakMap ? new WeakMap() : new FakeWeakMap();\n\n/**\n * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n *\n * @file events.js\n * @module events\n */\n/**\n * Clean up the listener cache and dispatchers\n *\n * @param {Element|Object} elem\n * Element to clean up\n *\n * @param {string} type\n * Type of event to clean up\n */\n\nfunction _cleanUpEvents(elem, type) {\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // Remove the events of a particular type if there are none left\n\n if (data.handlers[type].length === 0) {\n delete data.handlers[type]; // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n // Remove the meta-handler from the element\n\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n } // Remove the events object if there are no types left\n\n\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n } // Finally remove the element data if there is no data left\n\n\n if (Object.getOwnPropertyNames(data).length === 0) {\n DomData[\"delete\"](elem);\n }\n}\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn\n * The event method we want to use.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} callback\n * Event listener.\n */\n\n\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function (type) {\n // Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event\n * Event object to fix.\n *\n * @return {Object}\n * Fixed event object.\n */\n\n\nfunction fixEvent(event) {\n if (event.fixed_) {\n return event;\n }\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n } // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n\n\n if (!event || !event.isPropagationStopped || !event.isImmediatePropagationStopped) {\n var old = event || window$1.event;\n event = {}; // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n // Lighthouse complains if Event.path is copied\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY' && key !== 'path') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n } // The event occurred on this element\n\n\n if (!event.target) {\n event.target = event.srcElement || document;\n } // Handle which other element the event is related to\n\n\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n } // Stop the default browser action\n\n\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false; // Stop the event from bubbling\n\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse; // Stop the event from bubbling and executing other handlers\n\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse; // Handle mouse position\n\n if (event.clientX !== null && event.clientX !== undefined) {\n var doc = document.documentElement;\n var body = document.body;\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } // Handle key presses\n\n\n event.which = event.charCode || event.keyCode; // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n\n if (event.button !== null && event.button !== undefined) {\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\n\n /* eslint-disable */\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n /* eslint-enable */\n }\n }\n\n event.fixed_ = true; // Returns fixed-up instance\n\n return event;\n}\n/**\n * Whether passive event listeners are supported\n */\n\nvar _supportsPassive;\n\nvar supportsPassive = function supportsPassive() {\n if (typeof _supportsPassive !== 'boolean') {\n _supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _supportsPassive = true;\n }\n });\n window$1.addEventListener('test', null, opts);\n window$1.removeEventListener('test', null, opts);\n } catch (e) {// disregard\n }\n }\n\n return _supportsPassive;\n};\n/**\n * Touch events Chrome expects to be passive\n */\n\n\nvar passiveEvents = ['touchstart', 'touchmove'];\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string|string[]} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} fn\n * Event listener.\n */\n\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n if (!DomData.has(elem)) {\n DomData.set(elem, {});\n }\n\n var data = DomData.get(elem); // We need a place to store all our handler data\n\n if (!data.handlers) {\n data.handlers = {};\n }\n\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash) {\n if (data.disabled) {\n return;\n }\n\n event = fixEvent(event);\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n try {\n handlersCopy[m].call(elem, event, hash);\n } catch (e) {\n log$1.error(e);\n }\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n var options = false;\n\n if (supportsPassive() && passiveEvents.indexOf(type) > -1) {\n options = {\n passive: true\n };\n }\n\n elem.addEventListener(type, data.dispatcher, options);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem\n * Object to remove listeners from.\n *\n * @param {string|string[]} [type]\n * Type of listener to remove. Don't include to remove all events from element.\n *\n * @param {EventTarget~EventListener} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\n */\n\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // If no events exist, nothing to unbind\n\n if (!data.handlers) {\n return;\n }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n } // Utility function\n\n\n var removeType = function removeType(el, t) {\n data.handlers[t] = [];\n\n _cleanUpEvents(el, t);\n }; // Are we removing all bound events?\n\n\n if (type === undefined) {\n for (var t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n\n return;\n }\n\n var handlers = data.handlers[type]; // If no handlers exist, nothing to unbind\n\n if (!handlers) {\n return;\n } // If no listener was provided, remove all listeners for type\n\n\n if (!fn) {\n removeType(elem, type);\n return;\n } // We're only removing a single handler\n\n\n if (fn.guid) {\n for (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem\n * Element to trigger an event on\n *\n * @param {EventTarget~Event|string} event\n * A string (the type) or an event object with a type attribute\n *\n * @param {Object} [hash]\n * data hash to pass along with the event\n *\n * @return {boolean|undefined}\n * Returns the opposite of `defaultPrevented` if default was\n * prevented. Otherwise, returns `undefined`\n */\n\nfunction trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = DomData.has(elem) ? DomData.get(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument; // type = event.type || event,\n // handler;\n // If an event name was passed as a string, creates an event out of it\n\n if (typeof event === 'string') {\n event = {\n type: event,\n target: elem\n };\n } else if (!event.target) {\n event.target = elem;\n } // Normalizes the event properties.\n\n\n event = fixEvent(event); // If the passed element has a dispatcher, executes the established handlers.\n\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n } // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n\n\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash); // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented && event.target && event.target[event.type]) {\n if (!DomData.has(event.target)) {\n DomData.set(event.target, {});\n }\n\n var targetData = DomData.get(event.target); // Checks if the target has a default action for this event.\n\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true; // Executes the default action.\n\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n } // Re-enables event dispatching.\n\n\n targetData.disabled = false;\n }\n } // Inform the triggerer if the default was prevented by returning false\n\n\n return !event.defaultPrevented;\n}\n/**\n * Trigger a listener only once for an event.\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\n/**\n * Trigger a listener only once and then turn if off for all\n * configured events\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction any(elem, type, fn) {\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID(); // multiple ons, but one off for everything\n\n on(elem, type, func);\n}\n\nvar Events = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fixEvent: fixEvent,\n on: on,\n off: off,\n trigger: trigger,\n one: one,\n any: any\n});\n\n/**\n * @file fn.js\n * @module fn\n */\nvar UPDATE_REFRESH_INTERVAL = 30;\n/**\n * Bind (a.k.a proxy or context). A simple method for changing the context of\n * a function.\n *\n * It also stores a unique id on the function so it can be easily removed from\n * events.\n *\n * @function\n * @param {Mixed} context\n * The object to bind as scope.\n *\n * @param {Function} fn\n * The function to be bound to a scope.\n *\n * @param {number} [uid]\n * An optional unique ID for the function to be set\n *\n * @return {Function}\n * The new function that will be bound into the context given\n */\n\nvar bind = function bind(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n } // Create the new function that changes the context\n\n\n var bound = fn.bind(context); // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n\n bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n return bound;\n};\n/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\n\nvar throttle = function throttle(fn, wait) {\n var last = window$1.performance.now();\n\n var throttled = function throttled() {\n var now = window$1.performance.now();\n\n if (now - last >= wait) {\n fn.apply(void 0, arguments);\n last = now;\n }\n };\n\n return throttled;\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @function\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [immediate]\n * Whether or not to invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function.\n */\n\nvar debounce = function debounce(func, wait, immediate, context) {\n if (context === void 0) {\n context = window$1;\n }\n\n var timeout;\n\n var cancel = function cancel() {\n context.clearTimeout(timeout);\n timeout = null;\n };\n /* eslint-disable consistent-this */\n\n\n var debounced = function debounced() {\n var self = this;\n var args = arguments;\n\n var _later = function later() {\n timeout = null;\n _later = null;\n\n if (!immediate) {\n func.apply(self, args);\n }\n };\n\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(_later, wait);\n };\n /* eslint-enable consistent-this */\n\n\n debounced.cancel = cancel;\n return debounced;\n};\n\n/**\n * @file src/js/event-target.js\n */\n/**\n * `EventTarget` is a class that can have the same API as the DOM `EventTarget`. It\n * adds shorthand functions that wrap around lengthy functions. For example:\n * the `on` function is a wrapper around `addEventListener`.\n *\n * @see [EventTarget Spec]{@link https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget}\n * @class EventTarget\n */\n\nvar EventTarget$2 = function EventTarget() {};\n/**\n * A Custom DOM event.\n *\n * @typedef {Object} EventTarget~Event\n * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent}\n */\n\n/**\n * All event listeners should follow the following format.\n *\n * @callback EventTarget~EventListener\n * @this {EventTarget}\n *\n * @param {EventTarget~Event} event\n * the event that triggered this function\n *\n * @param {Object} [hash]\n * hash of data sent during the event\n */\n\n/**\n * An object containing event names as keys and booleans as values.\n *\n * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger}\n * will have extra functionality. See that function for more information.\n *\n * @property EventTarget.prototype.allowedEvents_\n * @private\n */\n\n\nEventTarget$2.prototype.allowedEvents_ = {};\n/**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to call with `EventTarget`s\n */\n\nEventTarget$2.prototype.on = function (type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n on(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#on}\n */\n\n\nEventTarget$2.prototype.addEventListener = EventTarget$2.prototype.on;\n/**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to remove.\n */\n\nEventTarget$2.prototype.off = function (type, fn) {\n off(this, type, fn);\n};\n/**\n * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#off}\n */\n\n\nEventTarget$2.prototype.removeEventListener = EventTarget$2.prototype.off;\n/**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to be called once for each event name.\n */\n\nEventTarget$2.prototype.one = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n one(this, type, fn);\n this.addEventListener = ael;\n};\n\nEventTarget$2.prototype.any = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n any(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|EventTarget~Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n */\n\n\nEventTarget$2.prototype.trigger = function (event) {\n var type = event.type || event; // deprecation\n // In a future version we should default target to `this`\n // similar to how we default the target to `elem` in\n // `Events.trigger`. Right now the default `target` will be\n // `document` due to the `Event.fixEvent` call.\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n\n event = fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n trigger(this, event);\n};\n/**\n * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#trigger}\n */\n\n\nEventTarget$2.prototype.dispatchEvent = EventTarget$2.prototype.trigger;\nvar EVENT_MAP;\n\nEventTarget$2.prototype.queueTrigger = function (event) {\n var _this = this;\n\n // only set up EVENT_MAP if it'll be used\n if (!EVENT_MAP) {\n EVENT_MAP = new Map();\n }\n\n var type = event.type || event;\n var map = EVENT_MAP.get(this);\n\n if (!map) {\n map = new Map();\n EVENT_MAP.set(this, map);\n }\n\n var oldTimeout = map.get(type);\n map[\"delete\"](type);\n window$1.clearTimeout(oldTimeout);\n var timeout = window$1.setTimeout(function () {\n map[\"delete\"](type); // if we cleared out all timeouts for the current target, delete its map\n\n if (map.size === 0) {\n map = null;\n EVENT_MAP[\"delete\"](_this);\n }\n\n _this.trigger(event);\n }, 0);\n map.set(type, timeout);\n};\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\n\nvar objName = function objName(obj) {\n if (typeof obj.name === 'function') {\n return obj.name();\n }\n\n if (typeof obj.name === 'string') {\n return obj.name;\n }\n\n if (obj.name_) {\n return obj.name_;\n }\n\n if (obj.constructor && obj.constructor.name) {\n return obj.constructor.name;\n }\n\n return typeof obj;\n};\n/**\n * Returns whether or not an object has had the evented mixin applied.\n *\n * @param {Object} object\n * An object to test.\n *\n * @return {boolean}\n * Whether or not the object appears to be evented.\n */\n\n\nvar isEvented = function isEvented(object) {\n return object instanceof EventTarget$2 || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (k) {\n return typeof object[k] === 'function';\n });\n};\n/**\n * Adds a callback to run after the evented mixin applied.\n *\n * @param {Object} object\n * An object to Add\n * @param {Function} callback\n * The callback to run.\n */\n\n\nvar addEventedCallback = function addEventedCallback(target, callback) {\n if (isEvented(target)) {\n callback();\n } else {\n if (!target.eventedCallbacks) {\n target.eventedCallbacks = [];\n }\n\n target.eventedCallbacks.push(callback);\n }\n};\n/**\n * Whether a value is a valid event type - non-empty string or array.\n *\n * @private\n * @param {string|Array} type\n * The type value to test.\n *\n * @return {boolean}\n * Whether or not the type is a valid event type.\n */\n\n\nvar isValidEventType = function isValidEventType(type) {\n return (// The regex here verifies that the `type` contains at least one non-\n // whitespace character.\n typeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length\n );\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateTarget = function validateTarget(target, obj, fnName) {\n if (!target || !target.nodeName && !isEvented(target)) {\n throw new Error(\"Invalid target for \" + objName(obj) + \"#\" + fnName + \"; must be a DOM node or evented object.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the type does not appear to be a valid event type.\n *\n * @param {string|Array} type\n * The type to test.\n *\n * @param {Object} obj\n* The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateEventType = function validateEventType(type, obj, fnName) {\n if (!isValidEventType(type)) {\n throw new Error(\"Invalid event type for \" + objName(obj) + \"#\" + fnName + \"; must be a non-empty string or array.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid listener. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the listener is not a function.\n *\n * @param {Function} listener\n * The listener to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateListener = function validateListener(listener, obj, fnName) {\n if (typeof listener !== 'function') {\n throw new Error(\"Invalid listener for \" + objName(obj) + \"#\" + fnName + \"; must be a function.\");\n }\n};\n/**\n * Takes an array of arguments given to `on()` or `one()`, validates them, and\n * normalizes them into an object.\n *\n * @private\n * @param {Object} self\n * The evented object on which `on()` or `one()` was called. This\n * object will be bound as the `this` value for the listener.\n *\n * @param {Array} args\n * An array of arguments passed to `on()` or `one()`.\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n *\n * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\n\n\nvar normalizeListenArgs = function normalizeListenArgs(self, args, fnName) {\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n var isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n var target;\n var type;\n var listener;\n\n if (isTargetingSelf) {\n target = self.eventBusEl_; // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n\n if (args.length >= 3) {\n args.shift();\n }\n\n type = args[0];\n listener = args[1];\n } else {\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n\n validateTarget(target, self, fnName);\n validateEventType(type, self, fnName);\n validateListener(listener, self, fnName);\n listener = bind(self, listener);\n return {\n isTargetingSelf: isTargetingSelf,\n target: target,\n type: type,\n listener: listener\n };\n};\n/**\n * Adds the listener to the event type(s) on the target, normalizing for\n * the type of target.\n *\n * @private\n * @param {Element|Object} target\n * A DOM node or evented object.\n *\n * @param {string} method\n * The event binding method to use (\"on\" or \"one\").\n *\n * @param {string|Array} type\n * One or more event type(s).\n *\n * @param {Function} listener\n * A listener function.\n */\n\n\nvar listen = function listen(target, method, type, listener) {\n validateTarget(target, target, method);\n\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\n};\n/**\n * Contains methods that provide event capabilities to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\n\n\nvar EventedMixin = {\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n on: function on() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _normalizeListenArgs = normalizeListenArgs(this, args, 'on'),\n isTargetingSelf = _normalizeListenArgs.isTargetingSelf,\n target = _normalizeListenArgs.target,\n type = _normalizeListenArgs.type,\n listener = _normalizeListenArgs.listener;\n\n listen(target, 'on', type, listener); // If this object is listening to another evented object.\n\n if (!isTargetingSelf) {\n // If this object is disposed, remove the listener.\n var removeListenerOnDispose = function removeListenerOnDispose() {\n return _this.off(target, type, listener);\n }; // Use the same function ID as the listener so we can remove it later it\n // using the ID of the original listener.\n\n\n removeListenerOnDispose.guid = listener.guid; // Add a listener to the target's dispose event as well. This ensures\n // that if the target is disposed BEFORE this object, we remove the\n // removal listener that was just added. Otherwise, we create a memory leak.\n\n var removeRemoverOnTargetDispose = function removeRemoverOnTargetDispose() {\n return _this.off('dispose', removeListenerOnDispose);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n removeRemoverOnTargetDispose.guid = listener.guid;\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will be called once per event and then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n one: function one() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var _normalizeListenArgs2 = normalizeListenArgs(this, args, 'one'),\n isTargetingSelf = _normalizeListenArgs2.isTargetingSelf,\n target = _normalizeListenArgs2.target,\n type = _normalizeListenArgs2.type,\n listener = _normalizeListenArgs2.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'one', type, listener); // Targeting another evented object.\n } else {\n // TODO: This wrapper is incorrect! It should only\n // remove the wrapper for the event type that called it.\n // Instead all listners are removed on the first trigger!\n // see https://github.com/videojs/video.js/issues/5962\n var wrapper = function wrapper() {\n _this2.off(target, type, wrapper);\n\n for (var _len3 = arguments.length, largs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n largs[_key3] = arguments[_key3];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will only be called once for the first event that is triggered\n * then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n any: function any() {\n var _this3 = this;\n\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var _normalizeListenArgs3 = normalizeListenArgs(this, args, 'any'),\n isTargetingSelf = _normalizeListenArgs3.isTargetingSelf,\n target = _normalizeListenArgs3.target,\n type = _normalizeListenArgs3.type,\n listener = _normalizeListenArgs3.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'any', type, listener); // Targeting another evented object.\n } else {\n var wrapper = function wrapper() {\n _this3.off(target, type, wrapper);\n\n for (var _len5 = arguments.length, largs = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n largs[_key5] = arguments[_key5];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'any', type, wrapper);\n }\n },\n\n /**\n * Removes listener(s) from event(s) on an evented object.\n *\n * @param {string|Array|Element|Object} [targetOrType]\n * If this is a string or array, it represents the event type(s).\n *\n * Another evented object can be passed here instead, in which case\n * ALL 3 arguments are _required_.\n *\n * @param {string|Array|Function} [typeOrListener]\n * If the first argument was a string or array, this may be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function; otherwise, _all_ listeners bound to the\n * event type(s) will be removed.\n */\n off: function off$1(targetOrType, typeOrListener, listener) {\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener); // Targeting another evented object.\n } else {\n var target = targetOrType;\n var type = typeOrListener; // Fail fast and in a meaningful way!\n\n validateTarget(target, this, 'off');\n validateEventType(type, this, 'off');\n validateListener(listener, this, 'off'); // Ensure there's at least a guid, even if the function hasn't been used\n\n listener = bind(this, listener); // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n\n this.off('dispose', listener);\n\n if (target.nodeName) {\n off(target, type, listener);\n off(target, 'dispose', listener);\n } else if (isEvented(target)) {\n target.off(type, listener);\n target.off('dispose', listener);\n }\n }\n },\n\n /**\n * Fire an event on this evented object, causing its listeners to be called.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash]\n * An additional object to pass along to listeners.\n *\n * @return {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger: function trigger$1(event, hash) {\n validateTarget(this.eventBusEl_, this, 'trigger');\n var type = event && typeof event !== 'string' ? event.type : event;\n\n if (!isValidEventType(type)) {\n var error = \"Invalid event type for \" + objName(this) + \"#trigger; \" + 'must be a non-empty string or object with a type key that has a non-empty value.';\n\n if (event) {\n (this.log || log$1).error(error);\n } else {\n throw new Error(error);\n }\n }\n\n return trigger(this.eventBusEl_, event, hash);\n }\n};\n/**\n * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object.\n *\n * @param {Object} target\n * The object to which to add event methods.\n *\n * @param {Object} [options={}]\n * Options for customizing the mixin behavior.\n *\n * @param {string} [options.eventBusKey]\n * By default, adds a `eventBusEl_` DOM element to the target object,\n * which is used as an event bus. If the target object already has a\n * DOM element that should be used, pass its key here.\n *\n * @return {Object}\n * The target object.\n */\n\nfunction evented(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n eventBusKey = _options.eventBusKey; // Set or create the eventBusEl_.\n\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error(\"The eventBusKey \\\"\" + eventBusKey + \"\\\" does not refer to an element.\");\n }\n\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', {\n className: 'vjs-event-bus'\n });\n }\n\n assign(target, EventedMixin);\n\n if (target.eventedCallbacks) {\n target.eventedCallbacks.forEach(function (callback) {\n callback();\n });\n } // When any evented object is disposed, it removes all its listeners.\n\n\n target.on('dispose', function () {\n target.off();\n [target, target.el_, target.eventBusEl_].forEach(function (val) {\n if (val && DomData.has(val)) {\n DomData[\"delete\"](val);\n }\n });\n window$1.setTimeout(function () {\n target.eventBusEl_ = null;\n }, 0);\n });\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\n\nvar StatefulMixin = {\n /**\n * A hash containing arbitrary keys and values representing the state of\n * the object.\n *\n * @type {Object}\n */\n state: {},\n\n /**\n * Set the state of an object by mutating its\n * {@link module:stateful~StatefulMixin.state|state} object in place.\n *\n * @fires module:stateful~StatefulMixin#statechanged\n * @param {Object|Function} stateUpdates\n * A new set of properties to shallow-merge into the plugin state.\n * Can be a plain object or a function returning a plain object.\n *\n * @return {Object|undefined}\n * An object containing changes that occurred. If no changes\n * occurred, returns `undefined`.\n */\n setState: function setState(stateUpdates) {\n var _this = this;\n\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n\n var changes;\n each(stateUpdates, function (value, key) {\n // Record the change if the value is different from what's in the\n // current state.\n if (_this.state[key] !== value) {\n changes = changes || {};\n changes[key] = {\n from: _this.state[key],\n to: value\n };\n }\n\n _this.state[key] = value;\n }); // Only trigger \"statechange\" if there were changes AND we have a trigger\n // function. This allows us to not require that the target object be an\n // evented object.\n\n if (changes && isEvented(this)) {\n /**\n * An event triggered on an object that is both\n * {@link module:stateful|stateful} and {@link module:evented|evented}\n * indicating that its state has changed.\n *\n * @event module:stateful~StatefulMixin#statechanged\n * @type {Object}\n * @property {Object} changes\n * A hash containing the properties that were changed and\n * the values they were changed `from` and `to`.\n */\n this.trigger({\n changes: changes,\n type: 'statechanged'\n });\n }\n\n return changes;\n }\n};\n/**\n * Applies {@link module:stateful~StatefulMixin|StatefulMixin} to a target\n * object.\n *\n * If the target object is {@link module:evented|evented} and has a\n * `handleStateChanged` method, that method will be automatically bound to the\n * `statechanged` event on itself.\n *\n * @param {Object} target\n * The object to be made stateful.\n *\n * @param {Object} [defaultState]\n * A default set of properties to populate the newly-stateful object's\n * `state` property.\n *\n * @return {Object}\n * Returns the `target`.\n */\n\nfunction stateful(target, defaultState) {\n assign(target, StatefulMixin); // This happens after the mixing-in because we need to replace the `state`\n // added in that step.\n\n target.state = assign({}, target.state, defaultState); // Auto-bind the `handleStateChanged` method of the target object if it exists.\n\n if (typeof target.handleStateChanged === 'function' && isEvented(target)) {\n target.on('statechanged', target.handleStateChanged);\n }\n\n return target;\n}\n\n/**\n * @file string-cases.js\n * @module to-lower-case\n */\n\n/**\n * Lowercase the first letter of a string.\n *\n * @param {string} string\n * String to be lowercased\n *\n * @return {string}\n * The string with a lowercased first letter\n */\nvar toLowerCase = function toLowerCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toLowerCase();\n });\n};\n/**\n * Uppercase the first letter of a string.\n *\n * @param {string} string\n * String to be uppercased\n *\n * @return {string}\n * The string with an uppercased first letter\n */\n\nvar toTitleCase$1 = function toTitleCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toUpperCase();\n });\n};\n/**\n * Compares the TitleCase versions of the two strings for equality.\n *\n * @param {string} str1\n * The first string to compare\n *\n * @param {string} str2\n * The second string to compare\n *\n * @return {boolean}\n * Whether the TitleCase versions of the strings are equal\n */\n\nvar titleCaseEquals = function titleCaseEquals(str1, str2) {\n return toTitleCase$1(str1) === toTitleCase$1(str2);\n};\n\n/**\n * @file merge-options.js\n * @module merge-options\n */\n/**\n * Merge two objects recursively.\n *\n * Performs a deep merge like\n * {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, but only merges\n * plain objects (not arrays, elements, or anything else).\n *\n * Non-plain object values will be copied directly from the right-most\n * argument.\n *\n * @static\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @return {Object}\n * A new object that is the merged result of all sources.\n */\n\nfunction mergeOptions$3() {\n var result = {};\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n\n result[key] = mergeOptions$3(result[key], value);\n });\n });\n return result;\n}\n\nvar MapSham = /*#__PURE__*/function () {\n function MapSham() {\n this.map_ = {};\n }\n\n var _proto = MapSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.map_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.map_[key];\n return has;\n };\n\n _proto.set = function set(key, value) {\n this.map_[key] = value;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.map_) {\n callback.call(thisArg, this.map_[key], key, this);\n }\n };\n\n return MapSham;\n}();\n\nvar Map$1 = window$1.Map ? window$1.Map : MapSham;\n\nvar SetSham = /*#__PURE__*/function () {\n function SetSham() {\n this.set_ = {};\n }\n\n var _proto = SetSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.set_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.set_[key];\n return has;\n };\n\n _proto.add = function add(key) {\n this.set_[key] = 1;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.set_) {\n callback.call(thisArg, key, key, this);\n }\n };\n\n return SetSham;\n}();\n\nvar Set$1 = window$1.Set ? window$1.Set : SetSham;\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n/**\n * Base class for all UI Components.\n * Components are UI objects which represent both a javascript object and an element\n * in the DOM. They can be children of other components, and can have\n * children themselves.\n *\n * Components can also use methods from {@link EventTarget}\n */\n\nvar Component$1 = /*#__PURE__*/function () {\n /**\n * A callback that is called when a component is ready. Does not have any\n * paramters and any callback value will be ignored.\n *\n * @callback Component~ReadyCallback\n * @this Component\n */\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of component options.\n *\n * @param {Object[]} [options.children]\n * An array of children objects to intialize this component with. Children objects have\n * a name property that will be used if more than one component of the same type needs to be\n * added.\n *\n * @param {string} [options.className]\n * A class or space separated list of classes to add the component\n *\n * @param {Component~ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n function Component(player, options, ready) {\n var _this = this;\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n this.isDisposed_ = false; // Hold the reference to the parent component via `addChild` method\n\n this.parentComponent_ = null; // Make a copy of prototype.options_ to protect against overriding defaults\n\n this.options_ = mergeOptions$3({}, this.options_); // Updated options with supplied options\n\n options = this.options_ = mergeOptions$3(this.options_, options); // Get ID from options or options element if one is supplied\n\n this.id_ = options.id || options.el && options.el.id; // If there was no ID from the options, generate one\n\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n var id = player && player.id && player.id() || 'no_player';\n this.id_ = id + \"_component_\" + newGUID();\n }\n\n this.name_ = options.name || null; // Create element if one wasn't provided in options\n\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n if (options.className && this.el_) {\n options.className.split(' ').forEach(function (c) {\n return _this.addClass(c);\n });\n } // if evented is anything except false, we want to mixin in evented\n\n\n if (options.evented !== false) {\n // Make this an evented object and use `el_`, if available, as its event bus\n evented(this, {\n eventBusKey: this.el_ ? 'el_' : null\n });\n this.handleLanguagechange = this.handleLanguagechange.bind(this);\n this.on(this.player_, 'languagechange', this.handleLanguagechange);\n }\n\n stateful(this, this.constructor.defaultState);\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n this.setTimeoutIds_ = new Set$1();\n this.setIntervalIds_ = new Set$1();\n this.rafIds_ = new Set$1();\n this.namedRafs_ = new Map$1();\n this.clearingTimersOnDispose_ = false; // Add any child components in options\n\n if (options.initChildren !== false) {\n this.initChildren();\n } // Don't want to trigger ready here or it will go before init is actually\n // finished for all children that run this constructor\n\n\n this.ready(ready);\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n *\n * @param {Object} options\n * @param {Element} options.originalEl element with which to replace player element\n */\n\n\n var _proto = Component.prototype;\n\n _proto.dispose = function dispose(options) {\n if (options === void 0) {\n options = {};\n }\n\n // Bail out if the component has already been disposed.\n if (this.isDisposed_) {\n return;\n }\n\n if (this.readyQueue_) {\n this.readyQueue_.length = 0;\n }\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {EventTarget~Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the dispose event does not\n * bubble up\n */\n\n\n this.trigger({\n type: 'dispose',\n bubbles: false\n });\n this.isDisposed_ = true; // Dispose all children.\n\n if (this.children_) {\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n } // Delete child references\n\n\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n this.parentComponent_ = null;\n\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n if (options.restoreEl) {\n this.el_.parentNode.replaceChild(options.restoreEl, this.el_);\n } else {\n this.el_.parentNode.removeChild(this.el_);\n }\n }\n\n this.el_ = null;\n } // remove reference to the player after disposing of the element\n\n\n this.player_ = null;\n }\n /**\n * Determine whether or not this component has been disposed.\n *\n * @return {boolean}\n * If the component has been disposed, will be `true`. Otherwise, `false`.\n */\n ;\n\n _proto.isDisposed = function isDisposed() {\n return Boolean(this.isDisposed_);\n }\n /**\n * Return the {@link Player} that the `Component` has attached to.\n *\n * @return {Player}\n * The player that this `Component` has attached to.\n */\n ;\n\n _proto.player = function player() {\n return this.player_;\n }\n /**\n * Deep merge of options objects with new options.\n * > Note: When both `obj` and `options` contain properties whose values are objects.\n * The two properties get merged using {@link module:mergeOptions}\n *\n * @param {Object} obj\n * The object that contains new options.\n *\n * @return {Object}\n * A new object of `this.options_` and `obj` merged together.\n */\n ;\n\n _proto.options = function options(obj) {\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions$3(this.options_, obj);\n return this.options_;\n }\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n ;\n\n _proto.el = function el() {\n return this.el_;\n }\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tagName]\n * Element's DOM node type. e.g. 'div'\n *\n * @param {Object} [properties]\n * An object of properties that should be set.\n *\n * @param {Object} [attributes]\n * An object of attributes that should be set.\n *\n * @return {Element}\n * The element that gets created.\n */\n ;\n\n _proto.createEl = function createEl$1(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n }\n /**\n * Localize a string given the string in english.\n *\n * If tokens are provided, it'll try and run a simple token replacement on the provided string.\n * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array.\n *\n * If a `defaultValue` is provided, it'll use that over `string`,\n * if a value isn't found in provided language files.\n * This is useful if you want to have a descriptive key for token replacement\n * but have a succinct localized string and not require `en.json` to be included.\n *\n * Currently, it is used for the progress bar timing.\n * ```js\n * {\n * \"progress bar timing: currentTime={1} duration={2}\": \"{1} of {2}\"\n * }\n * ```\n * It is then used like so:\n * ```js\n * this.localize('progress bar timing: currentTime={1} duration{2}',\n * [this.player_.currentTime(), this.player_.duration()],\n * '{1} of {2}');\n * ```\n *\n * Which outputs something like: `01:23 of 24:56`.\n *\n *\n * @param {string} string\n * The string to localize and the key to lookup in the language files.\n * @param {string[]} [tokens]\n * If the current item has token replacements, provide the tokens here.\n * @param {string} [defaultValue]\n * Defaults to `string`. Can be a default value to use for token replacement\n * if the lookup key is needed to be separate.\n *\n * @return {string}\n * The localized string or if no localization exists the english string.\n */\n ;\n\n _proto.localize = function localize(string, tokens, defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = string;\n }\n\n var code = this.player_.language && this.player_.language();\n var languages = this.player_.languages && this.player_.languages();\n var language = languages && languages[code];\n var primaryCode = code && code.split('-')[0];\n var primaryLang = languages && languages[primaryCode];\n var localizedString = defaultValue;\n\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n var value = tokens[index - 1];\n var ret = value;\n\n if (typeof value === 'undefined') {\n ret = match;\n }\n\n return ret;\n });\n }\n\n return localizedString;\n }\n /**\n * Handles language change for the player in components. Should be overriden by sub-components.\n *\n * @abstract\n */\n ;\n\n _proto.handleLanguagechange = function handleLanguagechange() {}\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n ;\n\n _proto.contentEl = function contentEl() {\n return this.contentEl_ || this.el_;\n }\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n ;\n\n _proto.id = function id() {\n return this.id_;\n }\n /**\n * Get the `Component`s name. The name gets used to reference the `Component`\n * and is set during registration.\n *\n * @return {string}\n * The name of this `Component`.\n */\n ;\n\n _proto.name = function name() {\n return this.name_;\n }\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n ;\n\n _proto.children = function children() {\n return this.children_;\n }\n /**\n * Returns the child `Component` with the given `id`.\n *\n * @param {string} id\n * The id of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `id` or undefined.\n */\n ;\n\n _proto.getChildById = function getChildById(id) {\n return this.childIndex_[id];\n }\n /**\n * Returns the child `Component` with the given `name`.\n *\n * @param {string} name\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `name` or undefined.\n */\n ;\n\n _proto.getChild = function getChild(name) {\n if (!name) {\n return;\n }\n\n return this.childNameIndex_[name];\n }\n /**\n * Returns the descendant `Component` following the givent\n * descendant `names`. For instance ['foo', 'bar', 'baz'] would\n * try to get 'foo' on the current component, 'bar' on the 'foo'\n * component and 'baz' on the 'bar' component and return undefined\n * if any of those don't exist.\n *\n * @param {...string[]|...string} names\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The descendant `Component` following the given descendant\n * `names` or undefined.\n */\n ;\n\n _proto.getDescendant = function getDescendant() {\n for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) {\n names[_key] = arguments[_key];\n }\n\n // flatten array argument into the main array\n names = names.reduce(function (acc, n) {\n return acc.concat(n);\n }, []);\n var currentChild = this;\n\n for (var i = 0; i < names.length; i++) {\n currentChild = currentChild.getChild(names[i]);\n\n if (!currentChild || !currentChild.getChild) {\n return;\n }\n }\n\n return currentChild;\n }\n /**\n * Add a child `Component` inside the current `Component`.\n *\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @param {number} [index=this.children_.length]\n * The index to attempt to add a child into.\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n */\n ;\n\n _proto.addChild = function addChild(child, options, index) {\n if (options === void 0) {\n options = {};\n }\n\n if (index === void 0) {\n index = this.children_.length;\n }\n\n var component;\n var componentName; // If child is a string, create component with options\n\n if (typeof child === 'string') {\n componentName = toTitleCase$1(child);\n var componentClassName = options.componentClass || componentName; // Set name through options\n\n options.name = componentName; // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n\n var ComponentClass = Component.getComponent(componentClassName);\n\n if (!ComponentClass) {\n throw new Error(\"Component \" + componentClassName + \" does not exist\");\n } // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n\n\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n\n component = new ComponentClass(this.player_ || this, options); // child is a component instance\n } else {\n component = child;\n }\n\n if (component.parentComponent_) {\n component.parentComponent_.removeChild(component);\n }\n\n this.children_.splice(index, 0, component);\n component.parentComponent_ = this;\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n } // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n\n\n componentName = componentName || component.name && toTitleCase$1(component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n this.childNameIndex_[toLowerCase(componentName)] = component;\n } // Add the UI object's element to the container div (box)\n // Having an element is not required\n\n\n if (typeof component.el === 'function' && component.el()) {\n // If inserting before a component, insert before that component's element\n var refNode = null;\n\n if (this.children_[index + 1]) {\n // Most children are components, but the video tech is an HTML element\n if (this.children_[index + 1].el_) {\n refNode = this.children_[index + 1].el_;\n } else if (isEl(this.children_[index + 1])) {\n refNode = this.children_[index + 1];\n }\n }\n\n this.contentEl().insertBefore(component.el(), refNode);\n } // Return so it can stored on parent object if desired.\n\n\n return component;\n }\n /**\n * Remove a child `Component` from this `Component`s list of children. Also removes\n * the child `Component`s element from this `Component`s element.\n *\n * @param {Component} component\n * The child `Component` to remove.\n */\n ;\n\n _proto.removeChild = function removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n var childFound = false;\n\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n component.parentComponent_ = null;\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[toTitleCase$1(component.name())] = null;\n this.childNameIndex_[toLowerCase(component.name())] = null;\n var compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n ;\n\n _proto.initChildren = function initChildren() {\n var _this2 = this;\n\n var children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n var parentOptions = this.options_;\n\n var handleAdd = function handleAdd(child) {\n var name = child.name;\n var opts = child.opts; // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n } // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n\n\n if (opts === false) {\n return;\n } // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n\n\n if (opts === true) {\n opts = {};\n } // We also want to pass the original player options\n // to each component as well so they don't need to\n // reach back into the player for options later.\n\n\n opts.playerOptions = _this2.options_.playerOptions; // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n\n var newChild = _this2.addChild(name, opts);\n\n if (newChild) {\n _this2[name] = newChild;\n }\n }; // Allow for an array of children details to passed in the options\n\n\n var workingChildren;\n var Tech = Component.getComponent('Tech');\n\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n\n workingChildren // children that are in this.options_ but also in workingChildren would\n // give us extra children we do not want. So, we want to filter them out.\n .concat(Object.keys(this.options_).filter(function (child) {\n return !workingChildren.some(function (wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n }\n\n return child === wchild.name;\n });\n })).map(function (child) {\n var name;\n var opts;\n\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || _this2.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n\n return {\n name: name,\n opts: opts\n };\n }).filter(function (child) {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registerd as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n var c = Component.getComponent(child.opts.componentClass || toTitleCase$1(child.name));\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n }\n /**\n * Builds the default DOM class name. Should be overriden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @return {Component}\n * Returns itself; method can be chained.\n */\n ;\n\n _proto.ready = function ready(fn, sync) {\n if (sync === void 0) {\n sync = false;\n }\n\n if (!fn) {\n return;\n }\n\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\n\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n }\n /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n ;\n\n _proto.triggerReady = function triggerReady() {\n this.isReady_ = true; // Ensure ready is triggered asynchronously\n\n this.setTimeout(function () {\n var readyQueue = this.readyQueue_; // Reset Ready Queue\n\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n } // Allow for using event listeners also\n\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('ready');\n }, 1);\n }\n /**\n * Find a single DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {Element|null}\n * the dom element that was found, or null\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$ = function $$1(selector, context) {\n return $(selector, context || this.contentEl());\n }\n /**\n * Finds all DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {NodeList}\n * a list of dom elements that were found\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$$ = function $$$1(selector, context) {\n return $$(selector, context || this.contentEl());\n }\n /**\n * Check if a component's element has a CSS class name.\n *\n * @param {string} classToCheck\n * CSS class name to check.\n *\n * @return {boolean}\n * - True if the `Component` has the class.\n * - False if the `Component` does not have the class`\n */\n ;\n\n _proto.hasClass = function hasClass$1(classToCheck) {\n return hasClass(this.el_, classToCheck);\n }\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {string} classToAdd\n * CSS class name to add\n */\n ;\n\n _proto.addClass = function addClass$1(classToAdd) {\n addClass(this.el_, classToAdd);\n }\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {string} classToRemove\n * CSS class name to remove\n */\n ;\n\n _proto.removeClass = function removeClass$1(classToRemove) {\n removeClass(this.el_, classToRemove);\n }\n /**\n * Add or remove a CSS class name from the component's element.\n * - `classToToggle` gets added when {@link Component#hasClass} would return false.\n * - `classToToggle` gets removed when {@link Component#hasClass} would return true.\n *\n * @param {string} classToToggle\n * The class to add or remove based on (@link Component#hasClass}\n *\n * @param {boolean|Dom~predicate} [predicate]\n * An {@link Dom~predicate} function or a boolean\n */\n ;\n\n _proto.toggleClass = function toggleClass$1(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n }\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n ;\n\n _proto.show = function show() {\n this.removeClass('vjs-hidden');\n }\n /**\n * Hide the `Component`s element if it is currently showing by adding the\n * 'vjs-hidden` class name to it.\n */\n ;\n\n _proto.hide = function hide() {\n this.addClass('vjs-hidden');\n }\n /**\n * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing'\n * class name to it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.lockShowing = function lockShowing() {\n this.addClass('vjs-lock-showing');\n }\n /**\n * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing'\n * class name from it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.unlockShowing = function unlockShowing() {\n this.removeClass('vjs-lock-showing');\n }\n /**\n * Get the value of an attribute on the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to get the value from.\n *\n * @return {string|null}\n * - The value of the attribute that was asked for.\n * - Can be an empty string on some browsers if the attribute does not exist\n * or has no value\n * - Most browsers will return null if the attibute does not exist or has\n * no value.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute}\n */\n ;\n\n _proto.getAttribute = function getAttribute$1(attribute) {\n return getAttribute(this.el_, attribute);\n }\n /**\n * Set the value of an attribute on the `Component`'s element\n *\n * @param {string} attribute\n * Name of the attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute}\n */\n ;\n\n _proto.setAttribute = function setAttribute$1(attribute, value) {\n setAttribute(this.el_, attribute, value);\n }\n /**\n * Remove an attribute from the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to remove.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute}\n */\n ;\n\n _proto.removeAttribute = function removeAttribute$1(attribute) {\n removeAttribute(this.el_, attribute);\n }\n /**\n * Get or set the width of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The width that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.width = function width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n /**\n * Get or set the height of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The height that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.height = function height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n /**\n * Set both the width and height of the `Component` element at the same time.\n *\n * @param {number|string} width\n * Width to set the `Component`s element to.\n *\n * @param {number|string} height\n * Height to set the `Component`s element to.\n */\n ;\n\n _proto.dimensions = function dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n }\n /**\n * Get or set width or height of the `Component` element. This is the shared code\n * for the {@link Component#width} and {@link Component#height}.\n *\n * Things to know:\n * - If the width or height in an number this will return the number postfixed with 'px'.\n * - If the width/height is a percent this will return the percent postfixed with '%'\n * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function\n * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`.\n * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/}\n * for more information\n * - If you want the computed style of the component, use {@link Component#currentWidth}\n * and {@link {Component#currentHeight}\n *\n * @fires Component#componentresize\n *\n * @param {string} widthOrHeight\n 8 'width' or 'height'\n *\n * @param {number|string} [num]\n 8 New dimension\n *\n * @param {boolean} [skipListeners]\n * Skip componentresize event trigger\n *\n * @return {number}\n * The dimension when getting or 0 if unset\n */\n ;\n\n _proto.dimension = function dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n } // Check if using css width/height (% or px) and adjust\n\n\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n } // skipListeners allows us to avoid triggering the resize event when setting both width and height\n\n\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {EventTarget~Event}\n */\n this.trigger('componentresize');\n }\n\n return;\n } // Not setting a value, so getting it\n // Make sure element exists\n\n\n if (!this.el_) {\n return 0;\n } // Get dimension value from style\n\n\n var val = this.el_.style[widthOrHeight];\n var pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n } // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n\n\n return parseInt(this.el_['offset' + toTitleCase$1(widthOrHeight)], 10);\n }\n /**\n * Get the computed width or the height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @param {string} widthOrHeight\n * A string containing 'width' or 'height'. Whichever one you want to get.\n *\n * @return {number}\n * The dimension that gets asked for or 0 if nothing was set\n * for that dimension.\n */\n ;\n\n _proto.currentDimension = function currentDimension(widthOrHeight) {\n var computedWidthOrHeight = 0;\n\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n\n computedWidthOrHeight = computedStyle(this.el_, widthOrHeight); // remove 'px' from variable and parse as integer\n\n computedWidthOrHeight = parseFloat(computedWidthOrHeight); // if the computed value is still 0, it's possible that the browser is lying\n // and we want to check the offset values.\n // This code also runs wherever getComputedStyle doesn't exist.\n\n if (computedWidthOrHeight === 0 || isNaN(computedWidthOrHeight)) {\n var rule = \"offset\" + toTitleCase$1(widthOrHeight);\n computedWidthOrHeight = this.el_[rule];\n }\n\n return computedWidthOrHeight;\n }\n /**\n * An object that contains width and height values of the `Component`s\n * computed style. Uses `window.getComputedStyle`.\n *\n * @typedef {Object} Component~DimensionObject\n *\n * @property {number} width\n * The width of the `Component`s computed style.\n *\n * @property {number} height\n * The height of the `Component`s computed style.\n */\n\n /**\n * Get an object that contains computed width and height values of the\n * component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {Component~DimensionObject}\n * The computed dimensions of the component's element.\n */\n ;\n\n _proto.currentDimensions = function currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n }\n /**\n * Get the computed width of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed width of the component's element.\n */\n ;\n\n _proto.currentWidth = function currentWidth() {\n return this.currentDimension('width');\n }\n /**\n * Get the computed height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed height of the component's element.\n */\n ;\n\n _proto.currentHeight = function currentHeight() {\n return this.currentDimension('height');\n }\n /**\n * Set the focus to this component\n */\n ;\n\n _proto.focus = function focus() {\n this.el_.focus();\n }\n /**\n * Remove the focus from this component\n */\n ;\n\n _proto.blur = function blur() {\n this.el_.blur();\n }\n /**\n * When this Component receives a `keydown` event which it does not process,\n * it passes the event to the Player for handling.\n *\n * @param {EventTarget~Event} event\n * The `keydown` event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n if (this.player_) {\n // We only stop propagation here because we want unhandled events to fall\n // back to the browser. Exclude Tab for focus trapping.\n if (!keycode.isEventKey(event, 'Tab')) {\n event.stopPropagation();\n }\n\n this.player_.handleKeyDown(event);\n }\n }\n /**\n * Many components used to have a `handleKeyPress` method, which was poorly\n * named because it listened to a `keydown` event. This method name now\n * delegates to `handleKeyDown`. This means anyone calling `handleKeyPress`\n * will not see their method calls stop working.\n *\n * @param {EventTarget~Event} event\n * The event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyPress = function handleKeyPress(event) {\n this.handleKeyDown(event);\n }\n /**\n * Emit a 'tap' events when touch event support gets detected. This gets used to\n * support toggling the controls through a tap on the video. They get enabled\n * because every sub-component would have extra overhead otherwise.\n *\n * @private\n * @fires Component#tap\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchleave\n * @listens Component#touchcancel\n * @listens Component#touchend\n */\n ;\n\n _proto.emitTapEvents = function emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n var touchStart = 0;\n var firstTouch = null; // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15,\n // so 10 seems like a nice, round number.\n\n var tapMovementThreshold = 10; // The maximum length a touch can be while still being considered a tap\n\n var touchTimeThreshold = 200;\n var couldBeTap;\n this.on('touchstart', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy pageX/pageY from the object\n firstTouch = {\n pageX: event.touches[0].pageX,\n pageY: event.touches[0].pageY\n }; // Record start time so we can detect a tap vs. \"touch and hold\"\n\n touchStart = window$1.performance.now(); // Reset couldBeTap tracking\n\n couldBeTap = true;\n }\n });\n this.on('touchmove', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n var xdiff = event.touches[0].pageX - firstTouch.pageX;\n var ydiff = event.touches[0].pageY - firstTouch.pageY;\n var touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n var noTap = function noTap() {\n couldBeTap = false;\n }; // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n\n\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap); // When the touch ends, measure how long it took and trigger the appropriate\n // event\n\n this.on('touchend', function (event) {\n firstTouch = null; // Proceed only if the touchmove/leave/cancel event didn't happen\n\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n var touchTime = window$1.performance.now() - touchStart; // Make sure the touch was less than the threshold to be considered a tap\n\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n /**\n * Triggered when a `Component` is tapped.\n *\n * @event Component#tap\n * @type {EventTarget~Event}\n */\n\n this.trigger('tap'); // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n /**\n * This function reports user activity whenever touch events happen. This can get\n * turned off by any sub-components that wants touch events to act another way.\n *\n * Report user touch activity when touch events occur. User activity gets used to\n * determine when controls should show/hide. It is simple when it comes to mouse\n * events, because any mouse event should show the controls. So we capture mouse\n * events that bubble up to the player and report activity when that happens.\n * With touch events it isn't as easy as `touchstart` and `touchend` toggle player\n * controls. So touch events can't help us at the player level either.\n *\n * User activity gets checked asynchronously. So what could happen is a tap event\n * on the video turns the controls off. Then the `touchend` event bubbles up to\n * the player. Which, if it reported user activity, would turn the controls right\n * back on. We also don't want to completely block touch events from bubbling up.\n * Furthermore a `touchmove` event and anything other than a tap, should not turn\n * controls back on.\n *\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchend\n * @listens Component#touchcancel\n */\n ;\n\n _proto.enableTouchActivity = function enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n } // listener for reporting that the user is active\n\n\n var report = bind(this.player(), this.player().reportUserActivity);\n var touchHolding;\n this.on('touchstart', function () {\n report(); // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n\n this.clearInterval(touchHolding); // report at the same interval as activityCheck\n\n touchHolding = this.setInterval(report, 250);\n });\n\n var touchEnd = function touchEnd(event) {\n report(); // stop the interval that maintains activity if the touch is holding\n\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n /**\n * A callback that has no parameters and is bound into `Component`s context.\n *\n * @callback Component~GenericCallback\n * @this Component\n */\n\n /**\n * Creates a function that runs after an `x` millisecond timeout. This function is a\n * wrapper around `window.setTimeout`. There are a few reasons to use this one\n * instead though:\n * 1. It gets cleared via {@link Component#clearTimeout} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will gets turned into a {@link Component~GenericCallback}\n *\n * > Note: You can't use `window.clearTimeout` on the id returned by this function. This\n * will cause its dispose listener not to get cleaned up! Please use\n * {@link Component#clearTimeout} or {@link Component#dispose} instead.\n *\n * @param {Component~GenericCallback} fn\n * The function that will be run after `timeout`.\n *\n * @param {number} timeout\n * Timeout in milliseconds to delay before executing the specified function.\n *\n * @return {number}\n * Returns a timeout ID that gets used to identify the timeout. It can also\n * get used in {@link Component#clearTimeout} to clear the timeout that\n * was set.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout}\n */\n ;\n\n _proto.setTimeout = function setTimeout(fn, timeout) {\n var _this3 = this;\n\n // declare as variables so they are properly available in timeout function\n // eslint-disable-next-line\n var timeoutId;\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n timeoutId = window$1.setTimeout(function () {\n if (_this3.setTimeoutIds_.has(timeoutId)) {\n _this3.setTimeoutIds_[\"delete\"](timeoutId);\n }\n\n fn();\n }, timeout);\n this.setTimeoutIds_.add(timeoutId);\n return timeoutId;\n }\n /**\n * Clears a timeout that gets created via `window.setTimeout` or\n * {@link Component#setTimeout}. If you set a timeout via {@link Component#setTimeout}\n * use this function instead of `window.clearTimout`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} timeoutId\n * The id of the timeout to clear. The return value of\n * {@link Component#setTimeout} or `window.setTimeout`.\n *\n * @return {number}\n * Returns the timeout id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout}\n */\n ;\n\n _proto.clearTimeout = function clearTimeout(timeoutId) {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_[\"delete\"](timeoutId);\n window$1.clearTimeout(timeoutId);\n }\n\n return timeoutId;\n }\n /**\n * Creates a function that gets run every `x` milliseconds. This function is a wrapper\n * around `window.setInterval`. There are a few reasons to use this one instead though.\n * 1. It gets cleared via {@link Component#clearInterval} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will be a {@link Component~GenericCallback}\n *\n * @param {Component~GenericCallback} fn\n * The function to run every `x` seconds.\n *\n * @param {number} interval\n * Execute the specified function every `x` milliseconds.\n *\n * @return {number}\n * Returns an id that can be used to identify the interval. It can also be be used in\n * {@link Component#clearInterval} to clear the interval.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval}\n */\n ;\n\n _proto.setInterval = function setInterval(fn, interval) {\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n var intervalId = window$1.setInterval(fn, interval);\n this.setIntervalIds_.add(intervalId);\n return intervalId;\n }\n /**\n * Clears an interval that gets created via `window.setInterval` or\n * {@link Component#setInterval}. If you set an inteval via {@link Component#setInterval}\n * use this function instead of `window.clearInterval`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} intervalId\n * The id of the interval to clear. The return value of\n * {@link Component#setInterval} or `window.setInterval`.\n *\n * @return {number}\n * Returns the interval id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval}\n */\n ;\n\n _proto.clearInterval = function clearInterval(intervalId) {\n if (this.setIntervalIds_.has(intervalId)) {\n this.setIntervalIds_[\"delete\"](intervalId);\n window$1.clearInterval(intervalId);\n }\n\n return intervalId;\n }\n /**\n * Queues up a callback to be passed to requestAnimationFrame (rAF), but\n * with a few extra bonuses:\n *\n * - Supports browsers that do not support rAF by falling back to\n * {@link Component#setTimeout}.\n *\n * - The callback is turned into a {@link Component~GenericCallback} (i.e.\n * bound to the component).\n *\n * - Automatic cancellation of the rAF callback is handled if the component\n * is disposed before it is called.\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n *\n * @return {number}\n * Returns an rAF ID that gets used to identify the timeout. It can\n * also be used in {@link Component#cancelAnimationFrame} to cancel\n * the animation frame callback.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}\n */\n ;\n\n _proto.requestAnimationFrame = function requestAnimationFrame(fn) {\n var _this4 = this;\n\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.setTimeout(fn, 1000 / 60);\n }\n\n this.clearTimersOnDispose_(); // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n\n var id;\n fn = bind(this, fn);\n id = window$1.requestAnimationFrame(function () {\n if (_this4.rafIds_.has(id)) {\n _this4.rafIds_[\"delete\"](id);\n }\n\n fn();\n });\n this.rafIds_.add(id);\n return id;\n }\n /**\n * Request an animation frame, but only one named animation\n * frame will be queued. Another will never be added until\n * the previous one finishes.\n *\n * @param {string} name\n * The name to give this requestAnimationFrame\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n */\n ;\n\n _proto.requestNamedAnimationFrame = function requestNamedAnimationFrame(name, fn) {\n var _this5 = this;\n\n if (this.namedRafs_.has(name)) {\n return;\n }\n\n this.clearTimersOnDispose_();\n fn = bind(this, fn);\n var id = this.requestAnimationFrame(function () {\n fn();\n\n if (_this5.namedRafs_.has(name)) {\n _this5.namedRafs_[\"delete\"](name);\n }\n });\n this.namedRafs_.set(name, id);\n return name;\n }\n /**\n * Cancels a current named animation frame if it exists.\n *\n * @param {string} name\n * The name of the requestAnimationFrame to cancel.\n */\n ;\n\n _proto.cancelNamedAnimationFrame = function cancelNamedAnimationFrame(name) {\n if (!this.namedRafs_.has(name)) {\n return;\n }\n\n this.cancelAnimationFrame(this.namedRafs_.get(name));\n this.namedRafs_[\"delete\"](name);\n }\n /**\n * Cancels a queued callback passed to {@link Component#requestAnimationFrame}\n * (rAF).\n *\n * If you queue an rAF callback via {@link Component#requestAnimationFrame},\n * use this function instead of `window.cancelAnimationFrame`. If you don't,\n * your dispose listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} id\n * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}.\n *\n * @return {number}\n * Returns the rAF ID that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame}\n */\n ;\n\n _proto.cancelAnimationFrame = function cancelAnimationFrame(id) {\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.clearTimeout(id);\n }\n\n if (this.rafIds_.has(id)) {\n this.rafIds_[\"delete\"](id);\n window$1.cancelAnimationFrame(id);\n }\n\n return id;\n }\n /**\n * A function to setup `requestAnimationFrame`, `setTimeout`,\n * and `setInterval`, clearing on dispose.\n *\n * > Previously each timer added and removed dispose listeners on it's own.\n * For better performance it was decided to batch them all, and use `Set`s\n * to track outstanding timer ids.\n *\n * @private\n */\n ;\n\n _proto.clearTimersOnDispose_ = function clearTimersOnDispose_() {\n var _this6 = this;\n\n if (this.clearingTimersOnDispose_) {\n return;\n }\n\n this.clearingTimersOnDispose_ = true;\n this.one('dispose', function () {\n [['namedRafs_', 'cancelNamedAnimationFrame'], ['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(function (_ref) {\n var idName = _ref[0],\n cancelName = _ref[1];\n\n // for a `Set` key will actually be the value again\n // so forEach((val, val) =>` but for maps we want to use\n // the key.\n _this6[idName].forEach(function (val, key) {\n return _this6[cancelName](key);\n });\n });\n _this6.clearingTimersOnDispose_ = false;\n });\n }\n /**\n * Register a `Component` with `videojs` given the name and the component.\n *\n * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s\n * should be registered using {@link Tech.registerTech} or\n * {@link videojs:videojs.registerTech}.\n *\n * > NOTE: This function can also be seen on videojs as\n * {@link videojs:videojs.registerComponent}.\n *\n * @param {string} name\n * The name of the `Component` to register.\n *\n * @param {Component} ComponentToRegister\n * The `Component` class to register.\n *\n * @return {Component}\n * The `Component` that was registered.\n */\n ;\n\n Component.registerComponent = function registerComponent(name, ComponentToRegister) {\n if (typeof name !== 'string' || !name) {\n throw new Error(\"Illegal component name, \\\"\" + name + \"\\\"; must be a non-empty string.\");\n }\n\n var Tech = Component.getComponent('Tech'); // We need to make sure this check is only done if Tech has been registered.\n\n var isTech = Tech && Tech.isTech(ComponentToRegister);\n var isComp = Component === ComponentToRegister || Component.prototype.isPrototypeOf(ComponentToRegister.prototype);\n\n if (isTech || !isComp) {\n var reason;\n\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n\n throw new Error(\"Illegal component, \\\"\" + name + \"\\\"; \" + reason + \".\");\n }\n\n name = toTitleCase$1(name);\n\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n var Player = Component.getComponent('Player');\n\n if (name === 'Player' && Player && Player.players) {\n var players = Player.players;\n var playerNames = Object.keys(players); // If we have players that were disposed, then their name will still be\n // in Players.players. So, we must loop through and verify that the value\n // for each item is not null. This allows registration of the Player component\n // after all players have been disposed or before any were created.\n\n if (players && playerNames.length > 0 && playerNames.map(function (pname) {\n return players[pname];\n }).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n\n Component.components_[name] = ComponentToRegister;\n Component.components_[toLowerCase(name)] = ComponentToRegister;\n return ComponentToRegister;\n }\n /**\n * Get a `Component` based on the name it was registered with.\n *\n * @param {string} name\n * The Name of the component to get.\n *\n * @return {Component}\n * The `Component` that got registered under the given name.\n */\n ;\n\n Component.getComponent = function getComponent(name) {\n if (!name || !Component.components_) {\n return;\n }\n\n return Component.components_[name];\n };\n\n return Component;\n}();\n/**\n * Whether or not this component supports `requestAnimationFrame`.\n *\n * This is exposed primarily for testing purposes.\n *\n * @private\n * @type {Boolean}\n */\n\n\nComponent$1.prototype.supportsRaf_ = typeof window$1.requestAnimationFrame === 'function' && typeof window$1.cancelAnimationFrame === 'function';\nComponent$1.registerComponent('Component', Component$1);\n\n/**\n * @file time-ranges.js\n * @module time-ranges\n */\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @typedef {Function} TimeRangeIndex\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time offset at the specified index.\n *\n * @deprecated The index argument must be provided.\n * In the future, leaving it out will throw an error.\n */\n\n/**\n * An object that contains ranges of time.\n *\n * @typedef {Object} TimeRange\n *\n * @property {number} length\n * The number of time ranges represented by this object.\n *\n * @property {module:time-ranges~TimeRangeIndex} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {module:time-ranges~TimeRangeIndex} end\n * Returns the time offset at which a specified time range ends.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges\n */\n\n/**\n * Check if any of the time ranges are over the maximum index.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {number} index\n * The index to check\n *\n * @param {number} maxIndex\n * The maximum possible index\n *\n * @throws {Error} if the timeRanges provided are over the maxIndex\n */\n\nfunction rangeCheck(fnName, index, maxIndex) {\n if (typeof index !== 'number' || index < 0 || index > maxIndex) {\n throw new Error(\"Failed to execute '\" + fnName + \"' on 'TimeRanges': The index provided (\" + index + \") is non-numeric or out of bounds (0-\" + maxIndex + \").\");\n }\n}\n/**\n * Get the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {string} valueIndex\n * The property that should be used to get the time. should be\n * 'start' or 'end'\n *\n * @param {Array} ranges\n * An array of time ranges\n *\n * @param {Array} [rangeIndex=0]\n * The index to start the search at\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n * @deprecated rangeIndex must be set to a value, in the future this will throw an error.\n * @throws {Error} if rangeIndex is more than the length of ranges\n */\n\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n/**\n * Create a time range object given ranges of time.\n *\n * @private\n * @param {Array} [ranges]\n * An array of time ranges.\n */\n\n\nfunction createTimeRangesObj(ranges) {\n var timeRangesObj;\n\n if (ranges === undefined || ranges.length === 0) {\n timeRangesObj = {\n length: 0,\n start: function start() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n } else {\n timeRangesObj = {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n }\n\n if (window$1.Symbol && window$1.Symbol.iterator) {\n timeRangesObj[window$1.Symbol.iterator] = function () {\n return (ranges || []).values();\n };\n }\n\n return timeRangesObj;\n}\n/**\n * Create a `TimeRange` object which mimics an\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges|HTML5 TimeRanges instance}.\n *\n * @param {number|Array[]} start\n * The start of a single range (a number) or an array of ranges (an\n * array of arrays of two numbers each).\n *\n * @param {number} end\n * The end of a single range. Cannot be used with the array form of\n * the `start` argument.\n */\n\n\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * @file buffer.js\n * @module buffer\n */\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRange` object representing buffered time ranges\n *\n * @param {number} duration\n * Total duration of the media\n *\n * @return {number}\n * Percent buffered of the total duration in decimal form.\n */\n\nfunction bufferedPercent(buffered, duration) {\n var bufferedDuration = 0;\n var start;\n var end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges(0, 0);\n }\n\n for (var i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i); // buffered end can be bigger than duration by a very small fraction\n\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n\n/**\n * @file media-error.js\n */\n/**\n * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class.\n *\n * @param {number|string|Object|MediaError} value\n * This can be of multiple types:\n * - number: should be a standard error code\n * - string: an error message (the code will be 0)\n * - Object: arbitrary properties\n * - `MediaError` (native): used to populate a video.js `MediaError` object\n * - `MediaError` (video.js): will return itself if it's already a\n * video.js `MediaError` object.\n *\n * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}\n * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}\n *\n * @class MediaError\n */\n\nfunction MediaError(value) {\n // Allow redundant calls to this constructor to avoid having `instanceof`\n // checks peppered around the code.\n if (value instanceof MediaError) {\n return value;\n }\n\n if (typeof value === 'number') {\n this.code = value;\n } else if (typeof value === 'string') {\n // default code is zero, so this is a custom error\n this.message = value;\n } else if (isObject(value)) {\n // We assign the `code` property manually because native `MediaError` objects\n // do not expose it as an own/enumerable property of the object.\n if (typeof value.code === 'number') {\n this.code = value.code;\n }\n\n assign(this, value);\n }\n\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\n\n\nMediaError.prototype.code = 0;\n/**\n * An optional message that to show with the error. Message is not part of the HTML5\n * video spec but allows for more informative custom errors.\n *\n * @type {String}\n */\n\nMediaError.prototype.message = '';\n/**\n * An optional status code that can be set by plugins to allow even more detail about\n * the error. For example a plugin might provide a specific HTTP status code and an\n * error message for that code. Then when the plugin gets that error this class will\n * know how to display an error message for it. This allows a custom message to show\n * up on the `Player` error overlay.\n *\n * @type {Array}\n */\n\nMediaError.prototype.status = null;\n/**\n * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the\n * specification listed under {@link MediaError} for more information.\n *\n * @enum {array}\n * @readonly\n * @property {string} 0 - MEDIA_ERR_CUSTOM\n * @property {string} 1 - MEDIA_ERR_ABORTED\n * @property {string} 2 - MEDIA_ERR_NETWORK\n * @property {string} 3 - MEDIA_ERR_DECODE\n * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED\n * @property {string} 5 - MEDIA_ERR_ENCRYPTED\n */\n\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\n */\n\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n}; // Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\nfor (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum; // values should be accessible on both the class and instance\n\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n} // jsdocs for instance/static members added above\n\n/**\n * Returns whether an object is `Promise`-like (i.e. has a `then` method).\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n *\n * @return {boolean}\n * Whether or not the object is `Promise`-like.\n */\nfunction isPromise(value) {\n return value !== undefined && value !== null && typeof value.then === 'function';\n}\n/**\n * Silence a Promise-like object.\n *\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n */\n\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, function (e) {});\n }\n}\n\n/**\n * @file text-track-list-converter.js Utilities for capturing text track state and\n * re-creating tracks based on a capture.\n *\n * @module text-track-list-converter\n */\n\n/**\n * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that\n * represents the {@link TextTrack}'s state.\n *\n * @param {TextTrack} track\n * The text track to query.\n *\n * @return {Object}\n * A serializable javascript representation of the TextTrack.\n * @private\n */\nvar trackToJson_ = function trackToJson_(track) {\n var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) {\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n\n return acc;\n }, {\n cues: track.cues && Array.prototype.map.call(track.cues, function (cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n })\n });\n return ret;\n};\n/**\n * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the\n * state of all {@link TextTrack}s currently configured. The return array is compatible with\n * {@link text-track-list-converter:jsonToTextTracks}.\n *\n * @param {Tech} tech\n * The tech object to query\n *\n * @return {Array}\n * A serializable javascript representation of the {@link Tech}s\n * {@link TextTrackList}.\n */\n\n\nvar textTracksToJson = function textTracksToJson(tech) {\n var trackEls = tech.$$('track');\n var trackObjs = Array.prototype.map.call(trackEls, function (t) {\n return t.track;\n });\n var tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n var json = trackToJson_(trackEl.track);\n\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n\n return json;\n });\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n/**\n * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript\n * object {@link TextTrack} representations.\n *\n * @param {Array} json\n * An array of `TextTrack` representation objects, like those that would be\n * produced by `textTracksToJson`.\n *\n * @param {Tech} tech\n * The `Tech` to create the `TextTrack`s on.\n */\n\n\nvar jsonToTextTracks = function jsonToTextTracks(json, tech) {\n json.forEach(function (track) {\n var addedTrack = tech.addRemoteTextTrack(track).track;\n\n if (!track.src && track.cues) {\n track.cues.forEach(function (cue) {\n return addedTrack.addCue(cue);\n });\n }\n });\n return tech.textTracks();\n};\n\nvar textTrackConverter = {\n textTracksToJson: textTracksToJson,\n jsonToTextTracks: jsonToTextTracks,\n trackToJson_: trackToJson_\n};\n\nvar MODAL_CLASS_NAME = 'vjs-modal-dialog';\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n */\n\nvar ModalDialog = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ModalDialog, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Mixed} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {string} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {string} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.pauseOnOpen=true]\n * If `true`, playback will will be paused if playing when\n * the modal opens, and resumed when it closes.\n *\n * @param {boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n */\n function ModalDialog(player, options) {\n var _this;\n\n _this = _Component.call(this, player, options) || this;\n\n _this.handleKeyDown_ = function (e) {\n return _this.handleKeyDown(e);\n };\n\n _this.close_ = function (e) {\n return _this.close(e);\n };\n\n _this.opened_ = _this.hasBeenOpened_ = _this.hasBeenFilled_ = false;\n\n _this.closeable(!_this.options_.uncloseable);\n\n _this.content(_this.options_.content); // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n\n\n _this.contentEl_ = createEl('div', {\n className: MODAL_CLASS_NAME + \"-content\"\n }, {\n role: 'document'\n });\n _this.descEl_ = createEl('p', {\n className: MODAL_CLASS_NAME + \"-description vjs-control-text\",\n id: _this.el().getAttribute('aria-describedby')\n });\n textContent(_this.descEl_, _this.description());\n\n _this.el_.appendChild(_this.descEl_);\n\n _this.el_.appendChild(_this.contentEl_);\n\n return _this;\n }\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n\n\n var _proto = ModalDialog.prototype;\n\n _proto.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': this.id() + \"_description\",\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n 'role': 'dialog'\n });\n };\n\n _proto.dispose = function dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n return MODAL_CLASS_NAME + \" vjs-hidden \" + _Component.prototype.buildCSSClass.call(this);\n }\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {string}\n * the localized or raw label of this modal.\n */\n ;\n\n _proto.label = function label() {\n return this.localize(this.options_.label || 'Modal Window');\n }\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {string}\n * The localized or raw description of this modal.\n */\n ;\n\n _proto.description = function description() {\n var desc = this.options_.description || this.localize('This is a modal window.'); // Append a universal closeability message if the modal is closeable.\n\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n\n return desc;\n }\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n ;\n\n _proto.open = function open() {\n if (!this.opened_) {\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalopen');\n this.opened_ = true; // Fill content if the modal has never opened before and\n // never been filled.\n\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n } // If the player was playing, pause it and take note of its previously\n // playing state.\n\n\n this.wasPlaying_ = !player.paused();\n\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n\n this.on('keydown', this.handleKeyDown_); // Hide controls and note if they were enabled.\n\n this.hadControls_ = player.controls();\n player.controls(false);\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n }\n /**\n * If the `ModalDialog` is currently open or closed.\n *\n * @param {boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {boolean}\n * the current open state of the modaldialog\n */\n ;\n\n _proto.opened = function opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n\n return this.opened_;\n }\n /**\n * Closes the modal, does nothing if the `ModalDialog` is\n * not open.\n *\n * @fires ModalDialog#beforemodalclose\n * @fires ModalDialog#modalclose\n */\n ;\n\n _proto.close = function close() {\n if (!this.opened_) {\n return;\n }\n\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n\n this.off('keydown', this.handleKeyDown_);\n\n if (this.hadControls_) {\n player.controls(true);\n }\n\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalclose');\n this.conditionalBlur_();\n\n if (this.options_.temporary) {\n this.dispose();\n }\n }\n /**\n * Check to see if the `ModalDialog` is closeable via the UI.\n *\n * @param {boolean} [value]\n * If given as a boolean, it will set the `closeable` option.\n *\n * @return {boolean}\n * Returns the final value of the closable option.\n */\n ;\n\n _proto.closeable = function closeable(value) {\n if (typeof value === 'boolean') {\n var closeable = this.closeable_ = !!value;\n var close = this.getChild('closeButton'); // If this is being made closeable and has no close button, add one.\n\n if (closeable && !close) {\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n var temp = this.contentEl_;\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', {\n controlText: 'Close Modal Dialog'\n });\n this.contentEl_ = temp;\n this.on(close, 'close', this.close_);\n } // If this is being made uncloseable and has a close button, remove it.\n\n\n if (!closeable && close) {\n this.off(close, 'close', this.close_);\n this.removeChild(close);\n close.dispose();\n }\n }\n\n return this.closeable_;\n }\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n * The content element will be emptied before this change takes place.\n */\n ;\n\n _proto.fill = function fill() {\n this.fillWith(this.content());\n }\n /**\n * Fill the modal's content element with arbitrary content.\n * The content element will be emptied before this change takes place.\n *\n * @fires ModalDialog#beforemodalfill\n * @fires ModalDialog#modalfill\n *\n * @param {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n ;\n\n _proto.fillWith = function fillWith(content) {\n var contentEl = this.contentEl();\n var parentEl = contentEl.parentNode;\n var nextSiblingEl = contentEl.nextSibling;\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true; // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n\n parentEl.removeChild(contentEl);\n this.empty();\n insertContent(contentEl, content);\n /**\n * Fired just after a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#modalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalfill'); // Re-inject the re-filled content element.\n\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n } // make sure that the close button is last in the dialog DOM\n\n\n var closeButton = this.getChild('closeButton');\n\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\n }\n /**\n * Empties the content element. This happens anytime the modal is filled.\n *\n * @fires ModalDialog#beforemodalempty\n * @fires ModalDialog#modalempty\n */\n ;\n\n _proto.empty = function empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalempty');\n }\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @param {Mixed} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {Mixed}\n * The current content of the modal dialog\n */\n ;\n\n _proto.content = function content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n\n return this.content_;\n }\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n ;\n\n _proto.conditionalFocus_ = function conditionalFocus_() {\n var activeEl = document.activeElement;\n var playerEl = this.player_.el_;\n this.previouslyActiveEl_ = null;\n\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n this.focus();\n }\n }\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n ;\n\n _proto.conditionalBlur_ = function conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n }\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n // Do not allow keydowns to reach out of the modal dialog.\n event.stopPropagation();\n\n if (keycode.isEventKey(event, 'Escape') && this.closeable()) {\n event.preventDefault();\n this.close();\n return;\n } // exit early if it isn't a tab key\n\n\n if (!keycode.isEventKey(event, 'Tab')) {\n return;\n }\n\n var focusableEls = this.focusableEls_();\n var activeEl = this.el_.querySelector(':focus');\n var focusIndex;\n\n for (var i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n\n if (document.activeElement === this.el_) {\n focusIndex = 0;\n }\n\n if (event.shiftKey && focusIndex === 0) {\n focusableEls[focusableEls.length - 1].focus();\n event.preventDefault();\n } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) {\n focusableEls[0].focus();\n event.preventDefault();\n }\n }\n /**\n * get all focusable elements\n *\n * @private\n */\n ;\n\n _proto.focusableEls_ = function focusableEls_() {\n var allChildren = this.el_.querySelectorAll('*');\n return Array.prototype.filter.call(allChildren, function (child) {\n return (child instanceof window$1.HTMLAnchorElement || child instanceof window$1.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window$1.HTMLInputElement || child instanceof window$1.HTMLSelectElement || child instanceof window$1.HTMLTextAreaElement || child instanceof window$1.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window$1.HTMLIFrameElement || child instanceof window$1.HTMLObjectElement || child instanceof window$1.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n };\n\n return ModalDialog;\n}(Component$1);\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\n\n\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\nComponent$1.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\n\nvar TrackList = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(TrackList, _EventTarget);\n\n /**\n * Create an instance of this class\n *\n * @param {Track[]} tracks\n * A list of tracks to initialize the list with.\n *\n * @abstract\n */\n function TrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n _this = _EventTarget.call(this) || this;\n _this.tracks_ = [];\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'length', {\n get: function get() {\n return this.tracks_.length;\n }\n });\n\n for (var i = 0; i < tracks.length; i++) {\n _this.addTrack(tracks[i]);\n }\n\n return _this;\n }\n /**\n * Add a {@link Track} to the `TrackList`\n *\n * @param {Track} track\n * The audio, video, or text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = TrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n var index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.tracks_[index];\n }\n });\n } // Do not add duplicate tracks\n\n\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n /**\n * Triggered when a track is added to a track list.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n this.trigger({\n track: track,\n type: 'addtrack',\n target: this\n });\n }\n /**\n * Triggered when a track label is changed.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n\n track.labelchange_ = function () {\n _this2.trigger({\n track: track,\n type: 'labelchange',\n target: _this2\n });\n };\n\n if (isEvented(track)) {\n track.addEventListener('labelchange', track.labelchange_);\n }\n }\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n ;\n\n _proto.removeTrack = function removeTrack(rtrack) {\n var track;\n\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n\n if (track.off) {\n track.off();\n }\n\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n if (!track) {\n return;\n }\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n\n\n this.trigger({\n track: track,\n type: 'removetrack',\n target: this\n });\n }\n /**\n * Get a Track from the TrackList by a tracks id\n *\n * @param {string} id - the id of the track to get\n * @method getTrackById\n * @return {Track}\n * @private\n */\n ;\n\n _proto.getTrackById = function getTrackById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n };\n\n return TrackList;\n}(EventTarget$2);\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {EventTarget~Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @private\n */\n\n\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack',\n labelchange: 'labelchange'\n}; // emulate attribute EventHandler support to allow for feature detection\n\nfor (var event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * Anywhere we call this function we diverge from the spec\n * as we only support one enabled audiotrack at a time\n *\n * @param {AudioTrackList} list\n * list to work on\n *\n * @param {AudioTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers$1 = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another audio track is enabled, disable it\n\n\n list[i].enabled = false;\n }\n};\n/**\n * The current list of {@link AudioTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}\n * @extends TrackList\n */\n\n\nvar AudioTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(AudioTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {AudioTrack[]} [tracks=[]]\n * A list of `AudioTrack` to instantiate the list with.\n */\n function AudioTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n return _this;\n }\n /**\n * Add an {@link AudioTrack} to the `AudioTrackList`.\n *\n * @param {AudioTrack} track\n * The AudioTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = AudioTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.enabled) {\n disableOthers$1(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.enabledChange_ = function () {\n // when we are disabling other tracks (since we don't support\n // more than one track at a time) we will set changing_\n // to true so that we don't trigger additional change events\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers$1(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('enabledchange', track.enabledChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.enabledChange_) {\n rtrack.removeEventListener('enabledchange', rtrack.enabledChange_);\n rtrack.enabledChange_ = null;\n }\n };\n\n return AudioTrackList;\n}(TrackList);\n\n/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param {VideoTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another video track is enabled, disable it\n\n\n list[i].selected = false;\n }\n};\n/**\n * The current list of {@link VideoTrack} for a video.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}\n * @extends TrackList\n */\n\n\nvar VideoTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(VideoTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {VideoTrack[]} [tracks=[]]\n * A list of `VideoTrack` to instantiate the list with.\n */\n function VideoTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selectedIndex', {\n get: function get() {\n for (var _i = 0; _i < this.length; _i++) {\n if (this[_i].selected) {\n return _i;\n }\n }\n\n return -1;\n },\n set: function set() {}\n });\n return _this;\n }\n /**\n * Add a {@link VideoTrack} to the `VideoTrackList`.\n *\n * @param {VideoTrack} track\n * The VideoTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = VideoTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.selected) {\n disableOthers(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.selectedChange_ = function () {\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('selectedchange', track.selectedChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.selectedChange_) {\n rtrack.removeEventListener('selectedchange', rtrack.selectedChange_);\n rtrack.selectedChange_ = null;\n }\n };\n\n return VideoTrackList;\n}(TrackList);\n\n/**\n * The current list of {@link TextTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}\n * @extends TrackList\n */\n\nvar TextTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(TextTrackList, _TrackList);\n\n function TextTrackList() {\n return _TrackList.apply(this, arguments) || this;\n }\n\n var _proto = TextTrackList.prototype;\n\n /**\n * Add a {@link TextTrack} to the `TextTrackList`\n *\n * @param {TextTrack} track\n * The text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n _proto.addTrack = function addTrack(track) {\n var _this = this;\n\n _TrackList.prototype.addTrack.call(this, track);\n\n if (!this.queueChange_) {\n this.queueChange_ = function () {\n return _this.queueTrigger('change');\n };\n }\n\n if (!this.triggerSelectedlanguagechange) {\n this.triggerSelectedlanguagechange_ = function () {\n return _this.trigger('selectedlanguagechange');\n };\n }\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('modechange', this.queueChange_);\n var nonLanguageTextTrackKind = ['metadata', 'chapters'];\n\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack); // manually remove the event handlers we added\n\n\n if (rtrack.removeEventListener) {\n if (this.queueChange_) {\n rtrack.removeEventListener('modechange', this.queueChange_);\n }\n\n if (this.selectedlanguagechange_) {\n rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n };\n\n return TextTrackList;\n}(TrackList);\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\nvar HtmlTrackElementList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class.\n *\n * @param {HtmlTrackElement[]} [tracks=[]]\n * A list of `HtmlTrackElement` to instantiate the list with.\n */\n function HtmlTrackElementList(trackElements) {\n if (trackElements === void 0) {\n trackElements = [];\n }\n\n this.trackElements_ = [];\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.trackElements_.length;\n }\n });\n\n for (var i = 0, length = trackElements.length; i < length; i++) {\n this.addTrackElement_(trackElements[i]);\n }\n }\n /**\n * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to add to the list.\n *\n * @private\n */\n\n\n var _proto = HtmlTrackElementList.prototype;\n\n _proto.addTrackElement_ = function addTrackElement_(trackElement) {\n var index = this.trackElements_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.trackElements_[index];\n }\n });\n } // Do not add duplicate elements\n\n\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\n }\n /**\n * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an\n * {@link TextTrack}.\n *\n * @param {TextTrack} track\n * The track associated with a track element.\n *\n * @return {HtmlTrackElement|undefined}\n * The track element that was found or undefined.\n *\n * @private\n */\n ;\n\n _proto.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {\n var trackElement_;\n\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n break;\n }\n }\n\n return trackElement_;\n }\n /**\n * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to remove from the list.\n *\n * @private\n */\n ;\n\n _proto.removeTrackElement_ = function removeTrackElement_(trackElement) {\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'function') {\n this.trackElements_[i].track.off();\n }\n\n if (typeof this.trackElements_[i].off === 'function') {\n this.trackElements_[i].off();\n }\n\n this.trackElements_.splice(i, 1);\n break;\n }\n }\n };\n\n return HtmlTrackElementList;\n}();\n\n/**\n * @file text-track-cue-list.js\n */\n\n/**\n * @typedef {Object} TextTrackCueList~TextTrackCue\n *\n * @property {string} id\n * The unique id for this text track cue\n *\n * @property {number} startTime\n * The start time for this text track cue\n *\n * @property {number} endTime\n * The end time for this text track cue\n *\n * @property {boolean} pauseOnExit\n * Pause when the end time is reached if true.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}\n */\n\n/**\n * A List of TextTrackCues.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}\n */\nvar TextTrackCueList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n function TextTrackCueList(cues) {\n TextTrackCueList.prototype.setCues_.call(this, cues);\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.length_;\n }\n });\n }\n /**\n * A setter for cues in this list. Creates getters\n * an an index for the cues.\n *\n * @param {Array} cues\n * An array of cues to set\n *\n * @private\n */\n\n\n var _proto = TextTrackCueList.prototype;\n\n _proto.setCues_ = function setCues_(cues) {\n var oldLength = this.length || 0;\n var i = 0;\n var l = cues.length;\n this.cues_ = cues;\n this.length_ = cues.length;\n\n var defineProp = function defineProp(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get: function get() {\n return this.cues_[index];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n }\n /**\n * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id.\n *\n * @param {string} id\n * The id of the cue that should be searched for.\n *\n * @return {TextTrackCueList~TextTrackCue|null}\n * A single cue or null if none was found.\n */\n ;\n\n _proto.getCueById = function getCueById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackCueList;\n}();\n\n/**\n * @file track-kinds.js\n */\n\n/**\n * All possible `VideoTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n * @typedef VideoTrack~Kind\n * @enum\n */\nvar VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\n/**\n * All possible `AudioTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n * @typedef AudioTrack~Kind\n * @enum\n */\n\nvar AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\n/**\n * All possible `TextTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind\n * @typedef TextTrack~Kind\n * @enum\n */\n\nvar TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n/**\n * All possible `TextTrackMode`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n * @typedef TextTrack~Mode\n * @enum\n */\n\nvar TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * A Track class that contains all of the common functionality for {@link AudioTrack},\n * {@link VideoTrack}, and {@link TextTrack}.\n *\n * > Note: This class should not be used directly\n *\n * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}\n * @extends EventTarget\n * @abstract\n */\n\nvar Track = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(Track, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid kind for the track type you are creating.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @abstract\n */\n function Track(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n language: options.language || ''\n };\n var label = options.label || '';\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n var _loop = function _loop(key) {\n Object.defineProperty(_assertThisInitialized(_this), key, {\n get: function get() {\n return trackProps[key];\n },\n set: function set() {}\n });\n };\n\n for (var key in trackProps) {\n _loop(key);\n }\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @fires Track#labelchange\n */\n\n\n Object.defineProperty(_assertThisInitialized(_this), 'label', {\n get: function get() {\n return label;\n },\n set: function set(newLabel) {\n if (newLabel !== label) {\n label = newLabel;\n /**\n * An event that fires when label changes on this track.\n *\n * > Note: This is not part of the spec!\n *\n * @event Track#labelchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('labelchange');\n }\n }\n });\n return _this;\n }\n\n return Track;\n}(EventTarget$2);\n\n/**\n * @file url.js\n * @module url\n */\n/**\n * @typedef {Object} url:URLObject\n *\n * @property {string} protocol\n * The protocol of the url that was parsed.\n *\n * @property {string} hostname\n * The hostname of the url that was parsed.\n *\n * @property {string} port\n * The port of the url that was parsed.\n *\n * @property {string} pathname\n * The pathname of the url that was parsed.\n *\n * @property {string} search\n * The search query of the url that was parsed.\n *\n * @property {string} hash\n * The hash of the url that was parsed.\n *\n * @property {string} host\n * The host of the url that was parsed.\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @function\n * @param {String} url\n * The url to parse\n *\n * @return {url:URLObject}\n * An object of url details\n */\n\nvar parseUrl = function parseUrl(url) {\n // This entire method can be replace with URL once we are able to drop IE11\n var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host']; // add the url to an anchor and let the browser parse the URL\n\n var a = document.createElement('a');\n a.href = url; // Copy the specific URL properties to a new object\n // This is also needed for IE because the anchor loses its\n // properties when it's removed from the dom\n\n var details = {};\n\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n } // IE adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n\n\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (!details.protocol) {\n details.protocol = window$1.location.protocol;\n }\n /* istanbul ignore if */\n\n\n if (!details.host) {\n details.host = window$1.location.host;\n }\n\n return details;\n};\n/**\n * Get absolute version of relative URL. Used to tell Flash the correct URL.\n *\n * @function\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n *\n * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n */\n\nvar getAbsoluteURL = function getAbsoluteURL(url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n // add the url to an anchor and let the browser parse the URL\n var a = document.createElement('a');\n a.href = url;\n url = a.href;\n }\n\n return url;\n};\n/**\n * Returns the extension of the passed file name. It will return an empty string\n * if passed an invalid path.\n *\n * @function\n * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @return {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\n\nvar getFileExtension = function getFileExtension(path) {\n if (typeof path === 'string') {\n var splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/;\n var pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @function\n * @param {string} url\n * The url to check.\n *\n * @param {Object} [winLoc]\n * the domain to check the url against, defaults to window.location\n *\n * @param {string} [winLoc.protocol]\n * The window location protocol defaults to window.location.protocol\n *\n * @param {string} [winLoc.host]\n * The window location host defaults to window.location.host\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\n\nvar isCrossOrigin = function isCrossOrigin(url, winLoc) {\n if (winLoc === void 0) {\n winLoc = window$1.location;\n }\n\n var urlInfo = parseUrl(url); // IE8 protocol relative urls will return ':' for protocol\n\n var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol; // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n\n var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n return crossOrigin;\n};\n\nvar Url = /*#__PURE__*/Object.freeze({\n __proto__: null,\n parseUrl: parseUrl,\n getAbsoluteURL: getAbsoluteURL,\n getFileExtension: getFileExtension,\n isCrossOrigin: isCrossOrigin\n});\n\n/**\n * Takes a webvtt file contents and parses it into cues\n *\n * @param {string} srcContent\n * webVTT file contents\n *\n * @param {TextTrack} track\n * TextTrack to add cues to. Cues come from the srcContent.\n *\n * @private\n */\n\nvar parseCues = function parseCues(srcContent, track) {\n var parser = new window$1.WebVTT.Parser(window$1, window$1.vttjs, window$1.WebVTT.StringDecoder());\n var errors = [];\n\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n\n parser.parse(srcContent);\n\n if (errors.length > 0) {\n if (window$1.console && window$1.console.groupCollapsed) {\n window$1.console.groupCollapsed(\"Text Track parsing errors for \" + track.src);\n }\n\n errors.forEach(function (error) {\n return log$1.error(error);\n });\n\n if (window$1.console && window$1.console.groupEnd) {\n window$1.console.groupEnd();\n }\n }\n\n parser.flush();\n};\n/**\n * Load a `TextTrack` from a specified url.\n *\n * @param {string} src\n * Url to load track from.\n *\n * @param {TextTrack} track\n * Track to add cues to. Comes from the content at the end of `url`.\n *\n * @private\n */\n\n\nvar loadTrack = function loadTrack(src, track) {\n var opts = {\n uri: src\n };\n var crossOrigin = isCrossOrigin(src);\n\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n var withCredentials = track.tech_.crossOrigin() === 'use-credentials';\n\n if (withCredentials) {\n opts.withCredentials = withCredentials;\n }\n\n XHR(opts, bind(this, function (err, response, responseBody) {\n if (err) {\n return log$1.error(err, response);\n }\n\n track.loaded_ = true; // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n\n if (typeof window$1.WebVTT !== 'function') {\n if (track.tech_) {\n // to prevent use before define eslint error, we define loadHandler\n // as a let here\n track.tech_.any(['vttjsloaded', 'vttjserror'], function (event) {\n if (event.type === 'vttjserror') {\n log$1.error(\"vttjs failed to load, stopping trying to process \" + track.src);\n return;\n }\n\n return parseCues(responseBody, track);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n/**\n * A representation of a single `TextTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack}\n * @extends Track\n */\n\n\nvar TextTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(TextTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this TextTrack.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function TextTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n var settings = mergeOptions$3(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n var mode = TextTrackMode[settings.mode] || 'disabled';\n var default_ = settings[\"default\"];\n\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n\n _this = _Track.call(this, settings) || this;\n _this.tech_ = settings.tech;\n _this.cues_ = [];\n _this.activeCues_ = [];\n _this.preload_ = _this.tech_.preloadTextTracks !== false;\n var cues = new TextTrackCueList(_this.cues_);\n var activeCues = new TextTrackCueList(_this.activeCues_);\n var changed = false;\n _this.timeupdateHandler = bind(_assertThisInitialized(_this), function (event) {\n if (event === void 0) {\n event = {};\n }\n\n if (this.tech_.isDisposed()) {\n return;\n }\n\n if (!this.tech_.isReady_) {\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n\n return;\n } // Accessing this.activeCues for the side-effects of updating itself\n // due to its nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n\n\n this.activeCues = this.activeCues;\n\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n });\n\n var disposeHandler = function disposeHandler() {\n _this.stopTracking();\n };\n\n _this.tech_.one('dispose', disposeHandler);\n\n if (mode !== 'disabled') {\n _this.startTracking();\n }\n\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof TextTrack\n * @member {boolean} default\n * If this track was set to be on or off by default. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n \"default\": {\n get: function get() {\n return default_;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {string} mode\n * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will\n * not be set if setting to an invalid mode.\n * @instance\n *\n * @fires TextTrack#modechange\n */\n mode: {\n get: function get() {\n return mode;\n },\n set: function set(newMode) {\n if (!TextTrackMode[newMode]) {\n return;\n }\n\n if (mode === newMode) {\n return;\n }\n\n mode = newMode;\n\n if (!this.preload_ && mode !== 'disabled' && this.cues.length === 0) {\n // On-demand load.\n loadTrack(this.src, this);\n }\n\n this.stopTracking();\n\n if (mode !== 'disabled') {\n this.startTracking();\n }\n /**\n * An event that fires when mode changes on this track. This allows\n * the TextTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec!\n *\n * @event TextTrack#modechange\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('modechange');\n }\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n cues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} activeCues\n * The list text track cues that are currently active for this TextTrack.\n * @instance\n */\n activeCues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n } // nothing to do\n\n\n if (this.cues.length === 0) {\n return activeCues;\n }\n\n var ct = this.tech_.currentTime();\n var active = [];\n\n for (var i = 0, l = this.cues.length; i < l; i++) {\n var cue = this.cues[i];\n\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (var _i = 0; _i < active.length; _i++) {\n if (this.activeCues_.indexOf(active[_i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n return activeCues;\n },\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set: function set() {}\n }\n });\n\n if (settings.src) {\n _this.src = settings.src;\n\n if (!_this.preload_) {\n // Tracks will load on-demand.\n // Act like we're loaded for other purposes.\n _this.loaded_ = true;\n }\n\n if (_this.preload_ || settings.kind !== 'subtitles' && settings.kind !== 'captions') {\n loadTrack(_this.src, _assertThisInitialized(_this));\n }\n } else {\n _this.loaded_ = true;\n }\n\n return _this;\n }\n\n var _proto = TextTrack.prototype;\n\n _proto.startTracking = function startTracking() {\n // More precise cues based on requestVideoFrameCallback with a requestAnimationFram fallback\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler); // Also listen to timeupdate in case rVFC/rAF stops (window in background, audio in video el)\n\n this.tech_.on('timeupdate', this.timeupdateHandler);\n };\n\n _proto.stopTracking = function stopTracking() {\n if (this.rvf_) {\n this.tech_.cancelVideoFrameCallback(this.rvf_);\n this.rvf_ = undefined;\n }\n\n this.tech_.off('timeupdate', this.timeupdateHandler);\n }\n /**\n * Add a cue to the internal list of cues.\n *\n * @param {TextTrack~Cue} cue\n * The cue to add to our internal list\n */\n ;\n\n _proto.addCue = function addCue(originalCue) {\n var cue = originalCue;\n\n if (window$1.vttjs && !(originalCue instanceof window$1.vttjs.VTTCue)) {\n cue = new window$1.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n\n for (var prop in originalCue) {\n if (!(prop in cue)) {\n cue[prop] = originalCue[prop];\n }\n } // make sure that `id` is copied over\n\n\n cue.id = originalCue.id;\n cue.originalCue_ = originalCue;\n }\n\n var tracks = this.tech_.textTracks();\n\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n }\n /**\n * Remove a cue from our internal list\n *\n * @param {TextTrack~Cue} removeCue\n * The cue to remove from our internal list\n */\n ;\n\n _proto.removeCue = function removeCue(_removeCue) {\n var i = this.cues_.length;\n\n while (i--) {\n var cue = this.cues_[i];\n\n if (cue === _removeCue || cue.originalCue_ && cue.originalCue_ === _removeCue) {\n this.cues_.splice(i, 1);\n this.cues.setCues_(this.cues_);\n break;\n }\n }\n };\n\n return TextTrack;\n}(Track);\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\n\n\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\n/**\n * A representation of a single `AudioTrack`. If it is part of an {@link AudioTrackList}\n * only one `AudioTrack` in the list will be enabled at a time.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}\n * @extends Track\n */\n\nvar AudioTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(AudioTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {AudioTrack~Kind} [options.kind='']\n * A valid audio track kind\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.enabled]\n * If this track is the one that is currently playing. If this track is part of\n * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled.\n */\n function AudioTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions$3(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var enabled = false;\n /**\n * @memberof AudioTrack\n * @member {boolean} enabled\n * If this `AudioTrack` is enabled or not. When setting this will\n * fire {@link AudioTrack#enabledchange} if the state of enabled is changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'enabled', {\n get: function get() {\n return enabled;\n },\n set: function set(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n\n enabled = newEnabled;\n /**\n * An event that fires when enabled changes on this track. This allows\n * the AudioTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event AudioTrack#enabledchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('enabledchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.enabled) {\n _this.enabled = settings.enabled;\n }\n\n _this.loaded_ = true;\n return _this;\n }\n\n return AudioTrack;\n}(Track);\n\n/**\n * A representation of a single `VideoTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}\n * @extends Track\n */\n\nvar VideoTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(VideoTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid {@link VideoTrack~Kind}\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.selected]\n * If this track is the one that is currently playing.\n */\n function VideoTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions$3(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var selected = false;\n /**\n * @memberof VideoTrack\n * @member {boolean} selected\n * If this `VideoTrack` is selected or not. When setting this will\n * fire {@link VideoTrack#selectedchange} if the state of selected changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selected', {\n get: function get() {\n return selected;\n },\n set: function set(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n\n selected = newSelected;\n /**\n * An event that fires when selected changes on this track. This allows\n * the VideoTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event VideoTrack#selectedchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('selectedchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.selected) {\n _this.selected = settings.selected;\n }\n\n return _this;\n }\n\n return VideoTrack;\n}(Track);\n\n/**\n * @memberof HTMLTrackElement\n * @typedef {HTMLTrackElement~ReadyState}\n * @enum {number}\n */\n\nvar NONE = 0;\nvar LOADING = 1;\nvar LOADED = 2;\nvar ERROR = 3;\n/**\n * A single track represented in the DOM.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}\n * @extends EventTarget\n */\n\nvar HTMLTrackElement = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(HTMLTrackElement, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this HTMLTrackElement.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function HTMLTrackElement(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var readyState;\n var track = new TextTrack(options);\n _this.kind = track.kind;\n _this.src = track.src;\n _this.srclang = track.language;\n _this.label = track.label;\n _this[\"default\"] = track[\"default\"];\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n readyState: {\n get: function get() {\n return readyState;\n }\n },\n\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n track: {\n get: function get() {\n return track;\n }\n }\n });\n readyState = NONE;\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n\n track.addEventListener('loadeddata', function () {\n readyState = LOADED;\n\n _this.trigger({\n type: 'load',\n target: _assertThisInitialized(_this)\n });\n });\n return _this;\n }\n\n return HTMLTrackElement;\n}(EventTarget$2);\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\n\n/*\n * This file contains all track properties that are used in\n * player.js, tech.js, html5.js and possibly other techs in the future.\n */\n\nvar NORMAL = {\n audio: {\n ListClass: AudioTrackList,\n TrackClass: AudioTrack,\n capitalName: 'Audio'\n },\n video: {\n ListClass: VideoTrackList,\n TrackClass: VideoTrack,\n capitalName: 'Video'\n },\n text: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'Text'\n }\n};\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = type + \"Tracks\";\n NORMAL[type].privateName = type + \"Tracks_\";\n});\nvar REMOTE = {\n remoteText: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'RemoteText',\n getterName: 'remoteTextTracks',\n privateName: 'remoteTextTracks_'\n },\n remoteTextEl: {\n ListClass: HtmlTrackElementList,\n TrackClass: HTMLTrackElement,\n capitalName: 'RemoteTextTrackEls',\n getterName: 'remoteTextTrackEls',\n privateName: 'remoteTextTrackEls_'\n }\n};\n\nvar ALL = _extends({}, NORMAL, REMOTE);\n\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string\n * that just contains the src url alone.\n * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};`\n * `var SourceString = 'http://example.com/some-video.mp4';`\n *\n * @typedef {Object|string} Tech~SourceObject\n *\n * @property {string} src\n * The url to the source\n *\n * @property {string} type\n * The mime type of the source\n */\n\n/**\n * A function used by {@link Tech} to create a new {@link TextTrack}.\n *\n * @private\n *\n * @param {Tech} self\n * An instance of the Tech class.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @param {Object} [options={}]\n * An object with additional text track options\n *\n * @return {TextTrack}\n * The text track that was created.\n */\n\nfunction createTrackHelper(self, kind, label, language, options) {\n if (options === void 0) {\n options = {};\n }\n\n var tracks = self.textTracks();\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n\n if (language) {\n options.language = language;\n }\n\n options.tech = self;\n var track = new ALL.text.TrackClass(options);\n tracks.addTrack(track);\n return track;\n}\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link HTML5}\n *\n * @extends Component\n */\n\n\nvar Tech = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Tech, _Component);\n\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} ready\n * Callback function to call when the `HTML5` Tech is ready.\n */\n function Tech(options, ready) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (ready === void 0) {\n ready = function ready() {};\n }\n\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n _this = _Component.call(this, null, options, ready) || this;\n\n _this.onDurationChange_ = function (e) {\n return _this.onDurationChange(e);\n };\n\n _this.trackProgress_ = function (e) {\n return _this.trackProgress(e);\n };\n\n _this.trackCurrentTime_ = function (e) {\n return _this.trackCurrentTime(e);\n };\n\n _this.stopTrackingCurrentTime_ = function (e) {\n return _this.stopTrackingCurrentTime(e);\n };\n\n _this.disposeSourceHandler_ = function (e) {\n return _this.disposeSourceHandler(e);\n };\n\n _this.queuedHanders_ = new Set(); // keep track of whether the current source has played at all to\n // implement a very limited played()\n\n _this.hasStarted_ = false;\n\n _this.on('playing', function () {\n this.hasStarted_ = true;\n });\n\n _this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n\n ALL.names.forEach(function (name) {\n var props = ALL[name];\n\n if (options && options[props.getterName]) {\n _this[props.privateName] = options[props.getterName];\n }\n }); // Manually track progress in cases where the browser/tech doesn't report it.\n\n if (!_this.featuresProgressEvents) {\n _this.manualProgressOn();\n } // Manually track timeupdates in cases where the browser/tech doesn't report it.\n\n\n if (!_this.featuresTimeupdateEvents) {\n _this.manualTimeUpdatesOn();\n }\n\n ['Text', 'Audio', 'Video'].forEach(function (track) {\n if (options[\"native\" + track + \"Tracks\"] === false) {\n _this[\"featuresNative\" + track + \"Tracks\"] = false;\n }\n });\n\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n _this.featuresNativeTextTracks = false;\n } else if (options.nativeCaptions === true || options.nativeTextTracks === true) {\n _this.featuresNativeTextTracks = true;\n }\n\n if (!_this.featuresNativeTextTracks) {\n _this.emulateTextTracks();\n }\n\n _this.preloadTextTracks = options.preloadTextTracks !== false;\n _this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n\n _this.initTrackListeners(); // Turn on component tap events only if not using native controls\n\n\n if (!options.nativeControlsForTouch) {\n _this.emitTapEvents();\n }\n\n if (_this.constructor) {\n _this.name_ = _this.constructor.name || 'Unknown Tech';\n }\n\n return _this;\n }\n /**\n * A special function to trigger source set in a way that will allow player\n * to re-trigger if the player or tech are not ready yet.\n *\n * @fires Tech#sourceset\n * @param {string} src The source string at the time of the source changing.\n */\n\n\n var _proto = Tech.prototype;\n\n _proto.triggerSourceset = function triggerSourceset(src) {\n var _this2 = this;\n\n if (!this.isReady_) {\n // on initial ready we have to trigger source set\n // 1ms after ready so that player can watch for it.\n this.one('ready', function () {\n return _this2.setTimeout(function () {\n return _this2.triggerSourceset(src);\n }, 1);\n });\n }\n /**\n * Fired when the source is set on the tech causing the media element\n * to reload.\n *\n * @see {@link Player#event:sourceset}\n * @event Tech#sourceset\n * @type {EventTarget~Event}\n */\n\n\n this.trigger({\n src: src,\n type: 'sourceset'\n });\n }\n /* Fallbacks for unsupported event types\n ================================================================================ */\n\n /**\n * Polyfill the `progress` event for browsers that don't support it natively.\n *\n * @see {@link Tech#trackProgress}\n */\n ;\n\n _proto.manualProgressOn = function manualProgressOn() {\n this.on('durationchange', this.onDurationChange_);\n this.manualProgress = true; // Trigger progress watching when a source begins loading\n\n this.one('ready', this.trackProgress_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n ;\n\n _proto.manualProgressOff = function manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n this.off('durationchange', this.onDurationChange_);\n }\n /**\n * This is used to trigger a `progress` event when the buffered percent changes. It\n * sets an interval function that will be called every 500 milliseconds to check if the\n * buffer end percent has changed.\n *\n * > This function is called by {@link Tech#manualProgressOn}\n *\n * @param {EventTarget~Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n ;\n\n _proto.trackProgress = function trackProgress(event) {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(bind(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n var numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {EventTarget~Event}\n */\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {EventTarget~Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n ;\n\n _proto.onDurationChange = function onDurationChange(event) {\n this.duration_ = this.duration();\n }\n /**\n * Get and create a `TimeRange` object for buffering.\n *\n * @return {TimeRange}\n * The time range object that was created.\n */\n ;\n\n _proto.buffered = function buffered() {\n return createTimeRanges(0, 0);\n }\n /**\n * Get the percentage of the current video that is currently buffered.\n *\n * @return {number}\n * A number from 0 to 1 that represents the decimal percentage of the\n * video that is buffered.\n *\n */\n ;\n\n _proto.bufferedPercent = function bufferedPercent$1() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n * Stop manually tracking progress events by clearing the interval that was set in\n * {@link Tech#trackProgress}.\n */\n ;\n\n _proto.stopTrackingProgress = function stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n ;\n\n _proto.manualTimeUpdatesOn = function manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n this.on('play', this.trackCurrentTime_);\n this.on('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n ;\n\n _proto.manualTimeUpdatesOff = function manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime_);\n this.off('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Sets up an interval function to track current time and trigger `timeupdate` every\n * 250 milliseconds.\n *\n * @listens Tech#play\n * @triggers Tech#timeupdate\n */\n ;\n\n _proto.trackCurrentTime = function trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n\n this.currentTimeInterval = this.setInterval(function () {\n /**\n * Triggered at an interval of 250ms to indicated that time is passing in the video.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n }); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n }\n /**\n * Stop the interval function created in {@link Tech#trackCurrentTime} so that the\n * `timeupdate` event is no longer triggered.\n *\n * @listens {Tech#pause}\n */\n ;\n\n _proto.stopTrackingCurrentTime = function stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval); // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n /**\n * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList},\n * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech.\n *\n * @fires Component#dispose\n */\n ;\n\n _proto.dispose = function dispose() {\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names); // Turn off any manual progress or timeupdate tracking\n\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Clear out a single `TrackList` or an array of `TrackLists` given their names.\n *\n * > Note: Techs without source handlers should call this between sources for `video`\n * & `audio` tracks. You don't want to use them between tracks!\n *\n * @param {string[]|string} types\n * TrackList names to clear, valid names are `video`, `audio`, and\n * `text`.\n */\n ;\n\n _proto.clearTracks = function clearTracks(types) {\n var _this3 = this;\n\n types = [].concat(types); // clear out all tracks because we can't reuse them between techs\n\n types.forEach(function (type) {\n var list = _this3[type + \"Tracks\"]() || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n if (type === 'text') {\n _this3.removeRemoteTextTrack(track);\n }\n\n list.removeTrack(track);\n }\n });\n }\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n ;\n\n _proto.cleanupAutoTextTracks = function cleanupAutoTextTracks() {\n var list = this.autoRemoteTextTracks_ || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n this.removeRemoteTextTrack(track);\n }\n }\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n ;\n\n _proto.reset = function reset() {}\n /**\n * Get the value of `crossOrigin` from the tech.\n *\n * @abstract\n *\n * @see {Html5#crossOrigin}\n */\n ;\n\n _proto.crossOrigin = function crossOrigin() {}\n /**\n * Set the value of `crossOrigin` on the tech.\n *\n * @abstract\n *\n * @param {string} crossOrigin the crossOrigin value\n * @see {Html5#setCrossOrigin}\n */\n ;\n\n _proto.setCrossOrigin = function setCrossOrigin() {}\n /**\n * Get or set an error on the Tech.\n *\n * @param {MediaError} [err]\n * Error to set on the Tech\n *\n * @return {MediaError|null}\n * The current error object on the tech, or null if there isn't one.\n */\n ;\n\n _proto.error = function error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n\n return this.error_;\n }\n /**\n * Returns the `TimeRange`s that have been played through for the current source.\n *\n * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`.\n * It only checks whether the source has played at all or not.\n *\n * @return {TimeRange}\n * - A single time range if this video has played\n * - An empty set of ranges if not.\n */\n ;\n\n _proto.played = function played() {\n if (this.hasStarted_) {\n return createTimeRanges(0, 0);\n }\n\n return createTimeRanges();\n }\n /**\n * Start playback\n *\n * @abstract\n *\n * @see {Html5#play}\n */\n ;\n\n _proto.play = function play() {}\n /**\n * Set whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#setScrubbing}\n */\n ;\n\n _proto.setScrubbing = function setScrubbing() {}\n /**\n * Get whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#scrubbing}\n */\n ;\n\n _proto.scrubbing = function scrubbing() {}\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @fires Tech#timeupdate\n */\n ;\n\n _proto.setCurrentTime = function setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n }\n /**\n * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and\n * {@link TextTrackList} events.\n *\n * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`.\n *\n * @fires Tech#audiotrackchange\n * @fires Tech#videotrackchange\n * @fires Tech#texttrackchange\n */\n ;\n\n _proto.initTrackListeners = function initTrackListeners() {\n var _this4 = this;\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {EventTarget~Event}\n */\n NORMAL.names.forEach(function (name) {\n var props = NORMAL[name];\n\n var trackListChanges = function trackListChanges() {\n _this4.trigger(name + \"trackchange\");\n };\n\n var tracks = _this4[props.getterName]();\n\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n\n _this4.on('dispose', function () {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n }\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n ;\n\n _proto.addWebVttScript_ = function addWebVttScript_() {\n var _this5 = this;\n\n if (window$1.WebVTT) {\n return;\n } // Initially, Tech.el_ is a child of a dummy-div wait until the Component system\n // signals that the Tech is ready at which point Tech.el_ is part of the DOM\n // before inserting the WebVTT script\n\n\n if (document.body.contains(this.el())) {\n // load via require if available and vtt.js script location was not passed in\n // as an option. novtt builds will turn the above require call into an empty object\n // which will cause this if check to always fail.\n if (!this.options_['vtt.js'] && isPlain(vtt) && Object.keys(vtt).length > 0) {\n this.trigger('vttjsloaded');\n return;\n } // load vtt.js via the script location option or the cdn of no location was\n // passed in\n\n\n var script = document.createElement('script');\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js';\n\n script.onload = function () {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjsloaded');\n };\n\n script.onerror = function () {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjserror');\n };\n\n this.on('dispose', function () {\n script.onload = null;\n script.onerror = null;\n }); // but have not loaded yet and we set it to true before the inject so that\n // we don't overwrite the injected window.WebVTT if it loads right away\n\n window$1.WebVTT = true;\n this.el().parentNode.appendChild(script);\n } else {\n this.ready(this.addWebVttScript_);\n }\n }\n /**\n * Emulate texttracks\n *\n */\n ;\n\n _proto.emulateTextTracks = function emulateTextTracks() {\n var _this6 = this;\n\n var tracks = this.textTracks();\n var remoteTracks = this.remoteTextTracks();\n\n var handleAddTrack = function handleAddTrack(e) {\n return tracks.addTrack(e.track);\n };\n\n var handleRemoveTrack = function handleRemoveTrack(e) {\n return tracks.removeTrack(e.track);\n };\n\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n this.addWebVttScript_();\n\n var updateDisplay = function updateDisplay() {\n return _this6.trigger('texttrackchange');\n };\n\n var textTracksChanges = function textTracksChanges() {\n updateDisplay();\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n tracks.addEventListener('addtrack', textTracksChanges);\n tracks.addEventListener('removetrack', textTracksChanges);\n this.on('dispose', function () {\n remoteTracks.off('addtrack', handleAddTrack);\n remoteTracks.off('removetrack', handleRemoveTrack);\n tracks.removeEventListener('change', textTracksChanges);\n tracks.removeEventListener('addtrack', textTracksChanges);\n tracks.removeEventListener('removetrack', textTracksChanges);\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n }\n });\n }\n /**\n * Create and returns a remote {@link TextTrack} object.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @return {TextTrack}\n * The TextTrack that gets created.\n */\n ;\n\n _proto.addTextTrack = function addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n /**\n * Create an emulated TextTrack for use by addRemoteTextTrack\n *\n * This is intended to be overridden by classes that inherit from\n * Tech in order to create native or custom TextTracks.\n *\n * @param {Object} options\n * The object should contain the options to initialize the TextTrack with.\n *\n * @param {string} [options.kind]\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata).\n *\n * @param {string} [options.label].\n * Label to identify the text track\n *\n * @param {string} [options.language]\n * Two letter language abbreviation.\n *\n * @return {HTMLTrackElement}\n * The track element that gets created.\n */\n ;\n\n _proto.createRemoteTextTrack = function createRemoteTextTrack(options) {\n var track = mergeOptions$3(options, {\n tech: this\n });\n return new REMOTE.remoteTextEl.TrackClass(track);\n }\n /**\n * Creates a remote text track object and returns an html track element.\n *\n * > Note: This can be an emulated {@link HTMLTrackElement} or a native one.\n *\n * @param {Object} options\n * See {@link Tech#createRemoteTextTrack} for more detailed properties.\n *\n * @param {boolean} [manualCleanup=true]\n * - When false: the TextTrack will be automatically removed from the video\n * element whenever the source changes\n * - When True: The TextTrack will have to be cleaned up manually\n *\n * @return {HTMLTrackElement}\n * An Html Track Element.\n *\n * @deprecated The default functionality for this function will be equivalent\n * to \"manualCleanup=false\" in the future. The manualCleanup parameter will\n * also be removed.\n */\n ;\n\n _proto.addRemoteTextTrack = function addRemoteTextTrack(options, manualCleanup) {\n var _this7 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var htmlTrackElement = this.createRemoteTextTrack(options);\n\n if (manualCleanup !== true && manualCleanup !== false) {\n // deprecation warning\n log$1.warn('Calling addRemoteTextTrack without explicitly setting the \"manualCleanup\" parameter to `true` is deprecated and default to `false` in future version of video.js');\n manualCleanup = true;\n } // store HTMLTrackElement and TextTrack to remote list\n\n\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n\n if (manualCleanup !== true) {\n // create the TextTrackList if it doesn't exist\n this.ready(function () {\n return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track);\n });\n }\n\n return htmlTrackElement;\n }\n /**\n * Remove a remote text track from the remote `TextTrackList`.\n *\n * @param {TextTrack} track\n * `TextTrack` to remove from the `TextTrackList`\n */\n ;\n\n _proto.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track); // remove HTMLTrackElement and TextTrack from remote list\n\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n }\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n *\n * @abstract\n */\n ;\n\n _proto.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n return {};\n }\n /**\n * Attempt to create a floating video window always on top of other windows\n * so that users may continue consuming media while they interact with other\n * content sites, or applications on their device.\n *\n * @see [Spec]{@link https://wicg.github.io/picture-in-picture}\n *\n * @return {Promise|undefined}\n * A promise with a Picture-in-Picture window if the browser supports\n * Promises (or one was passed in as an option). It returns undefined\n * otherwise.\n *\n * @abstract\n */\n ;\n\n _proto.requestPictureInPicture = function requestPictureInPicture() {\n var PromiseClass = this.options_.Promise || window$1.Promise;\n\n if (PromiseClass) {\n return PromiseClass.reject();\n }\n }\n /**\n * A method to check for the value of the 'disablePictureInPicture'